From 7adf2b96121226112142eb5f7d9ee80436fd269c Mon Sep 17 00:00:00 2001 From: JusicP Date: Sat, 24 Oct 2020 10:29:06 +0300 Subject: [PATCH] Add protobuf-2.6.1 --- thirdparty/protobuf-2.6.1/CHANGES.txt | 593 + thirdparty/protobuf-2.6.1/CONTRIBUTORS.txt | 93 + thirdparty/protobuf-2.6.1/INSTALL.txt | 237 + thirdparty/protobuf-2.6.1/LICENSE | 33 + thirdparty/protobuf-2.6.1/Makefile | 1157 + thirdparty/protobuf-2.6.1/Makefile.am | 267 + thirdparty/protobuf-2.6.1/Makefile.in | 1157 + thirdparty/protobuf-2.6.1/README.md | 167 + thirdparty/protobuf-2.6.1/aclocal.m4 | 1180 + thirdparty/protobuf-2.6.1/autogen.sh | 41 + .../protobuf-2.6.1/bin/linux32/libprotobuf.a | Bin 0 -> 38155660 bytes thirdparty/protobuf-2.6.1/compile | 348 + thirdparty/protobuf-2.6.1/config.guess | 1480 ++ thirdparty/protobuf-2.6.1/config.h | 152 + thirdparty/protobuf-2.6.1/config.h.in | 151 + thirdparty/protobuf-2.6.1/config.log | 1535 ++ thirdparty/protobuf-2.6.1/config.status | 2241 ++ thirdparty/protobuf-2.6.1/config.sub | 1801 ++ thirdparty/protobuf-2.6.1/configure | 20281 ++++++++++++++++ thirdparty/protobuf-2.6.1/configure.ac | 159 + thirdparty/protobuf-2.6.1/depcomp | 791 + thirdparty/protobuf-2.6.1/editors/README.txt | 5 + thirdparty/protobuf-2.6.1/editors/proto.vim | 105 + .../protobuf-2.6.1/editors/protobuf-mode.el | 220 + .../protobuf-2.6.1/examples/AddPerson.java | 95 + .../protobuf-2.6.1/examples/ListPeople.java | 50 + thirdparty/protobuf-2.6.1/examples/Makefile | 58 + thirdparty/protobuf-2.6.1/examples/README.txt | 29 + .../protobuf-2.6.1/examples/add_person.cc | 95 + .../protobuf-2.6.1/examples/add_person.py | 58 + .../protobuf-2.6.1/examples/addressbook.proto | 30 + .../protobuf-2.6.1/examples/list_people.cc | 68 + .../protobuf-2.6.1/examples/list_people.py | 38 + .../generate_descriptor_proto.sh | 33 + thirdparty/protobuf-2.6.1/gtest/CHANGES | 130 + .../protobuf-2.6.1/gtest/CMakeLists.txt | 250 + thirdparty/protobuf-2.6.1/gtest/CONTRIBUTORS | 37 + thirdparty/protobuf-2.6.1/gtest/LICENSE | 28 + thirdparty/protobuf-2.6.1/gtest/Makefile | 1817 ++ thirdparty/protobuf-2.6.1/gtest/Makefile.am | 305 + thirdparty/protobuf-2.6.1/gtest/Makefile.in | 1817 ++ thirdparty/protobuf-2.6.1/gtest/README | 434 + thirdparty/protobuf-2.6.1/gtest/aclocal.m4 | 1378 ++ .../gtest/autom4te.cache/output.0 | 18941 +++++++++++++++ .../gtest/autom4te.cache/output.1 | 18941 +++++++++++++++ .../gtest/autom4te.cache/requests | 304 + .../gtest/autom4te.cache/traces.0 | 3299 +++ .../gtest/autom4te.cache/traces.1 | 670 + .../protobuf-2.6.1/gtest/build-aux/compile | 348 + .../gtest/build-aux/config.guess | 1480 ++ .../protobuf-2.6.1/gtest/build-aux/config.h | 69 + .../gtest/build-aux/config.h.in | 68 + .../gtest/build-aux/config.h.in~ | 69 + .../protobuf-2.6.1/gtest/build-aux/config.sub | 1801 ++ .../protobuf-2.6.1/gtest/build-aux/depcomp | 791 + .../protobuf-2.6.1/gtest/build-aux/install-sh | 518 + .../protobuf-2.6.1/gtest/build-aux/ltmain.sh | 11249 +++++++++ .../protobuf-2.6.1/gtest/build-aux/missing | 215 + .../protobuf-2.6.1/gtest/build-aux/stamp-h1 | 1 + .../gtest/build-aux/test-driver | 148 + .../gtest/cmake/internal_utils.cmake | 227 + .../gtest/codegear/gtest.cbproj | 138 + .../gtest/codegear/gtest.groupproj | 54 + .../gtest/codegear/gtest_all.cc | 38 + .../gtest/codegear/gtest_link.cc | 40 + .../gtest/codegear/gtest_main.cbproj | 82 + .../gtest/codegear/gtest_unittest.cbproj | 88 + thirdparty/protobuf-2.6.1/gtest/config.log | 1012 + thirdparty/protobuf-2.6.1/gtest/config.status | 2203 ++ thirdparty/protobuf-2.6.1/gtest/configure | 18941 +++++++++++++++ thirdparty/protobuf-2.6.1/gtest/configure.ac | 68 + .../.deps/test_fused_gtest_test-gtest-all.Po | 1 + .../.deps/test_fused_gtest_test-gtest_main.Po | 1 + .../gtest/fused-src/gtest/gtest-all.cc | 9251 +++++++ .../gtest/fused-src/gtest/gtest.h | 20012 +++++++++++++++ .../gtest/fused-src/gtest/gtest_main.cc | 38 + .../gtest/include/gtest/gtest-death-test.h | 294 + .../gtest/include/gtest/gtest-message.h | 230 + .../gtest/include/gtest/gtest-param-test.h | 1421 ++ .../include/gtest/gtest-param-test.h.pump | 487 + .../gtest/include/gtest/gtest-printers.h | 855 + .../gtest/include/gtest/gtest-spi.h | 232 + .../gtest/include/gtest/gtest-test-part.h | 179 + .../gtest/include/gtest/gtest-typed-test.h | 259 + .../gtest/include/gtest/gtest.h | 2236 ++ .../gtest/include/gtest/gtest_pred_impl.h | 358 + .../gtest/include/gtest/gtest_prod.h | 58 + .../internal/gtest-death-test-internal.h | 319 + .../include/gtest/internal/gtest-filepath.h | 206 + .../include/gtest/internal/gtest-internal.h | 1171 + .../include/gtest/internal/gtest-linked_ptr.h | 233 + .../internal/gtest-param-util-generated.h | 5143 ++++ .../gtest-param-util-generated.h.pump | 301 + .../include/gtest/internal/gtest-param-util.h | 619 + .../gtest/include/gtest/internal/gtest-port.h | 1947 ++ .../include/gtest/internal/gtest-string.h | 180 + .../include/gtest/internal/gtest-tuple.h | 1012 + .../include/gtest/internal/gtest-tuple.h.pump | 339 + .../include/gtest/internal/gtest-type-util.h | 3332 +++ .../gtest/internal/gtest-type-util.h.pump | 298 + thirdparty/protobuf-2.6.1/gtest/lib/.dirstamp | 0 thirdparty/protobuf-2.6.1/gtest/libtool | 11909 +++++++++ .../protobuf-2.6.1/gtest/m4/acx_pthread.m4 | 363 + thirdparty/protobuf-2.6.1/gtest/m4/gtest.m4 | 74 + thirdparty/protobuf-2.6.1/gtest/m4/libtool.m4 | 8388 +++++++ .../protobuf-2.6.1/gtest/m4/ltoptions.m4 | 437 + thirdparty/protobuf-2.6.1/gtest/m4/ltsugar.m4 | 124 + .../protobuf-2.6.1/gtest/m4/ltversion.m4 | 23 + .../protobuf-2.6.1/gtest/m4/lt~obsolete.m4 | 99 + thirdparty/protobuf-2.6.1/gtest/make/Makefile | 80 + .../protobuf-2.6.1/gtest/msvc/gtest-md.sln | 45 + .../protobuf-2.6.1/gtest/msvc/gtest-md.vcproj | 126 + .../protobuf-2.6.1/gtest/msvc/gtest.sln | 45 + .../protobuf-2.6.1/gtest/msvc/gtest.vcproj | 126 + .../gtest/msvc/gtest_main-md.vcproj | 129 + .../gtest/msvc/gtest_main.vcproj | 129 + .../gtest/msvc/gtest_prod_test-md.vcproj | 164 + .../gtest/msvc/gtest_prod_test.vcproj | 164 + .../gtest/msvc/gtest_unittest-md.vcproj | 147 + .../gtest/msvc/gtest_unittest.vcproj | 147 + .../gtest/samples/.deps/sample1.Plo | 1 + .../gtest/samples/.deps/sample10_unittest.Po | 1 + .../gtest/samples/.deps/sample1_unittest.Po | 1 + .../gtest/samples/.deps/sample2.Plo | 1 + .../gtest/samples/.deps/sample4.Plo | 1 + .../.deps/test_fused_gtest_test-sample1.Po | 1 + .../test_fused_gtest_test-sample1_unittest.Po | 1 + .../gtest/samples/prime_tables.h | 123 + .../protobuf-2.6.1/gtest/samples/sample1.cc | 68 + .../protobuf-2.6.1/gtest/samples/sample1.h | 43 + .../gtest/samples/sample10_unittest.cc | 144 + .../gtest/samples/sample1_unittest.cc | 153 + .../protobuf-2.6.1/gtest/samples/sample2.cc | 56 + .../protobuf-2.6.1/gtest/samples/sample2.h | 85 + .../gtest/samples/sample2_unittest.cc | 109 + .../gtest/samples/sample3-inl.h | 172 + .../gtest/samples/sample3_unittest.cc | 151 + .../protobuf-2.6.1/gtest/samples/sample4.cc | 46 + .../protobuf-2.6.1/gtest/samples/sample4.h | 53 + .../gtest/samples/sample4_unittest.cc | 45 + .../gtest/samples/sample5_unittest.cc | 199 + .../gtest/samples/sample6_unittest.cc | 224 + .../gtest/samples/sample7_unittest.cc | 130 + .../gtest/samples/sample8_unittest.cc | 173 + .../gtest/samples/sample9_unittest.cc | 160 + .../gtest/scripts/fuse_gtest_files.py | 250 + .../gtest/scripts/gen_gtest_pred_impl.py | 730 + .../protobuf-2.6.1/gtest/scripts/gtest-config | 274 + .../gtest/scripts/gtest-config.in | 274 + .../protobuf-2.6.1/gtest/scripts/pump.py | 855 + .../gtest/scripts/test/Makefile | 59 + .../protobuf-2.6.1/gtest/src/.deps/.dirstamp | 0 .../gtest/src/.deps/gtest-all.Plo | 877 + .../gtest/src/.deps/gtest_main.Plo | 708 + thirdparty/protobuf-2.6.1/gtest/src/.dirstamp | 0 .../protobuf-2.6.1/gtest/src/gtest-all.cc | 48 + .../gtest/src/gtest-death-test.cc | 1341 + .../gtest/src/gtest-filepath.cc | 381 + .../gtest/src/gtest-internal-inl.h | 1056 + .../protobuf-2.6.1/gtest/src/gtest-port.cc | 805 + .../gtest/src/gtest-printers.cc | 364 + .../gtest/src/gtest-test-part.cc | 110 + .../gtest/src/gtest-typed-test.cc | 110 + thirdparty/protobuf-2.6.1/gtest/src/gtest.cc | 4838 ++++ .../protobuf-2.6.1/gtest/src/gtest_main.cc | 38 + .../gtest/test/.deps/gtest_all_test.Po | 1 + .../gtest/test/gtest-death-test_ex_test.cc | 93 + .../gtest/test/gtest-death-test_test.cc | 1368 ++ .../gtest/test/gtest-filepath_test.cc | 680 + .../gtest/test/gtest-linked_ptr_test.cc | 154 + .../gtest/test/gtest-listener_test.cc | 310 + .../gtest/test/gtest-message_test.cc | 159 + .../gtest/test/gtest-options_test.cc | 215 + .../gtest/test/gtest-param-test2_test.cc | 65 + .../gtest/test/gtest-param-test_test.cc | 897 + .../gtest/test/gtest-param-test_test.h | 57 + .../gtest/test/gtest-port_test.cc | 1253 + .../gtest/test/gtest-printers_test.cc | 1561 ++ .../gtest/test/gtest-test-part_test.cc | 208 + .../gtest/test/gtest-tuple_test.cc | 320 + .../gtest/test/gtest-typed-test2_test.cc | 45 + .../gtest/test/gtest-typed-test_test.cc | 360 + .../gtest/test/gtest-typed-test_test.h | 66 + .../gtest/test/gtest-unittest-api_test.cc | 341 + .../gtest/test/gtest_all_test.cc | 47 + .../test/gtest_break_on_failure_unittest.py | 218 + .../test/gtest_break_on_failure_unittest_.cc | 88 + .../gtest/test/gtest_catch_exceptions_test.py | 223 + .../test/gtest_catch_exceptions_test_.cc | 311 + .../gtest/test/gtest_color_test.py | 130 + .../gtest/test/gtest_color_test_.cc | 71 + .../gtest/test/gtest_env_var_test.py | 103 + .../gtest/test/gtest_env_var_test_.cc | 126 + .../gtest/test/gtest_environment_test.cc | 192 + .../gtest/test/gtest_filter_unittest.py | 633 + .../gtest/test/gtest_filter_unittest_.cc | 140 + .../gtest/test/gtest_help_test.py | 172 + .../gtest/test/gtest_help_test_.cc | 46 + .../gtest/test/gtest_list_tests_unittest.py | 177 + .../gtest/test/gtest_list_tests_unittest_.cc | 85 + .../gtest/test/gtest_main_unittest.cc | 45 + .../gtest/test/gtest_no_test_unittest.cc | 56 + .../gtest/test/gtest_output_test.py | 335 + .../gtest/test/gtest_output_test_.cc | 1034 + .../test/gtest_output_test_golden_lin.txt | 725 + .../gtest/test/gtest_pred_impl_unittest.cc | 2427 ++ .../gtest/test/gtest_prod_test.cc | 57 + .../gtest/test/gtest_repeat_test.cc | 253 + .../gtest/test/gtest_shuffle_test.py | 325 + .../gtest/test/gtest_shuffle_test_.cc | 103 + .../gtest/test/gtest_sole_header_test.cc | 57 + .../gtest/test/gtest_stress_test.cc | 256 + .../gtest/test/gtest_test_utils.py | 305 + .../test/gtest_throw_on_failure_ex_test.cc | 92 + .../gtest/test/gtest_throw_on_failure_test.py | 171 + .../test/gtest_throw_on_failure_test_.cc | 72 + .../gtest/test/gtest_uninitialized_test.py | 70 + .../gtest/test/gtest_uninitialized_test_.cc | 43 + .../gtest/test/gtest_unittest.cc | 7240 ++++++ .../gtest/test/gtest_xml_outfile1_test_.cc | 49 + .../gtest/test/gtest_xml_outfile2_test_.cc | 49 + .../gtest/test/gtest_xml_outfiles_test.py | 132 + .../gtest/test/gtest_xml_output_unittest.py | 284 + .../gtest/test/gtest_xml_output_unittest_.cc | 177 + .../gtest/test/gtest_xml_test_utils.py | 190 + .../protobuf-2.6.1/gtest/test/production.cc | 36 + .../protobuf-2.6.1/gtest/test/production.h | 55 + .../gtest/xcode/Config/DebugProject.xcconfig | 30 + .../xcode/Config/FrameworkTarget.xcconfig | 17 + .../gtest/xcode/Config/General.xcconfig | 41 + .../xcode/Config/ReleaseProject.xcconfig | 32 + .../xcode/Config/StaticLibraryTarget.xcconfig | 18 + .../gtest/xcode/Config/TestTarget.xcconfig | 8 + .../gtest/xcode/Resources/Info.plist | 30 + .../xcode/Samples/FrameworkSample/Info.plist | 28 + .../WidgetFramework.xcodeproj/project.pbxproj | 457 + .../xcode/Samples/FrameworkSample/runtests.sh | 62 + .../xcode/Samples/FrameworkSample/widget.cc | 63 + .../xcode/Samples/FrameworkSample/widget.h | 59 + .../Samples/FrameworkSample/widget_test.cc | 68 + .../gtest/xcode/Scripts/runtests.sh | 65 + .../gtest/xcode/Scripts/versiongenerate.py | 100 + .../xcode/gtest.xcodeproj/project.pbxproj | 1084 + thirdparty/protobuf-2.6.1/install-sh | 518 + thirdparty/protobuf-2.6.1/java/README.txt | 96 + thirdparty/protobuf-2.6.1/java/pom.xml | 217 + .../com/google/protobuf/AbstractMessage.java | 466 + .../google/protobuf/AbstractMessageLite.java | 355 + .../com/google/protobuf/AbstractParser.java | 253 + .../google/protobuf/BlockingRpcChannel.java | 51 + .../com/google/protobuf/BlockingService.java | 64 + .../google/protobuf/BoundedByteString.java | 163 + .../java/com/google/protobuf/ByteString.java | 1022 + .../com/google/protobuf/CodedInputStream.java | 1311 + .../google/protobuf/CodedOutputStream.java | 1297 + .../java/com/google/protobuf/Descriptors.java | 2238 ++ .../com/google/protobuf/DynamicMessage.java | 622 + .../java/com/google/protobuf/Extension.java | 96 + .../google/protobuf/ExtensionRegistry.java | 392 + .../protobuf/ExtensionRegistryLite.java | 185 + .../java/com/google/protobuf/FieldSet.java | 907 + .../com/google/protobuf/GeneratedMessage.java | 2213 ++ .../google/protobuf/GeneratedMessageLite.java | 949 + .../java/com/google/protobuf/Internal.java | 391 + .../InvalidProtocolBufferException.java | 122 + .../java/com/google/protobuf/LazyField.java | 154 + .../com/google/protobuf/LazyFieldLite.java | 176 + .../google/protobuf/LazyStringArrayList.java | 367 + .../com/google/protobuf/LazyStringList.java | 163 + .../google/protobuf/LiteralByteString.java | 362 + .../java/com/google/protobuf/Message.java | 244 + .../java/com/google/protobuf/MessageLite.java | 320 + .../google/protobuf/MessageLiteOrBuilder.java | 60 + .../com/google/protobuf/MessageOrBuilder.java | 143 + .../google/protobuf/MessageReflection.java | 931 + .../main/java/com/google/protobuf/Parser.java | 261 + .../google/protobuf/ProtocolMessageEnum.java | 58 + .../google/protobuf/ProtocolStringList.java | 48 + .../google/protobuf/RepeatedFieldBuilder.java | 696 + .../com/google/protobuf/RopeByteString.java | 957 + .../java/com/google/protobuf/RpcCallback.java | 47 + .../java/com/google/protobuf/RpcChannel.java | 71 + .../com/google/protobuf/RpcController.java | 118 + .../java/com/google/protobuf/RpcUtil.java | 134 + .../java/com/google/protobuf/Service.java | 117 + .../com/google/protobuf/ServiceException.java | 52 + .../google/protobuf/SingleFieldBuilder.java | 241 + .../com/google/protobuf/SmallSortedMap.java | 618 + .../java/com/google/protobuf/TextFormat.java | 1984 ++ .../UninitializedMessageException.java | 99 + .../com/google/protobuf/UnknownFieldSet.java | 995 + .../protobuf/UnmodifiableLazyStringList.java | 205 + .../main/java/com/google/protobuf/Utf8.java | 349 + .../java/com/google/protobuf/WireFormat.java | 163 + .../google/protobuf/AbstractMessageTest.java | 527 + .../protobuf/BoundedByteStringTest.java | 68 + .../com/google/protobuf/ByteStringTest.java | 759 + .../com/google/protobuf/CheckUtf8Test.java | 141 + .../google/protobuf/CodedInputStreamTest.java | 769 + .../protobuf/CodedOutputStreamTest.java | 401 + .../google/protobuf/DeprecatedFieldTest.java | 80 + .../com/google/protobuf/DescriptorsTest.java | 735 + .../google/protobuf/DynamicMessageTest.java | 326 + .../protobuf/ForceFieldBuildersPreRun.java | 48 + .../google/protobuf/GeneratedMessageTest.java | 1515 ++ .../com/google/protobuf/IsValidUtf8Test.java | 180 + .../google/protobuf/IsValidUtf8TestUtil.java | 421 + .../google/protobuf/LazyFieldLiteTest.java | 134 + .../com/google/protobuf/LazyFieldTest.java | 121 + .../google/protobuf/LazyMessageLiteTest.java | 319 + .../protobuf/LazyStringArrayListTest.java | 174 + .../protobuf/LazyStringEndToEndTest.java | 143 + .../protobuf/LiteEqualsAndHashTest.java | 85 + .../java/com/google/protobuf/LiteTest.java | 148 + .../protobuf/LiteralByteStringTest.java | 396 + .../java/com/google/protobuf/MessageTest.java | 353 + .../google/protobuf/NestedBuildersTest.java | 185 + .../java/com/google/protobuf/ParserTest.java | 381 + .../protobuf/RepeatedFieldBuilderTest.java | 190 + .../protobuf/RopeByteStringSubstringTest.java | 97 + .../google/protobuf/RopeByteStringTest.java | 115 + .../java/com/google/protobuf/ServiceTest.java | 320 + .../protobuf/SingleFieldBuilderTest.java | 155 + .../google/protobuf/SmallSortedMapTest.java | 420 + .../google/protobuf/TestBadIdentifiers.java | 96 + .../java/com/google/protobuf/TestUtil.java | 4124 ++++ .../com/google/protobuf/TextFormatTest.java | 994 + .../google/protobuf/UnknownFieldSetTest.java | 653 + .../UnmodifiableLazyStringListTest.java | 227 + .../com/google/protobuf/WireFormatTest.java | 606 + .../google/protobuf/lazy_fields_lite.proto | 61 + .../protobuf/lite_equals_and_hash.proto | 55 + .../google/protobuf/multiple_files_test.proto | 77 + .../protobuf/nested_builders_test.proto | 53 + .../google/protobuf/nested_extension.proto | 46 + .../protobuf/nested_extension_lite.proto | 48 + .../protobuf/non_nested_extension.proto | 49 + .../protobuf/non_nested_extension_lite.proto | 50 + .../protobuf/outer_class_name_test.proto | 38 + .../protobuf/outer_class_name_test2.proto | 42 + .../protobuf/outer_class_name_test3.proto | 43 + .../protobuf/test_bad_identifiers.proto | 157 + .../com/google/protobuf/test_check_utf8.proto | 50 + .../protobuf/test_check_utf8_size.proto | 51 + .../google/protobuf/test_custom_options.proto | 43 + thirdparty/protobuf-2.6.1/libtool | 11909 +++++++++ thirdparty/protobuf-2.6.1/ltmain.sh | 11249 +++++++++ .../protobuf-2.6.1/m4/ac_system_extensions.m4 | 37 + .../protobuf-2.6.1/m4/acx_check_suncc.m4 | 75 + thirdparty/protobuf-2.6.1/m4/acx_pthread.m4 | 397 + thirdparty/protobuf-2.6.1/m4/libtool.m4 | 8388 +++++++ thirdparty/protobuf-2.6.1/m4/ltoptions.m4 | 437 + thirdparty/protobuf-2.6.1/m4/ltsugar.m4 | 124 + thirdparty/protobuf-2.6.1/m4/ltversion.m4 | 23 + thirdparty/protobuf-2.6.1/m4/lt~obsolete.m4 | 99 + thirdparty/protobuf-2.6.1/m4/stl_hash.m4 | 72 + thirdparty/protobuf-2.6.1/missing | 215 + thirdparty/protobuf-2.6.1/protobuf-lite.pc | 13 + thirdparty/protobuf-2.6.1/protobuf-lite.pc.in | 13 + thirdparty/protobuf-2.6.1/protobuf.pc | 14 + thirdparty/protobuf-2.6.1/protobuf.pc.in | 14 + .../protobuf-2.6.1/python/.eggs/README.txt | 6 + .../EGG-INFO/PKG-INFO | 10 + .../EGG-INFO/SOURCES.txt | 44 + .../EGG-INFO/dependency_links.txt | 1 + .../EGG-INFO/entry_points.txt | 6 + .../EGG-INFO/namespace_packages.txt | 1 + .../EGG-INFO/not-zip-safe | 1 + .../EGG-INFO/requires.txt | 3 + .../EGG-INFO/top_level.txt | 1 + .../google/__init__.py | 7 + .../google/__init__.pyc | Bin 0 -> 399 bytes .../google/apputils/__init__.py | 7 + .../google/apputils/__init__.pyc | Bin 0 -> 408 bytes .../google/apputils/app.py | 379 + .../google/apputils/app.pyc | Bin 0 -> 14348 bytes .../google/apputils/appcommands.py | 805 + .../google/apputils/appcommands.pyc | Bin 0 -> 31270 bytes .../google/apputils/basetest.py | 1644 ++ .../google/apputils/basetest.pyc | Bin 0 -> 61439 bytes .../google/apputils/datelib.py | 525 + .../google/apputils/datelib.pyc | Bin 0 -> 20307 bytes .../google/apputils/debug.py | 63 + .../google/apputils/debug.pyc | Bin 0 -> 1463 bytes .../google/apputils/file_util.py | 252 + .../google/apputils/file_util.pyc | Bin 0 -> 9292 bytes .../google/apputils/humanize.py | 507 + .../google/apputils/humanize.pyc | Bin 0 -> 17308 bytes .../google/apputils/resources.py | 67 + .../google/apputils/resources.pyc | Bin 0 -> 2393 bytes .../google/apputils/run_script_module.py | 217 + .../google/apputils/run_script_module.pyc | Bin 0 -> 6484 bytes .../google/apputils/setup_command.py | 159 + .../google/apputils/setup_command.pyc | Bin 0 -> 5861 bytes .../google/apputils/shellutil.py | 50 + .../google/apputils/shellutil.pyc | Bin 0 -> 1326 bytes .../google/apputils/stopwatch.py | 204 + .../google/apputils/stopwatch.pyc | Bin 0 -> 6991 bytes .../.eggs/python_gflags-3.1.1-py2.7.egg | Bin 0 -> 106905 bytes thirdparty/protobuf-2.6.1/python/README.txt | 105 + .../lib.linux-x86_64-2.7/google/__init__.py | 1 + .../google/protobuf/__init__.py | 0 .../google/protobuf/compiler/__init__.py | 0 .../google/protobuf/compiler/plugin_pb2.py | 184 + .../google/protobuf/descriptor.py | 849 + .../google/protobuf/descriptor_database.py | 137 + .../google/protobuf/descriptor_pb2.py | 1522 ++ .../google/protobuf/descriptor_pool.py | 643 + .../google/protobuf/internal/__init__.py | 0 .../protobuf/internal/api_implementation.py | 89 + .../google/protobuf/internal/containers.py | 269 + .../google/protobuf/internal/cpp_message.py | 663 + .../google/protobuf/internal/decoder.py | 831 + .../google/protobuf/internal/encoder.py | 788 + .../protobuf/internal/enum_type_wrapper.py | 89 + .../protobuf/internal/message_listener.py | 78 + .../protobuf/internal/python_message.py | 1251 + .../google/protobuf/internal/type_checkers.py | 328 + .../google/protobuf/internal/wire_format.py | 268 + .../google/protobuf/message.py | 284 + .../google/protobuf/message_factory.py | 155 + .../google/protobuf/pyext/__init__.py | 0 .../google/protobuf/pyext/cpp_message.py | 61 + .../google/protobuf/reflection.py | 205 + .../google/protobuf/service.py | 226 + .../google/protobuf/service_reflection.py | 284 + .../google/protobuf/symbol_database.py | 185 + .../google/protobuf/text_encoding.py | 110 + .../google/protobuf/text_format.py | 873 + .../python/dist/protobuf-2.6.1-py2.7.egg | Bin 0 -> 209814 bytes thirdparty/protobuf-2.6.1/python/ez_setup.py | 284 + .../protobuf-2.6.1/python/google/__init__.py | 1 + .../protobuf-2.6.1/python/google/__init__.pyc | Bin 0 -> 233 bytes .../python/google/protobuf/__init__.py | 0 .../python/google/protobuf/__init__.pyc | Bin 0 -> 155 bytes .../google/protobuf/compiler/__init__.py | 0 .../google/protobuf/compiler/plugin_pb2.py | 184 + .../python/google/protobuf/descriptor.py | 849 + .../python/google/protobuf/descriptor.pyc | Bin 0 -> 31036 bytes .../google/protobuf/descriptor_database.py | 137 + .../python/google/protobuf/descriptor_pb2.py | 1522 ++ .../python/google/protobuf/descriptor_pool.py | 643 + .../google/protobuf/internal/__init__.py | 0 .../google/protobuf/internal/__init__.pyc | Bin 0 -> 164 bytes .../protobuf/internal/api_implementation.cc | 139 + .../protobuf/internal/api_implementation.py | 89 + .../protobuf/internal/api_implementation.pyc | Bin 0 -> 1480 bytes .../api_implementation_default_test.py | 63 + .../google/protobuf/internal/containers.py | 269 + .../google/protobuf/internal/cpp_message.py | 663 + .../google/protobuf/internal/decoder.py | 831 + .../internal/descriptor_database_test.py | 63 + .../protobuf/internal/descriptor_pool_test.py | 564 + .../internal/descriptor_pool_test1.proto | 94 + .../internal/descriptor_pool_test1_pb2.py | 467 + .../internal/descriptor_pool_test2.proto | 70 + .../internal/descriptor_pool_test2_pb2.py | 259 + .../internal/descriptor_python_test.py | 54 + .../protobuf/internal/descriptor_test.py | 669 + .../protobuf/internal/descriptor_test.pyc | Bin 0 -> 19879 bytes .../google/protobuf/internal/encoder.py | 788 + .../protobuf/internal/enum_type_wrapper.py | 89 + .../protobuf/internal/enum_type_wrapper.pyc | Bin 0 -> 3052 bytes .../protobuf/internal/factory_test1.proto | 57 + .../protobuf/internal/factory_test1_pb2.py | 187 + .../protobuf/internal/factory_test2.proto | 92 + .../protobuf/internal/factory_test2_pb2.py | 420 + .../protobuf/internal/generator_test.py | 343 + .../internal/message_factory_python_test.py | 54 + .../protobuf/internal/message_factory_test.py | 131 + .../protobuf/internal/message_listener.py | 78 + .../protobuf/internal/message_python_test.py | 54 + .../google/protobuf/internal/message_test.py | 681 + .../internal/missing_enum_values.proto | 50 + .../internal/missing_enum_values_pb2.py | 187 + .../protobuf/internal/more_extensions.proto | 58 + .../internal/more_extensions_dynamic.proto | 49 + .../internal/more_extensions_dynamic_pb2.py | 90 + .../protobuf/internal/more_extensions_pb2.py | 179 + .../protobuf/internal/more_messages.proto | 51 + .../protobuf/internal/more_messages_pb2.py | 101 + .../protobuf/internal/python_message.py | 1251 + .../protobuf/internal/reflection_test.py | 2934 +++ .../internal/service_reflection_test.py | 136 + .../protobuf/internal/symbol_database_test.py | 120 + .../internal/test_bad_identifiers.proto | 52 + .../internal/test_bad_identifiers_pb2.py | 158 + .../google/protobuf/internal/test_util.py | 662 + .../protobuf/internal/text_encoding_test.py | 68 + .../protobuf/internal/text_format_test.py | 743 + .../google/protobuf/internal/type_checkers.py | 328 + .../protobuf/internal/unknown_fields_test.py | 231 + .../google/protobuf/internal/wire_format.py | 268 + .../protobuf/internal/wire_format_test.py | 253 + .../python/google/protobuf/message.py | 284 + .../python/google/protobuf/message_factory.py | 155 + .../python/google/protobuf/pyext/README | 6 + .../python/google/protobuf/pyext/__init__.py | 0 .../python/google/protobuf/pyext/__init__.pyc | Bin 0 -> 161 bytes .../google/protobuf/pyext/cpp_message.py | 61 + .../google/protobuf/pyext/descriptor.cc | 357 + .../python/google/protobuf/pyext/descriptor.h | 96 + .../protobuf/pyext/descriptor_cpp2_test.py | 58 + .../protobuf/pyext/descriptor_cpp2_test.pyc | Bin 0 -> 1305 bytes .../google/protobuf/pyext/extension_dict.cc | 338 + .../google/protobuf/pyext/extension_dict.h | 123 + .../python/google/protobuf/pyext/message.cc | 2561 ++ .../python/google/protobuf/pyext/message.h | 305 + .../pyext/message_factory_cpp2_test.py | 56 + .../protobuf/pyext/proto2_api_test.proto | 38 + .../python/google/protobuf/pyext/python.proto | 66 + .../google/protobuf/pyext/python_pb2.py | 218 + .../google/protobuf/pyext/python_protobuf.h | 57 + .../pyext/reflection_cpp2_generated_test.py | 94 + .../pyext/repeated_composite_container.cc | 763 + .../pyext/repeated_composite_container.h | 172 + .../pyext/repeated_scalar_container.cc | 825 + .../pyext/repeated_scalar_container.h | 112 + .../protobuf/pyext/scoped_pyobject_ptr.h | 95 + .../python/google/protobuf/reflection.py | 205 + .../python/google/protobuf/service.py | 226 + .../google/protobuf/service_reflection.py | 284 + .../python/google/protobuf/symbol_database.py | 185 + .../python/google/protobuf/text_encoding.py | 110 + .../python/google/protobuf/text_format.py | 873 + .../protobuf/unittest_custom_options_pb2.py | 1642 ++ .../protobuf/unittest_custom_options_pb2.pyc | Bin 0 -> 37561 bytes .../google/protobuf/unittest_import_pb2.py | 104 + .../protobuf/unittest_import_public_pb2.py | 69 + .../google/protobuf/unittest_mset_pb2.py | 281 + .../unittest_no_generic_services_pb2.py | 99 + .../python/google/protobuf/unittest_pb2.py | 5926 +++++ thirdparty/protobuf-2.6.1/python/mox.py | 1401 ++ .../python/protobuf.egg-info/PKG-INFO | 10 + .../python/protobuf.egg-info/SOURCES.txt | 37 + .../protobuf.egg-info/dependency_links.txt | 1 + .../protobuf.egg-info/namespace_packages.txt | 1 + .../python/protobuf.egg-info/requires.txt | 1 + .../python/protobuf.egg-info/top_level.txt | 1 + thirdparty/protobuf-2.6.1/python/setup.py | 201 + thirdparty/protobuf-2.6.1/python/setup.pyc | Bin 0 -> 7976 bytes thirdparty/protobuf-2.6.1/python/stubout.py | 140 + thirdparty/protobuf-2.6.1/src/Makefile | 4115 ++++ thirdparty/protobuf-2.6.1/src/Makefile.am | 419 + thirdparty/protobuf-2.6.1/src/Makefile.in | 4115 ++++ .../src/google/protobuf/.deps/.dirstamp | 0 .../src/google/protobuf/.deps/descriptor.Plo | 792 + .../google/protobuf/.deps/descriptor.pb.Plo | 715 + .../protobuf/.deps/descriptor_database.Plo | 698 + .../google/protobuf/.deps/dynamic_message.Plo | 769 + .../google/protobuf/.deps/extension_set.Plo | 690 + .../protobuf/.deps/extension_set_heavy.Plo | 699 + .../.deps/generated_message_reflection.Plo | 603 + .../protobuf/.deps/generated_message_util.Plo | 436 + .../src/google/protobuf/.deps/message.Plo | 739 + .../google/protobuf/.deps/message_lite.Plo | 532 + ...protobuf_lazy_descriptor_test-test_util.Po | 791 + ...otobuf_lazy_descriptor_test-unittest.pb.Po | 719 + ...criptor_test-unittest_custom_options.pb.Po | 713 + ...tor_test-unittest_embed_optimize_for.pb.Po | 727 + ..._lazy_descriptor_test-unittest_empty.pb.Po | 710 + ...lazy_descriptor_test-unittest_import.pb.Po | 715 + ...descriptor_test-unittest_import_lite.pb.Po | 692 + ...scriptor_test-unittest_import_public.pb.Po | 712 + ...tor_test-unittest_import_public_lite.pb.Po | 691 + ...f_lazy_descriptor_test-unittest_lite.pb.Po | 695 + ...r_test-unittest_lite_imports_nonlite.pb.Po | 719 + ...f_lazy_descriptor_test-unittest_mset.pb.Po | 712 + ...or_test-unittest_no_generic_services.pb.Po | 714 + ...escriptor_test-unittest_optimize_for.pb.Po | 722 + .../.deps/protobuf_lite_test-lite_unittest.Po | 683 + .../protobuf_lite_test-test_util_lite.Po | 565 + ...tobuf_lite_test-unittest_import_lite.pb.Po | 692 + ...ite_test-unittest_import_public_lite.pb.Po | 691 + .../protobuf_lite_test-unittest_lite.pb.Po | 695 + ...tobuf_test-descriptor_database_unittest.Po | 824 + .../protobuf_test-descriptor_unittest.Po | 849 + .../protobuf_test-dynamic_message_unittest.Po | 832 + .../protobuf_test-extension_set_unittest.Po | 898 + ...t-generated_message_reflection_unittest.Po | 797 + .../.deps/protobuf_test-message_unittest.Po | 872 + .../protobuf_test-reflection_ops_unittest.Po | 797 + ...test-repeated_field_reflection_unittest.Po | 794 + .../protobuf_test-repeated_field_unittest.Po | 808 + .../protobuf/.deps/protobuf_test-test_util.Po | 791 + .../protobuf_test-text_format_unittest.Po | 887 + .../.deps/protobuf_test-unittest.pb.Po | 719 + ...rotobuf_test-unittest_custom_options.pb.Po | 713 + ...buf_test-unittest_embed_optimize_for.pb.Po | 727 + .../.deps/protobuf_test-unittest_empty.pb.Po | 710 + .../.deps/protobuf_test-unittest_import.pb.Po | 715 + .../protobuf_test-unittest_import_lite.pb.Po | 692 + ...protobuf_test-unittest_import_public.pb.Po | 712 + ...buf_test-unittest_import_public_lite.pb.Po | 691 + .../.deps/protobuf_test-unittest_lite.pb.Po | 695 + ...f_test-unittest_lite_imports_nonlite.pb.Po | 719 + .../.deps/protobuf_test-unittest_mset.pb.Po | 712 + ...uf_test-unittest_no_generic_services.pb.Po | 714 + .../protobuf_test-unittest_optimize_for.pb.Po | 722 + ...rotobuf_test-unknown_field_set_unittest.Po | 854 + .../protobuf_test-wire_format_unittest.Po | 859 + .../google/protobuf/.deps/reflection_ops.Plo | 586 + .../google/protobuf/.deps/repeated_field.Plo | 540 + .../src/google/protobuf/.deps/service.Plo | 422 + .../src/google/protobuf/.deps/text_format.Plo | 811 + .../protobuf/.deps/unknown_field_set.Plo | 699 + .../src/google/protobuf/.deps/wire_format.Plo | 716 + .../protobuf/.deps/wire_format_lite.Plo | 667 + .../src/google/protobuf/.dirstamp | 0 .../google/protobuf/compiler/.deps/.dirstamp | 0 .../compiler/.deps/code_generator.Plo | 448 + .../compiler/.deps/command_line_interface.Plo | 840 + .../protobuf/compiler/.deps/importer.Plo | 697 + .../google/protobuf/compiler/.deps/main.Po | 491 + .../google/protobuf/compiler/.deps/parser.Plo | 723 + .../google/protobuf/compiler/.deps/plugin.Plo | 622 + .../protobuf/compiler/.deps/plugin.pb.Plo | 717 + ...uf_test-command_line_interface_unittest.Po | 851 + .../.deps/protobuf_test-importer_unittest.Po | 856 + .../protobuf_test-mock_code_generator.Po | 822 + .../.deps/protobuf_test-parser_unittest.Po | 902 + .../protobuf/compiler/.deps/subprocess.Plo | 633 + .../.deps/test_plugin-mock_code_generator.Po | 828 + .../compiler/.deps/test_plugin-test_plugin.Po | 452 + .../protobuf/compiler/.deps/zip_writer.Plo | 543 + .../src/google/protobuf/compiler/.dirstamp | 0 .../protobuf/compiler/code_generator.cc | 84 + .../google/protobuf/compiler/code_generator.h | 145 + .../compiler/command_line_interface.cc | 1603 ++ .../compiler/command_line_interface.h | 378 + .../command_line_interface_unittest.cc | 1654 ++ .../protobuf/compiler/cpp/.deps/.dirstamp | 0 .../protobuf/compiler/cpp/.deps/cpp_enum.Plo | 595 + .../compiler/cpp/.deps/cpp_enum_field.Plo | 636 + .../compiler/cpp/.deps/cpp_extension.Plo | 594 + .../protobuf/compiler/cpp/.deps/cpp_field.Plo | 752 + .../protobuf/compiler/cpp/.deps/cpp_file.Plo | 645 + .../compiler/cpp/.deps/cpp_generator.Plo | 640 + .../compiler/cpp/.deps/cpp_helpers.Plo | 615 + .../compiler/cpp/.deps/cpp_message.Plo | 782 + .../compiler/cpp/.deps/cpp_message_field.Plo | 637 + .../cpp/.deps/cpp_primitive_field.Plo | 743 + .../compiler/cpp/.deps/cpp_service.Plo | 595 + .../compiler/cpp/.deps/cpp_string_field.Plo | 637 + ...riptor_test-cpp_test_bad_identifiers.pb.Po | 716 + ...tobuf_lazy_descriptor_test-cpp_unittest.Po | 917 + .../protobuf_test-cpp_bootstrap_unittest.Po | 807 + .../protobuf_test-cpp_plugin_unittest.Po | 776 + ...otobuf_test-cpp_test_bad_identifiers.pb.Po | 716 + .../cpp/.deps/protobuf_test-cpp_unittest.Po | 917 + .../google/protobuf/compiler/cpp/.dirstamp | 0 .../compiler/cpp/cpp_bootstrap_unittest.cc | 158 + .../google/protobuf/compiler/cpp/cpp_enum.cc | 288 + .../google/protobuf/compiler/cpp/cpp_enum.h | 103 + .../protobuf/compiler/cpp/cpp_enum_field.cc | 431 + .../protobuf/compiler/cpp/cpp_enum_field.h | 122 + .../protobuf/compiler/cpp/cpp_extension.cc | 210 + .../protobuf/compiler/cpp/cpp_extension.h | 86 + .../google/protobuf/compiler/cpp/cpp_field.cc | 166 + .../google/protobuf/compiler/cpp/cpp_field.h | 185 + .../google/protobuf/compiler/cpp/cpp_file.cc | 665 + .../google/protobuf/compiler/cpp/cpp_file.h | 99 + .../protobuf/compiler/cpp/cpp_generator.cc | 125 + .../protobuf/compiler/cpp/cpp_generator.h | 72 + .../protobuf/compiler/cpp/cpp_helpers.cc | 494 + .../protobuf/compiler/cpp/cpp_helpers.h | 206 + .../protobuf/compiler/cpp/cpp_message.cc | 2645 ++ .../protobuf/compiler/cpp/cpp_message.h | 175 + .../compiler/cpp/cpp_message_field.cc | 375 + .../protobuf/compiler/cpp/cpp_message_field.h | 121 + .../protobuf/compiler/cpp/cpp_options.h | 58 + .../compiler/cpp/cpp_plugin_unittest.cc | 123 + .../compiler/cpp/cpp_primitive_field.cc | 451 + .../compiler/cpp/cpp_primitive_field.h | 123 + .../protobuf/compiler/cpp/cpp_service.cc | 334 + .../protobuf/compiler/cpp/cpp_service.h | 118 + .../protobuf/compiler/cpp/cpp_string_field.cc | 642 + .../protobuf/compiler/cpp/cpp_string_field.h | 127 + .../cpp/cpp_test_bad_identifiers.proto | 132 + .../protobuf/compiler/cpp/cpp_unittest.cc | 2074 ++ .../protobuf/compiler/cpp/cpp_unittest.h | 51 + .../src/google/protobuf/compiler/importer.cc | 480 + .../src/google/protobuf/compiler/importer.h | 317 + .../protobuf/compiler/importer_unittest.cc | 617 + .../protobuf/compiler/java/.deps/.dirstamp | 0 .../compiler/java/.deps/java_context.Plo | 636 + .../compiler/java/.deps/java_doc_comment.Plo | 487 + .../compiler/java/.deps/java_enum.Plo | 639 + .../compiler/java/.deps/java_enum_field.Plo | 749 + .../compiler/java/.deps/java_extension.Plo | 640 + .../compiler/java/.deps/java_field.Plo | 650 + .../compiler/java/.deps/java_file.Plo | 662 + .../compiler/java/.deps/java_generator.Plo | 644 + .../java/.deps/java_generator_factory.Plo | 644 + .../compiler/java/.deps/java_helpers.Plo | 737 + .../java/.deps/java_lazy_message_field.Plo | 639 + .../compiler/java/.deps/java_message.Plo | 796 + .../java/.deps/java_message_field.Plo | 749 + .../java/.deps/java_name_resolver.Plo | 593 + .../java/.deps/java_primitive_field.Plo | 749 + .../compiler/java/.deps/java_service.Plo | 639 + .../java/.deps/java_shared_code_generator.Plo | 636 + .../compiler/java/.deps/java_string_field.Plo | 749 + ...protobuf_test-java_doc_comment_unittest.Po | 727 + .../protobuf_test-java_plugin_unittest.Po | 776 + .../google/protobuf/compiler/java/.dirstamp | 0 .../protobuf/compiler/java/java_context.cc | 195 + .../protobuf/compiler/java/java_context.h | 95 + .../compiler/java/java_doc_comment.cc | 233 + .../protobuf/compiler/java/java_doc_comment.h | 69 + .../java/java_doc_comment_unittest.cc | 67 + .../protobuf/compiler/java/java_enum.cc | 333 + .../google/protobuf/compiler/java/java_enum.h | 99 + .../protobuf/compiler/java/java_enum_field.cc | 778 + .../protobuf/compiler/java/java_enum_field.h | 158 + .../protobuf/compiler/java/java_extension.cc | 207 + .../protobuf/compiler/java/java_extension.h | 109 + .../protobuf/compiler/java/java_field.cc | 213 + .../protobuf/compiler/java/java_field.h | 162 + .../protobuf/compiler/java/java_file.cc | 534 + .../google/protobuf/compiler/java/java_file.h | 115 + .../protobuf/compiler/java/java_generator.cc | 158 + .../protobuf/compiler/java/java_generator.h | 72 + .../compiler/java/java_generator_factory.cc | 77 + .../compiler/java/java_generator_factory.h | 101 + .../protobuf/compiler/java/java_helpers.cc | 737 + .../protobuf/compiler/java/java_helpers.h | 322 + .../compiler/java/java_lazy_message_field.cc | 826 + .../compiler/java/java_lazy_message_field.h | 121 + .../protobuf/compiler/java/java_message.cc | 1666 ++ .../protobuf/compiler/java/java_message.h | 140 + .../compiler/java/java_message_field.cc | 1343 + .../compiler/java/java_message_field.h | 173 + .../compiler/java/java_name_resolver.cc | 266 + .../compiler/java/java_name_resolver.h | 124 + .../compiler/java/java_plugin_unittest.cc | 124 + .../compiler/java/java_primitive_field.cc | 877 + .../compiler/java/java_primitive_field.h | 160 + .../protobuf/compiler/java/java_service.cc | 473 + .../protobuf/compiler/java/java_service.h | 135 + .../java/java_shared_code_generator.cc | 201 + .../java/java_shared_code_generator.h | 90 + .../compiler/java/java_string_field.cc | 1056 + .../compiler/java/java_string_field.h | 160 + .../src/google/protobuf/compiler/main.cc | 61 + .../protobuf/compiler/mock_code_generator.cc | 240 + .../protobuf/compiler/mock_code_generator.h | 117 + .../google/protobuf/compiler/package_info.h | 64 + .../src/google/protobuf/compiler/parser.cc | 1750 ++ .../src/google/protobuf/compiler/parser.h | 522 + .../protobuf/compiler/parser_unittest.cc | 2612 ++ .../src/google/protobuf/compiler/plugin.cc | 163 + .../src/google/protobuf/compiler/plugin.h | 72 + .../src/google/protobuf/compiler/plugin.pb.cc | 1148 + .../src/google/protobuf/compiler/plugin.pb.h | 897 + .../src/google/protobuf/compiler/plugin.proto | 147 + .../protobuf/compiler/python/.deps/.dirstamp | 0 .../protobuf_test-python_plugin_unittest.Po | 776 + .../python/.deps/python_generator.Plo | 639 + .../google/protobuf/compiler/python/.dirstamp | 0 .../compiler/python/python_generator.cc | 1262 + .../compiler/python/python_generator.h | 166 + .../compiler/python/python_plugin_unittest.cc | 118 + .../google/protobuf/compiler/subprocess.cc | 463 + .../src/google/protobuf/compiler/subprocess.h | 108 + .../google/protobuf/compiler/test_plugin.cc | 51 + .../protobuf/compiler/zip_output_unittest.sh | 91 + .../google/protobuf/compiler/zip_writer.cc | 218 + .../src/google/protobuf/compiler/zip_writer.h | 93 + .../src/google/protobuf/descriptor.cc | 5420 +++++ .../src/google/protobuf/descriptor.h | 1691 ++ .../src/google/protobuf/descriptor.pb.cc | 9135 +++++++ .../src/google/protobuf/descriptor.pb.h | 6761 ++++++ .../src/google/protobuf/descriptor.proto | 687 + .../google/protobuf/descriptor_database.cc | 543 + .../src/google/protobuf/descriptor_database.h | 369 + .../protobuf/descriptor_database_unittest.cc | 748 + .../google/protobuf/descriptor_unittest.cc | 5501 +++++ .../src/google/protobuf/dynamic_message.cc | 764 + .../src/google/protobuf/dynamic_message.h | 148 + .../protobuf/dynamic_message_unittest.cc | 230 + .../src/google/protobuf/extension_set.cc | 1663 ++ .../src/google/protobuf/extension_set.h | 1234 + .../google/protobuf/extension_set_heavy.cc | 734 + .../google/protobuf/extension_set_unittest.cc | 1095 + .../protobuf/generated_enum_reflection.h | 91 + .../protobuf/generated_message_reflection.cc | 1683 ++ .../protobuf/generated_message_reflection.h | 504 + .../generated_message_reflection_unittest.cc | 795 + .../google/protobuf/generated_message_util.cc | 65 + .../google/protobuf/generated_message_util.h | 113 + .../src/google/protobuf/io/.deps/.dirstamp | 0 .../google/protobuf/io/.deps/coded_stream.Plo | 557 + .../google/protobuf/io/.deps/gzip_stream.Plo | 475 + .../src/google/protobuf/io/.deps/printer.Plo | 457 + .../protobuf_test-coded_stream_unittest.Po | 782 + .../.deps/protobuf_test-printer_unittest.Po | 742 + .../.deps/protobuf_test-tokenizer_unittest.Po | 808 + ...protobuf_test-zero_copy_stream_unittest.Po | 806 + .../src/google/protobuf/io/.deps/strtod.Plo | 426 + .../google/protobuf/io/.deps/tokenizer.Plo | 452 + .../protobuf/io/.deps/zero_copy_stream.Plo | 422 + .../io/.deps/zero_copy_stream_impl.Plo | 562 + .../io/.deps/zero_copy_stream_impl_lite.Plo | 456 + .../src/google/protobuf/io/.dirstamp | 0 .../src/google/protobuf/io/coded_stream.cc | 914 + .../src/google/protobuf/io/coded_stream.h | 1220 + .../src/google/protobuf/io/coded_stream_inl.h | 69 + .../protobuf/io/coded_stream_unittest.cc | 1378 ++ .../src/google/protobuf/io/gzip_stream.cc | 326 + .../src/google/protobuf/io/gzip_stream.h | 209 + .../protobuf/io/gzip_stream_unittest.sh | 44 + .../src/google/protobuf/io/package_info.h | 54 + .../src/google/protobuf/io/printer.cc | 198 + .../src/google/protobuf/io/printer.h | 136 + .../google/protobuf/io/printer_unittest.cc | 285 + .../src/google/protobuf/io/strtod.cc | 113 + .../src/google/protobuf/io/strtod.h | 50 + .../src/google/protobuf/io/tokenizer.cc | 1127 + .../src/google/protobuf/io/tokenizer.h | 402 + .../google/protobuf/io/tokenizer_unittest.cc | 999 + .../google/protobuf/io/zero_copy_stream.cc | 57 + .../src/google/protobuf/io/zero_copy_stream.h | 248 + .../protobuf/io/zero_copy_stream_impl.cc | 473 + .../protobuf/io/zero_copy_stream_impl.h | 358 + .../protobuf/io/zero_copy_stream_impl_lite.cc | 405 + .../protobuf/io/zero_copy_stream_impl_lite.h | 354 + .../protobuf/io/zero_copy_stream_unittest.cc | 965 + .../src/google/protobuf/lite_unittest.cc | 350 + .../src/google/protobuf/message.cc | 358 + .../src/google/protobuf/message.h | 866 + .../src/google/protobuf/message_lite.cc | 335 + .../src/google/protobuf/message_lite.h | 247 + .../src/google/protobuf/message_unittest.cc | 427 + .../src/google/protobuf/package_info.h | 64 + .../src/google/protobuf/reflection_ops.cc | 269 + .../src/google/protobuf/reflection_ops.h | 81 + .../protobuf/reflection_ops_unittest.cc | 475 + .../src/google/protobuf/repeated_field.cc | 87 + .../src/google/protobuf/repeated_field.h | 1603 ++ .../repeated_field_reflection_unittest.cc | 195 + .../protobuf/repeated_field_unittest.cc | 1442 ++ .../src/google/protobuf/service.cc | 46 + .../src/google/protobuf/service.h | 291 + .../src/google/protobuf/stubs/.deps/.dirstamp | 0 .../.deps/atomicops_internals_x86_gcc.Plo | 432 + .../.deps/atomicops_internals_x86_msvc.Plo | 430 + .../google/protobuf/stubs/.deps/common.Plo | 451 + .../src/google/protobuf/stubs/.deps/once.Plo | 432 + .../.deps/protobuf_test-common_unittest.Po | 735 + .../.deps/protobuf_test-once_unittest.Po | 741 + .../protobuf_test-stringprintf_unittest.Po | 733 + ...otobuf_test-structurally_valid_unittest.Po | 721 + .../.deps/protobuf_test-strutil_unittest.Po | 732 + .../protobuf_test-template_util_unittest.Po | 732 + .../protobuf_test-type_traits_unittest.Po | 734 + .../protobuf/stubs/.deps/stringprintf.Plo | 474 + .../stubs/.deps/structurally_valid.Plo | 421 + .../google/protobuf/stubs/.deps/strutil.Plo | 539 + .../protobuf/stubs/.deps/substitute.Plo | 444 + .../src/google/protobuf/stubs/.dirstamp | 0 .../src/google/protobuf/stubs/atomicops.h | 227 + .../stubs/atomicops_internals_arm64_gcc.h | 325 + .../stubs/atomicops_internals_arm_gcc.h | 151 + .../stubs/atomicops_internals_arm_qnx.h | 146 + .../atomicops_internals_atomicword_compat.h | 122 + .../stubs/atomicops_internals_generic_gcc.h | 137 + .../stubs/atomicops_internals_macosx.h | 225 + .../stubs/atomicops_internals_mips_gcc.h | 313 + .../stubs/atomicops_internals_pnacl.h | 73 + .../stubs/atomicops_internals_solaris.h | 188 + .../protobuf/stubs/atomicops_internals_tsan.h | 219 + .../stubs/atomicops_internals_x86_gcc.cc | 137 + .../stubs/atomicops_internals_x86_gcc.h | 293 + .../stubs/atomicops_internals_x86_msvc.cc | 112 + .../stubs/atomicops_internals_x86_msvc.h | 150 + .../src/google/protobuf/stubs/common.cc | 395 + .../src/google/protobuf/stubs/common.h | 1226 + .../google/protobuf/stubs/common_unittest.cc | 357 + .../src/google/protobuf/stubs/hash.h | 232 + .../src/google/protobuf/stubs/map_util.h | 771 + .../src/google/protobuf/stubs/once.cc | 99 + .../src/google/protobuf/stubs/once.h | 166 + .../google/protobuf/stubs/once_unittest.cc | 253 + .../google/protobuf/stubs/platform_macros.h | 103 + .../src/google/protobuf/stubs/shared_ptr.h | 470 + .../src/google/protobuf/stubs/stl_util.h | 121 + .../src/google/protobuf/stubs/stringprintf.cc | 175 + .../src/google/protobuf/stubs/stringprintf.h | 76 + .../protobuf/stubs/stringprintf_unittest.cc | 152 + .../protobuf/stubs/structurally_valid.cc | 536 + .../stubs/structurally_valid_unittest.cc | 40 + .../src/google/protobuf/stubs/strutil.cc | 1279 + .../src/google/protobuf/stubs/strutil.h | 562 + .../google/protobuf/stubs/strutil_unittest.cc | 73 + .../src/google/protobuf/stubs/substitute.cc | 134 + .../src/google/protobuf/stubs/substitute.h | 170 + .../src/google/protobuf/stubs/template_util.h | 138 + .../protobuf/stubs/template_util_unittest.cc | 130 + .../src/google/protobuf/stubs/type_traits.h | 336 + .../protobuf/stubs/type_traits_unittest.cc | 628 + .../src/google/protobuf/test_util.cc | 3345 +++ .../src/google/protobuf/test_util.h | 215 + .../src/google/protobuf/test_util_lite.cc | 1585 ++ .../src/google/protobuf/test_util_lite.h | 101 + .../google/protobuf/testdata/bad_utf8_string | 1 + .../google/protobuf/testdata/golden_message | Bin 0 -> 531 bytes .../testdata/golden_message_oneof_implemented | Bin 0 -> 515 bytes .../testdata/golden_packed_fields_message | Bin 0 -> 142 bytes .../testdata/text_format_unittest_data.txt | 134 + ...format_unittest_data_oneof_implemented.txt | 129 + .../text_format_unittest_data_pointy.txt | 134 + ...text_format_unittest_data_pointy_oneof.txt | 129 + .../text_format_unittest_extensions_data.txt | 134 + ...format_unittest_extensions_data_pointy.txt | 134 + .../google/protobuf/testing/.deps/.dirstamp | 0 .../protobuf_lazy_descriptor_test-file.Po | 457 + ...rotobuf_lazy_descriptor_test-googletest.Po | 586 + .../testing/.deps/protobuf_test-file.Po | 457 + .../testing/.deps/protobuf_test-googletest.Po | 586 + .../testing/.deps/test_plugin-file.Po | 463 + .../google/protobuf/testing/.deps/zcgunzip.Po | 501 + .../google/protobuf/testing/.deps/zcgzip.Po | 501 + .../src/google/protobuf/testing/.dirstamp | 0 .../src/google/protobuf/testing/file.cc | 194 + .../src/google/protobuf/testing/file.h | 97 + .../src/google/protobuf/testing/googletest.cc | 255 + .../src/google/protobuf/testing/googletest.h | 102 + .../src/google/protobuf/testing/zcgunzip.cc | 73 + .../src/google/protobuf/testing/zcgzip.cc | 79 + .../src/google/protobuf/text_format.cc | 1746 ++ .../src/google/protobuf/text_format.h | 473 + .../google/protobuf/text_format_unittest.cc | 1479 ++ .../src/google/protobuf/unittest.proto | 861 + .../protobuf/unittest_custom_options.proto | 393 + .../unittest_embed_optimize_for.proto | 50 + .../src/google/protobuf/unittest_empty.proto | 37 + .../unittest_enormous_descriptor.proto | 1046 + .../src/google/protobuf/unittest_import.proto | 64 + .../protobuf/unittest_import_lite.proto | 51 + .../protobuf/unittest_import_public.proto | 40 + .../unittest_import_public_lite.proto | 42 + .../src/google/protobuf/unittest_lite.proto | 384 + .../unittest_lite_imports_nonlite.proto | 43 + .../src/google/protobuf/unittest_mset.proto | 83 + .../unittest_no_generic_services.proto | 53 + .../protobuf/unittest_optimize_for.proto | 66 + .../src/google/protobuf/unknown_field_set.cc | 265 + .../src/google/protobuf/unknown_field_set.h | 318 + .../protobuf/unknown_field_set_unittest.cc | 599 + .../src/google/protobuf/wire_format.cc | 1101 + .../src/google/protobuf/wire_format.h | 336 + .../src/google/protobuf/wire_format_lite.cc | 471 + .../src/google/protobuf/wire_format_lite.h | 661 + .../google/protobuf/wire_format_lite_inl.h | 860 + .../google/protobuf/wire_format_unittest.cc | 1120 + .../protobuf-2.6.1/src/solaris/libstdc++.la | 51 + thirdparty/protobuf-2.6.1/stamp-h1 | 1 + thirdparty/protobuf-2.6.1/test-driver | 148 + thirdparty/protobuf-2.6.1/vsprojects/config.h | 29 + .../vsprojects/convert2008to2005.sh | 20 + .../vsprojects/extract_includes.bat | 50 + .../vsprojects/libprotobuf-lite.vcproj | 302 + .../vsprojects/libprotobuf.vcproj | 470 + .../vsprojects/libprotoc.vcproj | 466 + .../vsprojects/lite-test.vcproj | 305 + .../protobuf-2.6.1/vsprojects/protobuf.sln | 92 + .../protobuf-2.6.1/vsprojects/protoc.vcproj | 192 + .../protobuf-2.6.1/vsprojects/readme.txt | 114 + .../vsprojects/test_plugin.vcproj | 209 + .../protobuf-2.6.1/vsprojects/tests.vcproj | 681 + 971 files changed, 608280 insertions(+) create mode 100644 thirdparty/protobuf-2.6.1/CHANGES.txt create mode 100644 thirdparty/protobuf-2.6.1/CONTRIBUTORS.txt create mode 100644 thirdparty/protobuf-2.6.1/INSTALL.txt create mode 100644 thirdparty/protobuf-2.6.1/LICENSE create mode 100644 thirdparty/protobuf-2.6.1/Makefile create mode 100644 thirdparty/protobuf-2.6.1/Makefile.am create mode 100644 thirdparty/protobuf-2.6.1/Makefile.in create mode 100644 thirdparty/protobuf-2.6.1/README.md create mode 100644 thirdparty/protobuf-2.6.1/aclocal.m4 create mode 100644 thirdparty/protobuf-2.6.1/autogen.sh create mode 100644 thirdparty/protobuf-2.6.1/bin/linux32/libprotobuf.a create mode 100755 thirdparty/protobuf-2.6.1/compile create mode 100755 thirdparty/protobuf-2.6.1/config.guess create mode 100644 thirdparty/protobuf-2.6.1/config.h create mode 100644 thirdparty/protobuf-2.6.1/config.h.in create mode 100644 thirdparty/protobuf-2.6.1/config.log create mode 100755 thirdparty/protobuf-2.6.1/config.status create mode 100755 thirdparty/protobuf-2.6.1/config.sub create mode 100755 thirdparty/protobuf-2.6.1/configure create mode 100644 thirdparty/protobuf-2.6.1/configure.ac create mode 100755 thirdparty/protobuf-2.6.1/depcomp create mode 100644 thirdparty/protobuf-2.6.1/editors/README.txt create mode 100644 thirdparty/protobuf-2.6.1/editors/proto.vim create mode 100644 thirdparty/protobuf-2.6.1/editors/protobuf-mode.el create mode 100644 thirdparty/protobuf-2.6.1/examples/AddPerson.java create mode 100644 thirdparty/protobuf-2.6.1/examples/ListPeople.java create mode 100644 thirdparty/protobuf-2.6.1/examples/Makefile create mode 100644 thirdparty/protobuf-2.6.1/examples/README.txt create mode 100644 thirdparty/protobuf-2.6.1/examples/add_person.cc create mode 100644 thirdparty/protobuf-2.6.1/examples/add_person.py create mode 100644 thirdparty/protobuf-2.6.1/examples/addressbook.proto create mode 100644 thirdparty/protobuf-2.6.1/examples/list_people.cc create mode 100644 thirdparty/protobuf-2.6.1/examples/list_people.py create mode 100644 thirdparty/protobuf-2.6.1/generate_descriptor_proto.sh create mode 100644 thirdparty/protobuf-2.6.1/gtest/CHANGES create mode 100644 thirdparty/protobuf-2.6.1/gtest/CMakeLists.txt create mode 100644 thirdparty/protobuf-2.6.1/gtest/CONTRIBUTORS create mode 100644 thirdparty/protobuf-2.6.1/gtest/LICENSE create mode 100644 thirdparty/protobuf-2.6.1/gtest/Makefile create mode 100644 thirdparty/protobuf-2.6.1/gtest/Makefile.am create mode 100644 thirdparty/protobuf-2.6.1/gtest/Makefile.in create mode 100644 thirdparty/protobuf-2.6.1/gtest/README create mode 100644 thirdparty/protobuf-2.6.1/gtest/aclocal.m4 create mode 100644 thirdparty/protobuf-2.6.1/gtest/autom4te.cache/output.0 create mode 100644 thirdparty/protobuf-2.6.1/gtest/autom4te.cache/output.1 create mode 100644 thirdparty/protobuf-2.6.1/gtest/autom4te.cache/requests create mode 100644 thirdparty/protobuf-2.6.1/gtest/autom4te.cache/traces.0 create mode 100644 thirdparty/protobuf-2.6.1/gtest/autom4te.cache/traces.1 create mode 100755 thirdparty/protobuf-2.6.1/gtest/build-aux/compile create mode 100755 thirdparty/protobuf-2.6.1/gtest/build-aux/config.guess create mode 100644 thirdparty/protobuf-2.6.1/gtest/build-aux/config.h create mode 100644 thirdparty/protobuf-2.6.1/gtest/build-aux/config.h.in create mode 100644 thirdparty/protobuf-2.6.1/gtest/build-aux/config.h.in~ create mode 100755 thirdparty/protobuf-2.6.1/gtest/build-aux/config.sub create mode 100755 thirdparty/protobuf-2.6.1/gtest/build-aux/depcomp create mode 100755 thirdparty/protobuf-2.6.1/gtest/build-aux/install-sh create mode 100644 thirdparty/protobuf-2.6.1/gtest/build-aux/ltmain.sh create mode 100755 thirdparty/protobuf-2.6.1/gtest/build-aux/missing create mode 100644 thirdparty/protobuf-2.6.1/gtest/build-aux/stamp-h1 create mode 100755 thirdparty/protobuf-2.6.1/gtest/build-aux/test-driver create mode 100644 thirdparty/protobuf-2.6.1/gtest/cmake/internal_utils.cmake create mode 100644 thirdparty/protobuf-2.6.1/gtest/codegear/gtest.cbproj create mode 100644 thirdparty/protobuf-2.6.1/gtest/codegear/gtest.groupproj create mode 100644 thirdparty/protobuf-2.6.1/gtest/codegear/gtest_all.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/codegear/gtest_link.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/codegear/gtest_main.cbproj create mode 100644 thirdparty/protobuf-2.6.1/gtest/codegear/gtest_unittest.cbproj create mode 100644 thirdparty/protobuf-2.6.1/gtest/config.log create mode 100755 thirdparty/protobuf-2.6.1/gtest/config.status create mode 100755 thirdparty/protobuf-2.6.1/gtest/configure create mode 100644 thirdparty/protobuf-2.6.1/gtest/configure.ac create mode 100644 thirdparty/protobuf-2.6.1/gtest/fused-src/gtest/.deps/test_fused_gtest_test-gtest-all.Po create mode 100644 thirdparty/protobuf-2.6.1/gtest/fused-src/gtest/.deps/test_fused_gtest_test-gtest_main.Po create mode 100644 thirdparty/protobuf-2.6.1/gtest/fused-src/gtest/gtest-all.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/fused-src/gtest/gtest.h create mode 100644 thirdparty/protobuf-2.6.1/gtest/fused-src/gtest/gtest_main.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest-death-test.h create mode 100644 thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest-message.h create mode 100644 thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest-param-test.h create mode 100644 thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest-param-test.h.pump create mode 100644 thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest-printers.h create mode 100644 thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest-spi.h create mode 100644 thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest-test-part.h create mode 100644 thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest-typed-test.h create mode 100644 thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest.h create mode 100644 thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest_pred_impl.h create mode 100644 thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest_prod.h create mode 100644 thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-death-test-internal.h create mode 100644 thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-filepath.h create mode 100644 thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-internal.h create mode 100644 thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-linked_ptr.h create mode 100644 thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-param-util-generated.h create mode 100644 thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-param-util-generated.h.pump create mode 100644 thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-param-util.h create mode 100644 thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-port.h create mode 100644 thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-string.h create mode 100644 thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-tuple.h create mode 100644 thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-tuple.h.pump create mode 100644 thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-type-util.h create mode 100644 thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-type-util.h.pump create mode 100644 thirdparty/protobuf-2.6.1/gtest/lib/.dirstamp create mode 100755 thirdparty/protobuf-2.6.1/gtest/libtool create mode 100644 thirdparty/protobuf-2.6.1/gtest/m4/acx_pthread.m4 create mode 100644 thirdparty/protobuf-2.6.1/gtest/m4/gtest.m4 create mode 100644 thirdparty/protobuf-2.6.1/gtest/m4/libtool.m4 create mode 100644 thirdparty/protobuf-2.6.1/gtest/m4/ltoptions.m4 create mode 100644 thirdparty/protobuf-2.6.1/gtest/m4/ltsugar.m4 create mode 100644 thirdparty/protobuf-2.6.1/gtest/m4/ltversion.m4 create mode 100644 thirdparty/protobuf-2.6.1/gtest/m4/lt~obsolete.m4 create mode 100644 thirdparty/protobuf-2.6.1/gtest/make/Makefile create mode 100644 thirdparty/protobuf-2.6.1/gtest/msvc/gtest-md.sln create mode 100644 thirdparty/protobuf-2.6.1/gtest/msvc/gtest-md.vcproj create mode 100644 thirdparty/protobuf-2.6.1/gtest/msvc/gtest.sln create mode 100644 thirdparty/protobuf-2.6.1/gtest/msvc/gtest.vcproj create mode 100644 thirdparty/protobuf-2.6.1/gtest/msvc/gtest_main-md.vcproj create mode 100644 thirdparty/protobuf-2.6.1/gtest/msvc/gtest_main.vcproj create mode 100644 thirdparty/protobuf-2.6.1/gtest/msvc/gtest_prod_test-md.vcproj create mode 100644 thirdparty/protobuf-2.6.1/gtest/msvc/gtest_prod_test.vcproj create mode 100644 thirdparty/protobuf-2.6.1/gtest/msvc/gtest_unittest-md.vcproj create mode 100644 thirdparty/protobuf-2.6.1/gtest/msvc/gtest_unittest.vcproj create mode 100644 thirdparty/protobuf-2.6.1/gtest/samples/.deps/sample1.Plo create mode 100644 thirdparty/protobuf-2.6.1/gtest/samples/.deps/sample10_unittest.Po create mode 100644 thirdparty/protobuf-2.6.1/gtest/samples/.deps/sample1_unittest.Po create mode 100644 thirdparty/protobuf-2.6.1/gtest/samples/.deps/sample2.Plo create mode 100644 thirdparty/protobuf-2.6.1/gtest/samples/.deps/sample4.Plo create mode 100644 thirdparty/protobuf-2.6.1/gtest/samples/.deps/test_fused_gtest_test-sample1.Po create mode 100644 thirdparty/protobuf-2.6.1/gtest/samples/.deps/test_fused_gtest_test-sample1_unittest.Po create mode 100644 thirdparty/protobuf-2.6.1/gtest/samples/prime_tables.h create mode 100644 thirdparty/protobuf-2.6.1/gtest/samples/sample1.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/samples/sample1.h create mode 100644 thirdparty/protobuf-2.6.1/gtest/samples/sample10_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/samples/sample1_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/samples/sample2.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/samples/sample2.h create mode 100644 thirdparty/protobuf-2.6.1/gtest/samples/sample2_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/samples/sample3-inl.h create mode 100644 thirdparty/protobuf-2.6.1/gtest/samples/sample3_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/samples/sample4.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/samples/sample4.h create mode 100644 thirdparty/protobuf-2.6.1/gtest/samples/sample4_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/samples/sample5_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/samples/sample6_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/samples/sample7_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/samples/sample8_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/samples/sample9_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/scripts/fuse_gtest_files.py create mode 100644 thirdparty/protobuf-2.6.1/gtest/scripts/gen_gtest_pred_impl.py create mode 100755 thirdparty/protobuf-2.6.1/gtest/scripts/gtest-config create mode 100644 thirdparty/protobuf-2.6.1/gtest/scripts/gtest-config.in create mode 100644 thirdparty/protobuf-2.6.1/gtest/scripts/pump.py create mode 100644 thirdparty/protobuf-2.6.1/gtest/scripts/test/Makefile create mode 100644 thirdparty/protobuf-2.6.1/gtest/src/.deps/.dirstamp create mode 100644 thirdparty/protobuf-2.6.1/gtest/src/.deps/gtest-all.Plo create mode 100644 thirdparty/protobuf-2.6.1/gtest/src/.deps/gtest_main.Plo create mode 100644 thirdparty/protobuf-2.6.1/gtest/src/.dirstamp create mode 100644 thirdparty/protobuf-2.6.1/gtest/src/gtest-all.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/src/gtest-death-test.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/src/gtest-filepath.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/src/gtest-internal-inl.h create mode 100644 thirdparty/protobuf-2.6.1/gtest/src/gtest-port.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/src/gtest-printers.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/src/gtest-test-part.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/src/gtest-typed-test.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/src/gtest.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/src/gtest_main.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/.deps/gtest_all_test.Po create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest-death-test_ex_test.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest-death-test_test.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest-filepath_test.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest-linked_ptr_test.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest-listener_test.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest-message_test.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest-options_test.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest-param-test2_test.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest-param-test_test.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest-param-test_test.h create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest-port_test.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest-printers_test.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest-test-part_test.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest-tuple_test.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest-typed-test2_test.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest-typed-test_test.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest-typed-test_test.h create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest-unittest-api_test.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_all_test.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_break_on_failure_unittest.py create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_break_on_failure_unittest_.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_catch_exceptions_test.py create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_catch_exceptions_test_.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_color_test.py create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_color_test_.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_env_var_test.py create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_env_var_test_.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_environment_test.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_filter_unittest.py create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_filter_unittest_.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_help_test.py create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_help_test_.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_list_tests_unittest.py create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_list_tests_unittest_.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_main_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_no_test_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_output_test.py create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_output_test_.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_output_test_golden_lin.txt create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_pred_impl_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_prod_test.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_repeat_test.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_shuffle_test.py create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_shuffle_test_.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_sole_header_test.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_stress_test.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_test_utils.py create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_throw_on_failure_ex_test.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_throw_on_failure_test.py create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_throw_on_failure_test_.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_uninitialized_test.py create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_uninitialized_test_.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_xml_outfile1_test_.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_xml_outfile2_test_.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_xml_outfiles_test.py create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_xml_output_unittest.py create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_xml_output_unittest_.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/gtest_xml_test_utils.py create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/production.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/test/production.h create mode 100644 thirdparty/protobuf-2.6.1/gtest/xcode/Config/DebugProject.xcconfig create mode 100644 thirdparty/protobuf-2.6.1/gtest/xcode/Config/FrameworkTarget.xcconfig create mode 100644 thirdparty/protobuf-2.6.1/gtest/xcode/Config/General.xcconfig create mode 100644 thirdparty/protobuf-2.6.1/gtest/xcode/Config/ReleaseProject.xcconfig create mode 100644 thirdparty/protobuf-2.6.1/gtest/xcode/Config/StaticLibraryTarget.xcconfig create mode 100644 thirdparty/protobuf-2.6.1/gtest/xcode/Config/TestTarget.xcconfig create mode 100644 thirdparty/protobuf-2.6.1/gtest/xcode/Resources/Info.plist create mode 100644 thirdparty/protobuf-2.6.1/gtest/xcode/Samples/FrameworkSample/Info.plist create mode 100644 thirdparty/protobuf-2.6.1/gtest/xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj create mode 100644 thirdparty/protobuf-2.6.1/gtest/xcode/Samples/FrameworkSample/runtests.sh create mode 100644 thirdparty/protobuf-2.6.1/gtest/xcode/Samples/FrameworkSample/widget.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/xcode/Samples/FrameworkSample/widget.h create mode 100644 thirdparty/protobuf-2.6.1/gtest/xcode/Samples/FrameworkSample/widget_test.cc create mode 100644 thirdparty/protobuf-2.6.1/gtest/xcode/Scripts/runtests.sh create mode 100644 thirdparty/protobuf-2.6.1/gtest/xcode/Scripts/versiongenerate.py create mode 100644 thirdparty/protobuf-2.6.1/gtest/xcode/gtest.xcodeproj/project.pbxproj create mode 100755 thirdparty/protobuf-2.6.1/install-sh create mode 100644 thirdparty/protobuf-2.6.1/java/README.txt create mode 100644 thirdparty/protobuf-2.6.1/java/pom.xml create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/AbstractMessage.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/AbstractMessageLite.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/AbstractParser.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/BlockingRpcChannel.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/BlockingService.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/BoundedByteString.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/ByteString.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/CodedInputStream.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/CodedOutputStream.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/Descriptors.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/DynamicMessage.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/Extension.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/ExtensionRegistry.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/ExtensionRegistryLite.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/FieldSet.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/GeneratedMessage.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/GeneratedMessageLite.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/Internal.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/InvalidProtocolBufferException.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/LazyField.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/LazyFieldLite.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/LazyStringArrayList.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/LazyStringList.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/LiteralByteString.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/Message.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/MessageLite.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/MessageLiteOrBuilder.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/MessageOrBuilder.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/MessageReflection.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/Parser.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/ProtocolMessageEnum.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/ProtocolStringList.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/RepeatedFieldBuilder.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/RopeByteString.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/RpcCallback.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/RpcChannel.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/RpcController.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/RpcUtil.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/Service.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/ServiceException.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/SingleFieldBuilder.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/SmallSortedMap.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/TextFormat.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/UninitializedMessageException.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/UnknownFieldSet.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/UnmodifiableLazyStringList.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/Utf8.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/WireFormat.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/AbstractMessageTest.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/BoundedByteStringTest.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/ByteStringTest.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/CheckUtf8Test.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/CodedInputStreamTest.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/CodedOutputStreamTest.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/DeprecatedFieldTest.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/DescriptorsTest.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/DynamicMessageTest.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/ForceFieldBuildersPreRun.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/GeneratedMessageTest.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/IsValidUtf8Test.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/IsValidUtf8TestUtil.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/LazyFieldLiteTest.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/LazyFieldTest.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/LazyMessageLiteTest.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/LazyStringArrayListTest.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/LazyStringEndToEndTest.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/LiteEqualsAndHashTest.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/LiteTest.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/LiteralByteStringTest.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/MessageTest.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/NestedBuildersTest.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/ParserTest.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/RepeatedFieldBuilderTest.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/RopeByteStringSubstringTest.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/RopeByteStringTest.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/ServiceTest.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/SingleFieldBuilderTest.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/SmallSortedMapTest.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/TestBadIdentifiers.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/TestUtil.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/TextFormatTest.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/UnknownFieldSetTest.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/UnmodifiableLazyStringListTest.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/WireFormatTest.java create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/lazy_fields_lite.proto create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/lite_equals_and_hash.proto create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/multiple_files_test.proto create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/nested_builders_test.proto create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/nested_extension.proto create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/nested_extension_lite.proto create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/non_nested_extension.proto create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/non_nested_extension_lite.proto create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/outer_class_name_test.proto create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/outer_class_name_test2.proto create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/outer_class_name_test3.proto create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/test_bad_identifiers.proto create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/test_check_utf8.proto create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/test_check_utf8_size.proto create mode 100644 thirdparty/protobuf-2.6.1/java/src/test/java/com/google/protobuf/test_custom_options.proto create mode 100755 thirdparty/protobuf-2.6.1/libtool create mode 100644 thirdparty/protobuf-2.6.1/ltmain.sh create mode 100644 thirdparty/protobuf-2.6.1/m4/ac_system_extensions.m4 create mode 100644 thirdparty/protobuf-2.6.1/m4/acx_check_suncc.m4 create mode 100644 thirdparty/protobuf-2.6.1/m4/acx_pthread.m4 create mode 100644 thirdparty/protobuf-2.6.1/m4/libtool.m4 create mode 100644 thirdparty/protobuf-2.6.1/m4/ltoptions.m4 create mode 100644 thirdparty/protobuf-2.6.1/m4/ltsugar.m4 create mode 100644 thirdparty/protobuf-2.6.1/m4/ltversion.m4 create mode 100644 thirdparty/protobuf-2.6.1/m4/lt~obsolete.m4 create mode 100644 thirdparty/protobuf-2.6.1/m4/stl_hash.m4 create mode 100755 thirdparty/protobuf-2.6.1/missing create mode 100644 thirdparty/protobuf-2.6.1/protobuf-lite.pc create mode 100644 thirdparty/protobuf-2.6.1/protobuf-lite.pc.in create mode 100644 thirdparty/protobuf-2.6.1/protobuf.pc create mode 100644 thirdparty/protobuf-2.6.1/protobuf.pc.in create mode 100644 thirdparty/protobuf-2.6.1/python/.eggs/README.txt create mode 100644 thirdparty/protobuf-2.6.1/python/.eggs/google_apputils-0.4.2-py2.7.egg/EGG-INFO/PKG-INFO create mode 100644 thirdparty/protobuf-2.6.1/python/.eggs/google_apputils-0.4.2-py2.7.egg/EGG-INFO/SOURCES.txt create mode 100644 thirdparty/protobuf-2.6.1/python/.eggs/google_apputils-0.4.2-py2.7.egg/EGG-INFO/dependency_links.txt create mode 100644 thirdparty/protobuf-2.6.1/python/.eggs/google_apputils-0.4.2-py2.7.egg/EGG-INFO/entry_points.txt create mode 100644 thirdparty/protobuf-2.6.1/python/.eggs/google_apputils-0.4.2-py2.7.egg/EGG-INFO/namespace_packages.txt create mode 100644 thirdparty/protobuf-2.6.1/python/.eggs/google_apputils-0.4.2-py2.7.egg/EGG-INFO/not-zip-safe create mode 100644 thirdparty/protobuf-2.6.1/python/.eggs/google_apputils-0.4.2-py2.7.egg/EGG-INFO/requires.txt create mode 100644 thirdparty/protobuf-2.6.1/python/.eggs/google_apputils-0.4.2-py2.7.egg/EGG-INFO/top_level.txt create mode 100644 thirdparty/protobuf-2.6.1/python/.eggs/google_apputils-0.4.2-py2.7.egg/google/__init__.py create mode 100644 thirdparty/protobuf-2.6.1/python/.eggs/google_apputils-0.4.2-py2.7.egg/google/__init__.pyc create mode 100644 thirdparty/protobuf-2.6.1/python/.eggs/google_apputils-0.4.2-py2.7.egg/google/apputils/__init__.py create mode 100644 thirdparty/protobuf-2.6.1/python/.eggs/google_apputils-0.4.2-py2.7.egg/google/apputils/__init__.pyc create mode 100644 thirdparty/protobuf-2.6.1/python/.eggs/google_apputils-0.4.2-py2.7.egg/google/apputils/app.py create mode 100644 thirdparty/protobuf-2.6.1/python/.eggs/google_apputils-0.4.2-py2.7.egg/google/apputils/app.pyc create mode 100644 thirdparty/protobuf-2.6.1/python/.eggs/google_apputils-0.4.2-py2.7.egg/google/apputils/appcommands.py create mode 100644 thirdparty/protobuf-2.6.1/python/.eggs/google_apputils-0.4.2-py2.7.egg/google/apputils/appcommands.pyc create mode 100644 thirdparty/protobuf-2.6.1/python/.eggs/google_apputils-0.4.2-py2.7.egg/google/apputils/basetest.py create mode 100644 thirdparty/protobuf-2.6.1/python/.eggs/google_apputils-0.4.2-py2.7.egg/google/apputils/basetest.pyc create mode 100644 thirdparty/protobuf-2.6.1/python/.eggs/google_apputils-0.4.2-py2.7.egg/google/apputils/datelib.py create mode 100644 thirdparty/protobuf-2.6.1/python/.eggs/google_apputils-0.4.2-py2.7.egg/google/apputils/datelib.pyc create mode 100644 thirdparty/protobuf-2.6.1/python/.eggs/google_apputils-0.4.2-py2.7.egg/google/apputils/debug.py create mode 100644 thirdparty/protobuf-2.6.1/python/.eggs/google_apputils-0.4.2-py2.7.egg/google/apputils/debug.pyc create mode 100644 thirdparty/protobuf-2.6.1/python/.eggs/google_apputils-0.4.2-py2.7.egg/google/apputils/file_util.py create mode 100644 thirdparty/protobuf-2.6.1/python/.eggs/google_apputils-0.4.2-py2.7.egg/google/apputils/file_util.pyc create mode 100644 thirdparty/protobuf-2.6.1/python/.eggs/google_apputils-0.4.2-py2.7.egg/google/apputils/humanize.py create mode 100644 thirdparty/protobuf-2.6.1/python/.eggs/google_apputils-0.4.2-py2.7.egg/google/apputils/humanize.pyc create mode 100644 thirdparty/protobuf-2.6.1/python/.eggs/google_apputils-0.4.2-py2.7.egg/google/apputils/resources.py create mode 100644 thirdparty/protobuf-2.6.1/python/.eggs/google_apputils-0.4.2-py2.7.egg/google/apputils/resources.pyc create mode 100644 thirdparty/protobuf-2.6.1/python/.eggs/google_apputils-0.4.2-py2.7.egg/google/apputils/run_script_module.py create mode 100644 thirdparty/protobuf-2.6.1/python/.eggs/google_apputils-0.4.2-py2.7.egg/google/apputils/run_script_module.pyc create mode 100644 thirdparty/protobuf-2.6.1/python/.eggs/google_apputils-0.4.2-py2.7.egg/google/apputils/setup_command.py create mode 100644 thirdparty/protobuf-2.6.1/python/.eggs/google_apputils-0.4.2-py2.7.egg/google/apputils/setup_command.pyc create mode 100644 thirdparty/protobuf-2.6.1/python/.eggs/google_apputils-0.4.2-py2.7.egg/google/apputils/shellutil.py create mode 100644 thirdparty/protobuf-2.6.1/python/.eggs/google_apputils-0.4.2-py2.7.egg/google/apputils/shellutil.pyc create mode 100644 thirdparty/protobuf-2.6.1/python/.eggs/google_apputils-0.4.2-py2.7.egg/google/apputils/stopwatch.py create mode 100644 thirdparty/protobuf-2.6.1/python/.eggs/google_apputils-0.4.2-py2.7.egg/google/apputils/stopwatch.pyc create mode 100644 thirdparty/protobuf-2.6.1/python/.eggs/python_gflags-3.1.1-py2.7.egg create mode 100644 thirdparty/protobuf-2.6.1/python/README.txt create mode 100644 thirdparty/protobuf-2.6.1/python/build/lib.linux-x86_64-2.7/google/__init__.py create mode 100644 thirdparty/protobuf-2.6.1/python/build/lib.linux-x86_64-2.7/google/protobuf/__init__.py create mode 100644 thirdparty/protobuf-2.6.1/python/build/lib.linux-x86_64-2.7/google/protobuf/compiler/__init__.py create mode 100644 thirdparty/protobuf-2.6.1/python/build/lib.linux-x86_64-2.7/google/protobuf/compiler/plugin_pb2.py create mode 100644 thirdparty/protobuf-2.6.1/python/build/lib.linux-x86_64-2.7/google/protobuf/descriptor.py create mode 100644 thirdparty/protobuf-2.6.1/python/build/lib.linux-x86_64-2.7/google/protobuf/descriptor_database.py create mode 100644 thirdparty/protobuf-2.6.1/python/build/lib.linux-x86_64-2.7/google/protobuf/descriptor_pb2.py create mode 100644 thirdparty/protobuf-2.6.1/python/build/lib.linux-x86_64-2.7/google/protobuf/descriptor_pool.py create mode 100644 thirdparty/protobuf-2.6.1/python/build/lib.linux-x86_64-2.7/google/protobuf/internal/__init__.py create mode 100644 thirdparty/protobuf-2.6.1/python/build/lib.linux-x86_64-2.7/google/protobuf/internal/api_implementation.py create mode 100644 thirdparty/protobuf-2.6.1/python/build/lib.linux-x86_64-2.7/google/protobuf/internal/containers.py create mode 100644 thirdparty/protobuf-2.6.1/python/build/lib.linux-x86_64-2.7/google/protobuf/internal/cpp_message.py create mode 100644 thirdparty/protobuf-2.6.1/python/build/lib.linux-x86_64-2.7/google/protobuf/internal/decoder.py create mode 100644 thirdparty/protobuf-2.6.1/python/build/lib.linux-x86_64-2.7/google/protobuf/internal/encoder.py create mode 100644 thirdparty/protobuf-2.6.1/python/build/lib.linux-x86_64-2.7/google/protobuf/internal/enum_type_wrapper.py create mode 100644 thirdparty/protobuf-2.6.1/python/build/lib.linux-x86_64-2.7/google/protobuf/internal/message_listener.py create mode 100644 thirdparty/protobuf-2.6.1/python/build/lib.linux-x86_64-2.7/google/protobuf/internal/python_message.py create mode 100644 thirdparty/protobuf-2.6.1/python/build/lib.linux-x86_64-2.7/google/protobuf/internal/type_checkers.py create mode 100644 thirdparty/protobuf-2.6.1/python/build/lib.linux-x86_64-2.7/google/protobuf/internal/wire_format.py create mode 100644 thirdparty/protobuf-2.6.1/python/build/lib.linux-x86_64-2.7/google/protobuf/message.py create mode 100644 thirdparty/protobuf-2.6.1/python/build/lib.linux-x86_64-2.7/google/protobuf/message_factory.py create mode 100644 thirdparty/protobuf-2.6.1/python/build/lib.linux-x86_64-2.7/google/protobuf/pyext/__init__.py create mode 100644 thirdparty/protobuf-2.6.1/python/build/lib.linux-x86_64-2.7/google/protobuf/pyext/cpp_message.py create mode 100644 thirdparty/protobuf-2.6.1/python/build/lib.linux-x86_64-2.7/google/protobuf/reflection.py create mode 100644 thirdparty/protobuf-2.6.1/python/build/lib.linux-x86_64-2.7/google/protobuf/service.py create mode 100644 thirdparty/protobuf-2.6.1/python/build/lib.linux-x86_64-2.7/google/protobuf/service_reflection.py create mode 100644 thirdparty/protobuf-2.6.1/python/build/lib.linux-x86_64-2.7/google/protobuf/symbol_database.py create mode 100644 thirdparty/protobuf-2.6.1/python/build/lib.linux-x86_64-2.7/google/protobuf/text_encoding.py create mode 100644 thirdparty/protobuf-2.6.1/python/build/lib.linux-x86_64-2.7/google/protobuf/text_format.py create mode 100644 thirdparty/protobuf-2.6.1/python/dist/protobuf-2.6.1-py2.7.egg create mode 100644 thirdparty/protobuf-2.6.1/python/ez_setup.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/__init__.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/__init__.pyc create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/__init__.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/__init__.pyc create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/compiler/__init__.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/compiler/plugin_pb2.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/descriptor.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/descriptor.pyc create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/descriptor_database.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/descriptor_pb2.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/descriptor_pool.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/__init__.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/__init__.pyc create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/api_implementation.cc create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/api_implementation.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/api_implementation.pyc create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/api_implementation_default_test.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/containers.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/cpp_message.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/decoder.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/descriptor_database_test.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/descriptor_pool_test.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/descriptor_pool_test1.proto create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/descriptor_pool_test1_pb2.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/descriptor_pool_test2.proto create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/descriptor_pool_test2_pb2.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/descriptor_python_test.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/descriptor_test.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/descriptor_test.pyc create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/encoder.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/enum_type_wrapper.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/enum_type_wrapper.pyc create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/factory_test1.proto create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/factory_test1_pb2.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/factory_test2.proto create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/factory_test2_pb2.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/generator_test.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/message_factory_python_test.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/message_factory_test.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/message_listener.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/message_python_test.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/message_test.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/missing_enum_values.proto create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/missing_enum_values_pb2.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/more_extensions.proto create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/more_extensions_dynamic.proto create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/more_extensions_dynamic_pb2.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/more_extensions_pb2.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/more_messages.proto create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/more_messages_pb2.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/python_message.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/reflection_test.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/service_reflection_test.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/symbol_database_test.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/test_bad_identifiers.proto create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/test_bad_identifiers_pb2.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/test_util.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/text_encoding_test.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/text_format_test.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/type_checkers.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/unknown_fields_test.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/wire_format.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/internal/wire_format_test.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/message.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/message_factory.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/pyext/README create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/pyext/__init__.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/pyext/__init__.pyc create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/pyext/cpp_message.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/pyext/descriptor.cc create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/pyext/descriptor.h create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/pyext/descriptor_cpp2_test.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/pyext/descriptor_cpp2_test.pyc create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/pyext/extension_dict.cc create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/pyext/extension_dict.h create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/pyext/message.cc create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/pyext/message.h create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/pyext/message_factory_cpp2_test.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/pyext/proto2_api_test.proto create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/pyext/python.proto create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/pyext/python_pb2.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/pyext/python_protobuf.h create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/pyext/reflection_cpp2_generated_test.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/pyext/repeated_composite_container.cc create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/pyext/repeated_composite_container.h create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/pyext/repeated_scalar_container.cc create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/pyext/repeated_scalar_container.h create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/pyext/scoped_pyobject_ptr.h create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/reflection.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/service.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/service_reflection.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/symbol_database.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/text_encoding.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/text_format.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/unittest_custom_options_pb2.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/unittest_custom_options_pb2.pyc create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/unittest_import_pb2.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/unittest_import_public_pb2.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/unittest_mset_pb2.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/unittest_no_generic_services_pb2.py create mode 100644 thirdparty/protobuf-2.6.1/python/google/protobuf/unittest_pb2.py create mode 100644 thirdparty/protobuf-2.6.1/python/mox.py create mode 100644 thirdparty/protobuf-2.6.1/python/protobuf.egg-info/PKG-INFO create mode 100644 thirdparty/protobuf-2.6.1/python/protobuf.egg-info/SOURCES.txt create mode 100644 thirdparty/protobuf-2.6.1/python/protobuf.egg-info/dependency_links.txt create mode 100644 thirdparty/protobuf-2.6.1/python/protobuf.egg-info/namespace_packages.txt create mode 100644 thirdparty/protobuf-2.6.1/python/protobuf.egg-info/requires.txt create mode 100644 thirdparty/protobuf-2.6.1/python/protobuf.egg-info/top_level.txt create mode 100644 thirdparty/protobuf-2.6.1/python/setup.py create mode 100644 thirdparty/protobuf-2.6.1/python/setup.pyc create mode 100644 thirdparty/protobuf-2.6.1/python/stubout.py create mode 100644 thirdparty/protobuf-2.6.1/src/Makefile create mode 100644 thirdparty/protobuf-2.6.1/src/Makefile.am create mode 100644 thirdparty/protobuf-2.6.1/src/Makefile.in create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/.dirstamp create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/descriptor.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/descriptor.pb.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/descriptor_database.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/dynamic_message.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/extension_set.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/extension_set_heavy.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/generated_message_reflection.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/generated_message_util.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/message.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/message_lite.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_lazy_descriptor_test-test_util.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_lazy_descriptor_test-unittest.pb.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_lazy_descriptor_test-unittest_custom_options.pb.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_lazy_descriptor_test-unittest_embed_optimize_for.pb.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_lazy_descriptor_test-unittest_empty.pb.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_lazy_descriptor_test-unittest_import.pb.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_lazy_descriptor_test-unittest_import_lite.pb.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_lazy_descriptor_test-unittest_import_public.pb.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_lazy_descriptor_test-unittest_import_public_lite.pb.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_lazy_descriptor_test-unittest_lite.pb.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_lazy_descriptor_test-unittest_lite_imports_nonlite.pb.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_lazy_descriptor_test-unittest_mset.pb.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_lazy_descriptor_test-unittest_no_generic_services.pb.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_lazy_descriptor_test-unittest_optimize_for.pb.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_lite_test-lite_unittest.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_lite_test-test_util_lite.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_lite_test-unittest_import_lite.pb.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_lite_test-unittest_import_public_lite.pb.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_lite_test-unittest_lite.pb.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_test-descriptor_database_unittest.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_test-descriptor_unittest.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_test-dynamic_message_unittest.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_test-extension_set_unittest.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_test-generated_message_reflection_unittest.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_test-message_unittest.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_test-reflection_ops_unittest.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_test-repeated_field_reflection_unittest.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_test-repeated_field_unittest.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_test-test_util.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_test-text_format_unittest.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_test-unittest.pb.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_test-unittest_custom_options.pb.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_test-unittest_embed_optimize_for.pb.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_test-unittest_empty.pb.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_test-unittest_import.pb.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_test-unittest_import_lite.pb.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_test-unittest_import_public.pb.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_test-unittest_import_public_lite.pb.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_test-unittest_lite.pb.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_test-unittest_lite_imports_nonlite.pb.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_test-unittest_mset.pb.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_test-unittest_no_generic_services.pb.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_test-unittest_optimize_for.pb.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_test-unknown_field_set_unittest.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/protobuf_test-wire_format_unittest.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/reflection_ops.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/repeated_field.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/service.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/text_format.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/unknown_field_set.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/wire_format.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.deps/wire_format_lite.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/.dirstamp create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/.deps/.dirstamp create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/.deps/code_generator.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/.deps/command_line_interface.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/.deps/importer.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/.deps/main.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/.deps/parser.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/.deps/plugin.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/.deps/plugin.pb.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/.deps/protobuf_test-command_line_interface_unittest.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/.deps/protobuf_test-importer_unittest.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/.deps/protobuf_test-mock_code_generator.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/.deps/protobuf_test-parser_unittest.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/.deps/subprocess.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/.deps/test_plugin-mock_code_generator.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/.deps/test_plugin-test_plugin.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/.deps/zip_writer.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/.dirstamp create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/code_generator.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/code_generator.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/command_line_interface.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/command_line_interface.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/command_line_interface_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/.deps/.dirstamp create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/.deps/cpp_enum.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/.deps/cpp_enum_field.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/.deps/cpp_extension.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/.deps/cpp_field.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/.deps/cpp_file.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/.deps/cpp_generator.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/.deps/cpp_helpers.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/.deps/cpp_message.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/.deps/cpp_message_field.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/.deps/cpp_primitive_field.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/.deps/cpp_service.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/.deps/cpp_string_field.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/.deps/protobuf_lazy_descriptor_test-cpp_test_bad_identifiers.pb.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/.deps/protobuf_lazy_descriptor_test-cpp_unittest.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/.deps/protobuf_test-cpp_bootstrap_unittest.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/.deps/protobuf_test-cpp_plugin_unittest.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/.deps/protobuf_test-cpp_test_bad_identifiers.pb.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/.deps/protobuf_test-cpp_unittest.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/.dirstamp create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/cpp_enum.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/cpp_enum.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/cpp_enum_field.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/cpp_enum_field.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/cpp_extension.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/cpp_extension.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/cpp_field.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/cpp_field.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/cpp_file.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/cpp_file.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/cpp_generator.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/cpp_generator.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/cpp_helpers.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/cpp_helpers.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/cpp_message.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/cpp_message.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/cpp_message_field.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/cpp_message_field.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/cpp_options.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/cpp_plugin_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/cpp_primitive_field.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/cpp_primitive_field.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/cpp_service.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/cpp_service.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/cpp_string_field.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/cpp_string_field.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/cpp_test_bad_identifiers.proto create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/cpp_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/cpp/cpp_unittest.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/importer.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/importer.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/importer_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/.deps/.dirstamp create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/.deps/java_context.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/.deps/java_doc_comment.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/.deps/java_enum.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/.deps/java_enum_field.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/.deps/java_extension.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/.deps/java_field.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/.deps/java_file.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/.deps/java_generator.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/.deps/java_generator_factory.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/.deps/java_helpers.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/.deps/java_lazy_message_field.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/.deps/java_message.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/.deps/java_message_field.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/.deps/java_name_resolver.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/.deps/java_primitive_field.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/.deps/java_service.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/.deps/java_shared_code_generator.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/.deps/java_string_field.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/.deps/protobuf_test-java_doc_comment_unittest.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/.deps/protobuf_test-java_plugin_unittest.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/.dirstamp create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/java_context.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/java_context.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/java_doc_comment.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/java_doc_comment.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/java_doc_comment_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/java_enum.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/java_enum.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/java_enum_field.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/java_enum_field.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/java_extension.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/java_extension.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/java_field.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/java_field.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/java_file.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/java_file.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/java_generator.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/java_generator.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/java_generator_factory.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/java_generator_factory.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/java_helpers.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/java_helpers.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/java_lazy_message_field.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/java_lazy_message_field.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/java_message.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/java_message.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/java_message_field.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/java_message_field.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/java_name_resolver.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/java_name_resolver.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/java_plugin_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/java_primitive_field.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/java_primitive_field.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/java_service.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/java_service.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/java_shared_code_generator.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/java_shared_code_generator.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/java_string_field.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/java/java_string_field.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/main.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/mock_code_generator.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/mock_code_generator.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/package_info.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/parser.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/parser.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/parser_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/plugin.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/plugin.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/plugin.pb.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/plugin.pb.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/plugin.proto create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/python/.deps/.dirstamp create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/python/.deps/protobuf_test-python_plugin_unittest.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/python/.deps/python_generator.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/python/.dirstamp create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/python/python_generator.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/python/python_generator.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/python/python_plugin_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/subprocess.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/subprocess.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/test_plugin.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/zip_output_unittest.sh create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/zip_writer.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/compiler/zip_writer.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/descriptor.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/descriptor.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/descriptor.pb.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/descriptor.pb.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/descriptor.proto create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/descriptor_database.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/descriptor_database.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/descriptor_database_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/descriptor_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/dynamic_message.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/dynamic_message.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/dynamic_message_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/extension_set.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/extension_set.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/extension_set_heavy.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/extension_set_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/generated_enum_reflection.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/generated_message_reflection.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/generated_message_reflection.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/generated_message_reflection_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/generated_message_util.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/generated_message_util.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/io/.deps/.dirstamp create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/io/.deps/coded_stream.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/io/.deps/gzip_stream.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/io/.deps/printer.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/io/.deps/protobuf_test-coded_stream_unittest.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/io/.deps/protobuf_test-printer_unittest.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/io/.deps/protobuf_test-tokenizer_unittest.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/io/.deps/protobuf_test-zero_copy_stream_unittest.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/io/.deps/strtod.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/io/.deps/tokenizer.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/io/.deps/zero_copy_stream.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/io/.deps/zero_copy_stream_impl.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/io/.deps/zero_copy_stream_impl_lite.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/io/.dirstamp create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/io/coded_stream.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/io/coded_stream.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/io/coded_stream_inl.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/io/coded_stream_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/io/gzip_stream.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/io/gzip_stream.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/io/gzip_stream_unittest.sh create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/io/package_info.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/io/printer.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/io/printer.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/io/printer_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/io/strtod.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/io/strtod.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/io/tokenizer.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/io/tokenizer.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/io/tokenizer_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/io/zero_copy_stream.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/io/zero_copy_stream.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/io/zero_copy_stream_impl.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/io/zero_copy_stream_impl.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/io/zero_copy_stream_impl_lite.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/io/zero_copy_stream_impl_lite.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/io/zero_copy_stream_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/lite_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/message.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/message.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/message_lite.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/message_lite.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/message_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/package_info.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/reflection_ops.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/reflection_ops.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/reflection_ops_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/repeated_field.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/repeated_field.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/repeated_field_reflection_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/repeated_field_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/service.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/service.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/.deps/.dirstamp create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/.deps/atomicops_internals_x86_gcc.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/.deps/atomicops_internals_x86_msvc.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/.deps/common.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/.deps/once.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/.deps/protobuf_test-common_unittest.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/.deps/protobuf_test-once_unittest.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/.deps/protobuf_test-stringprintf_unittest.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/.deps/protobuf_test-structurally_valid_unittest.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/.deps/protobuf_test-strutil_unittest.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/.deps/protobuf_test-template_util_unittest.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/.deps/protobuf_test-type_traits_unittest.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/.deps/stringprintf.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/.deps/structurally_valid.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/.deps/strutil.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/.deps/substitute.Plo create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/.dirstamp create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/atomicops.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/atomicops_internals_arm64_gcc.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/atomicops_internals_arm_gcc.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/atomicops_internals_arm_qnx.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/atomicops_internals_atomicword_compat.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/atomicops_internals_generic_gcc.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/atomicops_internals_macosx.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/atomicops_internals_mips_gcc.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/atomicops_internals_pnacl.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/atomicops_internals_solaris.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/atomicops_internals_tsan.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/atomicops_internals_x86_gcc.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/atomicops_internals_x86_gcc.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/atomicops_internals_x86_msvc.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/atomicops_internals_x86_msvc.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/common.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/common.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/common_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/hash.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/map_util.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/once.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/once.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/once_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/platform_macros.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/shared_ptr.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/stl_util.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/stringprintf.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/stringprintf.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/stringprintf_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/structurally_valid.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/structurally_valid_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/strutil.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/strutil.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/strutil_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/substitute.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/substitute.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/template_util.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/template_util_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/type_traits.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/stubs/type_traits_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/test_util.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/test_util.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/test_util_lite.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/test_util_lite.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/testdata/bad_utf8_string create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/testdata/golden_message create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/testdata/golden_message_oneof_implemented create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/testdata/golden_packed_fields_message create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/testdata/text_format_unittest_data.txt create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/testdata/text_format_unittest_data_oneof_implemented.txt create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/testdata/text_format_unittest_data_pointy.txt create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/testdata/text_format_unittest_data_pointy_oneof.txt create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/testdata/text_format_unittest_extensions_data.txt create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/testdata/text_format_unittest_extensions_data_pointy.txt create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/testing/.deps/.dirstamp create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/testing/.deps/protobuf_lazy_descriptor_test-file.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/testing/.deps/protobuf_lazy_descriptor_test-googletest.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/testing/.deps/protobuf_test-file.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/testing/.deps/protobuf_test-googletest.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/testing/.deps/test_plugin-file.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/testing/.deps/zcgunzip.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/testing/.deps/zcgzip.Po create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/testing/.dirstamp create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/testing/file.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/testing/file.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/testing/googletest.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/testing/googletest.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/testing/zcgunzip.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/testing/zcgzip.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/text_format.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/text_format.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/text_format_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/unittest.proto create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/unittest_custom_options.proto create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/unittest_embed_optimize_for.proto create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/unittest_empty.proto create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/unittest_enormous_descriptor.proto create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/unittest_import.proto create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/unittest_import_lite.proto create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/unittest_import_public.proto create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/unittest_import_public_lite.proto create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/unittest_lite.proto create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/unittest_lite_imports_nonlite.proto create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/unittest_mset.proto create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/unittest_no_generic_services.proto create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/unittest_optimize_for.proto create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/unknown_field_set.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/unknown_field_set.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/unknown_field_set_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/wire_format.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/wire_format.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/wire_format_lite.cc create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/wire_format_lite.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/wire_format_lite_inl.h create mode 100644 thirdparty/protobuf-2.6.1/src/google/protobuf/wire_format_unittest.cc create mode 100644 thirdparty/protobuf-2.6.1/src/solaris/libstdc++.la create mode 100644 thirdparty/protobuf-2.6.1/stamp-h1 create mode 100755 thirdparty/protobuf-2.6.1/test-driver create mode 100644 thirdparty/protobuf-2.6.1/vsprojects/config.h create mode 100644 thirdparty/protobuf-2.6.1/vsprojects/convert2008to2005.sh create mode 100644 thirdparty/protobuf-2.6.1/vsprojects/extract_includes.bat create mode 100644 thirdparty/protobuf-2.6.1/vsprojects/libprotobuf-lite.vcproj create mode 100644 thirdparty/protobuf-2.6.1/vsprojects/libprotobuf.vcproj create mode 100644 thirdparty/protobuf-2.6.1/vsprojects/libprotoc.vcproj create mode 100644 thirdparty/protobuf-2.6.1/vsprojects/lite-test.vcproj create mode 100644 thirdparty/protobuf-2.6.1/vsprojects/protobuf.sln create mode 100644 thirdparty/protobuf-2.6.1/vsprojects/protoc.vcproj create mode 100644 thirdparty/protobuf-2.6.1/vsprojects/readme.txt create mode 100644 thirdparty/protobuf-2.6.1/vsprojects/test_plugin.vcproj create mode 100644 thirdparty/protobuf-2.6.1/vsprojects/tests.vcproj diff --git a/thirdparty/protobuf-2.6.1/CHANGES.txt b/thirdparty/protobuf-2.6.1/CHANGES.txt new file mode 100644 index 00000000..0d0ac814 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/CHANGES.txt @@ -0,0 +1,593 @@ +2014-10-20 version 2.6.1: + + C++ + * Added atomicops support for Solaris. + * Released memory allocated by InitializeDefaultRepeatedFields() and + GetEmptyString(). Some memory sanitizers reported them as memory leaks. + + Java + * Updated DynamicMessage.setField() to handle repeated enum values + correctly. + * Fixed a bug that caused NullPointerException to be thrown when + converting manually constructed FileDescriptorProto to + FileDescriptor. + + Python + * Fixed WhichOneof() to work with de-serialized protobuf messages. + * Fixed a missing file problem of Python C++ implementation. + +2014-08-15 version 2.6.0: + + General + * Added oneofs(unions) feature. Fields in the same oneof will share + memory and at most one field can be set at the same time. Use the + oneof keyword to define a oneof like: + message SampleMessage { + oneof test_oneof { + string name = 4; + YourMessage sub_message = 9; + } + } + * Files, services, enums, messages, methods and enum values can be marked + as deprecated now. + * Added Support for list values, including lists of mesaages, when + parsing text-formatted protos in C++ and Java. + For example: foo: [1, 2, 3] + + C++ + * Enhanced customization on TestFormat printing. + * Added SwapFields() in reflection API to swap a subset of fields. + Added SetAllocatedMessage() in reflection API. + * Repeated primitive extensions are now packable. The + [packed=true] option only affects serializers. Therefore, it is + possible to switch a repeated extension field to packed format + without breaking backwards-compatibility. + * Various speed optimizations. + + Java + * writeTo() method in ByteString can now write a substring to an + output stream. Added endWith() method for ByteString. + * ByteString and ByteBuffer are now supported in CodedInputStream + and CodedOutputStream. + * java_generate_equals_and_hash can now be used with the LITE_RUNTIME. + + Python + * A new C++-backed extension module (aka "cpp api v2") that replaces the + old ("cpp api v1") one. Much faster than the pure Python code. This one + resolves many bugs and is recommended for general use over the + pure Python when possible. + * Descriptors now have enum_types_by_name and extension_types_by_name dict + attributes. + * Support for Python 3. + +2013-02-27 version 2.5.0: + + General + * New notion "import public" that allows a proto file to forward the content + it imports to its importers. For example, + // foo.proto + import public "bar.proto"; + import "baz.proto"; + + // qux.proto + import "foo.proto"; + // Stuff defined in bar.proto may be used in this file, but stuff from + // baz.proto may NOT be used without importing it explicitly. + This is useful for moving proto files. To move a proto file, just leave + a single "import public" in the old proto file. + * New enum option "allow_alias" that specifies whether different symbols can + be assigned the same numeric value. Default value is "true". Setting it to + false causes the compiler to reject enum definitions where multiple symbols + have the same numeric value. + Note: We plan to flip the default value to "false" in a future release. + Projects using enum aliases should set the option to "true" in their .proto + files. + + C++ + * New generated method set_allocated_foo(Type* foo) for message and string + fields. This method allows you to set the field to a pre-allocated object + and the containing message takes the ownership of that object. + * Added SetAllocatedExtension() and ReleaseExtension() to extensions API. + * Custom options are now formatted correctly when descriptors are printed in + text format. + * Various speed optimizations. + + Java + * Comments in proto files are now collected and put into generated code as + comments for corresponding classes and data members. + * Added Parser to parse directly into messages without a Builder. For + example, + Foo foo = Foo.PARSER.ParseFrom(input); + Using Parser is ~25% faster than using Builder to parse messages. + * Added getters/setters to access the underlying ByteString of a string field + directly. + * ByteString now supports more operations: substring(), prepend(), and + append(). The implementation of ByteString uses a binary tree structure + to support these operations efficiently. + * New method findInitializationErrors() that lists all missing required + fields. + * Various code size and speed optimizations. + + Python + * Added support for dynamic message creation. DescriptorDatabase, + DescriptorPool, and MessageFactory work like their C++ couterparts to + simplify Descriptor construction from *DescriptorProtos, and MessageFactory + provides a message instance from a Descriptor. + * Added pickle support for protobuf messages. + * Unknown fields are now preserved after parsing. + * Fixed bug where custom options were not correctly populated. Custom + options can be accessed now. + * Added EnumTypeWrapper that provides better accessibility to enum types. + * Added ParseMessage(descriptor, bytes) to generate a new Message instance + from a descriptor and a byte string. + +2011-05-01 version 2.4.1: + + C++ + * Fixed the frendship problem for old compilers to make the library now gcc 3 + compatible again. + * Fixed vcprojects/extract_includes.bat to extract compiler/plugin.h. + + Java + * Removed usages of JDK 1.6 only features to make the library now JDK 1.5 + compatible again. + * Fixed a bug about negative enum values. + * serialVersionUID is now defined in generated messages for java serializing. + * Fixed protoc to use java.lang.Object, which makes "Object" now a valid + message name again. + + Python + * Experimental C++ implementation now requires C++ protobuf library installed. + See the README.txt in the python directory for details. + +2011-02-02 version 2.4.0: + + General + * The RPC (cc|java|py)_generic_services default value is now false instead of + true. + * Custom options can have aggregate types. For example, + message MyOption { + optional string comment = 1; + optional string author = 2; + } + extend google.protobuf.FieldOptions { + optional MyOption myoption = 12345; + } + This option can now be set as follows: + message SomeType { + optional int32 field = 1 [(myoption) = { comment:'x' author:'y' }]; + } + + C++ + * Various speed and code size optimizations. + * Added a release_foo() method on string and message fields. + * Fixed gzip_output_stream sub-stream handling. + + Java + * Builders now maintain sub-builders for sub-messages. Use getFooBuilder() to + get the builder for the sub-message "foo". This allows you to repeatedly + modify deeply-nested sub-messages without rebuilding them. + * Builder.build() no longer invalidates the Builder for generated messages + (You may continue to modify it and then build another message). + * Code generator will generate efficient equals() and hashCode() + implementations if new option java_generate_equals_and_hash is enabled. + (Otherwise, reflection-based implementations are used.) + * Generated messages now implement Serializable. + * Fields with [deprecated=true] will be marked with @Deprecated in Java. + * Added lazy conversion of UTF-8 encoded strings to String objects to improve + performance. + * Various optimizations. + * Enum value can be accessed directly, instead of calling getNumber() on the + enum member. + * For each enum value, an integer constant is also generated with the suffix + _VALUE. + + Python + * Added an experimental C++ implementation for Python messages via a Python + extension. Implementation type is controlled by an environment variable + PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION (valid values: "cpp" and "python") + The default value is currently "python" but will be changed to "cpp" in + future release. + * Improved performance on message instantiation significantly. + Most of the work on message instantiation is done just once per message + class, instead of once per message instance. + * Improved performance on text message parsing. + * Allow add() to forward keyword arguments to the concrete class. + E.g. instead of + item = repeated_field.add() + item.foo = bar + item.baz = quux + You can do: + repeated_field.add(foo=bar, baz=quux) + * Added a sort() interface to the BaseContainer. + * Added an extend() method to repeated composite fields. + * Added UTF8 debug string support. + +2010-01-08 version 2.3.0: + + General + * Parsers for repeated numeric fields now always accept both packed and + unpacked input. The [packed=true] option only affects serializers. + Therefore, it is possible to switch a field to packed format without + breaking backwards-compatibility -- as long as all parties are using + protobuf 2.3.0 or above, at least. + * The generic RPC service code generated by the C++, Java, and Python + generators can be disabled via file options: + option cc_generic_services = false; + option java_generic_services = false; + option py_generic_services = false; + This allows plugins to generate alternative code, possibly specific to some + particular RPC implementation. + + protoc + * Now supports a plugin system for code generators. Plugins can generate + code for new languages or inject additional code into the output of other + code generators. Plugins are just binaries which accept a protocol buffer + on stdin and write a protocol buffer to stdout, so they may be written in + any language. See src/google/protobuf/compiler/plugin.proto. + **WARNING**: Plugins are experimental. The interface may change in a + future version. + * If the output location ends in .zip or .jar, protoc will write its output + to a zip/jar archive instead of a directory. For example: + protoc --java_out=myproto_srcs.jar --python_out=myproto.zip myproto.proto + Currently the archive contents are not compressed, though this could change + in the future. + * inf, -inf, and nan can now be used as default values for float and double + fields. + + C++ + * Various speed and code size optimizations. + * DynamicMessageFactory is now fully thread-safe. + * Message::Utf8DebugString() method is like DebugString() but avoids escaping + UTF-8 bytes. + * Compiled-in message types can now contain dynamic extensions, through use + of CodedInputStream::SetExtensionRegistry(). + * Now compiles shared libraries (DLLs) by default on Cygwin and MinGW, to + match other platforms. Use --disable-shared to avoid this. + + Java + * parseDelimitedFrom() and mergeDelimitedFrom() now detect EOF and return + false/null instead of throwing an exception. + * Fixed some initialization ordering bugs. + * Fixes for OpenJDK 7. + + Python + * 10-25 times faster than 2.2.0, still pure-Python. + * Calling a mutating method on a sub-message always instantiates the message + in its parent even if the mutating method doesn't actually mutate anything + (e.g. parsing from an empty string). + * Expanded descriptors a bit. + +2009-08-11 version 2.2.0: + + C++ + * Lite mode: The "optimize_for = LITE_RUNTIME" option causes the compiler + to generate code which only depends libprotobuf-lite, which is much smaller + than libprotobuf but lacks descriptors, reflection, and some other features. + * Fixed bug where Message.Swap(Message) was only implemented for + optimize_for_speed. Swap now properly implemented in both modes + (Issue 91). + * Added RemoveLast and SwapElements(index1, index2) to Reflection + interface for repeated elements. + * Added Swap(Message) to Reflection interface. + * Floating-point literals in generated code that are intended to be + single-precision now explicitly have 'f' suffix to avoid pedantic warnings + produced by some compilers. + * The [deprecated=true] option now causes the C++ code generator to generate + a GCC-style deprecation annotation (no-op on other compilers). + * google::protobuf::GetEnumDescriptor() returns the + EnumDescriptor for that type -- useful for templates which cannot call + SomeGeneratedEnumType_descriptor(). + * Various optimizations and obscure bug fixes. + + Java + * Lite mode: The "optimize_for = LITE_RUNTIME" option causes the compiler + to generate code which only depends libprotobuf-lite, which is much smaller + than libprotobuf but lacks descriptors, reflection, and some other features. + * Lots of style cleanups. + + Python + * Fixed endianness bug with floats and doubles. + * Text format parsing support. + * Fix bug with parsing packed repeated fields in embedded messages. + * Ability to initialize fields by passing keyword args to constructor. + * Support iterators in extend and __setslice__ for containers. + +2009-05-13 version 2.1.0: + + General + * Repeated fields of primitive types (types other that string, group, and + nested messages) may now use the option [packed = true] to get a more + efficient encoding. In the new encoding, the entire list is written + as a single byte blob using the "length-delimited" wire type. Within + this blob, the individual values are encoded the same way they would + be normally except without a tag before each value (thus, they are + tightly "packed"). + * For each field, the generated code contains an integer constant assigned + to the field number. For example, the .proto file: + message Foo { optional int bar_baz = 123; } + would generate the following constants, all with the integer value 123: + C++: Foo::kBarBazFieldNumber + Java: Foo.BAR_BAZ_FIELD_NUMBER + Python: Foo.BAR_BAZ_FIELD_NUMBER + Constants are also generated for extensions, with the same naming scheme. + These constants may be used as switch cases. + * Updated bundled Google Test to version 1.3.0. Google Test is now bundled + in its verbatim form as a nested autoconf package, so you can drop in any + other version of Google Test if needed. + * optimize_for = SPEED is now the default, by popular demand. Use + optimize_for = CODE_SIZE if code size is more important in your app. + * It is now an error to define a default value for a repeated field. + Previously, this was silently ignored (it had no effect on the generated + code). + * Fields can now be marked deprecated like: + optional int32 foo = 1 [deprecated = true]; + Currently this does not have any actual effect, but in the future the code + generators may generate deprecation annotations in each language. + * Cross-compiling should now be possible using the --with-protoc option to + configure. See README.txt for more info. + + protoc + * --error_format=msvs option causes errors to be printed in Visual Studio + format, which should allow them to be clicked on in the build log to go + directly to the error location. + * The type name resolver will no longer resolve type names to fields. For + example, this now works: + message Foo {} + message Bar { + optional int32 Foo = 1; + optional Foo baz = 2; + } + Previously, the type of "baz" would resolve to "Bar.Foo", and you'd get + an error because Bar.Foo is a field, not a type. Now the type of "baz" + resolves to the message type Foo. This change is unlikely to make a + difference to anyone who follows the Protocol Buffers style guide. + + C++ + * Several optimizations, including but not limited to: + - Serialization, especially to flat arrays, is 10%-50% faster, possibly + more for small objects. + - Several descriptor operations which previously required locking no longer + do. + - Descriptors are now constructed lazily on first use, rather than at + process startup time. This should save memory in programs which do not + use descriptors or reflection. + - UnknownFieldSet completely redesigned to be more efficient (especially in + terms of memory usage). + - Various optimizations to reduce code size (though the serialization speed + optimizations increased code size). + * Message interface has method ParseFromBoundedZeroCopyStream() which parses + a limited number of bytes from an input stream rather than parsing until + EOF. + * GzipInputStream and GzipOutputStream support reading/writing gzip- or + zlib-compressed streams if zlib is available. + (google/protobuf/io/gzip_stream.h) + * DescriptorPool::FindAllExtensions() and corresponding + DescriptorDatabase::FindAllExtensions() can be used to enumerate all + extensions of a given type. + * For each enum type Foo, protoc will generate functions: + const string& Foo_Name(Foo value); + bool Foo_Parse(const string& name, Foo* result); + The former returns the name of the enum constant corresponding to the given + value while the latter finds the value corresponding to a name. + * RepeatedField and RepeatedPtrField now have back-insertion iterators. + * String fields now have setters that take a char* and a size, in addition + to the existing ones that took char* or const string&. + * DescriptorPool::AllowUnknownDependencies() may be used to tell + DescriptorPool to create placeholder descriptors for unknown entities + referenced in a FileDescriptorProto. This can allow you to parse a .proto + file without having access to other .proto files that it imports, for + example. + * Updated gtest to latest version. The gtest package is now included as a + nested autoconf package, so it should be able to drop new versions into the + "gtest" subdirectory without modification. + + Java + * Fixed bug where Message.mergeFrom(Message) failed to merge extensions. + * Message interface has new method toBuilder() which is equivalent to + newBuilderForType().mergeFrom(this). + * All enums now implement the ProtocolMessageEnum interface. + * Setting a field to null now throws NullPointerException. + * Fixed tendency for TextFormat's parsing to overflow the stack when + parsing large string values. The underlying problem is with Java's + regex implementation (which unfortunately uses recursive backtracking + rather than building an NFA). Worked around by making use of possesive + quantifiers. + * Generated service classes now also generate pure interfaces. For a service + Foo, Foo.Interface is a pure interface containing all of the service's + defined methods. Foo.newReflectiveService() can be called to wrap an + instance of this interface in a class that implements the generic + RpcService interface, which provides reflection support that is usually + needed by RPC server implementations. + * RPC interfaces now support blocking operation in addition to non-blocking. + The protocol compiler generates separate blocking and non-blocking stubs + which operate against separate blocking and non-blocking RPC interfaces. + RPC implementations will have to implement the new interfaces in order to + support blocking mode. + * New I/O methods parseDelimitedFrom(), mergeDelimitedFrom(), and + writeDelimitedTo() read and write "delemited" messages from/to a stream, + meaning that the message size precedes the data. This way, you can write + multiple messages to a stream without having to worry about delimiting + them yourself. + * Throw a more descriptive exception when build() is double-called. + * Add a method to query whether CodedInputStream is at the end of the input + stream. + * Add a method to reset a CodedInputStream's size counter; useful when + reading many messages with the same stream. + * equals() and hashCode() now account for unknown fields. + + Python + * Added slicing support for repeated scalar fields. Added slice retrieval and + removal of repeated composite fields. + * Updated RPC interfaces to allow for blocking operation. A client may + now pass None for a callback when making an RPC, in which case the + call will block until the response is received, and the response + object will be returned directly to the caller. This interface change + cannot be used in practice until RPC implementations are updated to + implement it. + * Changes to input_stream.py should make protobuf compatible with appengine. + +2008-11-25 version 2.0.3: + + protoc + * Enum values may now have custom options, using syntax similar to field + options. + * Fixed bug where .proto files which use custom options but don't actually + define them (i.e. they import another .proto file defining the options) + had to explicitly import descriptor.proto. + * Adjacent string literals in .proto files will now be concatenated, like in + C. + * If an input file is a Windows absolute path (e.g. "C:\foo\bar.proto") and + the import path only contains "." (or contains "." but does not contain + the file), protoc incorrectly thought that the file was under ".", because + it thought that the path was relative (since it didn't start with a slash). + This has been fixed. + + C++ + * Generated message classes now have a Swap() method which efficiently swaps + the contents of two objects. + * All message classes now have a SpaceUsed() method which returns an estimate + of the number of bytes of allocated memory currently owned by the object. + This is particularly useful when you are reusing a single message object + to improve performance but want to make sure it doesn't bloat up too large. + * New method Message::SerializeAsString() returns a string containing the + serialized data. May be more convenient than calling + SerializeToString(string*). + * In debug mode, log error messages when string-type fields are found to + contain bytes that are not valid UTF-8. + * Fixed bug where a message with multiple extension ranges couldn't parse + extensions. + * Fixed bug where MergeFrom(const Message&) didn't do anything if invoked on + a message that contained no fields (but possibly contained extensions). + * Fixed ShortDebugString() to not be O(n^2). Durr. + * Fixed crash in TextFormat parsing if the first token in the input caused a + tokenization error. + * Fixed obscure bugs in zero_copy_stream_impl.cc. + * Added support for HP C++ on Tru64. + * Only build tests on "make check", not "make". + * Fixed alignment issue that caused crashes when using DynamicMessage on + 64-bit Sparc machines. + * Simplify template usage to work with MSVC 2003. + * Work around GCC 4.3.x x86_64 compiler bug that caused crashes on startup. + (This affected Fedora 9 in particular.) + * Now works on "Solaris 10 using recent Sun Studio". + + Java + * New overload of mergeFrom() which parses a slice of a byte array instead + of the whole thing. + * New method ByteString.asReadOnlyByteBuffer() does what it sounds like. + * Improved performance of isInitialized() when optimizing for code size. + + Python + * Corrected ListFields() signature in Message base class to match what + subclasses actually implement. + * Some minor refactoring. + * Don't pass self as first argument to superclass constructor (no longer + allowed in Python 2.6). + +2008-09-29 version 2.0.2: + + General + * License changed from Apache 2.0 to New BSD. + * It is now possible to define custom "options", which are basically + annotations which may be placed on definitions in a .proto file. + For example, you might define a field option called "foo" like so: + import "google/protobuf/descriptor.proto" + extend google.protobuf.FieldOptions { + optional string foo = 12345; + } + Then you annotate a field using the "foo" option: + message MyMessage { + optional int32 some_field = 1 [(foo) = "bar"] + } + The value of this option is then visible via the message's + Descriptor: + const FieldDescriptor* field = + MyMessage::descriptor()->FindFieldByName("some_field"); + assert(field->options().GetExtension(foo) == "bar"); + This feature has been implemented and tested in C++ and Java. + Other languages may or may not need to do extra work to support + custom options, depending on how they construct descriptors. + + C++ + * Fixed some GCC warnings that only occur when using -pedantic. + * Improved static initialization code, making ordering more + predictable among other things. + * TextFormat will no longer accept messages which contain multiple + instances of a singular field. Previously, the latter instance + would overwrite the former. + * Now works on systems that don't have hash_map. + + Java + * Print @Override annotation in generated code where appropriate. + + Python + * Strings now use the "unicode" type rather than the "str" type. + String fields may still be assigned ASCII "str" values; they will + automatically be converted. + * Adding a property to an object representing a repeated field now + raises an exception. For example: + # No longer works (and never should have). + message.some_repeated_field.foo = 1 + + Windows + * We now build static libraries rather than DLLs by default on MSVC. + See vsprojects/readme.txt for more information. + +2008-08-15 version 2.0.1: + + protoc + * New flags --encode and --decode can be used to convert between protobuf text + format and binary format from the command-line. + * New flag --descriptor_set_out can be used to write FileDescriptorProtos for + all parsed files directly into a single output file. This is particularly + useful if you wish to parse .proto files from programs written in languages + other than C++: just run protoc as a background process and have it output + a FileDescriptorList, then parse that natively. + * Improved error message when an enum value's name conflicts with another + symbol defined in the enum type's scope, e.g. if two enum types declared + in the same scope have values with the same name. This is disallowed for + compatibility with C++, but this wasn't clear from the error. + * Fixed absolute output paths on Windows. + * Allow trailing slashes in --proto_path mappings. + + C++ + * Reflection objects are now per-class rather than per-instance. To make this + possible, the Reflection interface had to be changed such that all methods + take the Message instance as a parameter. This change improves performance + significantly in memory-bandwidth-limited use cases, since it makes the + message objects smaller. Note that source-incompatible interface changes + like this will not be made again after the library leaves beta. + * Heuristically detect sub-messages when printing unknown fields. + * Fix static initialization ordering bug that caused crashes at startup when + compiling on Mac with static linking. + * Fixed TokenizerTest when compiling with -DNDEBUG on Linux. + * Fixed incorrect definition of kint32min. + * Fix bytes type setter to work with byte sequences with embedded NULLs. + * Other irrelevant tweaks. + + Java + * Fixed UnknownFieldSet's parsing of varints larger than 32 bits. + * Fixed TextFormat's parsing of "inf" and "nan". + * Fixed TextFormat's parsing of comments. + * Added info to Java POM that will be required when we upload the + package to a Maven repo. + + Python + * MergeFrom(message) and CopyFrom(message) are now implemented. + * SerializeToString() raises an exception if the message is missing required + fields. + * Code organization improvements. + * Fixed doc comments for RpcController and RpcChannel, which had somehow been + swapped. + * Fixed text_format_test on Windows where floating-point exponents sometimes + contain extra zeros. + * Fix Python service CallMethod() implementation. + + Other + * Improved readmes. + * VIM syntax highlighting improvements. + +2008-07-07 version 2.0.0: + + * First public release. diff --git a/thirdparty/protobuf-2.6.1/CONTRIBUTORS.txt b/thirdparty/protobuf-2.6.1/CONTRIBUTORS.txt new file mode 100644 index 00000000..717ffc14 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/CONTRIBUTORS.txt @@ -0,0 +1,93 @@ +This file contains a list of people who have made large contributions +to the public version of Protocol Buffers. + +Original Protocol Buffers design and implementation: + Sanjay Ghemawat + Jeff Dean + Daniel Dulitz + Craig Silverstein + Paul Haahr + Corey Anderson + (and many others) + +Proto2 C++ and Java primary author: + Kenton Varda + +Proto2 Python primary authors: + Will Robinson + Petar Petrov + +Large code contributions: + Jason Hsueh + Joseph Schorr + Wenbo Zhu + +Large quantity of code reviews: + Scott Bruce + Frank Yellin + Neal Norwitz + Jeffrey Yasskin + Ambrose Feinstein + +Documentation: + Lisa Carey + +Maven packaging: + Gregory Kick + +Patch contributors: + Kevin Ko + * Small patch to handle trailing slashes in --proto_path flag. + Johan Euphrosine + * Small patch to fix Python CallMethod(). + Ulrich Kunitz + * Small optimizations to Python serialization. + Leandro Lucarella + * VI syntax highlighting tweaks. + * Fix compiler to not make output executable. + Dilip Joseph + * Heuristic detection of sub-messages when printing unknown fields in + text format. + Brian Atkinson + * Added @Override annotation to generated Java code where appropriate. + Vincent Choinière + * Tru64 support. + Monty Taylor + * Solaris 10 + Sun Studio fixes. + Alek Storm + * Slicing support for repeated scalar fields for the Python API. + Oleg Smolsky + * MS Visual Studio error format option. + * Detect unordered_map in stl_hash.m4. + Brian Olson + * gzip/zlib I/O support. + Michael Poole + * Fixed warnings about generated constructors not explicitly initializing + all fields (only present with certain compiler settings). + * Added generation of field number constants. + Wink Saville + * Fixed initialization ordering problem in logging code. + Will Pierce + * Small patch improving performance of in Python serialization. + Alexandre Vassalotti + * Emacs mode for Protocol Buffers (editors/protobuf-mode.el). + Scott Stafford + * Added Swap(), SwapElements(), and RemoveLast() to Reflection interface. + Alexander Melnikov + * HPUX support. + Oliver Jowett + * Detect whether zlib is new enough in configure script. + * Fixes for Solaris 10 32/64-bit confusion. + Evan Jones + * Optimize Java serialization code when writing a small message to a stream. + * Optimize Java serialization of strings so that UTF-8 encoding happens only + once per string per serialization call. + * Clean up some Java warnings. + * Fix bug with permanent callbacks that delete themselves when run. + Michael Kucharski + * Added CodedInputStream.getTotalBytesRead(). + Kacper Kowalik + * Fixed m4/acx_pthread.m4 problem for some Linux distributions. + William Orr + * Fixed detection of sched_yield on Solaris. + * Added atomicops for Solaris diff --git a/thirdparty/protobuf-2.6.1/INSTALL.txt b/thirdparty/protobuf-2.6.1/INSTALL.txt new file mode 100644 index 00000000..ce3b0949 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/INSTALL.txt @@ -0,0 +1,237 @@ +This file contains detailed but generic information on building and +installing the C++ part of this project. For shorter instructions, +as well as instructions for compiling and installing the Java or +Python parts, see README. + +====================================================================== + +Copyright 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software +Foundation, Inc. + + This file is free documentation; the Free Software Foundation gives +unlimited permission to copy, distribute and modify it. + + +Basic Installation +================== + + These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, and a +file `config.log' containing compiler output (useful mainly for +debugging `configure'). + + It can also use an optional file (typically called `config.cache' +and enabled with `--cache-file=config.cache' or simply `-C') that saves +the results of its tests to speed up reconfiguring. (Caching is +disabled by default to prevent problems with accidental use of stale +cache files.) + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If you are using the cache, and at +some point `config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file `configure.ac' (or `configure.in') is used to create +`configure' by a program called `autoconf'. You only need +`configure.ac' if you want to change it or regenerate `configure' using +a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes awhile. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. Run `./configure --help' +for details on some of the pertinent environment variables. + + You can give `configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here +is an example: + + ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix + + *Note Defining Variables::, for more details. + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not support the `VPATH' +variable, you have to compile the package for one architecture at a +time in the source code directory. After you have installed the +package for one architecture, use `make distclean' before reconfiguring +for another architecture. + +Installation Names +================== + + By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PATH'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PATH', the package will use +PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=PATH' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + + There may be some features `configure' cannot figure out +automatically, but needs to determine by the type of machine the package +will run on. Usually, assuming the package is built to be run on the +_same_ architectures, `configure' can figure that out, but if it prints +a message saying it cannot guess the machine type, give it the +`--build=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS KERNEL-OS + + See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the `--target=TYPE' option to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with `--host=TYPE'. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Defining Variables +================== + + Variables not defined in a site shell script can be set in the +environment passed to `configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the `configure' command line, using `VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +will cause the specified gcc to be used as the C compiler (unless it is +overridden in the site shell script). + +`configure' Invocation +====================== + + `configure' recognizes the following options to control how it +operates. + +`--help' +`-h' + Print a summary of the options to `configure', and exit. + +`--version' +`-V' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally `config.cache'. FILE defaults to `/dev/null' to + disable caching. + +`--config-cache' +`-C' + Alias for `--cache-file=config.cache'. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`configure' also accepts some other, not widely useful, options. Run +`configure --help' for more details. + diff --git a/thirdparty/protobuf-2.6.1/LICENSE b/thirdparty/protobuf-2.6.1/LICENSE new file mode 100644 index 00000000..705db579 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/LICENSE @@ -0,0 +1,33 @@ +Copyright 2008, Google Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Code generated by the Protocol Buffer compiler is owned by the owner +of the input file used when generating it. This code is not +standalone and requires a support library to be linked with it. This +support library is itself covered by the above license. diff --git a/thirdparty/protobuf-2.6.1/Makefile b/thirdparty/protobuf-2.6.1/Makefile new file mode 100644 index 00000000..827e6ed3 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/Makefile @@ -0,0 +1,1157 @@ +# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2018 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/protobuf +pkgincludedir = $(includedir)/protobuf +pkglibdir = $(libdir)/protobuf +pkglibexecdir = $(libexecdir)/protobuf +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-pc-linux-gnu +host_triplet = x86_64-pc-linux-gnu +target_triplet = x86_64-pc-linux-gnu +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ac_system_extensions.m4 \ + $(top_srcdir)/m4/acx_check_suncc.m4 \ + $(top_srcdir)/m4/acx_pthread.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/stl_hash.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ + $(am__configure_deps) $(am__DIST_COMMON) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = protobuf.pc protobuf-lite.pc +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgconfigdir)" +DATA = $(pkgconfig_DATA) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + cscope distdir distdir-am dist dist-all distcheck +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ + $(LISP)config.h.in +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +CSCOPE = cscope +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ + $(srcdir)/protobuf-lite.pc.in $(srcdir)/protobuf.pc.in compile \ + config.guess config.sub install-sh ltmain.sh missing +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi +am__post_remove_distdir = $(am__remove_distdir) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +DIST_TARGETS = dist-gzip +distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' +distcleancheck_listfiles = find . -type f -print +ACLOCAL = ${SHELL} /home/jusic/source-engine/thirdparty/protobuf-2.6.1/missing aclocal-1.16 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AUTOCONF = ${SHELL} /home/jusic/source-engine/thirdparty/protobuf-2.6.1/missing autoconf +AUTOHEADER = ${SHELL} /home/jusic/source-engine/thirdparty/protobuf-2.6.1/missing autoheader +AUTOMAKE = ${SHELL} /home/jusic/source-engine/thirdparty/protobuf-2.6.1/missing automake-1.16 +AWK = mawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = +CPPFLAGS = +CXX = g++ +CXXCPP = g++ -E +CXXDEPMODE = depmode=gcc3 +CXXFLAGS = -g -DNDEBUG +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /bin/grep -E +EXEEXT = +FGREP = /bin/grep -F +GREP = /bin/grep +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +ISAINFO = +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBOBJS = +LIBS = -lz +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +LT_SYS_LIBRARY_PATH = +MAINT = +MAKEINFO = ${SHELL} /home/jusic/source-engine/thirdparty/protobuf-2.6.1/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = protobuf +PACKAGE_BUGREPORT = protobuf@googlegroups.com +PACKAGE_NAME = Protocol Buffers +PACKAGE_STRING = Protocol Buffers 2.6.1 +PACKAGE_TARNAME = protobuf +PACKAGE_URL = +PACKAGE_VERSION = 2.6.1 +PATH_SEPARATOR = : +POW_LIB = +PROTOBUF_OPT_FLAG = -O2 +PROTOC = +PTHREAD_CC = gcc +PTHREAD_CFLAGS = -pthread +PTHREAD_LIBS = -lpthread +RANLIB = ranlib +SED = /bin/sed +SET_MAKE = +SHELL = /bin/bash +STRIP = strip +VERSION = 2.6.1 +abs_builddir = /home/jusic/source-engine/thirdparty/protobuf-2.6.1 +abs_srcdir = /home/jusic/source-engine/thirdparty/protobuf-2.6.1 +abs_top_builddir = /home/jusic/source-engine/thirdparty/protobuf-2.6.1 +abs_top_srcdir = /home/jusic/source-engine/thirdparty/protobuf-2.6.1 +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_CXX = g++ +ac_ct_DUMPBIN = +acx_pthread_config = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-pc-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = pc +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-pc-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = pc +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/jusic/source-engine/thirdparty/protobuf-2.6.1/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +runstatedir = ${localstatedir}/run +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +subdirs = gtest +sysconfdir = ${prefix}/etc +target = x86_64-pc-linux-gnu +target_alias = +target_cpu = x86_64 +target_os = linux-gnu +target_vendor = pc +top_build_prefix = +top_builddir = . +top_srcdir = . +ACLOCAL_AMFLAGS = -I m4 +AUTOMAKE_OPTIONS = foreign + +# Build . before src so that our all-local and clean-local hooks kicks in at +# the right time. +SUBDIRS = . src + +# Always include gtest in distributions. +DIST_SUBDIRS = $(subdirs) src +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = protobuf.pc protobuf-lite.pc +EXTRA_DIST = \ + autogen.sh \ + generate_descriptor_proto.sh \ + README.md \ + INSTALL.txt \ + LICENSE \ + CONTRIBUTORS.txt \ + CHANGES.txt \ + editors/README.txt \ + editors/proto.vim \ + editors/protobuf-mode.el \ + vsprojects/config.h \ + vsprojects/extract_includes.bat \ + vsprojects/libprotobuf.vcproj \ + vsprojects/libprotobuf-lite.vcproj \ + vsprojects/libprotoc.vcproj \ + vsprojects/protobuf.sln \ + vsprojects/protoc.vcproj \ + vsprojects/readme.txt \ + vsprojects/test_plugin.vcproj \ + vsprojects/tests.vcproj \ + vsprojects/lite-test.vcproj \ + vsprojects/convert2008to2005.sh \ + examples/README.txt \ + examples/Makefile \ + examples/addressbook.proto \ + examples/add_person.cc \ + examples/list_people.cc \ + examples/AddPerson.java \ + examples/ListPeople.java \ + examples/add_person.py \ + examples/list_people.py \ + java/src/main/java/com/google/protobuf/AbstractMessage.java \ + java/src/main/java/com/google/protobuf/AbstractMessageLite.java \ + java/src/main/java/com/google/protobuf/AbstractParser.java \ + java/src/main/java/com/google/protobuf/BlockingRpcChannel.java \ + java/src/main/java/com/google/protobuf/BlockingService.java \ + java/src/main/java/com/google/protobuf/BoundedByteString.java \ + java/src/main/java/com/google/protobuf/ByteString.java \ + java/src/main/java/com/google/protobuf/CodedInputStream.java \ + java/src/main/java/com/google/protobuf/CodedOutputStream.java \ + java/src/main/java/com/google/protobuf/Descriptors.java \ + java/src/main/java/com/google/protobuf/DynamicMessage.java \ + java/src/main/java/com/google/protobuf/Extension.java \ + java/src/main/java/com/google/protobuf/ExtensionRegistry.java \ + java/src/main/java/com/google/protobuf/ExtensionRegistryLite.java \ + java/src/main/java/com/google/protobuf/FieldSet.java \ + java/src/main/java/com/google/protobuf/GeneratedMessage.java \ + java/src/main/java/com/google/protobuf/GeneratedMessageLite.java \ + java/src/main/java/com/google/protobuf/Internal.java \ + java/src/main/java/com/google/protobuf/InvalidProtocolBufferException.java \ + java/src/main/java/com/google/protobuf/LazyField.java \ + java/src/main/java/com/google/protobuf/LazyFieldLite.java \ + java/src/main/java/com/google/protobuf/LazyStringArrayList.java \ + java/src/main/java/com/google/protobuf/LazyStringList.java \ + java/src/main/java/com/google/protobuf/LiteralByteString.java \ + java/src/main/java/com/google/protobuf/Message.java \ + java/src/main/java/com/google/protobuf/MessageLite.java \ + java/src/main/java/com/google/protobuf/MessageLiteOrBuilder.java \ + java/src/main/java/com/google/protobuf/MessageOrBuilder.java \ + java/src/main/java/com/google/protobuf/MessageReflection.java \ + java/src/main/java/com/google/protobuf/Parser.java \ + java/src/main/java/com/google/protobuf/ProtocolMessageEnum.java \ + java/src/main/java/com/google/protobuf/ProtocolStringList.java \ + java/src/main/java/com/google/protobuf/RepeatedFieldBuilder.java \ + java/src/main/java/com/google/protobuf/RopeByteString.java \ + java/src/main/java/com/google/protobuf/RpcCallback.java \ + java/src/main/java/com/google/protobuf/RpcChannel.java \ + java/src/main/java/com/google/protobuf/RpcController.java \ + java/src/main/java/com/google/protobuf/RpcUtil.java \ + java/src/main/java/com/google/protobuf/ServiceException.java \ + java/src/main/java/com/google/protobuf/Service.java \ + java/src/main/java/com/google/protobuf/SingleFieldBuilder.java \ + java/src/main/java/com/google/protobuf/SmallSortedMap.java \ + java/src/main/java/com/google/protobuf/TextFormat.java \ + java/src/main/java/com/google/protobuf/UninitializedMessageException.java \ + java/src/main/java/com/google/protobuf/UnknownFieldSet.java \ + java/src/main/java/com/google/protobuf/UnmodifiableLazyStringList.java \ + java/src/main/java/com/google/protobuf/Utf8.java \ + java/src/main/java/com/google/protobuf/WireFormat.java \ + java/src/test/java/com/google/protobuf/AbstractMessageTest.java \ + java/src/test/java/com/google/protobuf/BoundedByteStringTest.java \ + java/src/test/java/com/google/protobuf/ByteStringTest.java \ + java/src/test/java/com/google/protobuf/CheckUtf8Test.java \ + java/src/test/java/com/google/protobuf/CodedInputStreamTest.java \ + java/src/test/java/com/google/protobuf/CodedOutputStreamTest.java \ + java/src/test/java/com/google/protobuf/DeprecatedFieldTest.java \ + java/src/test/java/com/google/protobuf/DescriptorsTest.java \ + java/src/test/java/com/google/protobuf/DynamicMessageTest.java \ + java/src/test/java/com/google/protobuf/ForceFieldBuildersPreRun.java \ + java/src/test/java/com/google/protobuf/GeneratedMessageTest.java \ + java/src/test/java/com/google/protobuf/IsValidUtf8Test.java \ + java/src/test/java/com/google/protobuf/IsValidUtf8TestUtil.java \ + java/src/test/java/com/google/protobuf/LazyFieldTest.java \ + java/src/test/java/com/google/protobuf/LazyFieldLiteTest.java \ + java/src/test/java/com/google/protobuf/LazyMessageLiteTest.java \ + java/src/test/java/com/google/protobuf/LazyStringArrayListTest.java \ + java/src/test/java/com/google/protobuf/LazyStringEndToEndTest.java \ + java/src/test/java/com/google/protobuf/LiteEqualsAndHashTest.java \ + java/src/test/java/com/google/protobuf/LiteralByteStringTest.java \ + java/src/test/java/com/google/protobuf/LiteTest.java \ + java/src/test/java/com/google/protobuf/MessageTest.java \ + java/src/test/java/com/google/protobuf/NestedBuildersTest.java \ + java/src/test/java/com/google/protobuf/ParserTest.java \ + java/src/test/java/com/google/protobuf/RepeatedFieldBuilderTest.java \ + java/src/test/java/com/google/protobuf/RopeByteStringSubstringTest.java \ + java/src/test/java/com/google/protobuf/RopeByteStringTest.java \ + java/src/test/java/com/google/protobuf/ServiceTest.java \ + java/src/test/java/com/google/protobuf/SingleFieldBuilderTest.java \ + java/src/test/java/com/google/protobuf/SmallSortedMapTest.java \ + java/src/test/java/com/google/protobuf/TestBadIdentifiers.java \ + java/src/test/java/com/google/protobuf/TestUtil.java \ + java/src/test/java/com/google/protobuf/TextFormatTest.java \ + java/src/test/java/com/google/protobuf/UnknownFieldSetTest.java \ + java/src/test/java/com/google/protobuf/UnmodifiableLazyStringListTest.java \ + java/src/test/java/com/google/protobuf/WireFormatTest.java \ + java/src/test/java/com/google/protobuf/lazy_fields_lite.proto \ + java/src/test/java/com/google/protobuf/lite_equals_and_hash.proto \ + java/src/test/java/com/google/protobuf/multiple_files_test.proto \ + java/src/test/java/com/google/protobuf/nested_builders_test.proto \ + java/src/test/java/com/google/protobuf/nested_extension_lite.proto \ + java/src/test/java/com/google/protobuf/nested_extension.proto \ + java/src/test/java/com/google/protobuf/non_nested_extension_lite.proto \ + java/src/test/java/com/google/protobuf/non_nested_extension.proto \ + java/src/test/java/com/google/protobuf/outer_class_name_test.proto \ + java/src/test/java/com/google/protobuf/outer_class_name_test2.proto \ + java/src/test/java/com/google/protobuf/outer_class_name_test3.proto \ + java/src/test/java/com/google/protobuf/test_bad_identifiers.proto \ + java/src/test/java/com/google/protobuf/test_check_utf8.proto \ + java/src/test/java/com/google/protobuf/test_check_utf8_size.proto \ + java/src/test/java/com/google/protobuf/test_custom_options.proto \ + java/pom.xml \ + java/README.txt \ + python/google/protobuf/internal/api_implementation.cc \ + python/google/protobuf/internal/api_implementation.py \ + python/google/protobuf/internal/api_implementation_default_test.py \ + python/google/protobuf/internal/containers.py \ + python/google/protobuf/internal/cpp_message.py \ + python/google/protobuf/internal/decoder.py \ + python/google/protobuf/internal/descriptor_database_test.py \ + python/google/protobuf/internal/descriptor_pool_test.py \ + python/google/protobuf/internal/descriptor_pool_test1.proto \ + python/google/protobuf/internal/descriptor_pool_test2.proto \ + python/google/protobuf/internal/descriptor_python_test.py \ + python/google/protobuf/internal/descriptor_test.py \ + python/google/protobuf/internal/encoder.py \ + python/google/protobuf/internal/enum_type_wrapper.py \ + python/google/protobuf/internal/factory_test1.proto \ + python/google/protobuf/internal/factory_test2.proto \ + python/google/protobuf/internal/generator_test.py \ + python/google/protobuf/internal/message_factory_python_test.py \ + python/google/protobuf/internal/message_factory_test.py \ + python/google/protobuf/internal/message_listener.py \ + python/google/protobuf/internal/message_python_test.py \ + python/google/protobuf/internal/message_test.py \ + python/google/protobuf/internal/missing_enum_values.proto \ + python/google/protobuf/internal/more_extensions.proto \ + python/google/protobuf/internal/more_extensions_dynamic.proto \ + python/google/protobuf/internal/more_messages.proto \ + python/google/protobuf/internal/python_message.py \ + python/google/protobuf/internal/reflection_test.py \ + python/google/protobuf/internal/service_reflection_test.py \ + python/google/protobuf/internal/symbol_database_test.py \ + python/google/protobuf/internal/test_bad_identifiers.proto \ + python/google/protobuf/internal/test_util.py \ + python/google/protobuf/internal/text_encoding_test.py \ + python/google/protobuf/internal/text_format_test.py \ + python/google/protobuf/internal/type_checkers.py \ + python/google/protobuf/internal/unknown_fields_test.py \ + python/google/protobuf/internal/wire_format.py \ + python/google/protobuf/internal/wire_format_test.py \ + python/google/protobuf/internal/__init__.py \ + python/google/protobuf/pyext/README \ + python/google/protobuf/pyext/cpp_message.py \ + python/google/protobuf/pyext/descriptor.h \ + python/google/protobuf/pyext/descriptor.cc \ + python/google/protobuf/pyext/descriptor_cpp2_test.py \ + python/google/protobuf/pyext/extension_dict.h \ + python/google/protobuf/pyext/extension_dict.cc \ + python/google/protobuf/pyext/message.h \ + python/google/protobuf/pyext/message.cc \ + python/google/protobuf/pyext/message_factory_cpp2_test.py \ + python/google/protobuf/pyext/proto2_api_test.proto \ + python/google/protobuf/pyext/python.proto \ + python/google/protobuf/pyext/python_protobuf.h \ + python/google/protobuf/pyext/reflection_cpp2_generated_test.py \ + python/google/protobuf/pyext/repeated_composite_container.h \ + python/google/protobuf/pyext/repeated_composite_container.cc \ + python/google/protobuf/pyext/repeated_scalar_container.h \ + python/google/protobuf/pyext/repeated_scalar_container.cc \ + python/google/protobuf/pyext/scoped_pyobject_ptr.h \ + python/google/protobuf/pyext/__init__.py \ + python/google/protobuf/descriptor.py \ + python/google/protobuf/descriptor_database.py \ + python/google/protobuf/descriptor_pool.py \ + python/google/protobuf/message.py \ + python/google/protobuf/message_factory.py \ + python/google/protobuf/reflection.py \ + python/google/protobuf/service.py \ + python/google/protobuf/service_reflection.py \ + python/google/protobuf/symbol_database.py \ + python/google/protobuf/text_encoding.py \ + python/google/protobuf/text_format.py \ + python/google/protobuf/__init__.py \ + python/google/__init__.py \ + python/ez_setup.py \ + python/setup.py \ + python/mox.py \ + python/stubout.py \ + python/README.txt + + +# Deletes all the files generated by autogen.sh. +MAINTAINERCLEANFILES = \ + aclocal.m4 \ + config.guess \ + config.sub \ + configure \ + depcomp \ + install-sh \ + ltmain.sh \ + Makefile.in \ + missing \ + mkinstalldirs \ + config.h.in \ + stamp.h.in \ + m4/ltsugar.m4 \ + m4/libtool.m4 \ + m4/ltversion.m4 \ + m4/lt~obsolete.m4 \ + m4/ltoptions.m4 + +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +am--refresh: Makefile + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): + +config.h: stamp-h1 + @test -f $@ || rm -f stamp-h1 + @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h +$(srcdir)/config.h.in: $(am__configure_deps) + ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f config.h stamp-h1 +protobuf.pc: $(top_builddir)/config.status $(srcdir)/protobuf.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +protobuf-lite.pc: $(top_builddir)/config.status $(srcdir)/protobuf-lite.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool config.lt +install-pkgconfigDATA: $(pkgconfig_DATA) + @$(NORMAL_INSTALL) + @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ + done + +uninstall-pkgconfigDATA: + @$(NORMAL_UNINSTALL) + @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscope: cscope.files + test ! -s cscope.files \ + || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +clean-cscope: + -rm -f cscope.files +cscope.files: clean-cscope cscopelist +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + $(am__remove_distdir) + test -d "$(distdir)" || mkdir "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz + $(am__post_remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__post_remove_distdir) + +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + $(am__post_remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + $(am__post_remove_distdir) + +dist-tarZ: distdir + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__post_remove_distdir) + +dist-shar: distdir + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz + $(am__post_remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__post_remove_distdir) + +dist dist-all: + $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' + $(am__post_remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir) + chmod u+w $(distdir) + mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build/sub \ + && ../../configure \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + --srcdir=../.. --prefix="$$dc_install_base" \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__post_remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) check-local +check: check-recursive +all-am: Makefile $(DATA) config.h +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(pkgconfigdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-recursive + +clean-am: clean-generic clean-libtool clean-local mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr \ + distclean-libtool distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-pkgconfigDATA + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-pkgconfigDATA + +.MAKE: $(am__recursive_targets) all check-am install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ + am--refresh check check-am check-local clean clean-cscope \ + clean-generic clean-libtool clean-local cscope cscopelist-am \ + ctags ctags-am dist dist-all dist-bzip2 dist-gzip dist-lzip \ + dist-shar dist-tarZ dist-xz dist-zip distcheck distclean \ + distclean-generic distclean-hdr distclean-libtool \ + distclean-tags distcleancheck distdir distuninstallcheck dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-pkgconfigDATA install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pkgconfigDATA + +.PRECIOUS: Makefile + + +# Build gtest before we build protobuf tests. We don't add gtest to SUBDIRS +# because then "make check" would also build and run all of gtest's own tests, +# which takes a lot of time and is generally not useful to us. Also, we don't +# want "make install" to recurse into gtest since we don't want to overwrite +# the installed version of gtest if there is one. +check-local: + @echo "Making lib/libgtest.a lib/libgtest_main.a in gtest" + @cd gtest && $(MAKE) $(AM_MAKEFLAGS) lib/libgtest.la lib/libgtest_main.la + +# We would like to clean gtest when "make clean" is invoked. But we have to +# be careful because clean-local is also invoked during "make distclean", but +# "make distclean" already recurses into gtest because it's listed among the +# DIST_SUBDIRS. distclean will delete gtest/Makefile, so if we then try to +# cd to the directory again and "make clean" it will fail. So, check that the +# Makefile exists before recursing. +clean-local: + @if test -e gtest/Makefile; then \ + echo "Making clean in gtest"; \ + cd gtest && $(MAKE) $(AM_MAKEFLAGS) clean; \ + fi + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/thirdparty/protobuf-2.6.1/Makefile.am b/thirdparty/protobuf-2.6.1/Makefile.am new file mode 100644 index 00000000..24e5e55c --- /dev/null +++ b/thirdparty/protobuf-2.6.1/Makefile.am @@ -0,0 +1,267 @@ +## Process this file with automake to produce Makefile.in + +ACLOCAL_AMFLAGS = -I m4 + +AUTOMAKE_OPTIONS = foreign + +# Build . before src so that our all-local and clean-local hooks kicks in at +# the right time. +SUBDIRS = . src + +# Always include gtest in distributions. +DIST_SUBDIRS = $(subdirs) src + +# Build gtest before we build protobuf tests. We don't add gtest to SUBDIRS +# because then "make check" would also build and run all of gtest's own tests, +# which takes a lot of time and is generally not useful to us. Also, we don't +# want "make install" to recurse into gtest since we don't want to overwrite +# the installed version of gtest if there is one. +check-local: + @echo "Making lib/libgtest.a lib/libgtest_main.a in gtest" + @cd gtest && $(MAKE) $(AM_MAKEFLAGS) lib/libgtest.la lib/libgtest_main.la + +# We would like to clean gtest when "make clean" is invoked. But we have to +# be careful because clean-local is also invoked during "make distclean", but +# "make distclean" already recurses into gtest because it's listed among the +# DIST_SUBDIRS. distclean will delete gtest/Makefile, so if we then try to +# cd to the directory again and "make clean" it will fail. So, check that the +# Makefile exists before recursing. +clean-local: + @if test -e gtest/Makefile; then \ + echo "Making clean in gtest"; \ + cd gtest && $(MAKE) $(AM_MAKEFLAGS) clean; \ + fi + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = protobuf.pc protobuf-lite.pc + +EXTRA_DIST = \ + autogen.sh \ + generate_descriptor_proto.sh \ + README.md \ + INSTALL.txt \ + LICENSE \ + CONTRIBUTORS.txt \ + CHANGES.txt \ + editors/README.txt \ + editors/proto.vim \ + editors/protobuf-mode.el \ + vsprojects/config.h \ + vsprojects/extract_includes.bat \ + vsprojects/libprotobuf.vcproj \ + vsprojects/libprotobuf-lite.vcproj \ + vsprojects/libprotoc.vcproj \ + vsprojects/protobuf.sln \ + vsprojects/protoc.vcproj \ + vsprojects/readme.txt \ + vsprojects/test_plugin.vcproj \ + vsprojects/tests.vcproj \ + vsprojects/lite-test.vcproj \ + vsprojects/convert2008to2005.sh \ + examples/README.txt \ + examples/Makefile \ + examples/addressbook.proto \ + examples/add_person.cc \ + examples/list_people.cc \ + examples/AddPerson.java \ + examples/ListPeople.java \ + examples/add_person.py \ + examples/list_people.py \ + java/src/main/java/com/google/protobuf/AbstractMessage.java \ + java/src/main/java/com/google/protobuf/AbstractMessageLite.java \ + java/src/main/java/com/google/protobuf/AbstractParser.java \ + java/src/main/java/com/google/protobuf/BlockingRpcChannel.java \ + java/src/main/java/com/google/protobuf/BlockingService.java \ + java/src/main/java/com/google/protobuf/BoundedByteString.java \ + java/src/main/java/com/google/protobuf/ByteString.java \ + java/src/main/java/com/google/protobuf/CodedInputStream.java \ + java/src/main/java/com/google/protobuf/CodedOutputStream.java \ + java/src/main/java/com/google/protobuf/Descriptors.java \ + java/src/main/java/com/google/protobuf/DynamicMessage.java \ + java/src/main/java/com/google/protobuf/Extension.java \ + java/src/main/java/com/google/protobuf/ExtensionRegistry.java \ + java/src/main/java/com/google/protobuf/ExtensionRegistryLite.java \ + java/src/main/java/com/google/protobuf/FieldSet.java \ + java/src/main/java/com/google/protobuf/GeneratedMessage.java \ + java/src/main/java/com/google/protobuf/GeneratedMessageLite.java \ + java/src/main/java/com/google/protobuf/Internal.java \ + java/src/main/java/com/google/protobuf/InvalidProtocolBufferException.java \ + java/src/main/java/com/google/protobuf/LazyField.java \ + java/src/main/java/com/google/protobuf/LazyFieldLite.java \ + java/src/main/java/com/google/protobuf/LazyStringArrayList.java \ + java/src/main/java/com/google/protobuf/LazyStringList.java \ + java/src/main/java/com/google/protobuf/LiteralByteString.java \ + java/src/main/java/com/google/protobuf/Message.java \ + java/src/main/java/com/google/protobuf/MessageLite.java \ + java/src/main/java/com/google/protobuf/MessageLiteOrBuilder.java \ + java/src/main/java/com/google/protobuf/MessageOrBuilder.java \ + java/src/main/java/com/google/protobuf/MessageReflection.java \ + java/src/main/java/com/google/protobuf/Parser.java \ + java/src/main/java/com/google/protobuf/ProtocolMessageEnum.java \ + java/src/main/java/com/google/protobuf/ProtocolStringList.java \ + java/src/main/java/com/google/protobuf/RepeatedFieldBuilder.java \ + java/src/main/java/com/google/protobuf/RopeByteString.java \ + java/src/main/java/com/google/protobuf/RpcCallback.java \ + java/src/main/java/com/google/protobuf/RpcChannel.java \ + java/src/main/java/com/google/protobuf/RpcController.java \ + java/src/main/java/com/google/protobuf/RpcUtil.java \ + java/src/main/java/com/google/protobuf/ServiceException.java \ + java/src/main/java/com/google/protobuf/Service.java \ + java/src/main/java/com/google/protobuf/SingleFieldBuilder.java \ + java/src/main/java/com/google/protobuf/SmallSortedMap.java \ + java/src/main/java/com/google/protobuf/TextFormat.java \ + java/src/main/java/com/google/protobuf/UninitializedMessageException.java \ + java/src/main/java/com/google/protobuf/UnknownFieldSet.java \ + java/src/main/java/com/google/protobuf/UnmodifiableLazyStringList.java \ + java/src/main/java/com/google/protobuf/Utf8.java \ + java/src/main/java/com/google/protobuf/WireFormat.java \ + java/src/test/java/com/google/protobuf/AbstractMessageTest.java \ + java/src/test/java/com/google/protobuf/BoundedByteStringTest.java \ + java/src/test/java/com/google/protobuf/ByteStringTest.java \ + java/src/test/java/com/google/protobuf/CheckUtf8Test.java \ + java/src/test/java/com/google/protobuf/CodedInputStreamTest.java \ + java/src/test/java/com/google/protobuf/CodedOutputStreamTest.java \ + java/src/test/java/com/google/protobuf/DeprecatedFieldTest.java \ + java/src/test/java/com/google/protobuf/DescriptorsTest.java \ + java/src/test/java/com/google/protobuf/DynamicMessageTest.java \ + java/src/test/java/com/google/protobuf/ForceFieldBuildersPreRun.java \ + java/src/test/java/com/google/protobuf/GeneratedMessageTest.java \ + java/src/test/java/com/google/protobuf/IsValidUtf8Test.java \ + java/src/test/java/com/google/protobuf/IsValidUtf8TestUtil.java \ + java/src/test/java/com/google/protobuf/LazyFieldTest.java \ + java/src/test/java/com/google/protobuf/LazyFieldLiteTest.java \ + java/src/test/java/com/google/protobuf/LazyMessageLiteTest.java \ + java/src/test/java/com/google/protobuf/LazyStringArrayListTest.java \ + java/src/test/java/com/google/protobuf/LazyStringEndToEndTest.java \ + java/src/test/java/com/google/protobuf/LiteEqualsAndHashTest.java \ + java/src/test/java/com/google/protobuf/LiteralByteStringTest.java \ + java/src/test/java/com/google/protobuf/LiteTest.java \ + java/src/test/java/com/google/protobuf/MessageTest.java \ + java/src/test/java/com/google/protobuf/NestedBuildersTest.java \ + java/src/test/java/com/google/protobuf/ParserTest.java \ + java/src/test/java/com/google/protobuf/RepeatedFieldBuilderTest.java \ + java/src/test/java/com/google/protobuf/RopeByteStringSubstringTest.java \ + java/src/test/java/com/google/protobuf/RopeByteStringTest.java \ + java/src/test/java/com/google/protobuf/ServiceTest.java \ + java/src/test/java/com/google/protobuf/SingleFieldBuilderTest.java \ + java/src/test/java/com/google/protobuf/SmallSortedMapTest.java \ + java/src/test/java/com/google/protobuf/TestBadIdentifiers.java \ + java/src/test/java/com/google/protobuf/TestUtil.java \ + java/src/test/java/com/google/protobuf/TextFormatTest.java \ + java/src/test/java/com/google/protobuf/UnknownFieldSetTest.java \ + java/src/test/java/com/google/protobuf/UnmodifiableLazyStringListTest.java \ + java/src/test/java/com/google/protobuf/WireFormatTest.java \ + java/src/test/java/com/google/protobuf/lazy_fields_lite.proto \ + java/src/test/java/com/google/protobuf/lite_equals_and_hash.proto \ + java/src/test/java/com/google/protobuf/multiple_files_test.proto \ + java/src/test/java/com/google/protobuf/nested_builders_test.proto \ + java/src/test/java/com/google/protobuf/nested_extension_lite.proto \ + java/src/test/java/com/google/protobuf/nested_extension.proto \ + java/src/test/java/com/google/protobuf/non_nested_extension_lite.proto \ + java/src/test/java/com/google/protobuf/non_nested_extension.proto \ + java/src/test/java/com/google/protobuf/outer_class_name_test.proto \ + java/src/test/java/com/google/protobuf/outer_class_name_test2.proto \ + java/src/test/java/com/google/protobuf/outer_class_name_test3.proto \ + java/src/test/java/com/google/protobuf/test_bad_identifiers.proto \ + java/src/test/java/com/google/protobuf/test_check_utf8.proto \ + java/src/test/java/com/google/protobuf/test_check_utf8_size.proto \ + java/src/test/java/com/google/protobuf/test_custom_options.proto \ + java/pom.xml \ + java/README.txt \ + python/google/protobuf/internal/api_implementation.cc \ + python/google/protobuf/internal/api_implementation.py \ + python/google/protobuf/internal/api_implementation_default_test.py \ + python/google/protobuf/internal/containers.py \ + python/google/protobuf/internal/cpp_message.py \ + python/google/protobuf/internal/decoder.py \ + python/google/protobuf/internal/descriptor_database_test.py \ + python/google/protobuf/internal/descriptor_pool_test.py \ + python/google/protobuf/internal/descriptor_pool_test1.proto \ + python/google/protobuf/internal/descriptor_pool_test2.proto \ + python/google/protobuf/internal/descriptor_python_test.py \ + python/google/protobuf/internal/descriptor_test.py \ + python/google/protobuf/internal/encoder.py \ + python/google/protobuf/internal/enum_type_wrapper.py \ + python/google/protobuf/internal/factory_test1.proto \ + python/google/protobuf/internal/factory_test2.proto \ + python/google/protobuf/internal/generator_test.py \ + python/google/protobuf/internal/message_factory_python_test.py \ + python/google/protobuf/internal/message_factory_test.py \ + python/google/protobuf/internal/message_listener.py \ + python/google/protobuf/internal/message_python_test.py \ + python/google/protobuf/internal/message_test.py \ + python/google/protobuf/internal/missing_enum_values.proto \ + python/google/protobuf/internal/more_extensions.proto \ + python/google/protobuf/internal/more_extensions_dynamic.proto \ + python/google/protobuf/internal/more_messages.proto \ + python/google/protobuf/internal/python_message.py \ + python/google/protobuf/internal/reflection_test.py \ + python/google/protobuf/internal/service_reflection_test.py \ + python/google/protobuf/internal/symbol_database_test.py \ + python/google/protobuf/internal/test_bad_identifiers.proto \ + python/google/protobuf/internal/test_util.py \ + python/google/protobuf/internal/text_encoding_test.py \ + python/google/protobuf/internal/text_format_test.py \ + python/google/protobuf/internal/type_checkers.py \ + python/google/protobuf/internal/unknown_fields_test.py \ + python/google/protobuf/internal/wire_format.py \ + python/google/protobuf/internal/wire_format_test.py \ + python/google/protobuf/internal/__init__.py \ + python/google/protobuf/pyext/README \ + python/google/protobuf/pyext/cpp_message.py \ + python/google/protobuf/pyext/descriptor.h \ + python/google/protobuf/pyext/descriptor.cc \ + python/google/protobuf/pyext/descriptor_cpp2_test.py \ + python/google/protobuf/pyext/extension_dict.h \ + python/google/protobuf/pyext/extension_dict.cc \ + python/google/protobuf/pyext/message.h \ + python/google/protobuf/pyext/message.cc \ + python/google/protobuf/pyext/message_factory_cpp2_test.py \ + python/google/protobuf/pyext/proto2_api_test.proto \ + python/google/protobuf/pyext/python.proto \ + python/google/protobuf/pyext/python_protobuf.h \ + python/google/protobuf/pyext/reflection_cpp2_generated_test.py \ + python/google/protobuf/pyext/repeated_composite_container.h \ + python/google/protobuf/pyext/repeated_composite_container.cc \ + python/google/protobuf/pyext/repeated_scalar_container.h \ + python/google/protobuf/pyext/repeated_scalar_container.cc \ + python/google/protobuf/pyext/scoped_pyobject_ptr.h \ + python/google/protobuf/pyext/__init__.py \ + python/google/protobuf/descriptor.py \ + python/google/protobuf/descriptor_database.py \ + python/google/protobuf/descriptor_pool.py \ + python/google/protobuf/message.py \ + python/google/protobuf/message_factory.py \ + python/google/protobuf/reflection.py \ + python/google/protobuf/service.py \ + python/google/protobuf/service_reflection.py \ + python/google/protobuf/symbol_database.py \ + python/google/protobuf/text_encoding.py \ + python/google/protobuf/text_format.py \ + python/google/protobuf/__init__.py \ + python/google/__init__.py \ + python/ez_setup.py \ + python/setup.py \ + python/mox.py \ + python/stubout.py \ + python/README.txt + +# Deletes all the files generated by autogen.sh. +MAINTAINERCLEANFILES = \ + aclocal.m4 \ + config.guess \ + config.sub \ + configure \ + depcomp \ + install-sh \ + ltmain.sh \ + Makefile.in \ + missing \ + mkinstalldirs \ + config.h.in \ + stamp.h.in \ + m4/ltsugar.m4 \ + m4/libtool.m4 \ + m4/ltversion.m4 \ + m4/lt~obsolete.m4 \ + m4/ltoptions.m4 diff --git a/thirdparty/protobuf-2.6.1/Makefile.in b/thirdparty/protobuf-2.6.1/Makefile.in new file mode 100644 index 00000000..9eabe68d --- /dev/null +++ b/thirdparty/protobuf-2.6.1/Makefile.in @@ -0,0 +1,1157 @@ +# Makefile.in generated by automake 1.16.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2018 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/ac_system_extensions.m4 \ + $(top_srcdir)/m4/acx_check_suncc.m4 \ + $(top_srcdir)/m4/acx_pthread.m4 $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/stl_hash.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ + $(am__configure_deps) $(am__DIST_COMMON) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = protobuf.pc protobuf-lite.pc +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgconfigdir)" +DATA = $(pkgconfig_DATA) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + cscope distdir distdir-am dist dist-all distcheck +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ + $(LISP)config.h.in +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +CSCOPE = cscope +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ + $(srcdir)/protobuf-lite.pc.in $(srcdir)/protobuf.pc.in compile \ + config.guess config.sub install-sh ltmain.sh missing +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi +am__post_remove_distdir = $(am__remove_distdir) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +DIST_TARGETS = dist-gzip +distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +ISAINFO = @ISAINFO@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +POW_LIB = @POW_LIB@ +PROTOBUF_OPT_FLAG = @PROTOBUF_OPT_FLAG@ +PROTOC = @PROTOC@ +PTHREAD_CC = @PTHREAD_CC@ +PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ +PTHREAD_LIBS = @PTHREAD_LIBS@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +acx_pthread_config = @acx_pthread_config@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +subdirs = @subdirs@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +ACLOCAL_AMFLAGS = -I m4 +AUTOMAKE_OPTIONS = foreign + +# Build . before src so that our all-local and clean-local hooks kicks in at +# the right time. +SUBDIRS = . src + +# Always include gtest in distributions. +DIST_SUBDIRS = $(subdirs) src +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = protobuf.pc protobuf-lite.pc +EXTRA_DIST = \ + autogen.sh \ + generate_descriptor_proto.sh \ + README.md \ + INSTALL.txt \ + LICENSE \ + CONTRIBUTORS.txt \ + CHANGES.txt \ + editors/README.txt \ + editors/proto.vim \ + editors/protobuf-mode.el \ + vsprojects/config.h \ + vsprojects/extract_includes.bat \ + vsprojects/libprotobuf.vcproj \ + vsprojects/libprotobuf-lite.vcproj \ + vsprojects/libprotoc.vcproj \ + vsprojects/protobuf.sln \ + vsprojects/protoc.vcproj \ + vsprojects/readme.txt \ + vsprojects/test_plugin.vcproj \ + vsprojects/tests.vcproj \ + vsprojects/lite-test.vcproj \ + vsprojects/convert2008to2005.sh \ + examples/README.txt \ + examples/Makefile \ + examples/addressbook.proto \ + examples/add_person.cc \ + examples/list_people.cc \ + examples/AddPerson.java \ + examples/ListPeople.java \ + examples/add_person.py \ + examples/list_people.py \ + java/src/main/java/com/google/protobuf/AbstractMessage.java \ + java/src/main/java/com/google/protobuf/AbstractMessageLite.java \ + java/src/main/java/com/google/protobuf/AbstractParser.java \ + java/src/main/java/com/google/protobuf/BlockingRpcChannel.java \ + java/src/main/java/com/google/protobuf/BlockingService.java \ + java/src/main/java/com/google/protobuf/BoundedByteString.java \ + java/src/main/java/com/google/protobuf/ByteString.java \ + java/src/main/java/com/google/protobuf/CodedInputStream.java \ + java/src/main/java/com/google/protobuf/CodedOutputStream.java \ + java/src/main/java/com/google/protobuf/Descriptors.java \ + java/src/main/java/com/google/protobuf/DynamicMessage.java \ + java/src/main/java/com/google/protobuf/Extension.java \ + java/src/main/java/com/google/protobuf/ExtensionRegistry.java \ + java/src/main/java/com/google/protobuf/ExtensionRegistryLite.java \ + java/src/main/java/com/google/protobuf/FieldSet.java \ + java/src/main/java/com/google/protobuf/GeneratedMessage.java \ + java/src/main/java/com/google/protobuf/GeneratedMessageLite.java \ + java/src/main/java/com/google/protobuf/Internal.java \ + java/src/main/java/com/google/protobuf/InvalidProtocolBufferException.java \ + java/src/main/java/com/google/protobuf/LazyField.java \ + java/src/main/java/com/google/protobuf/LazyFieldLite.java \ + java/src/main/java/com/google/protobuf/LazyStringArrayList.java \ + java/src/main/java/com/google/protobuf/LazyStringList.java \ + java/src/main/java/com/google/protobuf/LiteralByteString.java \ + java/src/main/java/com/google/protobuf/Message.java \ + java/src/main/java/com/google/protobuf/MessageLite.java \ + java/src/main/java/com/google/protobuf/MessageLiteOrBuilder.java \ + java/src/main/java/com/google/protobuf/MessageOrBuilder.java \ + java/src/main/java/com/google/protobuf/MessageReflection.java \ + java/src/main/java/com/google/protobuf/Parser.java \ + java/src/main/java/com/google/protobuf/ProtocolMessageEnum.java \ + java/src/main/java/com/google/protobuf/ProtocolStringList.java \ + java/src/main/java/com/google/protobuf/RepeatedFieldBuilder.java \ + java/src/main/java/com/google/protobuf/RopeByteString.java \ + java/src/main/java/com/google/protobuf/RpcCallback.java \ + java/src/main/java/com/google/protobuf/RpcChannel.java \ + java/src/main/java/com/google/protobuf/RpcController.java \ + java/src/main/java/com/google/protobuf/RpcUtil.java \ + java/src/main/java/com/google/protobuf/ServiceException.java \ + java/src/main/java/com/google/protobuf/Service.java \ + java/src/main/java/com/google/protobuf/SingleFieldBuilder.java \ + java/src/main/java/com/google/protobuf/SmallSortedMap.java \ + java/src/main/java/com/google/protobuf/TextFormat.java \ + java/src/main/java/com/google/protobuf/UninitializedMessageException.java \ + java/src/main/java/com/google/protobuf/UnknownFieldSet.java \ + java/src/main/java/com/google/protobuf/UnmodifiableLazyStringList.java \ + java/src/main/java/com/google/protobuf/Utf8.java \ + java/src/main/java/com/google/protobuf/WireFormat.java \ + java/src/test/java/com/google/protobuf/AbstractMessageTest.java \ + java/src/test/java/com/google/protobuf/BoundedByteStringTest.java \ + java/src/test/java/com/google/protobuf/ByteStringTest.java \ + java/src/test/java/com/google/protobuf/CheckUtf8Test.java \ + java/src/test/java/com/google/protobuf/CodedInputStreamTest.java \ + java/src/test/java/com/google/protobuf/CodedOutputStreamTest.java \ + java/src/test/java/com/google/protobuf/DeprecatedFieldTest.java \ + java/src/test/java/com/google/protobuf/DescriptorsTest.java \ + java/src/test/java/com/google/protobuf/DynamicMessageTest.java \ + java/src/test/java/com/google/protobuf/ForceFieldBuildersPreRun.java \ + java/src/test/java/com/google/protobuf/GeneratedMessageTest.java \ + java/src/test/java/com/google/protobuf/IsValidUtf8Test.java \ + java/src/test/java/com/google/protobuf/IsValidUtf8TestUtil.java \ + java/src/test/java/com/google/protobuf/LazyFieldTest.java \ + java/src/test/java/com/google/protobuf/LazyFieldLiteTest.java \ + java/src/test/java/com/google/protobuf/LazyMessageLiteTest.java \ + java/src/test/java/com/google/protobuf/LazyStringArrayListTest.java \ + java/src/test/java/com/google/protobuf/LazyStringEndToEndTest.java \ + java/src/test/java/com/google/protobuf/LiteEqualsAndHashTest.java \ + java/src/test/java/com/google/protobuf/LiteralByteStringTest.java \ + java/src/test/java/com/google/protobuf/LiteTest.java \ + java/src/test/java/com/google/protobuf/MessageTest.java \ + java/src/test/java/com/google/protobuf/NestedBuildersTest.java \ + java/src/test/java/com/google/protobuf/ParserTest.java \ + java/src/test/java/com/google/protobuf/RepeatedFieldBuilderTest.java \ + java/src/test/java/com/google/protobuf/RopeByteStringSubstringTest.java \ + java/src/test/java/com/google/protobuf/RopeByteStringTest.java \ + java/src/test/java/com/google/protobuf/ServiceTest.java \ + java/src/test/java/com/google/protobuf/SingleFieldBuilderTest.java \ + java/src/test/java/com/google/protobuf/SmallSortedMapTest.java \ + java/src/test/java/com/google/protobuf/TestBadIdentifiers.java \ + java/src/test/java/com/google/protobuf/TestUtil.java \ + java/src/test/java/com/google/protobuf/TextFormatTest.java \ + java/src/test/java/com/google/protobuf/UnknownFieldSetTest.java \ + java/src/test/java/com/google/protobuf/UnmodifiableLazyStringListTest.java \ + java/src/test/java/com/google/protobuf/WireFormatTest.java \ + java/src/test/java/com/google/protobuf/lazy_fields_lite.proto \ + java/src/test/java/com/google/protobuf/lite_equals_and_hash.proto \ + java/src/test/java/com/google/protobuf/multiple_files_test.proto \ + java/src/test/java/com/google/protobuf/nested_builders_test.proto \ + java/src/test/java/com/google/protobuf/nested_extension_lite.proto \ + java/src/test/java/com/google/protobuf/nested_extension.proto \ + java/src/test/java/com/google/protobuf/non_nested_extension_lite.proto \ + java/src/test/java/com/google/protobuf/non_nested_extension.proto \ + java/src/test/java/com/google/protobuf/outer_class_name_test.proto \ + java/src/test/java/com/google/protobuf/outer_class_name_test2.proto \ + java/src/test/java/com/google/protobuf/outer_class_name_test3.proto \ + java/src/test/java/com/google/protobuf/test_bad_identifiers.proto \ + java/src/test/java/com/google/protobuf/test_check_utf8.proto \ + java/src/test/java/com/google/protobuf/test_check_utf8_size.proto \ + java/src/test/java/com/google/protobuf/test_custom_options.proto \ + java/pom.xml \ + java/README.txt \ + python/google/protobuf/internal/api_implementation.cc \ + python/google/protobuf/internal/api_implementation.py \ + python/google/protobuf/internal/api_implementation_default_test.py \ + python/google/protobuf/internal/containers.py \ + python/google/protobuf/internal/cpp_message.py \ + python/google/protobuf/internal/decoder.py \ + python/google/protobuf/internal/descriptor_database_test.py \ + python/google/protobuf/internal/descriptor_pool_test.py \ + python/google/protobuf/internal/descriptor_pool_test1.proto \ + python/google/protobuf/internal/descriptor_pool_test2.proto \ + python/google/protobuf/internal/descriptor_python_test.py \ + python/google/protobuf/internal/descriptor_test.py \ + python/google/protobuf/internal/encoder.py \ + python/google/protobuf/internal/enum_type_wrapper.py \ + python/google/protobuf/internal/factory_test1.proto \ + python/google/protobuf/internal/factory_test2.proto \ + python/google/protobuf/internal/generator_test.py \ + python/google/protobuf/internal/message_factory_python_test.py \ + python/google/protobuf/internal/message_factory_test.py \ + python/google/protobuf/internal/message_listener.py \ + python/google/protobuf/internal/message_python_test.py \ + python/google/protobuf/internal/message_test.py \ + python/google/protobuf/internal/missing_enum_values.proto \ + python/google/protobuf/internal/more_extensions.proto \ + python/google/protobuf/internal/more_extensions_dynamic.proto \ + python/google/protobuf/internal/more_messages.proto \ + python/google/protobuf/internal/python_message.py \ + python/google/protobuf/internal/reflection_test.py \ + python/google/protobuf/internal/service_reflection_test.py \ + python/google/protobuf/internal/symbol_database_test.py \ + python/google/protobuf/internal/test_bad_identifiers.proto \ + python/google/protobuf/internal/test_util.py \ + python/google/protobuf/internal/text_encoding_test.py \ + python/google/protobuf/internal/text_format_test.py \ + python/google/protobuf/internal/type_checkers.py \ + python/google/protobuf/internal/unknown_fields_test.py \ + python/google/protobuf/internal/wire_format.py \ + python/google/protobuf/internal/wire_format_test.py \ + python/google/protobuf/internal/__init__.py \ + python/google/protobuf/pyext/README \ + python/google/protobuf/pyext/cpp_message.py \ + python/google/protobuf/pyext/descriptor.h \ + python/google/protobuf/pyext/descriptor.cc \ + python/google/protobuf/pyext/descriptor_cpp2_test.py \ + python/google/protobuf/pyext/extension_dict.h \ + python/google/protobuf/pyext/extension_dict.cc \ + python/google/protobuf/pyext/message.h \ + python/google/protobuf/pyext/message.cc \ + python/google/protobuf/pyext/message_factory_cpp2_test.py \ + python/google/protobuf/pyext/proto2_api_test.proto \ + python/google/protobuf/pyext/python.proto \ + python/google/protobuf/pyext/python_protobuf.h \ + python/google/protobuf/pyext/reflection_cpp2_generated_test.py \ + python/google/protobuf/pyext/repeated_composite_container.h \ + python/google/protobuf/pyext/repeated_composite_container.cc \ + python/google/protobuf/pyext/repeated_scalar_container.h \ + python/google/protobuf/pyext/repeated_scalar_container.cc \ + python/google/protobuf/pyext/scoped_pyobject_ptr.h \ + python/google/protobuf/pyext/__init__.py \ + python/google/protobuf/descriptor.py \ + python/google/protobuf/descriptor_database.py \ + python/google/protobuf/descriptor_pool.py \ + python/google/protobuf/message.py \ + python/google/protobuf/message_factory.py \ + python/google/protobuf/reflection.py \ + python/google/protobuf/service.py \ + python/google/protobuf/service_reflection.py \ + python/google/protobuf/symbol_database.py \ + python/google/protobuf/text_encoding.py \ + python/google/protobuf/text_format.py \ + python/google/protobuf/__init__.py \ + python/google/__init__.py \ + python/ez_setup.py \ + python/setup.py \ + python/mox.py \ + python/stubout.py \ + python/README.txt + + +# Deletes all the files generated by autogen.sh. +MAINTAINERCLEANFILES = \ + aclocal.m4 \ + config.guess \ + config.sub \ + configure \ + depcomp \ + install-sh \ + ltmain.sh \ + Makefile.in \ + missing \ + mkinstalldirs \ + config.h.in \ + stamp.h.in \ + m4/ltsugar.m4 \ + m4/libtool.m4 \ + m4/ltversion.m4 \ + m4/lt~obsolete.m4 \ + m4/ltoptions.m4 + +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +am--refresh: Makefile + @: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): + +config.h: stamp-h1 + @test -f $@ || rm -f stamp-h1 + @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h +$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f config.h stamp-h1 +protobuf.pc: $(top_builddir)/config.status $(srcdir)/protobuf.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +protobuf-lite.pc: $(top_builddir)/config.status $(srcdir)/protobuf-lite.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool config.lt +install-pkgconfigDATA: $(pkgconfig_DATA) + @$(NORMAL_INSTALL) + @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ + done + +uninstall-pkgconfigDATA: + @$(NORMAL_UNINSTALL) + @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscope: cscope.files + test ! -s cscope.files \ + || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +clean-cscope: + -rm -f cscope.files +cscope.files: clean-cscope cscopelist +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + $(am__remove_distdir) + test -d "$(distdir)" || mkdir "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz + $(am__post_remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__post_remove_distdir) + +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + $(am__post_remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + $(am__post_remove_distdir) + +dist-tarZ: distdir + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__post_remove_distdir) + +dist-shar: distdir + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz + $(am__post_remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__post_remove_distdir) + +dist dist-all: + $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' + $(am__post_remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir) + chmod u+w $(distdir) + mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build/sub \ + && ../../configure \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + --srcdir=../.. --prefix="$$dc_install_base" \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__post_remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) check-local +check: check-recursive +all-am: Makefile $(DATA) config.h +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(pkgconfigdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) +clean: clean-recursive + +clean-am: clean-generic clean-libtool clean-local mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr \ + distclean-libtool distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-pkgconfigDATA + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-pkgconfigDATA + +.MAKE: $(am__recursive_targets) all check-am install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ + am--refresh check check-am check-local clean clean-cscope \ + clean-generic clean-libtool clean-local cscope cscopelist-am \ + ctags ctags-am dist dist-all dist-bzip2 dist-gzip dist-lzip \ + dist-shar dist-tarZ dist-xz dist-zip distcheck distclean \ + distclean-generic distclean-hdr distclean-libtool \ + distclean-tags distcleancheck distdir distuninstallcheck dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-pkgconfigDATA install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-pkgconfigDATA + +.PRECIOUS: Makefile + + +# Build gtest before we build protobuf tests. We don't add gtest to SUBDIRS +# because then "make check" would also build and run all of gtest's own tests, +# which takes a lot of time and is generally not useful to us. Also, we don't +# want "make install" to recurse into gtest since we don't want to overwrite +# the installed version of gtest if there is one. +check-local: + @echo "Making lib/libgtest.a lib/libgtest_main.a in gtest" + @cd gtest && $(MAKE) $(AM_MAKEFLAGS) lib/libgtest.la lib/libgtest_main.la + +# We would like to clean gtest when "make clean" is invoked. But we have to +# be careful because clean-local is also invoked during "make distclean", but +# "make distclean" already recurses into gtest because it's listed among the +# DIST_SUBDIRS. distclean will delete gtest/Makefile, so if we then try to +# cd to the directory again and "make clean" it will fail. So, check that the +# Makefile exists before recursing. +clean-local: + @if test -e gtest/Makefile; then \ + echo "Making clean in gtest"; \ + cd gtest && $(MAKE) $(AM_MAKEFLAGS) clean; \ + fi + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/thirdparty/protobuf-2.6.1/README.md b/thirdparty/protobuf-2.6.1/README.md new file mode 100644 index 00000000..5fbb3443 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/README.md @@ -0,0 +1,167 @@ +Protocol Buffers - Google's data interchange format +=================================================== + +Copyright 2008 Google Inc. + +https://developers.google.com/protocol-buffers/ + +C++ Installation - Unix +----------------------- + +If you get the source from github, you need to generate the configure script +first: + + $ ./autogen.sh + +This will download gtest source (which is used for C++ Protocol Buffer +unit-tests) to the current directory and run automake, autoconf, etc. +to generate the configure script and various template makefiles. + +You can skip this step if you are using a release package (which already +contains gtest and the configure script). + +To build and install the C++ Protocol Buffer runtime and the Protocol +Buffer compiler (protoc) execute the following: + + $ ./configure + $ make + $ make check + $ make install + +If "make check" fails, you can still install, but it is likely that +some features of this library will not work correctly on your system. +Proceed at your own risk. + +"make install" may require superuser privileges. + +For advanced usage information on configure and make, see INSTALL.txt. + +**Hint on install location** + + By default, the package will be installed to /usr/local. However, + on many platforms, /usr/local/lib is not part of LD_LIBRARY_PATH. + You can add it, but it may be easier to just install to /usr + instead. To do this, invoke configure as follows: + + ./configure --prefix=/usr + + If you already built the package with a different prefix, make sure + to run "make clean" before building again. + +**Compiling dependent packages** + + To compile a package that uses Protocol Buffers, you need to pass + various flags to your compiler and linker. As of version 2.2.0, + Protocol Buffers integrates with pkg-config to manage this. If you + have pkg-config installed, then you can invoke it to get a list of + flags like so: + + pkg-config --cflags protobuf # print compiler flags + pkg-config --libs protobuf # print linker flags + pkg-config --cflags --libs protobuf # print both + + For example: + + c++ my_program.cc my_proto.pb.cc `pkg-config --cflags --libs protobuf` + + Note that packages written prior to the 2.2.0 release of Protocol + Buffers may not yet integrate with pkg-config to get flags, and may + not pass the correct set of flags to correctly link against + libprotobuf. If the package in question uses autoconf, you can + often fix the problem by invoking its configure script like: + + configure CXXFLAGS="$(pkg-config --cflags protobuf)" \ + LIBS="$(pkg-config --libs protobuf)" + + This will force it to use the correct flags. + + If you are writing an autoconf-based package that uses Protocol + Buffers, you should probably use the PKG_CHECK_MODULES macro in your + configure script like: + + PKG_CHECK_MODULES([protobuf], [protobuf]) + + See the pkg-config man page for more info. + + If you only want protobuf-lite, substitute "protobuf-lite" in place + of "protobuf" in these examples. + +**Note for cross-compiling** + + The makefiles normally invoke the protoc executable that they just + built in order to build tests. When cross-compiling, the protoc + executable may not be executable on the host machine. In this case, + you must build a copy of protoc for the host machine first, then use + the --with-protoc option to tell configure to use it instead. For + example: + + ./configure --with-protoc=protoc + + This will use the installed protoc (found in your $PATH) instead of + trying to execute the one built during the build process. You can + also use an executable that hasn't been installed. For example, if + you built the protobuf package for your host machine in ../host, + you might do: + + ./configure --with-protoc=../host/src/protoc + + Either way, you must make sure that the protoc executable you use + has the same version as the protobuf source code you are trying to + use it with. + +**Note for Solaris users** + + Solaris 10 x86 has a bug that will make linking fail, complaining + about libstdc++.la being invalid. We have included a work-around + in this package. To use the work-around, run configure as follows: + + ./configure LDFLAGS=-L$PWD/src/solaris + + See src/solaris/libstdc++.la for more info on this bug. + +**Note for HP C++ Tru64 users** + + To compile invoke configure as follows: + + ./configure CXXFLAGS="-O -std ansi -ieee -D__USE_STD_IOSTREAM" + + Also, you will need to use gmake instead of make. + +C++ Installation - Windows +-------------------------- + +If you are using Microsoft Visual C++, see vsprojects/readme.txt. + +If you are using Cygwin or MinGW, follow the Unix installation +instructions, above. + +Binary Compatibility Warning +---------------------------- + +Due to the nature of C++, it is unlikely that any two versions of the +Protocol Buffers C++ runtime libraries will have compatible ABIs. +That is, if you linked an executable against an older version of +libprotobuf, it is unlikely to work with a newer version without +re-compiling. This problem, when it occurs, will normally be detected +immediately on startup of your app. Still, you may want to consider +using static linkage. You can configure this package to install +static libraries only using: + + ./configure --disable-shared + +Java and Python Installation +---------------------------- + +The Java and Python runtime libraries for Protocol Buffers are located +in the java and python directories. See the README file in each +directory for more information on how to compile and install them. +Note that both of them require you to first install the Protocol +Buffer compiler (protoc), which is part of the C++ package. + +Usage +----- + +The complete documentation for Protocol Buffers is available via the +web at: + + https://developers.google.com/protocol-buffers/ diff --git a/thirdparty/protobuf-2.6.1/aclocal.m4 b/thirdparty/protobuf-2.6.1/aclocal.m4 new file mode 100644 index 00000000..467dc6c7 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/aclocal.m4 @@ -0,0 +1,1180 @@ +# generated automatically by aclocal 1.16.1 -*- Autoconf -*- + +# Copyright (C) 1996-2018 Free Software Foundation, Inc. + +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, +[m4_warning([this file was generated for autoconf 2.69. +You have another version of autoconf. It may work, but is not guaranteed to. +If you have problems, you may need to regenerate the build system entirely. +To do so, use the procedure documented by the package, typically 'autoreconf'.])]) + +# Copyright (C) 2002-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.16' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.16.1], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.16.1])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to +# '$srcdir', '$srcdir/..', or '$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is '.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + +# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + + +# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], + [$1], [CXX], [depcc="$CXX" am_compiler_list=], + [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], + [$1], [UPC], [depcc="$UPC" am_compiler_list=], + [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES. +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE([dependency-tracking], [dnl +AS_HELP_STRING( + [--enable-dependency-tracking], + [do not reject slow dependency extractors]) +AS_HELP_STRING( + [--disable-dependency-tracking], + [speeds up one-time build])]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +AC_SUBST([am__nodep])dnl +_AM_SUBST_NOTMAKE([am__nodep])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[{ + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + AS_CASE([$CONFIG_FILES], + [*\'*], [eval set x "$CONFIG_FILES"], + [*], [set x $CONFIG_FILES]) + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`AS_DIRNAME(["$am_mf"])` + am_filepart=`AS_BASENAME(["$am_mf"])` + AM_RUN_LOG([cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles]) || am_rc=$? + done + if test $am_rc -ne 0; then + AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. Try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking).]) + fi + AS_UNSET([am_dirpart]) + AS_UNSET([am_filepart]) + AS_UNSET([am_mf]) + AS_UNSET([am_rc]) + rm -f conftest-deps.mk +} +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking is enabled. +# This creates each '.Po' and '.Plo' makefile fragment that we'll need in +# order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. +m4_define([AC_PROG_CC], +m4_defn([AC_PROG_CC]) +[_AM_PROG_CC_C_O +]) + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.65])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if( + m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +AM_MISSING_PROG([AUTOCONF], [autoconf]) +AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +AM_MISSING_PROG([AUTOHEADER], [autoheader]) +AM_MISSING_PROG([MAKEINFO], [makeinfo]) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl +]) +AC_REQUIRE([AM_SILENT_RULES])dnl +dnl The testsuite driver may need to know about EXEEXT, so add the +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) + fi +fi +dnl The trailing newline in this macro's definition is deliberate, for +dnl backward compatibility and to allow trailing 'dnl'-style comments +dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. +]) + +dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further +dnl mangled by Autoconf and run in a shell conditional statement. +m4_define([_AC_COMPILER_EXEEXT], +m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST([install_sh])]) + +# Copyright (C) 2003-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Add --enable-maintainer-mode option to configure. -*- Autoconf -*- +# From Jim Meyering + +# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MAINTAINER_MODE([DEFAULT-MODE]) +# ---------------------------------- +# Control maintainer-specific portions of Makefiles. +# Default is to disable them, unless 'enable' is passed literally. +# For symmetry, 'disable' may be passed as well. Anyway, the user +# can override the default with the --enable/--disable switch. +AC_DEFUN([AM_MAINTAINER_MODE], +[m4_case(m4_default([$1], [disable]), + [enable], [m4_define([am_maintainer_other], [disable])], + [disable], [m4_define([am_maintainer_other], [enable])], + [m4_define([am_maintainer_other], [enable]) + m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) +AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) + dnl maintainer-mode's default is 'disable' unless 'enable' is passed + AC_ARG_ENABLE([maintainer-mode], + [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode], + am_maintainer_other[ make rules and dependencies not useful + (and sometimes confusing) to the casual installer])], + [USE_MAINTAINER_MODE=$enableval], + [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) + AC_MSG_RESULT([$USE_MAINTAINER_MODE]) + AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) + MAINT=$MAINTAINER_MODE_TRUE + AC_SUBST([MAINT])dnl +] +) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MAKE_INCLUDE() +# ----------------- +# Check whether make has an 'include' directive that can support all +# the idioms we need for our automatic dependency tracking code. +AC_DEFUN([AM_MAKE_INCLUDE], +[AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive]) +cat > confinc.mk << 'END' +am__doit: + @echo this is the am__doit target >confinc.out +.PHONY: am__doit +END +am__include="#" +am__quote= +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out]) + AS_CASE([$?:`cat confinc.out 2>/dev/null`], + ['0:this is the am__doit target'], + [AS_CASE([$s], + [BSD], [am__include='.include' am__quote='"'], + [am__include='include' am__quote=''])]) + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +AC_MSG_RESULT([${_am_result}]) +AC_SUBST([am__include])]) +AC_SUBST([am__quote])]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it is modern enough. +# If it is, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + AC_MSG_WARN(['missing' script is too old or missing]) +fi +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# -------------------- +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) + +# _AM_SET_OPTIONS(OPTIONS) +# ------------------------ +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_CC_C_O +# --------------- +# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC +# to automatically call this. +AC_DEFUN([_AM_PROG_CC_C_O], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +AC_LANG_PUSH([C])dnl +AC_CACHE_CHECK( + [whether $CC understands -c and -o together], + [am_cv_prog_cc_c_o], + [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i]) +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +AC_LANG_POP([C])]) + +# For backward compatibility. +AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) + +# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_RUN_LOG(COMMAND) +# ------------------- +# Run COMMAND, save the exit status in ac_status, and log it. +# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) +AC_DEFUN([AM_RUN_LOG], +[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken + alias in your environment]) + fi + if test "$[2]" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT([yes]) +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file +]) + +# Copyright (C) 2009-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SILENT_RULES([DEFAULT]) +# -------------------------- +# Enable less verbose build rules; with the default set to DEFAULT +# ("yes" being less verbose, "no" or empty being verbose). +AC_DEFUN([AM_SILENT_RULES], +[AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; +esac +dnl +dnl A few 'make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi]) +if test $am_cv_make_support_nested_variables = yes; then + dnl Using '$V' instead of '$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_DEFAULT_V])dnl +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl +AC_SUBST([AM_DEFAULT_VERBOSITY])dnl +AM_BACKSLASH='\' +AC_SUBST([AM_BACKSLASH])dnl +_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +]) + +# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor 'install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in "make install-strip", and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# AM_SUBST_NOTMAKE(VARIABLE) +# -------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of 'v7', 'ustar', or 'pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +# +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' + +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], + + [pax], + [], + + [m4_fatal([Unknown tar format])]) + + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + +m4_include([m4/ac_system_extensions.m4]) +m4_include([m4/acx_check_suncc.m4]) +m4_include([m4/acx_pthread.m4]) +m4_include([m4/libtool.m4]) +m4_include([m4/ltoptions.m4]) +m4_include([m4/ltsugar.m4]) +m4_include([m4/ltversion.m4]) +m4_include([m4/lt~obsolete.m4]) +m4_include([m4/stl_hash.m4]) diff --git a/thirdparty/protobuf-2.6.1/autogen.sh b/thirdparty/protobuf-2.6.1/autogen.sh new file mode 100644 index 00000000..c3e026d2 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/autogen.sh @@ -0,0 +1,41 @@ +#!/bin/sh + +# Run this script to generate the configure script and other files that will +# be included in the distribution. These files are not checked in because they +# are automatically generated. + +set -e + +# Check that we're being run from the right directory. +if test ! -f src/google/protobuf/stubs/common.h; then + cat >&2 << __EOF__ +Could not find source code. Make sure you are running this script from the +root of the distribution tree. +__EOF__ + exit 1 +fi + +# Check that gtest is present. Usually it is already there since the +# directory is set up as an SVN external. +if test ! -e gtest; then + echo "Google Test not present. Fetching gtest-1.5.0 from the web..." + curl http://googletest.googlecode.com/files/gtest-1.5.0.tar.bz2 | tar jx + mv gtest-1.5.0 gtest +fi + +set -ex + +# Temporary hack: Must change C runtime library to "multi-threaded DLL", +# otherwise it will be set to "multi-threaded static" when MSVC upgrades +# the project file to MSVC 2005/2008. vladl of Google Test says gtest will +# probably change their default to match, then this will be unnecessary. +# One of these mappings converts the debug configuration and the other +# converts the release configuration. I don't know which is which. +sed -i -e 's/RuntimeLibrary="5"/RuntimeLibrary="3"/g; + s/RuntimeLibrary="4"/RuntimeLibrary="2"/g;' gtest/msvc/*.vcproj + +# TODO(kenton): Remove the ",no-obsolete" part and fix the resulting warnings. +autoreconf -f -i -Wall,no-obsolete + +rm -rf autom4te.cache config.h.in~ +exit 0 diff --git a/thirdparty/protobuf-2.6.1/bin/linux32/libprotobuf.a b/thirdparty/protobuf-2.6.1/bin/linux32/libprotobuf.a new file mode 100644 index 0000000000000000000000000000000000000000..cc07b416a7b132273b23721693488c01d9a242f6 GIT binary patch literal 38155660 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

2Q;SMlyL;N=bDQFr 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

H|Q067*D}|G>m1ZhYrdN%(lP83B@1n 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 z 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

03!SEsE2|q>LmS;G5Jop5-?I#51d8UhRrktwC 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

yiHU6ZsqcPdGf?e|Hq6&+@OBIlT#$1$h-3U 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%0D#g~bY_HXR%$07-I_+EnZk$;S*m` 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

6qc~Z&I-gI)bH-jAQ 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ß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

)?CMRR84X60})cr%i+*I^lKCRq^r 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

le4&i*!g)5i{l1v|7>{{H;@Kw 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ȸ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

qzdg}Ir1x7#;~bWkm7-ZRLROI^ijY-hlMf4+ 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

H3mWzdJ|#q#IWVj` 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 z zf4xV-UP#B?&+QGeQ2!E|sw&k}QPI_~$P-$GxCuUet$GGqH#TCYc@cXc`iTHhPDvv1oxus~ zt1SD!VMAe`SzV?+Fxc0a>vI;>Z`WX1NQ*?l)KrB5pv(>ybh6zFuZQ>AOHJ{SE z1gE;0bVNv+Wd$dsY*WQKF|z4V$*8M;hpW14<+Hi~5hW=y-xJ9iB0%=-fYRP-4$3uc z@T=`4al`kvi9Jrjx+^clzr$6{eeDG({8chJZ-U5X0PSY=FHz!{;|as#;Ft}QW^Il= znhh?i4~y`Ej%xJtB{L)ozKdQVg}FDj5jcjYlu9qXxv%lMN2)q=R-x^BH*42+ zEj@I$k+hg0acEprPhHZ^eW^}5qxfBP|I=@4170UurTXd9#E@Y$9e$F)^aT9Dmb-`=q zDdMW1>$iH9`5Nm#tutlyx-&142vTDa+P;M^@g$^uM<>^TB9tHxj4FEKqcBT>Z1si_ zXp2ShX)Q3d#FJ!J^C`WXuvipR2r27d#T~z(FqTe<3Oanm_Nn;O^L@~eu%0$Ph6IB`*+B}#pyto)CdxT zvIv;3rt!@wX&uyH#jv)PtCA|W&o1GA!R4&zwZ1Q8JrNr;@+u6IZOV!?rhWN-R^ld@ zc}nFUZtrb%%i1n^-IamsHpMWmB z8x(udMPA#DSJ2sOT)N3TR!4sSdDp$eUEB3?>)$#Okyvsl24<1AtH#^fxul$yg4);^ z#q@vNo&K3r*;h&2Q25NH+w8UNZ^kR%WovCC)M(aLyd$JKipyu2mxN?3SCwV1aFct+ z7hJ%LUVQg_w)d>6qfC0jl9jj#Hp*7tV^?6%T|g;~T34JYq-I4t*1ud!vDf<#4TVrv0Z#^w`pe4 zoJv_X-(*uhExLC}1ZA=BlhI6PArsaY_v=V!0F*F9F449NG?tdZt@;rVFtHv_enXZ# zVMm9$`juW?xBqvNi*{TzH^s6e^2QSSUVBTiL-!jE?%TtQ*#A84-Y4$3d(VjWNIpVW zwFwk}QaK%WqBLGI6+O?k<=1yfON((?WDEvhUqy_|SB2N87z)xShDH(=!8Yfs!gJa& z*qUP5kz|aEQ7E=oSB)dP=@$^pq9?zHL{wqa3dq6}Bh1YP{fFT z7YKEe7@_k;GlH5zshRNn$MbY3FepnZ&9${yMN5lSfEW*v zN}s;p5BBzN?GqiHghl8)-RHL;s#pe3Q!G1@irA#sV$}w8&Rj3??g5G?;GAOiFO)eE|wZ5V=N_Bjl%C`P}maNjwjvS=X{MY z{olYf=DBUV;TQ3@h8krFe|Q7irg5-@-T3pO`yYP0L5L4mMKeuz4Ibl_?U%RBJrH1R z^FdjAqI{O!Lm^qq^$i9dVVB4Hg>=z3VW`*eP(aDO%)jeCO6P?%>zu_5e%Yp~ACh$} z_3X72#7%H@_Fhui-yi?y5!O=?_vP*iT`X}HKzX297I*=aCrNa%Y3Gz=53T6Pt!>#W z*6l%&ELuyCMH7*!ykv(DOMh*M-E~z$78Piyw&>rWwjQ=$!J#|j9wbLeKd6S^l2(R4 z_E!R8!7d=WOM|u-)BjH1IYdnL?T6nfP6NEZlCB6zGwoI3RGIpDkZlhDlzIRbmELF) z;7weA�u7Y*R^4*`~-e(k-{2_o5Gz{mMI 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ξC}6eLX^fufb&EcO*ugkXbs4?2rMajW3MVvjIdG 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

t+Q0_{_wj*n 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

*n0xIC2>Ue)F0%y4_(eNMQ&Up_zlU~Bbzad^ef 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

Uh}$P2G~w? z@=xf*aXj??v&$ZDQpZhS{vMdDa4&`KPZR7>e#L7!9WzgF%u|oNC%h^7TzE_J+3?PA zp67RGy*aMbyX~N(9XIm?p);QR0DJ~{)PZ(C=a5H)FCi}r|BJjNd>#2<_$KoH@ZID) z;eq5^;fEb}_u;JLW*^>S{YCN+_$|2Xb90qEo>?*}j9xZ5e?xalmz`U>O=;5FbpXG3Sb>7T*A zbyL>&SJsbr+|2V5uREFiIed=NU+S!P=h@=8=_eR$&*KjAc<=+{Md3l@h2baQvOhg> zT|FQl0uOOIW=;?OJT`24-|MF(`Vq;S!efyyg2yAD4^Ix4Ic1)V&U!OXY|K;0akFn% z&?!cK0bY(g(Ga`OmB{14Yr%P*#?E?oo-U4?dFrCmgS;ku0Qpq-5b}xeiEx=`2F}-P z#kWxB6goS|Pr{E<=N9_^DgKf=Z_s%|{tEt;JaK^Ce@_PA>nb5U3V8{54Dw>|cyQUD z$(Y}dT=uP!;@uS=p!fpCS15jr9AkRU!sXAA0?a?`*ZXzPadTaD!0|pJZvlTrehU7M zJP7{TadSOS#_NX5=zCrY4YlVh5_uMQZ1PL+_~fVHDaae(f5=ZmUICtkyyqWwo*d-u z;RWGxJtVi==_%!`H^+Mm$6L#Bv(GQksYm_{-i-RC(C^@^H~rN3es6%|rk`lIoqq^< z9QbJR7Vz=p&EPZ0N5kikkAyFUdq)ZVKC>?7U!(YO>a0cQ6!~iSMe?)otK|Q}@55yt z`RA{_bk>{wtbzUXWb(Z}f1ned{0lq=ocoEK^=?1C=fT$~oo$NWRQ$2x(SNb$ zQO=9ZpHT6(aC4t@f4|w!S>FMBVE$#YvVOMXX8(`kc;}M`%07_i9BHqI4dj{NTjA!o z%sjEoFy61Tw0;8CUnCy~zeSx?Hsg7sc%;m}?~BdoL?d4hk5B#*o|ybOJPllqOXkU{ zcvYLnlGlXSC9e)|0_Ss`3Cqr^2_jrr9_bW$#BCdMQ4LTslkOW>@-$PHunMLF?r?v7_Yj zx@R0W_s`L|9?p>um+QxIbG-8R&AxTqbdF&CNAmsfFxh@yS7v^@`yNj;xVf&(=WO6r zdtAvJH~j=-?E57Zc|7Z|-G7Rk@K)wgwll%evck(;%VQ`s0wcTdVc*R#xC)HTH|EtMUz_%!!eTrYAPFZxW zk(Y))rcPGOA2a*U>#9A>{7VM7+^^()k&j&77sVVm=c_wjw6$58pU$Is>u(19>;NC&&N3Zll8Ges~7IAxY-A=|`P_ z`yqLF_%Gz`;MvGq!1I&uh8HH^3@_ohx$oV=oE025b0(i?=d41W7+weNUFtFK-!$gU z>-}ottT+AC_yqDqSKSS7JMN2es}=+4)|C&&okXwZ|13ic@{fv=1D)v9`ADU z)bOp;k7i!T`xWS{H~j$g|8?B-+n{rvycPTg`8fC;@-gs-j=QfL0ypEC^HR|a>HUhA z)Aza+FG$|dF89CfofVLY@FV0WQZS^UQMA zn|+XZmN{4DA)@(%C~{NkvbL8*-Bm>zE9~KQ~VBfI-~P|yd(U*((&Z>eP7FUm;^4@!)$a?kWYqZ zB>x1@LjD0>9M0E61;v|DC*?GIzFLtdhxb%EqiKCPtRGKa3O+;WEL40Ob%vm`i+m9L zl+wARcnEctq4Sn}2|QAs|9yVrD4qo_=lvKuImnN|3zENp7bSlNFH0V8x;>8-$>YFl z!udLBq(xPa)0;;@<#B9yOj=lIUM` z+#K&a%z2ai75tIXf99l88|yociBsGod}JztZ^lfq{!oh6FzqE0Dv_L2L+ zuQ+c0JWBpN^8>m3`De3&KhLAPeuUz);AY?2Vb9FJtW(wpIc~0#c9`=xc`Nu;@}=;b z`w*7n^9*qI<3h6fp;eV7v7!xG`v6g2l!y}cktzoyZ4`9 z@=lHHKYuezk)Qk77RPG-r4-!ko9W2U9aJWl`(Z7|&2^q*zP%3Xktc_@B@g$fUEh)X z4c2#a+{`0CcQDX#^SV3G2_WA9AK|!ppHALv4|<~GrY}Etun_JgkJ%sjxr3F82RR)x zPxb}&xQ>%&g`Xv_1;0pM1AZIM^E`Fdo8$6qvB&k*aWl_gbUa0U@7w+1QOFO#W03EK zCnWz0PfGp~o{qf0Lc2ei$n(H+k@tY-Bkuw)?6|uR6&yGFuo~;DkgtH(fy+L(x7+Dy z;;c9Q8rbKqj+_2Hbb6BCfe$2)xybHA0C{xy7&y-}%~|ixv)pkrPhNCZlIMo6b=>W2 zbKGZzwx@^$(O@pz6kfhVc+^VZstt3*j_*V$rHiP} zMP3I!87_0mJae7(W}Xntv)XYp&s22QlTU>2AU_S?Lw*7t1m}6qIP2Yc?l^AdiLu1) z&ja!(@R#J3;cv*x!^0N${oI^^`$KfaGsETkkdf$QCm#+kMx9&emsh+cbylI%mV70= z8~GV{FY;6HLFDh@L&@L5N5SQM$niP1dtEgqPYQ2MJ`&!Zd@#I=z9zHfv_g*?~`lr!(Lw*eYl|1R+_IN#hzMn^l;Zev-!efw^fG2{R5zY6R zbuoV$#Y<494LYUCTfwW4kAqhy9|LaymwDvp4q7_v&3@*>e)e+Q?B_Og`jT&g4^{f( zob_&hw&SM%3Z41n&*7`7kKc}awmR!gzZvE~=(y=;U187f5%SFNlhl`=J9tQb1n2RU z;xSA5UO#owk4s(~o(Aq6G4wi-epbb6EAFp&fZ}5n-vXE4C(7>!k2vewU=Pf{+)&m( zaNO*F0FL(wd0+S!@`vyrF`5Sl^ z@>lS@^Jns26XvT9x%}KgU#H{#dC^dEc}{*3`BDFvq5bvbav#`B ze(^v1^8z=?W&LyVXEn{vdOR`9{Jc-PbLLgNisFOFkA}n!?T;jvc_xv|&o#^^m!E4` zNiKhmbeLTF7vbi7wGN%c{_;Xu|K4$PpDc^>{+YZOJX+bG`)1a!g2y6X3Xcz$dE`Es zo7P8JZLh=pyxu5q#bKS~* z##THtT<((t(aBEU7hZsT8@vel7I+!*>+lNXSK(FRvj1|QY(*~j$7z5h%hm;2;G z^8B^!eJqe%?gOXD(|)!;0rQev)_)@(|HPh;1m%C8m+{X1BpcjJVdk%fpCigoJ}12W zFO_oK+&3bxwbxHMau2*7c{_MR@>cMsj+=QVZnyX0j*gqxU4ivo$rr$TIc_@g_iP6^ zZaV4L+4+Z)Cxwr3-2A>Eq^S27@7JG>o6aJvUras|{tw*zx6S^`^V^%9^`>8=nC%~S z-1L*Jw{spNPXhmsyd?Yrc?tMUIM4IgS#RbEz&xKFH}iBv=R0{zc%%xxpD(B2(a2B2 zE`Br#lIPXth#j8-K-bQ=As*_iS z*H=0%6dypHd*}=yzX2ajUUZY4XFPds_zXB7??T15QD*}>yU5qUgO$!j#otor0y-bb z&%wi1^8I}I&D2+_#V6b+eLh zgXdQ|eu_7y&b+Pmc$<+=fOk+jy%e87oeJA*e+qei_xoAVWG zyY25Hj|M-a^iMhKO@9&kR~vzzf28{!)tjQ>Pa?&B=SfJ1U*t zicg@d;>V~{a;M$@VDb|13*@cgSIAq!AHaE@5XECu z^}T+^qZ5aGEIb*U`xz83O`Q$slqX*Yuc34rD*iilE}%1j{2Y7)b=rr%i@g8LZfCuD zf0e}hYmwvT{r(M|W#nJrYn1*r#ZOZw?Jj#goFz{Uzd@ZInE#RD5vuu~-wNnNAuk7y z2bc3J{S?l6vp?OiKRFyX`_l=XJmekVMaieZ{m7@lE5T)+fjHjU&ic^%Gv;aKxS3}= zI_=1}!n>2-g!d-D4j%%Sc}8NMF^d01o#?ym`Td7HEPS)l+3Tz~$9o3Hd)jexyyMY1 zOCA8fMxJPoo#z&L0{9cS9PfM_?^|cRnaAU2e(`uB{OWtXl|?5Cc@cPA@}2O6$Juyw~neRq}}Nx^SMSsk7e9(+u-;b==I8ADy1$ zS>Xf8SHT0wSHj1_d7kNtZ=lY<=xiZB4G&a0#}$7_olodICI0|_N1fQ_K)hc+6i-~; z_j*gY&z`U3Z~`{!(?0!{*IgLVH!Hk z$tS@(ke`KjArFT4gv&gCVV?1d&s2O9^-~7gecnc%93H52jw}9!cGpDakv)Gr?uwR$7%k zBfkNk4wvJVc@`+Xl{%63+v{N`c?9@D@*MCZ&Z!qdTJemq|4DWrI5#T!xo4f;*VU%}fcogRvhrB2!d z_PkFdPYj=>bQUYVgF3U(*+V`Peq8CCQ~VWm_M!8Rd=LD)(urKlUO#-kGQj1}XYQes znfwkskJ2foczxL3n-gR`AB;E#S@JGXEi54}BC5P<#&c$Dscw`6&2b zN@u;|N2#+Jos;CN;pdgkO~pS@C&6KRUcQjWgGa98dq0tVi>r7}xZGz-pp%!p5WF~b zuHd{>aMqjeO9SzJX?@4d_oZ{uX-qy7-kSUzygm6Dco)ar*Ztjb^SUvE?7j^kj|v|S zm+MWAYog+-s8b%Db>wB?o2hdL`xdPDMWOAozZ_r-X8vrd2JVHI+^L`DTDCAe*@!=+G&Pz-5Qz~A7I^mAm>!b*I7G&(& zn>vfp=|{d0K2qsSR(vIOj-#`NJP5v3=>#f%ojMVZ+w*>#JS_Z)(s`?R?E1dvw4ScK#k)~wEIPf&N5cn^Z-5UaUk4uxm*bUr zrYpXhI+xH{PksTugZu}45BWEE5P6mp_Ifx@{tNspoaeu;_O4nhIQdif1f?@e z@paURf6|`!P2_Rmd#LjV_U)Rp-aKEL{JcGX_sL(xvOfp$g8a{=_JP_jH7f96b z=k;Lv@_cVj#Ve4@-#b)~TsnOf|3~pn!^e<-bn+@6B89I12X1z&RjAls_S1Ul z9CO@!KktY4Q80O7_zm(|@H^z=;13-)?~5Gi~H=kL>?*Kh63k z@aW|A;VH;h!PAic4bSMfnRE3Y5klw8eF_A4w9#Y2UFi(Z641>XT9m4LI08Cre6)6XXItzuN-$fpB*=y zAgupRz84;?iM^h^OGB>{KYKZN62Q%$5176OKS!U@ansLo#_mHF^7Qb$=YJSuzP>@2g7fZ4}?Dq{)cbod%qP=0hd3I zJ&sNq@*sE?@~G$S{^uZ%2ro!p7G9LRB)lwn0K6i3e|SweA8#YY`%>pLIs?g1z(eXUr)Xdz7sC{Gac8%A;qs#C+d;e?*j{@iUiz;4D@g~%tjeZOAnedL}f$*;6d*OY_pTY-{ z--nNY^Kng5dJ) z-k0Qclfvb`bP=7D{o>?X8`;14 zxH-A3??5iE+n0P`W&6+NoI@_1b>#B<=nLfX`_|Xw(n;RRcOS&dlE-df-vEo@=DbhD zd*c7mbr;Z4CEXT)8+UgP?hqJUgS)#2AKcvscZb1)yAC?IyZpElbZ~clsnk9%)q8PR z>ka?==FF~B(zkElgkXN#PWAG0W%rXy{&C06eO)!2tJCDA;J3*i!taq^ga7Av@NcRV{5Qg8p7^$4x)&kkgC2HGDAndiXH%)$sA; zFW{5OAHrvoSGsA}XFhp3_;T`*@YUo);Ts%x*I|d_W*zpUemD7U_!07N@Dt>p;1}R# z)y+A{VirH>*Da^s^b>%6dFi<6C-*J84sXeGz`v3Af&U`!0gu=!)}})cjuMIag*}~^##bEz)Qe`O1;*tl2dQ;Ut`^xEA<_e`azDHeyZHI z>pYaa5`3JJKf|ea`&r?*$?t`nHRRpkTgW%UcaX1#?}5wu!GQScgL<`)NuC})2+sYCcIr(( z`>;OK9XI{-N6swrzVJolOX17N7r@uUxt|@1U#6V*$hl7b7XCoVd8v4mKfTXevb%Qu zV~{6+CxmnVsT40jIh~MGguD&BjFMAL@wSw67&#rucfxy-7rAHW+mE~ud>EYPJ3;Yf zl+zqJtH_(ecPTkXoO*LUU*mjUaon8GQOLPLJ_7zw$$zDItTx`~VIy+lk*|d(Cw~D? zMg9by8P4mOTk$%IH&wh3Tt44rzi;<<0C`&YSS4q=;+rUE1#-5MFM}VToXX}+A?VjB z#a}A^S@8sIz3(?9Kc(VD;Icj!&}VV-)9{K)PHn}zQBK+icKv&ir+^Ppa>gpYf^vEx zXAOB5_*NxnpHpvMUp{5ci46LA_Kus^*HPsBkNhC~I(gWKcD}dCL&N_g&kTP?o*w?% zaktMeaCsfczK3ZS^7?h_V>oW+)f)M6$eY8Hk}rY#kS~H~BtHqyN`4fc6E6MB*G)>0 z*ACv5p!*c^;_&v0kA}-R5BJFK%XsoI@EJ-@fa2RJClhjZk!OG(R&vfN{vYL3L(Vhu zD)3K~6WuIq(63PKy{`}Aso}Cdy^)iiyeHgO$tj?CW6GI_oMz;6;O&&09*WPRoCC<2 zN4^ifh;rg%eRhz``Wzuog8B>Oso{^wJKE*}LA3Hf_ z9|z<0_`z{=e!e6B3;Abw=uY1Ip6jXI_weL7;ZYoS$BpZ_8MguI6Oz|~r-sXX+hAVR z$>sXlQ1M}kPf&cL;yV?;Nj?gFK2khPXYci#iupz$pA3%=mvxYQAH^#wUR&`#iVszM z0eK?KcQ<)v({RwQ@LfXYYrZZZUyn!#H)YL(EA2nBEA@FDH|J*$)~6u(R(M77jL+=3 ztxBE@UJEY$$j|HUO7$C2-;;bbd=TZx&qE&V)SK5uXZ%2f*^Zle{Y1`u@~`ma{nT>m z-F})nZu*&roR;Ks;2o9x-cG&AKZo-$+HsSA2sz`)55Q+A`2kM7$@gruulEg(oBU_U z*-ZWfzFWyZ>eQQjU*unK+~mi8Y0twI@|f^@lrLW=daiibZr0z}Ld1{~Y$%dJZUlO7Vx3-xc{!$UDQ|DmmX3kK5h* z9L_;bLh_mLlyII`X2nZT&K2a8A-@E#qvSMIyf5W=UfX>fNd6u9BgqS+ek^%@_%t}r zcfR7=D5n>4c9M64A0pobKSsU*{y*~T@Jr;E;kV)3|6|2N_3%Cqao^bW3`ZUl9-X`j zJT`eHcoOnn@D$|T;A!B}e<8e%a+Ay76H(8}aqkehXxq!Ub zDEsG(_K{2d8S*yxKI~WIQXi>j$oiZ9^K6J7Jmc8p?=x91MJ_pw6dy<~e-Fh-a`}5G z7Lv=~6S0n5{@#bH3Olbq$X_(Hf4*-W`GCIGcauy0W%5(; z>?e==zW`p9|CNiKbsSG*zIT(6o2pD6o}Zd5OSZuBp5$sgmmx&PdP z>){0QweYEqo9o8(HTHZiaNOi1ervDii^=1{w>chs{TXV{;X%huPD|7uC2tNt<#_OQ zc!^!#tB#wTF{r;uJ_>%pMmIey5pu#f8@*}ZwOxm4=N2_hm=^0HBP_y=YH-v^`@Vy=;xK=rk_8N|Bk!`JZyh^{v|((`5!^QqQlK; zGWmm%pTcpIzY002$ydO$ke`M7lAng>cHAAe2weIs8{B2k9w|PYygup|lDCDghRb|6 zV7|K?H}n09KKGHog&!wx^2zS+Y4UpT8*rJI^z+cEH|rq%ymj34vlTfX$=AVuktg|V z`w26^`??no9tSS{48Zy%Q@jA>bVW`P^0x3Y)-qvx(dv zzF*0?O!cEtf1P|d{JxU&Lh*2ey!ZVeaw3uMhbM*eI;2y)2<1FRPI2-_@LEbv6UBQ| zPPA`!AN!L>fe$Co2_H@F3!g$>2R?(m7JLDm*Jq{T2PmgMa*mMqg`Xu~2){tS0DhDF z2t1Jd5d0yW`~OPyFHrxJ{0Th5VDI|}dB2FIcqX`cpEd7a>A%~3%toFTo|n8LydZgb zcuDdu@UrBc;FaLA4ny#M*PMI_e4OGloP6_s9fH28Ch?8{}R-W~UiQvXesC-KE7q z?78`Ek5Ye{T-M=|`Q9LP0n!Crzal@&*Herk$uePxXD?C`a+OBge@-N6~=eWs{bJfdnlhYD8{m7fZ2Rm+ZJ`HL8Za#kkU@q^U0|<`9AoInj(%2dA*qYS;&b>J{ca5 z+!N0BlZgB?>QlqHpR7*3>8C3CDd4#2r#bSAkT-!>p?rBis^`?3{K3d?>$u5Zikyz* zi{ZV(rZdkbVj~Zq|Pza*C0!gqJ6eAHnuhnLH-EFGw>PYr{D|7-@zA?zk#nIPZ-h8cLRBR_zpPF_n_i|lv5Zv z56BC`Unn`B6puOD`@A(nPF!+-cp5nOpH1-!lrs`JRmg|K>nb_T6z@klYmhUDd=-46 zk~2&3O_Xy5Ia|rk!uOKri)7EkLGnEC%Wz)LK*hgMP9x;}Aa4MVI>zoV=ck05>yLR| z4?}%g^1<+IN=`n-t5VJ$_hGY|BJi~d<1zZ_(byd@Tuf&;eW$r9fsh3 zU>&(Uf4idiT_@kXUkBp;;jQE5bv+Z~ek7j=k2KEvoP32xBmW4G510O>Pamh=^b-@` zFOf&7_fzWYDfP{%-VgcR9XIpM71i!imP5v6>93@`@zoXi=@w^j`sejvy}spQz-|a_ZgwH#lzcha+b*`4IRH$K9L* zj+>mls6Rr!6Mh!X>wL|rck^F6Zt}k&=RNr+_!r0BoG=r-?-S(ta5}|(;qv(<0Oz^1 ztUKY-6C zzXx9q=YBRSewK0~#jxvkfjk2ICV3usAbBqML%8%K&xb=z^xk**JRU{yG;q0ZY=Ha> zEy^E^tPi{5bZo8Udx{PtF<4>c*|I%#s`xo9NE%{f_( zaifthhR1f?{et9XC0pQD2(8B)o#-!Slj%(K?Qs zoOY;hK;8!K@3_g4=c4T$H#w6~-{qWc^-Iipd3h_6`e8Pf{vT{4n?0u z$p^tJk?(<5Bi{wD50`mKKP{YkvkuZv7spLM50TS@{4RVTxlcU1Uw@G&hfje^KfSR& zbDetA&jzf|CdW-brI53gyaaqNd0Y5F@;~9H$S1Kp< zepu%wj+^{j$Z1Y~4c?wSQ9`@Uoyp_D2g9YG=jdmQ;%g|U268r#SA*{$9}M43J`jEY z&iz~=|BOEGlD~ofqWq=E4>LXFoS5}o43A2F9v+kY96S+R`jmcBJN0HC2V);|J8s7P zgq-~3AK=Bw(eM(M5$IUsPj(v8(9{>wV`?)9V^xxBu{ zlFRGjk(1vT+2*$&R4=cusIx=*cdvVK9XInDi2f6j_k<^N+~mk}q>PT6ocpNHN`4Do z%yE+=&ygxQZgR3Ewfk6&JPW+Gl6lG%0s zmpm(cuj3|1o+F)f+~kZ#{aNw>@T>5kQjdFX?>Y76x-==koaUgvAIEW%pCGyI^AmY2 zxMxntIXCq^;9oSwK#s21o|NnC&%(t}TX1)i}XL<6S@EYV9Qrh*eL!JuW5-xp8Kb@RRXUkhIdeMdMQ4Ua>gNND)|`rG9_n& z;>RdwBXUlWuZQ1Ja-Jw2dV%+TT}DoL@{8~o-u%-%L5Lk+Yrr zC44`5ymWS74wJ`$pCK;*KTnCb2^TD4f`5&BmlkbcELof8c&h$l2c=E3B6*quUn`1DJRGDIUM=t$cMtOk#B@-;7Q2CX0q#? zf;==l4P5$>@2~SCm(Szn6>m=Y8Ij+bJUzU#lG9i5sgzS0IWx&C!nZkYo=3@ZP9Hq~ zGw+Ya<#}m7#j7gbL-Fy7Z&Lh(;;$5sv^3;AnEwC&=i-w8|IfuGm-#kQ{4d4llFPVD z$z|ND`!D9ch zjOt~+>l`=N?E$zBY$ERhKS&-mv%O9pB@Ych<+yo&**D+z^FPPU>v2c2D8c{YmgAY-#Tt`PNDuI`7!u6$4#GA7uY_-uJqn7`Fct$a``$!GRMuh ziL==CNl6|Xp3ZU8f2Y*;=ZEKX+~o8}eID}O@S^ab(%^mXY1{XdbL!2!CShKUoccPb zHNUlU>dm-&k>82@A9!!_>RIi4`;(W14{_Y|6M%lkIBv#$kNOGZPvKMHL8Za-O>O>1 z(61$qyYt%O)g>kuxx zUC)x_Vc?a>Gr_BoXMop-OP?FiPanmnD!xhaql&*$Jof64*O!@ZE%X_myb?SKocqtM zczMb>kDSWnC*b~+a{}wrR`HRPQ_|P&*I4o*@M+}J;D3`(f-fXL17Avh0=|wsLJr%{ zCh~Cbop4!CneSo6?@>+`?c)-vi%I9yg~w4~NNP!mq-4J?|<0jdCg@ z=NEZ-c=Wa2*GV~Vso~~&Xs!bzP@kTB7~EIMDWG_D%2|h;+T^R?ZIqmDijSq7$HllJ%IS}se&oI3!^pS7 zN0D!WPbPl_pHBV)J{!*Ku%7A@=CsgCD z4ZJa&`}tGx5tLH_Ib+Dn!KaeejZ|fcaYm%3i>_^C&#RFOx$l@blj}l zTI63Pp98;3J|M4Mw}<5I;IH7)rw{r}u)+I%M?8<>RTb}~_%OxSD1H_$?{~%W*?CZqD25xwffUj=RqpmO5_wiBrJ#vywape4XR&bB2E%H#v<^ zzlXdY{Gj8e&%yI-pQju*`SP6M8o4}Yc<8tpcQx{#kS~V6bll|2bB3>uo1AC`?K=D< zj|7jfDdcrz_FbMc#DbgiZ05BO^GfT~yPwDZaO%ytRgs^Uyd>O@{64%S`6YNc$4x)y z&`)*8&A7u0+4ZV;tdq$r-Zj5ZvyW?-T>Z{{BL+)@)_`Z-wEHQ8|*A%J~O5lgZb^XOq8x&nJHZUrwH`xLyC%oO9AC zUX*g8m9Xnvf;dgO!QjmQVWo58vNUR1vl_5H{f!v|B2d`@4f_&-jL zxgYb#{m)^?&3$0Rl6HNLlZS<$C$A2_OkNp&!*Mh2B#iq2F6$uuzf?TxcJFgC2Kh0` zN5K=3Z-XZz-vUnu=YD(@uS_{NkyD-gI=lgSq*8XBn~+CE|hIaHnxd?lCX3@QE%S)T@2WAj@c zxS5xmQ^awz?+Y+)aq_9~8syo^+Wza1r-3(g+?+R`Iku^$j+=hu`x!boZu(h*oG#=6 z@ScvF9Ql5RzZ^F?FHt{&{3(2_Ls&@~H6Ca1&wXE6*8nIquG@l#^q|^~Jai z6>q6{f5oT4r5}0Duz`GKP_O3Kzm(&Te$F{=)**dGyABu0)533&SA^dsFAskTmpjJy+kwUTpK@#~cH9yzzkpTl2M&I!9+p0A20 z*zJA(TUE0Am4w_Mo`!rYJOlYAcn_$|u$8##B$XTYB-IqwyZw#WNC>_$#3@}2OM za9;n+ikGCEN60Bl9tf{So~MdE54Fg1!vBPGKV20cOF5m9Gm*SKe7=(N57nwTS+*Gm$(T*o3;wd z;LXSf!dsE|g?A#~2Jc3`1>PUd=VXN93n=F{au$=tx3uIj;F;jO z4n?WH0P0JS=Yp4|9QmByMe%-4j=3M3g!`ZIj+^_RS;(JEJ{>-r{62g>`5pLT$IZC= zFzy<-tb_EwRq=~Xj_ET=4ZF@)$rHivl9z=)Brgqr3Fm%3D;|Hp_qpnToW$hq;Hk-H z!_$-h4bK9Xe&jhrIda=Y(4SXxa?Cn+#^;U}j+=Emi~K*ycf-4oFQ{qPxd-`p_#n9S z>4W>X<%%CsJW%mpipM?R{k|aM7E-(kT;4C5*Ru0!PTmOqr;_uR;xj4dBy#4EABOL6 z+Fn1l>Pk!9>_z(2P!$E z6kkd?8IiM+JUx7qlCw+kOO#U?IoHT5!k;KP?-Y-E)O&w>Atxqz7kDD_qwr+p2jRYO zJ`V*HuR%GX8r%JW zIscK*gnw0X!XER!uKxe)5iZxsOUOw{{y%so@)%9*zGNeh0?$ic7G99NG`u97&q-y) zTT@OaFq_rHMZBlz2OTTC7fzDCK}s`y#T$&Q>0 zsokS~J2AP<1Qh4VT@IPQI&If?oxEO-CyTeHAg<93I0{{t1D>*Sa|*C0QDd=-2p`8D`j z@+qWeofC9QKmW zTO2lcXHJoK8E1CR<9SRj{e(GX$1&?>`uxW)YH)oCoR+A5YYv=Pna;bl!_z!aFKm2L$^^yK#kW2qb$)*2%#elu)8TO2p%N1i+Fcii+7 zh@8XZ*Wo7|H#zd$>9XS{r)(?R=XLVp@H>v1K0D8}eLi;Fp;H}g7&c@=Z&-RCn^oO&~E z*4B32YLKUdHzeN!_b1;3Z|S({ClLK~bli+v;ZHkmSMn0@UhtsO;Q5v||0C$vD97D- z&2n^&1r5q4+t)AH$`eRW{xe_N+Y*;_~+^MTg7#vLE_MS z=O8Zy&rMzeUc~X>bB=MVDc(f!_KurAJ0ia``JeEjQ$8rEkOxm`t%XS0)I&f7lRpB#4FoVN+cKTbXnexAHs2fJ>U$@9Yl z9XI28@ILrm@fhbrt{ZNBGQ~4FZu{MpE9Lp}rERmtz~)SG-iv1d3ByB3Cs7x>4&}(>!K=fANfQUyflj>{w;}TX zBCiS`Oa2Nzk^C-vn&YOQs_18)<7V8+UG01ql8=NhgUfv7>$ck*cjtA?$uZ*&#<+JB zf2{Z~#S>f%d0#W@FJHI)gM6huR-VFexqse(erh;w)?raMyAE~81K|GTN8v5V55qga zW!>cKt>YA5rubpSuPYuJ&vkg*v~YQUe~Ugdl0SuKQ*z2G-iUHKb+_x;l)N>(8|9q9 zehpB3Hs#z!&V2G4@a5z=df0welV^o*CT|DdPTm^6pL_}YF!>_*8My3=%=fC|A1LQI za=wrsg@?ZE{ko9+sEVhB%XxT-oQ&kp;rW%E5{mm%PMn^0{acX7f_G4IdMQ4Ma`GW( z8hIZ05+!Gy;zuc`DRNGdH-KLx-w3}-z83xr&gbES;?b{ozt28HPHgi3;3?sppNHyG z_pOP;g0UH^~dzVKgg-p5E+fB$+<1((-#J>;Y#uLaLeJ{A54`9ydj@>6g> z@)PhX3&m^w_pF>^+zJz=nd)|IUN4{?RUh$t!j=3KT#QjgqYu?wBxP9&V#3hdjPe$Gto|3#iJe}ia z+?e>hoE#qYu8dUzZCKO(;hf2QPwyYc(^CWcFX=>c}#l9T(v z3ps8+hsyJTCgcP9*sr(tBbWLB#SbffOYzV*L#_jEKZzAjO)lTZUYT6_tV1sKtKjCG zcf#2*zwM`b`FlXlkxTwn$IUrkjCHbU8D3vybL{{!zxejVPG{3^U3d8k2leFl;LK>ZlF^zUnz*)vV?4U|&=`J2h}!FMY; zM->mGoF>S5K;8)chH?s`|Khhp&YSystgm=i#ru&b8xcBqgwf=GRI}fYv5H(?U)#we z#`F19k`caApD87yrp>&biq^Kl49=e)%f(`5ZT|(=j-2g~*4&OHqC$ zIbt|fPBg$EhahsAa zg|{U?4ev;P65b6i{rF=aN01MKuW)kQ>)}Rnc|GnWPaW61T7o|Jkjv}wCHbfF_PP<{ zUdX<<-{@yF!y{bp~-<@?RPlFRp-MY!+14)XnGsmZ1P zf{IrmzhBS(y-Q8W!(X)TM;*wcCbRd$*rHZd3m-XL8-uaHbgS$m8`OnD148%Ek z;JrRlpO9R}O-H_>fgQI5xvWnua#^3I&XhrI3) zyN_WW{(gO;lFPV>$+xzO8T|UqOD^kEj$GEK7P+iX4|3^$yy7#+rOzeg$9?Sk*I{zW zzd$~*uKoMAK9Nhk=aKii$+*$UOLek2*~ulR7~EV=YX`5S{YPD;-rsTae)JjF?H1&( z;XTNk46*CbhrAAaAYA&f-;L_=%%S?-s9!+76TX6SQebYI6hBKj50G<#JP>}9JjGvj zUV-Gv;7{N(FX`u<;!*z#*20y&k)m%wY2 z--p*HzYA|p9%-mu&(`D-;GN;ze_zF?QjRZjW|C)t2avaeFClLOUrRn2zL9()d@Ee~ zPml9?hCB)Ut&`*4Z+s({>p-N(A?L@`|C(k$M`R+G>p(v8-uLY*uO7M7wKM7aPdz4=e9zP0&nptS^qGJ><_P=W=OdT=(&QVe+4q;W_T*e(j9x>3~ zKg=hW_1Qo!>$8ho*5@X<^z&ZvALP@u6kn(KHgXyFFnQlx_Vx0JT*iG*Uig*0p2vIn`}Ii=H}9J@ z@!n{DE27kwcHG=Y{fqbC^5mQ0H7MWiR?y#{qxc}oi8{>Qw+tl@44f8E9i}4Z4EaR(1;^c-n~s~D)2I(5KMsEa4=N4b zFX{80Q*ZJE&}XDqA^UFf!wt9V8I3#)JU*QBeVlqXKd0j+KMQj5kY|DyRr1R@^=^JG z$4!0>XH~9;Zvx0m9 ze4~=T)2TQ4zQ{l7xXC|;oRj27;Fl@i$F}JSRQxmLyh6@*@)z)Muf5M(yb<=iMIw&_ zj}13VX0AWdPg2EmQBEP`DQ6RM{vzK1 zA4`4>K9T$i{BQCwBklUnB@YE(2$%lT;yi3se4paiC_e-8Z;_{iKT>jDD<1KU_qnQu zoT%iL;PK!*uM~>srJV7|DM&sRUS7$msd!h)*^Hc?jynaO3`{Nyn+*z-`ITynZ9-j94&4f}P3QRMP{DT~QZM7H<0TglV; z+5LJ;F8zEXm;5yEf4>ez$xmOf2eBo2@AURubtIQ@dy%*6X750!l1t89a>-drE;;+j zCFcaW*${ zF8wqimz+PzC8rCy^fR7Za%PZA&H{4jXD7Mj93q#T)8x|66LQIUOD;Lz$fchIpMJkz zKID>?mWE;+-=rJp%)^FCg~ULu44xryo}=U>Oo=aGT9 zAJ{|Q6@Jih^L{!to_)VK>$u5@I@-P;T_6t+zv{TjiC5Xak34YPpbL7p965zh0i zt#~KOsf(O$PysC(Ky8{%6TU z!LO2Mgx@4j4}VBr8UBR4BK##>`j^*axG(k`is!|-jYHlPo*gdtv2uOLM=r1HV&rn2 zX+$nLt;i*(6S-Vx#*$0@Qu5Gk%?yKn{sXzxUnG}5fBlMF>OYgqePhb6A+Kw5J(2oM zhLFp=CXjcJZ?B(o$mP#>A0pq9#vX{%f zeD9IZooJt{{~(u~EZ@A>Q^w6rF7-voW!&=QGHy$9$>~TQX{-Hu%2@KY`R%;6l1t8B za{1hJn*8b$oAZ)fa=w#Kx?ta@l707HAE_^VQ6>qQjFvaI8zF+ZoibwhR`#w`Eo`qb_Ng?t|%k1ab z=H#;e{mE0`we^e0rT(bmcgf}Z5}%UG_a(j~m+wpT{PJE0`M$)YmUm#-#+yS`Z+x0@_klUoE-Q4@iqD4 zhW0uWKa}@+KEu~xQ;^F#7a-pk$-cjoA(xys-)AANk?6_Wd_< zXz%$-eLnJ%=WSh6a;fi5UZID5zBHR$>KBuTTVbF7Y$4AY-M$a{hVkxmKwsN`QF6(z zOa3dP&2LFAIaA4-Mza0SC71lA=`K!q#e>1t{ z?;K-F8S@q zCBHYh>`(SI8H9>@Qhsc@jbcZ{~(ur zj2zK>J!K!WkV}4Ua>*}3F8LM6CBHSfrkjrz+OXO1jLhW?zCzn3|bliOIyM)ho?a2?qyEtw>uNApr=QF@@le2Q1y{{fZJ`X;^ag#Hn zr@jB5;<(AlGv4ORAkPV(g_u7jUyXX1?hr*?oCK zo(BF^$q5_X?yt;C#!U&A{0hiPOI{A1P07ipcumUbjGVgU9pOzWrz6&aPqydbJ$YF85Aw|L zP%*q;?-}8d$!o)-lh=eNfOG#T6)!+J{g6|Hybrt#c>ufu`Fway@{{noS&f`ejkbi(TrkvI2|4*mh^zV6M z{^9ZTaoqHuYN}oT0pvdL5#(jyW5`Rvr;@ja&m?aP4vPDdH|yhv^||D@S)bd;xki2yevdrtG`pUU$V0`0T zi9?A+=sjhJR_X@`9twqiZ@Zb7u?LktY=@0+mF0Ed>Hvj_$cz@@X2uQe~#kY zDd#P6c9Fk^AETUYLGv)b&O7yHzXGsd_Z>I$O*Gw}hyTdq!C#ZthrcJU3;#hr2p%f7 z_c<8=5AV3!XAHQko6IYbQlHjwGp}XH&q%%qo|F7PcpmbH@S@~VXV`TsK^_@i)^Rhh zK&*cyxXkOI-7ZfXa=8w4Q+$$>Z|0i=<4z;b4xg{&tWf+g3g>pIL#yI&c|e;_{xd2Q6^Ca(@J0_T3pD(+7?labSc zd?LK3k~3KGd6csaISa|Rz*kew2Asn!il3*P2gtchejR>C$$6r9sJPzOhem(f{R&6k z03H)A>o3=b#ER#ooC(M&NIn=|O3A6BczeppGt2hhncNrNSIHTs_&my)f}Dlq!{BQu zN3Jtl6+cTkd1l-GFOcVg-z0AY4E%zLGe)4n?@l?-k<**}F?@)UGgk2>l#^+W-LDno>EIj5|AcQLZw222=k+|M zcp&9WM9u^9@$eVqTj6iWH^YCzxu1yfz26t)T&0D}_5U_|?m&S&yz@URKI_wg#;kD|lPzcuUchxJe4xLN;w$VpAU3!a5M^gO#?zT_Twe)9D2 z!sKb;#T|G1tN@pNlzG)s>YF-l=2Z>(Ey*jvJCaX@cO{<;??=8JK8SoPe3;{AUW2jz zqv0~I2iUKr=hh_Z9y}IZfx=eg8$?1Rgoz@6Tae#dE;r zbukIKflpO(<|)2|ay}zxH~B~S5z6_AeL1K2W6JSa zX!rd&d2;wC%86hOK+vyHiM{t%JP};>w=8m!k(Y+2Bku&yMBV}Z2VBmfj9XaoT9h*r zIrYe=!<&)sg|{N#4evz$6yA;eF}y#V`yZkB0?LW8$nMu-@@ViiF8g~DIqArc!*ftha^x3OyawgGMot~_mvDdbgiGvsXh9wq-T^MJ zBk8A?;u9&S4sxcF*MQF@p9T*gp8{V=z6ZXRd>4ExocrIW_%+ITh@4yGcj1r7Q!TaY z`IOuT{*JsN{1bV3_;t~Pg0I&ncc^;88_D}1n$ zGe+@6l#_ae-S=hWDdFptoE?h)k8;W*=Ms5Y_-)E*Y(Lg`zLU%Ml_mDE`!4HT9P6Bo zT&^dj$@`$bH{7I|?~|18M;$^gf6i!{lM@9!n%~wt_2%<_56tTy@=owwO3o3d-aJo` z=SWu^H~EK=bAx<8{DG4H(y2H39`k=ezkWGx^24mO=OIi=@7LEa$4!1QzRf->=oHxihLjDSVmOSAqyT2F6HM@{8@ zu394}CV5MEBJv6FWaQ)E>BzUkGm&qFXNODw@q=F#9#2WdD=Xfb@^2x(9r+D-cO_?_ z;xi~G{A#<8v&lol7b`hy6+cWlrI2%+yafERk`w6Eo9lr5JxwnhH`jsA$azEF7XDSq z51TsV{J8nC95?xgkQ0x54?H=X_dSE+B`GKF8oT~w$z#K-QBES9s|Jd9qn!N6=|!Fw z{ukw>LjE|X-mK3gGr^!=e>-m0#~(R!$s59#k}rU-B%cG{1ef)ces($aZa>EyH~rj3 z&METi@Jr;$*4p*IMxF?MkGvWD5xGD76`cG3;?%qSM@|!R4o&}~krSPKI6MLQF?bU4 zL+~`@(bn1dW+0CO&kmRVGuUnSRB`IfeUAJ&qq^jB|I?IQ{=Cuva>*G%E;$p)C1*9c zupn&95?y@Ag3DndU$>EckssKFW}7`cgO7kmp+r*c07Zq z{v7(8W6P|AogT-wsbkeixpS z{0=+|T>AIJdB~%94ay0>(XMA5^007!C8w?8Ln$X4az>J8flsBJYUqDGd2IMaC&&Gq zc#B+qzRFW_`8jNH(ueG$o0F7W>PwN!b*2Hi)b}En`iY7!SNxRX4;25dc*+dFpKoc! zdn-PKTt1IaBwzH^o~sSyvJN}QCFdx4)`|A#8$2eLoR91$ZGD1_zn`xUxr|$ZT=IJ= zK0)zoibu)h-A`Zq+@W0LGHyM^2P%G9@jK))-xuWlU)Z0Q5+?czPp$G z`6{K!C8s8NLi^(`JUz&zem42B*D-^y1dGX~ehs<&eDxjV^7GX%kxR~Pa+&XQ^8ABs zKhd)Me%<1eOHLZ{=40&71u8`@{nQ|z6~q2qn(pLMKTGkAia#PRb;&;IiJjGZUM*kQ zbCQJI|CC*a4CE8GThC1{e_p;Cx%A&g@iFA`=jEr8%g;-hOD;bzWhuG*`T9-d^5^Rh z!_E7w{M`cPAl{^U>E|K2^z)Kj`uRjI{e;ODvi|0NsUhAsBaqjGM|Ir1uSx$29XB}# zQJ<82Cp@L&CTD&#dmgfpUyN;k&YmB+{9MqAj+=2aY_jhQRmoGqYdLPlmG|+cj+>l5 zsBcN$1>O-JRO+=~y`B2t`?|Jf7lS@8I&SiBA!j`KHTV?DPiA90tI6fhk8g2u%(#;< z?h(h$xbgn6>vMuU4*Y_Wf6J*i`GLrP>A1-+fSkAF`QYD`{P5XB&Y{VV+0ITlspBTU z337bM8^JS@4})hV{|lZ69uytCkFuVAiZ@fdz2d{*W_G6kwHS94`EvLSB_}}f-IVhg zIs3^!!cQwXSDgCbbBpzV?6~Pa*=Bowo|7kme;_Xb|3Y329@^LLJFkCKxcRrHpU!d~ z95?;6M~)A9D|kloZSbt*Ti|)&+)pvZ8&l3LyX^iq75;)@kOp!g}pAHwB) zhTdZL_X)WN{#MEPu6WWM-uqkBzN|gz;Ih8~*x$U4oBhp*aSM{Cg_k664lhgI1YV7N z9=sO$EO=wMoCoRuPp96T&vWR%kK?BQE65o@egQs$JoQ$){$t2fz^9Tog3lzc2M-{h z1z$ow9ljDS^Bs--`qyz^nECCnZ6`w;n9gwqtyd8XnlCw$iGn6w0 zIp@hI!EaK|G_21f#eY)HHspl=s8QBF_fj3Vz2pG-anKAn6Pd_MVM_#*Oy@a1sn ze-_TeF2#>1euwg(BL6=5WB79==cD4$b9tY)7(48~$0m;kPXgz8rB%Ez<>W$6G4h=7 z@{}X*BhAPcVm*gDIqvhrZHhlpJbLbsb#QaiDW08No+lJ051e6ED(LT}A(zkB?a34M zwa*{MlS}my!9@%D;OR(z%6 zo5B`F=mI+=^FHe30U!$ff@o-;v96LQetj`O0&`)a25C7V^c3Y(F)~rG7TK^tqT^`rJS+ zeeNcgKCh9>xIYz7UC?{JQeRf_PUNyLy~$-?rjSRzV$b1La>?0CE;-l8B_~3m-}j%L zyv1HyH;`QByNtZRVEc8PaD~0|rO)W((q{&8>9aPuj60CL-8B32(od61{Ri?T4eWK^ zzsT?VY(p-64ked9H9y~rhhGP&fhC71m3ia%96bg|#}nO^atiu;qxyxNe`tzez6j56PuIadGc?NquT^sjo{e^-am8ej2%~{~E-9z!n=RTFHXL% zwSAplAea1`C?VTc|0GTdh_|{ z`Y?Mx6RK3mzLzyanZ?MSe%c zM^H{anZ)LQv3kr3`Ncn@*(iEw(xdpFug3kTaWn0(`NOvsUrLl(Pjn$I1VJpQoI>Shw#^y?gzSTP|eZ zUC*z0HO1?b%l$@Aa(SN`L@xDn$fbUt;tv&%T>kg-%C2}##oH@BO!2vjZ&v)5;t?x& z_b<Ti(C zyq=KHjbT6UN3Q6-4w93Q{M0RbA6S@N>PwT$xHZW~x3%N;AeWq>cOpy3rG72B zjC++_>Z4Wq{e1H&-dgd_nN_*|= zv^BZZcP5u{2a?ZvW^)#hOU_#IU#IOlpCOm}E95e6=&Ii9AoY0_Z>IQU#b=YtxGTsj z^|0Rudz@VQxk5g+s=Z!)Cztwg)x75=ac7cC z{VByiDW0yn_q-%0JGqQopIqukD?Wu>a(0tT&NK2q_Lw_Ak0(+M?>@!TkV{TQa;a}k zF7<;HA4M+x&mfPK*1lf0kxTwz@<-3@ydIHD{VQ@A_Xl|=yzeBh>AgOZlZCwSpZ0lI zC32~+O)lfMARk%5-scY|mz=5O{uS&u^lv7Y`rYI*?n&}=wd{55Il1I~AeWplwY=A7 zR1drUX~-ofCwYfw_Igr-TYu z>OqbKSVC$z9N@#lh^g`Q#?JnfM zAeWqJu;%>ywIH z#`PsXjGvoYjaUFR|6QvWx3-`w{8e+RkLA0>Y{+TK4uCztvU_^$hTgx*XKRtQh$_O#=T75K9^nR z+i>&lSIfSHg8%u&sW;F4ZsR%95Av(<@D1&HN{)Tk3HtLNaPx1?_gDK*w1cE{+~oW2 zw)YQd$+N(-QNH}VoqSHc$qzt&DaTEI7vz*9ZwIeVeiUAt{2;sud8j?M|K{XBP~RRN z)JpI=OaDEcdeeU(`XA}I>Awi_$C4L;N=_jQx1MJK0tO+24?FFe0^54Ot%zSHpE z4NuVcf8TFL!*h!Je;&BBxSzka_*Yq@&#@iF{q?=XeSd;6TR`@I=lWeYol|XOuPi17WZ>Ts}>iR#qiS7 zX-ucQctgCJ_z=8?_#pgsT<7Uw_&bKrmHu4%Ux?4fmrKY0a|LS+KOmj$bdHE`!%rHW zi-sp_61$I=>D(uN2~Usvb@TIQH@uW|GOmlxNm=oS@G3^duY?yBuZWis?}S$n?|@gv{rrz}9vT?l z((wM$f1mzf@%Qj|jLrv!FObeRbe4#Jg|9L?8x8+iI@jnN7r%mEmQGRD?N)HT`#gEH zb@Vqd)CWZ4kydus7acm~|>i|^+Qt`Gb919#`@IXZ>J%j2cQ+v8=$+u&8iH{jL9 z*Wk4R59h3h`}=x^b!#ryr)d-Yjn09)`-=N6TDR`vw|L!t;(54!ka%u*rq>xSM|ew}cjxW9g~;WNd3=UZ{#`N{ALh9_i~D{)ao?|C zcs;|LiTi$kao?Y4_(H?K68HVR;=X^*@WieE_xhv~_x-%$zF*$(x`sCu_x*n2zW;&Y zGsOL$16n2SJKu@>*F7fgum8vJhuZw_b;}{{`(?y^|5d~L7(P;b|MckhgXW3*{tm-W z8y?s8f8SSfasTI_bBX)ceM;P4UrOBnd&8=Tr%WFG%6c8~F5{xFQ(eUU>kbq5f8IP^ z-2Zv=N#g#`n}00szYZ=C_g@D$iTl^xA?{!IfVh9%inyP%j<`P$?Zy2(J;ePy{l)z}BgFkY?~D6+7K{7y z^R>92bDQ{%#L;^GCGI=_i2GkRyZ6o5eQA?7`t{6w;=WTtd|6`mNii<2uDHLxv*9BR zA206j_fzp{o1@?F-XiW_caONg-{a!T)`-yAyJm@2^h;*Smh%2crJfz+Hbiog3my@OwJ^cTU{(SMa3bf8uFy_iEuhnS$%x zJPVm8U*N7^=!fWj^NZ)li;H)_ONqaUmkT_6-5R*g`MO-6CY`$?F0Mo1ZqAAHyNJJs z_Ypsc_ZQ!Vj}R}nC0d7f#7p4s<9`0f+uR*9ZbopuyWg73zbJ4w|HpK`6rX{w7vGF; z65oXHz;&L3!S&%he+2I4xk%@t_<8)g(Z8qTf9Esorw`oqAKDtNXGZb#c(%a9&SQbQ zPHC>sCteCKE#4F_Fa8Ez4fpF-jD371xZceZ&px&@uJ3O6)S%<$AI|H3Bt8_MC7sI5 zb4vUL{7=JEclvK%-0OZp{{ivO@eH_M2j72EuHVh|PmAxw%SxvYb5=FHsdWCP(^C8@ z-a|V6c{{-HY0}BMEjouEi)Y3^myVx*nc=&o^BkR@#LMGHjm{av@97-7k8SBB6>p6{ zg!_FQ#`-^OcuDDur&C(|UA&U`O1zr*3jB3k=V@wqAL$&U(_j1-e2meVX!s)OB>OQs z4_}HW!M`;+d*u53T)$uZN&J|2ZTy6IE&MO>UidZf9(Y`r=$!a;Gur?)n1Jw~2921@0&-*FPiv1YR?6*QrXUZs3l}a(zqj8hD?;U8fG6 zp@BQ9&-F9Jo8e0XPjTn^>(RHHaa#g+oerFX+&yQmu>NPn|HA*0 z{xJIg8vbDSXkXl4UH_3C(fc=(cxL<&-0!3BKWX^$(s`dwRq^-mdPb*taJ^ffGGmQ-@)hYGl9E)Z#w72d*Odczdh$Ub&uHhZ#Dk8!Hl>+w;k`j^CEYCV zi1!umj}H{@gAWTloHHKR`xg5x^N=ra z*FQrizxYYKxX~{kTp#vd4BYh}+Z(NaE%8V2dPcu_aDCYC9JuQ@qtjiyG2YMUk1%|e zbf(jpD?SxpVsySSe6Msi(K#Ug9sZlqId6E1w_?xF1v;t4&*2&IJ4<=@>xe%;j|A7d z^9)DK)MS1R33a)qkxcl5+;^JNo-1Y0wc~!hN-dy_r`P0Gh zcMbp0@Rj2JxxK;gW4M3+4q(m`;=S?n;ydt5;y>WmaJO3S>%O1o{@&5PdvC=$XEwYz z?&r+>Q?!qz#53X*#Vg`f#4F&h;yTY8hWC|D2RZ}A-^527o%ao2BArQemWzLYZ!|hP z4F6p^>*<^mUyENhI_diS?|sZ>_%pcQ$8+?{h@ZtP8=YE)caTon{n0t;BAy2CV|0cZ z{;_n5(U~P)1YaPXj-2za4Bsi8`gHb+*Ts)Yrx*P*h9`VG+AqKU1L!0X?}w)rpN&5t zJ`2x+`}dKbC%56HrL&DrdGRfHHStS$4e^WkYvNfCMCYNtcxJpguJd;=e7JPV(-|#Z z7M~#A5}zdA9RFB+96n1t9-oK%`TKGn))@YS;lE0MIsH@OU*Z>y&JDxU_KiJ?f;b=Ych_Aq(7C(a*5kHBS#&w>`hBueaqer57T8rnz zyBM9fgX`V>_UC@b2k!2-3Y`zcE8#Q5yWpRQcfjZ4dcVsJ-!7fybaso+!;cxAvxX<@ zANzi+_;a+L_lZ})GvI#ysXS+L2G_gwT*G=63f!${J37V0Tj6EJ=i|?b&%>*WAHrV} zKY-T>Je;!;uJ_g2xV~H9?!FTJ60KV=@i=^-ctw1ucm;f{co%%Ucqe>f;Ng8u#r=JK z%ziBm-2M9bba%m>A8P|IdB-wG9Jf1g_j%s$`w_#h;_h_0^_k3^H^e96i3h|!m;9Wm z4Sxdn{jGEgh;PJ8h(CNZ+OKEDGvnoPUAOw;3s}zdA)SMCUKZbv*B4K4JUSgTF@mURXRG{;bidWOyU#yh5j`_%nDrqto5+G1BSz zTQvVT@$UF^qcg|wjnes&&JW^K@!dw}h~fVjo@B`X-p4$K7c~4O!|UPhRov&FxRmZM zcm6$6fxFKk>rX`M*-d;c-dFrje4zLRd=#$dc7oxHrIX=gG|w{e2k|vV=ZD~WcfSR= z-=l%M`z=G~H}PljbK))WKgFBlH*me*L_`1g{$|1b`*9+j9O9$#r;JWS3! zzAl~{Z!VqRc+PYPu6OI%k@f5!xLePc=nNLGj=v*54u4lX9-l0}2A?Lr8lM?>IOpfM z-xq&h%Z%&S1@7+aclsN}PvG0d^PY~@dAE2T{IK|I_)+mX_=&*7`#OXB`}&>zN-*rd z^X9&P`PyA@=SQl*pSffH-`A8QaQFR-U!S~&SHS(b?Z=#z#NWniNypDw-|$}2Sw!b; z@p<@A@g%=T>pxOF4j+r_y3G;4%6cv_e24U3qQ6JH27W}mH-1dK7k&ZvbNYF%8~)(% zXy5(5d`c&i_)Pp!T>DQMUQIgN>C_P4hBq`itqdO^o$GXlh+o4;8=Wral78{Sqr6X|pi ze;HL*ljZ9JuaFUc;*x{<7iS4DV<7G{a}(?(W>@pM`w>TphUkoc6-` zXg$}7SH-u8zlCoX?}_inb$yN-ep@;p(Ya@I?7mFLQ{vixD7fC;?@{je$-v$HeoyCV z@r`&%@r!tA@$+~kT<3Yo@Yd3K_(HV)Z;GeKdmEi0hJP%bMRaC~FTfW|Cm+w5Rl)Uc zJ#(aTcX;RD{~EYk&x3S!itob@if6tU-S5xh8Szu%Rq(UomGFy!hjU)X{l577y62t$ z&Q*AQ>cHK7b*BG-czZmH_!2ya_#*sq@niUt;=kYp0}tmchWq;}z<#|LxcmNPzq{bh zk9vWZx?}$LU)~JdegERur-$M3xLZB9KFR)!_VGROB=~gc_&MhozEL`*==>mF7~d^E z8~;gs27VaVb-OD5EbAFJCORkndhc0rzYa+*MeFdecp^Nncmez=@u%=oxW4Z5hBuW? zT{J zbY7&t)9~M=)0NIS@y_^F@elDE;*;=u;$!#S&y&*dT)00E>*zc#z6LKS{ySb&{1jeB zJl*AJzbc5Q#b3bvbHLAE$M6o)DM6=;crm<>cw@Z3ctd=I_$d4x@e%kq+|U0q=ixKM z7a9J8^cT|qQTz-1C!=%B@axh!Mdx4fy?By$W6zbpuQZ0|!Tq^fb|u>PC&ZWHC5%o5 z!y8NIES+ZJhwwLzP7lN1H++WS>kQv&_*uiR;BMXA=by%W{!B40T7SQupI(jDGqw0k zJcIadJd5~FJQuF#HoxI7NaqHfn&N-sb&XE5;Cgqz@!aoQfxFLL4_}M!x3741e3*C@ ze3W=4{5@RncbehLq|=kmO7Zsi_eN)z;TNRy7oESv|HN-gr!&u)+1*Z?rSOi#^MX{ z*5X(2H^u+LyNf?^JzBT7#2?1{1s>klVBFtV5BBTBz}=q*e2qU3I6LrX@BE}3cmAIH zu`+P?{fl3p4Tc}V{d1!#a~>0~jQ=4WKj&4$A9(M-^XAsS51og^yW=^;cjAwVZ^0kO zb=@k64`w~98{S6xS#Cu8*j_vn-b4I(ytnvs_z2w3>E{`5_(JJ)q_b4KJ-*uLd~f&( z=}e~cyZA)>Z=;iNLbShnUzu@#t~SugF1`-WZFDLdUd!+f(mzkXi})XSAEPtW@R`y{ ze=|BKpNT(!FElzU4c{l7QgjZAm&AXS&S=j0Il~jbANzi6N+-Ga8+bb0@9zZq*$gi# zoso1(iVw#th%dq`i7&uw;yO=V!#hi7Kb`L4`|y6^xA8&Z|Kg*?^ZpZ^hj{Tk_#|BC zpK16i>C~XJM!Y({S-d;GO}s0s+z}@GBMz^B%tS{aGZ!Z20-dcPV-Wk{P z)5q{h(pgGps`z63Go!O8xZd4wS?+gJ;O>48(b*z?0N*2i&+TY^_KPRLkKua1XAQq+ zQtbP&Af2S*dGPeO_OlyaN;>oDlog+czaX8jc+S)bu6OI%pY?1RxLePCblQsV!n=w; z6c>H4?kS!gA0S>4A0l1>9~pQ!=Xl(&o4>EA#`SXoclXtv{(SK^_%iVY_)78l_4vY8{%rbd#Ao4~jm~bvFG^=Soy+3e@PCa?(kZd;Q-2;F!TtO3 zDxJr~FXIKIvzv2X((qc+$$C$8ZtI9=#@~?6Vft+iA0(aU=nNAtkH?F*#orTejZek> zIrsB?X85<#8AoTmcs#yU{40Ei_;UP!_;2_T@#FYOT<5=Nc=D;S@Au@1qWwxKo)mvj zya1j_{3-kq@p|}U;;-XR;C}vNoQHCTS2Mhs^!w9qCEgeBWORBPK3+Nt=zJjlDL%vK z%r$(Sbn+&S_GP1Z9(=daIb!$?>AXtkmUs<3>9pAAiQkv|4KHALNyFm$C!S7i@u7GVqtnjt5zbZ<@m=B{;Xef) z&UqB~`{M8GjB)+dz}Gd;FdmvF9pfvS^)?il@NSh(Cj;6EA^h3_QHAY`DL# z#Ozm*z}-JTcG+EU=STU#%iOW75y#aI-2MKGU!R7C_rTpx<3pw6=ZrUe zzI5KBvq*dlzEb>me6{$m_cqtnFje$rV?XOQ?pe4NplV)&QRIZWp(@q_ppqjTKwKMYU) zaqK=Oxi{L!l;Vl-2XWn(9ELwDohRv(6VHcNH9EBo?3E9 zH=UW{z3?xj^9cPFhVPKh$8`3H&%lp}Z^n;_Z^F;ue!u)YmkqyfX6$*mNGFZ>c|4=| zLn)&3lT|!Do?E;;o>#mqUI^FupEbOWbXwA>E8ZM$Dn15pDLxwSDE<}RReU+#3-|Nq z;XI5ne4^otr2jMhFU1eztBub0h98wq^82EF{7w8G{G8FbW_apPV$W4wIuD4yhUdU_ z-SQe-`Qfe5!QD(fLSxIKIH>d}a7P>7+~*t>;1U6!=N$RN^^vF}U8X=TX)( z!K~PQFG?q|ctJdscn>_ScsD$=_@{Vw@tOFefroQGiTi!=_f^cezCz&cocu_?lK2mJ zP4U#Jqjjz=o)T{${w)56_%nEmz{C4$i~IX}f&Cg7xcmMk?cHxm;^M{zUiQvU^54IF z6u7(8ug^TgH{fpf-TE|R&hN#W;Jc;c=R9Kg4e7j3=azUpp7gWWb9fd{A$|f+gX_BG z6@Q)eENu8o(l44O+V@w)3*!yN8{tKc}DPEyF*M&PX~RiVw#>H989n-zuG@ zbasd@#(yz7zZ;%#cI-a>Oecx>VLTyzK`5{B22ezN~ zBmN}*fzkQM@NcA3ht68@+V~IBd4qGl$M8R-^ERD};=S>k(rH6K@tkOX{eF4Riu>ou zCv+Yb{}|6Jz6F0ud^27Q*Vip)`0LWSM5lrHMZAT0#Tu|9ek|3_oG`E$JVnpKz``H}Dj= zzHWNMpOjA02cms^T0Ajc(&#*Aczx;keq(Xpf79snFnp5XGYwxSK7jwu(N@EM$Nl^C zDc0ef_!Ib5qZ2nT_Br5RHzV%*uh7XV{xY81=oB!#x^()`c}e^&yqNJotH1 z8~zyX&qKoW(Rs)x9)}kee;h9^{uo|Pyf$7@ycYf9FxvOq;_2~Z zU&Nj(e_v@0&x`wW<@-;G`~EXVr=sCaq*IzXTZos!I~bi_hL4j@b2{&fH^rwLojHbY zl+I{6KZuXS_eiHQ=jvy}Z%Stgo!jDz@MH^O_t*E+8lDgL`+Ja1e)0Wyaide-@Ve4T z@KAI<8;aki-@@n&6tBs;jW&Fa^z-n#^Tl)H%Z$z%!;eU(2AyN#)$ub%=W=kp`}$ab zuaAiqM*HaZr8}Ku;$89kasRw(!1`o1ypVLJ(kUkXAzofOE$F{scr)p2pwmix9o|X& zEZ$B0cf2p|@7K>W-0&IFNt+=$ho6Y2!RL#Yz!!-Z!&izo!&i$p!8hSL|4zftNM{6{ z^WwwsYvK#>o8n*Ki5A74w?lX`@dJ2D+|S>Z^N`c1-d zKzuTu1^4^z=g%En@1A3gd5#qg+l&LH}I z4S!!c_h*XE=VbBJ_)PKQ_-Eop@rAfwPe0E}!*@xi5uJVF4e(#YhvL7A561rxUxZ&2 zUw~i7b^d#nMCVF93+}(J?W2=Jd=LJ(_`mp*;y3Z4;(0Ph`&CjrH(mz!a}MV`)Hb}K z;XR~ZoqlieYWQHIGsf^)(&~m%v zo%_Yt;F)m0FTVe%;pL?BJDrN+r|=hz&TGN-?l~6EbF5Y1?m3nwOLVTA$8o=3ex5%JPxNK%dH9@8 zGV!_i{o=dv^x`}5Y~r`@oZ|oB`EZ@Th~Y0v=aH<@d8j4+FkVl*D&9!EGTutO8{SU5 z3*HI$^MA^D7;1RD;d7)vnf`q7iTE<3v&QiK(pgLAu=uz538Qnt@TALP&(&!RpPa(boPlx;S z;OEI^cv0zGr&Ch=8eTy>NA~FaR1(jI*A%aY*A}mWH^6oNmWKD2PDeU}#oOcWh<|{; zD?S0AEWQq(CcXxriTn9CavoL~zRvJN(mzH27x5GLX`^$=@OxLpo~u+jqJ2yyejol2 zuJ`q@;U%O~gwC_#h48A<*}}TjHoTK`>eJ~aUKj6cbcP%LsdNU=nIqm0Uu<+%1=qXh z*hQXWTLX8`u~~F>h<}0~kp6zw=U2mTN@ok5+v1z?d%ud#gWum1^wSys1nz#8oBtx6 z0^;ZK65}qN8)2~oqv+y zi>0%O&NA@@__yNw@b%(*@U7wraz^XFL;N<^@5TN6XE+aM48Lr6%9XLtncTeY{o;?} znQ(pGM-49}ooaN-idVs_7@e05Z!4XSbUKK)$NNa<7V9?D@R`z?K<6{@@%Tccv(oUN zq_c|7A@P;?Z${^QaJ_qu<#^ETP+Z)tz}<7;S2_v5j@|cTcnaL_Z;E7hGjZt+e^NU4 zJ`$bVr^S=urKFRA{_}=6l+M$1nuzDe+ls%2cMz|G_r(4E`gsN#K3O{b=u8uT8~;pv z7Cuk>6MU)oPJD&N2C3{BAyw)C0-d%xGMI%J&z~F z{rp)u4_OS)ZFm{!ze&G>cw77hqf^K5_R@KePG|9PcyFUK#PF%o`I^p0;$PukNGB)j zw!-k8(m76NulP~?XQOl4@WkK5?r-v3(K$&jo)k}u`+fKGX9=!%&#{_3$DRn>J;w^r zDIoq7UPAi$S)U4q*OShxbQ+1jg13=QDf(RvA1$4}bmGPP;FH8Z#ixqT#Ao4tJ^efj z4gX#`Tj^{S{{i1C{uh2g{7?M2c(&Zpc{nMa1;2pn{MQXnyE^u~RiN{rcsV?~cpLl? z@mBZ~;uG)!;^XlmxSziq=b@_MwGDq$`YY*o5?_J8WpoA`K1Djm=*$rR1)pPdmKeT8 zI>{c3_I#vzaCiN;Tz@if_wThk&Gi=pch_&``ebXO z^W$H4AO5iT&v+5>i};J;$%;lV+%j;t!V{xykLxWy1OE_rQ@L~4pK~}XaJSC>9DWhF zTjyN)qIF&@{t&)AaM$tYaDCvevxn<9iEqTW2JSlk9PSU?bp|~V&2w118-6Ts*YW4@ zT;Q%#^2w<4r}(4z)xcfHpTmS}W1kPjpNcw3#Pi}Q@H>gS=kTAx(LNRzPs6^yBwiYS zGw|@-_6^)^d3COz6u3LLYoeEpn;E#f{#CC3TD%#)N4y<=I&gOmhjZTk5s$~Stov`> z?tbp#96lDfTW5a`^9Szs>lEu*Nc;d^JaE_X=kU3}UFZG$(SB7HAC6ZK+;#jpd_8d2 zsaPQDG!QR_HwoNz{5fnNxa<7G^_|5};ynU)9e)l71@1aGo{r`jCjJK=kKeiU?m3*n zIh<_xa_LMh81=sv{}5j*o!0b^1RkE-^MSh~(v$0xumA7)>CWxMJO9u9cpz|h{XnkI zCq5Q`PW%J>HSr~QC-Lv`k%7B&-jnk@O}sz88u!oJ9GvsbfxCV5=X_`2ZXb8Co_odD z;0FVD9e>VG2JSjv6pHrijQAA%Lg23B&-u;3U1wzBsB>GqC!T1-fA4G8@#j2E;I7lL zNYqIuUK`ICxa;_Ho-6RX_f<6NJT5*3FNohs+&$;X*vC?azb>7(ibeef;yv-E(wS4} z&I{f7(J%1uoW}?5j>rnGpBK10=N(<-&W|qxch|4u`fcLd@sr{|;Wxxj;}3lI-}}q; zZ{j7yGq7$g19#`Y73aLSct?B+?$3XG-RN(87P#AAfBqK)?)G;l>%2sKD!w9c*C~86 z>Td|#b#9l4_VIi1zwm8=hv)4;;I6Z(WYjq#J{Uh9xa;`ye?D;6$@Og1xg`EDel2j< z$vY+b+1)Qx_AR`K5JqIsSY-!d+G-70~bx-S0{9toR?&Daifa5clhlZd2_0dMDQx2t0f) zl?&Xh=TWY&AGmui-TlK)cm7X{z}@xdxW1qG6?}Z)?zxftfjfV>^J8}4uCwm`Xdf5j z{<(3K^R_;4cTS#XeKv`g$9EY0gNFZOc#`j9*VE6L%kcb$zks`%n|}av))eoD*EKrL zg6rM;D@Sv;dU0`Y1@8KD==2r;3?C-G8y_XU9e)qMlfL`D^Xo9p@HK}2VEA#|uTRdh zyf4J>!!H}1TZU)e9POj;r!E)uvx}$1^Wpw}FL6GL1lPOuZ_N5XAGllpVsxsC7r|c^ zZ-BolUJq}K>pX3O>)kvv{CNo6&GR0ezT*AyVd8DeN9!|6yfr=n*LkJ~*SmRkFwerk z-8}EoSt>pj|JLYlHvG7BzNT|hd^vu>=v+5E;}6mK@%Ouse}3Z;!^`6Sy#3AVJ|}(^ zuP&aoLbU!biD$;^idVoJikHJ%;(q?s%-_lIccjyX&b#8R@X6w1@oD1k;4^VQ&t~RX zA@1kgE$+V#9x?m|?$>`AuX{^;F`jfw?Ed=x{f0k<`~D?51;x+f&lsJGhQA@5C!UMW zLv!)GczfxT3l~g!PaQs{XVY8?-f6XrxHJlKO~-^VzghG#UI2U#dZFt46h`eXX#WEe+I8D z-W-2Tyea;Mcs$-*d<@~RG`yQybRvU=nOJ^ zx^&*AGgG`b{<(DS=lg|ahW{v?kLm0ZpMf8dPA2-N48JX%O?2-0F?Qd-!|xM6kEap; z1J8*2^Wf)s#PDaNlfF`P9?FP6fL9hTg})$P5`RU!CH}g2bG!+z^S3j6h;&BN86iFr zA1A&9e_wnNK3)80e5Uwed^Yaq&(3-H#_&ysAC>++m7{(6O*{d9&gfh-JoWb2^Y#Rt z2gLK>S#Z6t+=iEyPHQ^l#arUlf{yzR^cvqEwG-cw(oJyZ_h}6uFa3D>ABc~^Ka$Ra z{P(Qq1=qXpJJ#^)jjIB8-*>E{vqpR=zFGXaD$zb}6EB7D!`)rFb@1~X4X$_dY zpZ;gyZl1Yxu84nv-x5z(HJT^kj@a{%3Qroid))%OZkoW|>vrb)bmEQitoWTvWA5v* z;Ck0@Ouu;Gu3w>AG-oOCGI&Mtv3M2nQFtx!ZFn8=&3Gg6sgUGw~3d-_lXa{ z4~qB3f5rX%`uWcpe(%oM^R}H%D)DW223-3&4KE{|%XBJ;U&5;!omUO-DxHkgqw~;H z{2_dx(HU*{9O=AFXTEqDe3^K@7o&Mria(C87k>rcB>ob<1K0IGX!up>#M8MUJ_b*; zD>@I_Pi1&+-2E(fo=?!pE4~CTB!0bSv_8eePvB*7ou{hdO{BB)rKsORd^_Gj{3_l> z{4(AT_w&@^`7pxpS<=Z?E1GAncouw#bY7wVjp2KxQ-RI_@pAZY(rH5fyx}Q!$37og z(Mc`d0?&y1_3`~j3@T{mY(=FAkh zn=@VAXx*}jr@%C&X0f2l&Bx| z?-MVAr^j`Fvm5@5bh^?hBiz{iP~!QU5u7N3Fp{rZmk zooo0e=`^FWMZ5{VM|=dnUwjyT9QX75$UJ`-p8P=U^I;X8l;WS`58>K>*znTQ8T>}H z{^iBn;nlJQ<9ryF>=6;(R-d{SO(HSiMDL%&NOf>vU=^Ul=mG}?%I`J({ zqx;<`z8T+v`}^I;{T?*@nshGGxhZ}gPjoQ$JUrMenkSifI{bcI=gDk%G3nHx^Ne^2 z{5kQG&7*lLix?XG;Pc7Fz}@GQTXZgqU&a3wAK4<>uLOr;&sAUi zUR>u%7hLb=DbOJLz93iNZk`M+qyFRKY4L*MgYlx`eeh=jcduKP*L^N<_qvz4zOwjn z{3ZO(rFVZn!mo3^;Ck2ZNWWd+uK!)D=)O9Nuf=z-;?})#Qea+-;Y=kxZBzL`R}&x4BY*GMA_)r#GMK}y#7zzUFOzv2J3k% z@Vo2DoCy!dp2M|x3h@MOqV-HIev|7n;QoI7{5cITBb^%bD~MOes~eqH4eu(Qu5@~e zcg6=AozaHRkqf^1~deTYLF1p`F;uq<+5^wuvbbUMV26#7I@3)`f zA4n%j`>6k+cq050@qGAf@yGF{xSuB%&xh59ACk_?bbb+k2|q2JJoGOae(%q*&yAjR zQi*rRGva>!BJ>|IysUJl(s@q&L;OXf^P1t^q_d7rFYz__K=D)fQ1KIZJnrwe9QQlf z@a59EuS0Zxz81e1-yr@p{=Im9d>8KLsm?ry4Zkj(hIIZFuZ<`DCHDE?`}gDS@4Bx? zNBMe`GjR8OI7TP8_)a{(_}Gro`V2Y(j#_xl?6TgmWd(pgHUmH1-3v(f2e_$29^ zpfgqcCw!K8|4z~U&K2*AFU9@+*5iIx8-7SSpVIk7d?tQcd<*`E_-6bHuJhbBJoC}m z=gB{GvWuU`^N4@YIa;45#3$fIaX(K})~BrD4W#o8oj1h4#@k6}INt|#H+-ygj?)=0 zeiWY~o~%oBzca*>;B&pXu4*SmRYGEeejvFGPFos{A~;}42w=^CwPCh-h-cHGa?mGvoZc=@2? z=Iqa$H3E0*R)_w};Gu!a*q?5Q?w9cEw z@4eDGCUK1}R{u^Fa{5W1kJXQB- zeX5J!i`T(*e;XU#M>st zS~?H*jQW3wr^By^KZ9QvFM%iiHTL`r=Q)tt@F#G8ewxxLApQnkLOP@9S1`PubcWMu zBt8^xBb|x#yBhwkbmr5UAU+SDZgl1tzEL{6==>nQ1K%xv4gX2}3Vsat=jRjd_pIT` zev9_k?^l*y(fPSgJQJQ?yd0iUybS&b?&n#^JWm>4RXXkHyeQrbf6eGLF}$C2_R|?8 zz7-!W-uSI(ed5I%;*)WIzbm-kPYhoxogs9-6CZ?cH#!Flzbc)@bZ&^x#_u^1dmbL^ z9o=tI@m%=*xWC`8x!=r&7njZpbV`X=#Vd+;#;b^T#B1R?PkqCCN@qHqKH?MbA>!%! zMC&s`JS{#R_w%f0eWn_|QaUB+tQIehZ!45AUw&* z*z@x_ey{jk{6XBW&nDI(uUEe5LhPYgThu7!F-OsvvZduP#fxGog**^-E6;F;= z5wC(*7q5WV!TtUE`5PPlwsbzAGeCR-KFa7!FnqCeR?%4|z7k(!bbc`Wlyr{KIV=7P ze#PkAHayGe*ymV^0nvWt5KoFfE?xnDQoI~qRQyf6qG!S#N>F?_Fd7STB%z5qWiz7Ibsz6ZaA`*~8N zasTVizX#FqjK9a8pIdaYivNS>#(h5({Q`zpmd+!CqV;@1{9*i6>13w=hT(msQ<=^{ z@#pc;M(2IQmq_PLI?Kh|;%mgm;Ty!`@gH%&o{w?A`whP$o#k|{i+_nHJQKUWhw&uh z2k|txpQjM>WHP*%bP^1X_V*d_+w?0Mof^UQ?(0#G#?j}N#(}%9M|tQs6MqzcQ@kyCraUzjNtq7oUyq7vGK_7T<=S z#Qpug$o*anuD|>Fig^;8jXgh?=_D4vgr^eEG$c9?X~i?(nQ=c)J?6<3T<_*t!#pJe zck5GzPHFLH@ygQo_ggEt-t{liZy31iH>cA?yeZyRd?emMd^r9VekUF0PWT$W4;pOv zROu|F^O5)$_+0UQ_!r`P@a5wF;$Ms3#5du7e!pKkgX`UT=6EA|{~izAt!KWW(Rny2 z{s?|S{9XJn@e%kxxXzR0kN?iCno24_2&NlHW_&)LP@Pp#( z@n6L+;-|#Vr?&V9cq8e=({F9~0O_ozGemq9K1TcmK2H2s z{6pNoU;I3u8vc!R?i(HL*IMy=@gKws;XjH$jsGOx5I-bdAO8*4`Oh1k^kQ^Q{COBe zCx!R`Je~MlJcIab{9*CEcrNkXcwXGkKY{a5#_%eJHCB|FLHr|pr_niN_}|jmO6MQ(@A1Tc#y(H{zN9w%3EZEnWMiWB zDIlH*FJW{l7~V)a<>@pPFN?R6&Q#7-cf-d>rzM?n;?41?(wRm7GsC}?&S*O8#Yf^> z#h2ha#24WQaQ{B?^ZaV~P3at@b6b2rp6pWWb0fjnXn*e$zs>dO#h>8%jN*CmoVd>a zgy9vX^AepZ;x+JE;yv*?;@$B^;xqB4;veCya6kV%&coY=4>Np*^uMS7iTFl*zR_83 z_;%@Bp|e~39Ddm7oHYEFbn3=O=Op1@vFGPCJTaDN{BJn0R8QaWwvJT2ZDFDX6_FD)LAR}%jQ zuO|LAUK`i>8yen2I>+hs7C(v)7EeAdTL0nVN%42Z3*!^S3*wV;KmU5p!ve#TpJQ~E7`|OPUFhrpvCO8hsxtoU)f3a<0KYegIjpCo-+r{_byTy0m`*A=2KF-5A!><{h=34A| zyG}oy_%%E$uCM!;;bo+gb3(N56~wdQFBqLVhPRha13I0>>*4*3&IrS2NoO#fx#9!y zB}V5P!w*VlE}fsnXXB@g&Y!{ccYi;qN%Z?c3I2}V-yL)ki~oqH!u|gK!nw*|cme5L zrBhh^GG0bHr|DNQ{0-@3c|STo&BZg}?ZqqLoyE)Hy>WlPex4zQPnAw2wqCh4(c&!wsJyosZ~zB0e2oB%OTx zd&|Eze7|%y(K#&s9ezUm5BzuWGx%S)-^WtS^KWpydoI=Fxs>Wg>^XUGVsx(3il@Uf z!S!zb8O+}@aQA&~V>)fc8{%E1-1~z!%G|9!0?ua560b8ZvH=+ zbGY~ge4Npl5?t@rC!Y10AGqsh{V-bpMdAr)EX`JXqusdS1>i`KuTcoDpdbo~4AZNuM} zP6s-Z#T(!=jm~_-e-t0Y^J;(4cjs*l=k52v-FYiFJ-Xj>;$`rwMnCS~*nRh}n-TZ> z+nP>R@s@ZV>Ab`I1%vC|{1=(OLf~%xPw7+=AB)!%A3h_x-`e6s@rL-F^xc0BZ94O` z3a)qaI8b z>mKEG@3|G7Pk#=x&5Z6VsdySZ4X*c$xg$x1MX5bB*{ae6#pJ_%`vY_&(gZj3-CAb}Xt}5dx zaP6lzyr6VC&?zeZCSKO)R5iS%bl#)WR(u@Z&FJ(qe2R3|(3v5=5}zZUVpg=C^Tm_n z%fyS|E5)D2*WH9LOd(p8Ta!v;`z|W@JZ6CL}#jaMSPZYn$TZp z`1jIjM`x>e8~i8fbfACC@LSS(mrlY2?!U4a7w7kVEPfyE*T?rCG`x^>meDCDz7#Jj zeh7a~`~dzU?&s;v{k~>+H|fO9iOxeW@mur-~HS|=Qr_z_&M>@_@Ck@@te56-*Mb;;)K!pQO}9{bCq&# zwEnrpQ{V-RPD#UGl}=GQ^~4L{&BO=bt;GA`opFC(6S&_#hEI~tEIL!gKfz~-Z^h?| z|9~&Sb)IhwKOmhebdHE$z)y;oofqxb8S&EiW!%p*mG!x0c;#X_~*FJvn;sY%~P{g^!>u7z}-A^=xh=H6yGEMJHB811bzhf z^DJY1t{NVf=)d#h=Iqa$DFb(NJ~BUAxBJDjre5l_zm&b@mu1r z;z<+#cTU`S7=)(~?}w+ub$_!NUQ#-%>68{Wc7e9vg5dUOBw4S}i zXW)Zzz27m0&yvnzI&;Mj;!DI6ER5z^E`FQq*W-SkA9xOIGyIHn9;bg^{4xBRbhgn? zkRRCD85@f>7wZT{3MYAeLg%v=RWbg z_=C9ia|GABuSXa8dh~SQ?)mdFog(5j@Y3R=@bcm#@E34D&%fMn9mBgwXCa*);$Pqc zjLxXwdUwA$T1TG~rUdTpcQ2h8;=A!V;y3X5;(z1Iaeu!l`E%B5gX`~pZegBXfxCIK zFOJU7KJl#hFX9#PU&Slnf8c(eOw4mNxZceZ&pauT#h$k|bW)4A!ZYH&@9+1K;Ck0z zLqC7u?tbIx6cQhUmlFRHFDt$TuZH`1I`TRE6~o(0=MbIF;s@~F;t7^S`_)hUHrEdq z&%^bj#dG5maX-J`uaAT4-FjYRJ(mRT*7G$w%f(;B*NE@NH;8Y>x8XX^Pr>zWp2lsW z_t$TMyLnz&8m-T1@oM;=;y>b7#5dx%#EX9!^%EwKJ-1KcNpU}a9?pMm!wVQ*UHVJu zza+j8uWNLg89qQd7wHTU{{tUmbS4_UR62Q=MeDXgJP*EBIt5s_Er$Opof>pbiC4!j zNv8z;e+*A|Z|wedrISItGybsnhj=dWN%&K^KPP^k;)d6h&N@1^#n<2s#DB-%5I=>t z5l^=~+OPKFY4IMo&OgBL$!_&o83_)_sv_zLk6_&2zpzclAzm*IyE zzassG^skG5fhSB6ohyCa`wV{+_n)^9(8(jd7k}F5JY)FF(n-G}+V@w*AHbU#o%V*0 zl1^zlW5rA26OGQthJP!ax9F@F?~ZRZI{OU2B%P&nu8J?lZ%gNS&Q;O%gKp8Y)C4Id+&7wC)=uZn*t z-UXj7-U**AJ`Mj|dMdp-ZL3q2>0i(B>iII#qqL6r>fyir1J)y7UGTY4o0V!;qOXkIGqXNL-CJ| z&gX`2md*k?+r;PN`;5*}!>>zcADw^2_uxrV{qOxvgS&ma`+X3fld}ZwJ}3W6Cx`e= z{Bh|w8z)7UVJTnO*)rZp9HD@+jsZByl2Gy`}Z`Rtl}r}Jkt4>enG>l zN+;#2Xn$W6Pl3NGUKp<@UJ!4FyXTm@FF#Lv!-qZ)!nAib;m(g_X=2Zt z_q2xR!~Hp|LO;KFCA_%NDQ|dP>2##iP`o|f(&%(De1vp-{~dAPpKNqKF?_9bCNbxC z;uG*6jn00`>8y2{GzU`nhO8iIs zJ)=J@xZd>_(q9m`>;Fw>iTG7~mC@fAT<`iv>F*2N^>eI`&h0_*Z1}H6|D558AB^4i z%5;*8KaZ!w?~HPH--odN*$gi#osM)$inqrrh<|`r5}$zA#C4v!hIf|Ew{*ITe}nfE zKZOqxKY@=HPrD)7uXyn^_#|BCpK16i=@g^0M!X2VS-cUxO}qiVPkbbPP<%N43-0G1 z$$7YJ_$|X9dMNfBE})-Td_MjtuCM!);m=FwCpuNd_u?-bod$+?lg@2Ay~O{;2TErg z>-K@+9~r({`j34Vows%3x$rGU=dk!JzmMXT`R6)r8J;;q>^{E4>t+|Pf#<>fKKgz^ z!>dWBJDnQhUGdk9P7}lXO6Nm51H~udqoh-l^_gJ!eCe#Avq*e3zDhc;)8A?g804o-?-l|KTpDp(Y~u^!u{vTr|D!9&yPPQUI))7UK=kgJ^(K+ z-VZN_>zvgLZzi2tbXtjjf_D<%f_D?&jQ174iVqaOj1R;8{0%t|Qv-K9QIhY=J~MoS z^fPaY_WgVDjQBR`)S&;X_^bH2pyNKzq-hs@KYJ^1_j#rQ{e+ofpBrWH6u7%zcZKg~ z5pTom78dV}mo~f}?$75iUbm6>AiR~)>1_B|>8z(SUi@2piqV;6_&VwQOJ}3_O?t-^%pmgTaDJni2FJpA7 z82*NIe80K4?{_vjeGH!@o!!hiReU=>%jhgLe4BJq{}7$4o#H9*gGT2!!{f5X?r#-3 ziNq`6DRIBQ@tmuN49_o}_H+t~x5G)rS1W%)k6W8m)l^q=W;6+eu>E&a8u&oINMODFO6=={tSzX$(9IzP}~VfYT|JV9rV zcwYR7_{;b)@t5#3xZf{7&t=2!%Nctf-lCI6yeFPf{3AT8_;ftC_*Oix_z!p?T<3q* z@H*1@lTKan3wTrU3_GIzZ7KdB-ch^)-c`ID-V68hZ|6LWF?^!oi=^L*{+Hq{@YP1= zd&7@PXDprH#NWZs8J%l}r+y^%T>1V3;=Z2)*LBNlcqQqqV9sjdOYz!9r=j7!rE{51 zKkW&o68?vDj?lkqc&bNZ_qQjV zwBp_I%;MAW?BY}LJh(p(ex8DcSC!62IxmWEz+V+Vhu0H7i#HR`uq)cHR^kuhop7DM zx8d(e=UF-v#h<}H5^sioD&7SDLVPT~So|G)Iqv5_&Ux5s_&&ogNPj8)zr+{g{}`Pl zxuWx?^JK&Q=h#DZa*7|o^BJ8YhF6!4@4qDO`wfjwE5nCKC*khsT#XQq!^at&DTaR~ zoji2D5zmcpG&(zi>)q$Ej(i?F8o2vB_9C6%#9zSAN&oEs(RJT(KbHUh$1i)2vMV#P zMU+uwW$#(`$W}Hfdyj0%PMO(62oa)e$rdughY%&(&v~7X(J5kh4e8vcQ%C$? zys^<~V|ah*WIPg{lfmNY@$u3rz@KlNZumOsl&7;%ybQj>=Toq-13K(8dI_K$B6+ef+E1lBxTNwVabmAQi?{7cxIQVe! zeE4YbJoseXU9X#Gw&CAOr!JlE#B1Z*#rxp9#6QLliZ8@}6`zm)hU@&74Ufthc^>xC zi7mbxPa=K?e@^@_`~~q0$HM!SLHs5BW!%kQp7Zd!=fR(3NS!oT5fxR_^Wg6ZZx-OQ ze;RrotWVG1x8F_N{dWO|i+{`dh2rkd@op4%e}DdQ&)<6Xy2pbD>9c>%dmhYlpMQ__ ziRZ!mX@kYj{z;bWzvpwXK0bfWB$wwwe+2zPo(JpGu)d<_!TOb~ukCrTJ}>LLh!?@f ziMu~1wn)4+>o<8GT#5VhFbBompC`E}?*81!Bk>rVhm^Vh+n?Z9)$zi3aG7zR9g%*e z<2?ISRMb1-J%@znu)Vlj|B-m}+u`fY5_jvj;lZg4_S5}y(pVoi&wuj=>uV$r{}<_T zoj;rB!RODKe7)opFNK%zJlKa91}BStfl8hSo#&5-`%q0hHeMfh*X8DH?yV0#CvVLX z&fnGZpudz(Pw~b00O_}8A4YlWgZ?f0GdvIaN9cSZeh6PAp7KO^y-UTD;%o6|>FE3D z=Go${_vhK`c`#3FItRsD;3vfA?M#Z+$TTLtZzJ_#OOpuM?bG_quO;>;2cQ?ydJ-eub$na0SPB2e1_F2RNGix0!!^*rc&oFIJ8zwdd_`GfUs#gF43cph}-aDSi~cfCuT|T#b&ts;HCeSG&J`R6JI%()vH~a(f z%&hNk_(ZSNeH*-8JH+@e^Jr*#9~Fe%D3MgZu72=Un$Z zm}k*h4P9PXYotLaw~Uyj$2PPQCjzlpa# zI1dAch3BD@=fQoyMW>ti6}*r5NB@NTJV3lNJ`xY62wu_6Gs#;Y%#(b0IL|!KgLzKU zStR}|zDm68-Ef|@;wA9!JP%$s6R*47^Wb$qXZ_#Si1D#Sh>w;{X48^98?(ipt};|9P*l z=fRz=%Q>v(d9Z$Fn2BoXxxfAc+`S(SU_U?hJlM}9_rm?`C!PQwE?yBIEnWtnjJxY~ z^UpSXqjWx}vqk(f{AZ(c*zjA@*+l1W@$c{_Mkjv3$mfr{u57q_&iqa%r}$aCpwTIA zcmwGqx*y)JCgSn%HsWRQ4&tTo?&2TdABnfa2jY5vM;pFSI*aHm5nq6>H9A`iKPH`H zbWVxy!7qxpco6RA74atcU$|cHL&H-PihQ0-r;|o}DxOJv3!YVcGoBxJ^R(mnP|Wc9 z(z#5hq4*{Ied%Dzl!fRI=>qJmvrjU z`A57C{zUu}Jm%|>_q{is73m4%qIgIAhS9m_t&je^G$Q<*mf(%Zb25oe67dOmYVq~>3*z76S#fv0OSs;A-umdz zSIqOa=fVE}MyHJUDZGk!tjFQ~sv#Z&e-C%_tYe;*-uhsk@yzp)=fONV==2eP1s^7T zcfI4i^+A6t{h6Kz{c3dPh*!bC7Vm~H6Yqkr$DgI6Ki__sH~3Xl)HcIUNoN|Jv*MrQ zSH!pA*TpyE|A_yA-xt4#$0;27Img|vWVri0d5itb1 z+ zpNYSW&o(-X4Bsjp*WV%T`iG3pDZ}qcry6rU60d~EDHi!WarY&e;dyX(u13+xFFp(} zYIMpN-c&j}=(H5yhIf=sZ_ZUu!^cYJDxHbqm+@KB8AN}f;ajAWG*)jm_lm!c z9~3W$pTOPMk(=j&;SZ(Lh|W{-26+58BcB_C@xZQ}JxE!~4}z{AIi??&crPdFX5SaKq|5|j@@0Om@v^x4efVOY2Y)VWeBx*S=h;8+ zc>UmWX{LeU=hAAP`#(Qw;Cb+Q^+)DuBEA`KgS$CD=jS_J3?D0h$(LZJQJ?WH=8_xeoyd)l@_U5l zuJhjdpdU3j+~+%<2mRA@{uMutN0o?tKIGufrNkD`iYF0&AAe4~8UBL!96W>gO#Efs zUGD^bepJYF|K~?=u8wphR>2t5&8=a-yxkR zbbb%LuZKi9ek|x-StlO)(8F0^yhgV^j}OCo}WeH>F`zJCGoZ5CGf5Ivvl0PyZHxm{%3d|+==@93nB9j-zNP7^mmHy!4DXn6NcZFPNL_-eRv=q z506zgJU_v8`ST|+JSXlx7rjF#uXq{!4e2yxe@Ytuu5{YdX(ZkjZzG+y^t%{7Qaa=4 zj1eD$PZ9qXpDw-zpNqTwbn`4T{732hM(1boQ}{39u~UTi_o#SG{H*w^_yzI2_;p<8 zziW81cOsuZb?BrJuZ6!P{t2E*yf>axd;y+Ud>;N9?&kl1^HARKnufQR{vP@tivNuF zGCBhdpC+B#bY_X)!WS5wm4^Q$9oOG0?)oQ;&IQAx%0=Gy7gL7kFt&IaJPEG%C5_>Q zq*I?x5%Jo1DWg-_@HWz!K&ONFIJ~=bdT_4#89qfi-_n^bz6PH!oqqIJ7`{t7r|9ev zKY{-$9y3*VzmAJX;lJbVez|$B86K;ACB;1Q+zhwKztY8MEpm*jreW6gZM4HGw$Xe%y}4U_&CECNk2{M@V+kKlogle@ys&Rz1&ypC6UEnc&&~Dk`dl=fUUIdCb#Vd=%cn^Puy;SHgeKv6tsT z=Rlh9etjao1Rvme(D|Zmxc*bmgU-Nop^q1T5C6>b;Ch=)2(Ndx=RrUFAMv8EcZGQM z%;Cmu^gMXooG*s2yG1-5{uBOeY4rX2{-xkoQBl7bep5P+=-d&1fIkv{`K554sEU#2 zDkGi%*LhMHo?kjm=oAufgqJWn6%21Boxyb4i4VlP8l66dPnOOiI#b0L;9nY@C5G>i zPLlND{{JMthyEe)of*URN5q%oXK=k=R}7D;6nWowW(xbU#dqMTaqVX^yts6((J3W< z6|Zb`>U!&=zfYeSem%DKJox&`o;jSqz4&u@H}RBN!u7qxpT`G?m%xXJ7sJQkx<8*A zzQOSAhM&US_nRAd-LvAo@GIhOf3AzW{rLyi`JWp8Qsv0=(Zn$1oUt|49&x7kq z_DZ;KW5g5TQ^c#_)5R;{bH%&h3&lI(OFa*+EBU1G>uVM6uImig zSM$2}#3$o1s)Xmty{_vgGCY^KJ6DAauZg>_qxw0*{jV$jID6<#jZQnmhe;=Hp0G1Y z{8sMJCmWsFhOd)O<-B2MqxfIE?oR2r`*_e>AKdqn-1px-5AN5M{9*r+_(lANc z`rG0;@qcl5fB)wEq^cTu-<@YP{4Lzw#~SoYidVxciub~+iub_l;W}qC!+T3-CY`?G z)A3>A+woE2Kj7nVH&6WZ!LOpCz7|h}e`EMT>0hD$tN0)IZ{kT_3-9mm;)(D-a5raa z=6Ncf1y4{d^1eHN1$Xzi5dB=@`SF5Ar?}w_q|=#B6Y-9C8>7?3@G;U^OlN}lB7C}Z zva>()4BsT319Y~E@5A>v&B#1b3G4U_ZF|a)brqVi@y=l-9o%;b5n18H*wI~5gG)bn6{zwloljH>3jzy4i3_&N&qvj+Rw z%JX19&oXB_@l$wL@$^N){p=~83h$2xQ~UFbG<<<{2GLn8J^){1biOzIlynx-IV(ON zziM>u7@oXVD z8!s&Vg7iyy>x2F+`c*v-`nBlP6t96dlKxxtTN^%DI=$!&7w>^jFgh~~UoV}RbT)}k z$A1*xj{hwF1AZ8Pwl&eu!*{se-wb~sohx*ni2s4ds}p%nlD!?CpG4wG@Km^)ryBEQ zH2f{;l%rEp{58Ci(W&FD56(}f&%*cjR-Omv=dF_A{O!au;9bRgl?vDQ6z_o#z}@w} z%k_>je4%t^(pe%t9bap7witd|I;ZHI6W@Yg6^~ISyxu>>pOy~&U))`9L#{VQ-N?@& z&NJZd^Y$zBvxsNKbBkBOUlp%}7r}L&(uOyY&S*L<#5>^~#8;IK_o0*c3cNS&=4r|P z3^sg@bdJ%PCw>H9A)VX&xylWO|0117bdHKYz|V?jc_+Ny3*wpZ>*5vhTjJ&MN4VRc zHtbK_djCCVg0J5ieEp{JJox(ULFYyBPIy-F-FOc19e4p;=XujxAIvkJd8&9G%#*%c zxIZ<-)8X%lH^du@*T-AnZk~_WpT33<_d3CxTbXmR=fRxQ=uZ{@4F6L62tHr@0KOd8 zIoBJ0L^>~*5BKeacxL>9(fQNxg!TVBKf(1@pp#U*9G(`}`Lh`QwsbzAQ%1Z4Ue)N- zH@v%a=F|B|d=frTynTgmKZlC9#m9>$ z;fdahyzfouBol9hrxhQJza%~oe+751G2 zA0^%ZA1nSY{yDDmd};V*=}e;YgLq$jw|Kvr;r{Fw?}H!5-8{S4pYw)4mCigmu^L96 zldtfkxa*(eb9h?A3rOc@If$N!hPa!55Bt-~TOWL$ zyv66qo}LGvugcQ-So|$~u=rklxcClyJg)Oh_tr;$Uoa*7zJ7`4!94kDhu6D8JO{pB zd@8<4d?NmX=fUeX<8^m?9=z^ftluyGJAMq;>-ybWAN0r5zwLR@pI;}uuDjx2;!nl@ z!ecdxJhy-1iN*8Q4g1N(bK>d5+u`ZOTj5!7cfCpYc|<|a{hvpa@I1J)4>^Z*JrCA@ z#?K?#d+x9Aj=P^nY-K+OdLHcOT;?1q{slf({473E`~*G&ch~FYpKtg!>Ex{!?*C5l z-1tGGbJFmCrBjQ}L-87ToW|if(fN}Zo(FfopVNy@e(@f7F{4w~@aEF_nocY6S@?(I z1?q?U*;V{i{1fqpcz^Nw_y}D0XQJWDr89-jYVpbVCZn^{@H5gmLFc^q2K<`%Ywv~o zb5r~k{2s2?8?(v(eNJA$-Ff(qP6qMycy{r#cy96E@WQy8Ct2>`S5Z-=3~wTxcn!kq zZ6O{9?;xG$>Gv>vjCAtQnIN7EpDCS;^cNVuT{<=C>=LhzA2K?p48JFxo^&3GcgN#2 zjeH-OfhQ23hNr;Y{mRYtrZ>EpbhgqdA^tsHUi=bXS^NTC7kBd%W}c>o_mR%?4a4&@ zKs-J^%IHk?)(7wJQJ;sOTjqNnydQl==WFqy_-gSojly}p6)%Nv#ohIm=6ZJ0A?UjsIhGo*MpAv&i!^jZP-<(RfbrLXE@g%`5&IUKn@R`wrJz%J3%Ad5=yD@%nfN z@&0%x@xJ&+xXv@k@Y&K?N#`r^uka<}m79e7vqHQgz5#dhRAqm*8-7kYUFcjC?}Xo! z&VIfRx^MXN%_Gml6gsKJC*v8#H{mafe~0H0zkuf#{~dn|cl%S5{VC_I559i$^YvTb z^Wf_@Nz-uu8;U2u-xsflw-qmgcfoa@PrUWPJe`^6Q_q8WrqCHLJ`tZLeh{A}z8C)r zck?u5e>NKaqt^-MoWq>Icpl7|uvxfoN5$jfXT{6m7sN~A*KwWmuHh+KM4rRRbkc}V z#53dC&uw@G>1?1=MSLAz&*(HWysvc5&>1Lx8Xs+RJ~Mo^bdoj?@7K5DvGFb9gYoU+ z1M$7$%kYEZU*jim-Tw=QKb6iEI$+TZZdP zif6_v;yO=l!#hZ44xLWov+<9_f5iKUZ^uXAZl3Nu2PPW6LOOra`9}O2zDYX0=qzpr89*7zlNuLKk}Rurju6ubvz61_Q&<}7+z62jp$SrZ-CbmABZ;) z?~lKayLrZQy&oDrS~?5pj1!-SPZi&T&lLX|Ux2%LW-`x8!}m$&E}cW-H}F$N=aS(u zTSeaA7Oleb6IZ+*o=p6Icna|=czWDj?>w$IyWwS}ldN?(PX+NLcrByT$nf6Md5cb8 z@z?NS;;Zmc;w$jUxVzqkT<>hdH%jLyoh{nZM&soDCN+)NVaQ~l* zXT;;TjyylJ@xu z!~Gc`o&+B${sulqybwMOcl+}V`!m;DAAFuX$mhv5o(G>N->0))yb=C`_;vh8@r(F= zT<1CNtq!Uxn)6egDa9v-}DI`7vFD`x!FC~5%uOyzcLpXmm@oac~@m6?4@#c6l z++FW1ejd@qbN}ZNeLN5D>;=x@B+rAt=VU~ZXaDEfKVN(9um1*jKaV)bes1+VdOw+S zhxiP9pZF>KkoXb&B<`-)&41DG7;PiZPtK0v{>Kr|jwi#lpU&_%q*IMfG4U#RS))_U z@D9@HMyHc_7reL88Ep6*>CB=tPkb7_O#BGGO8hYXo%mDyd+~?(E?oEjkl}wyr`QMK z{ryY42>#IM#Az3v6MfzExcmM84sTgveFq*I1YWARdW zYw@;td-2wIPu$J(FVBYohR>4DcsgH-kHr^D=K=jShVPZmS~>^CzrjyQCtjZ5N}{4J z86LBJ1u@WRr0O6N`S$9P%stewL1Q$ainUJG~gq~LlR8Qxnu z73uU9FOLrs{}3M~-VvXSyLmD)&uqgtN@o(CE#edKpN-C8Z+-CoUUFLax#gng!TZs7 zbgqbhi~l8l8~;cA7XB1>*PDy$P0%6odE)#P+&xdybPn%tF7Z@&A)`~mTOa*-iR-QI zd2qdN(Wxz73~waf9B(Gx6mO5a>n+OlcK6mtf4*X#p`Hix45Kqrd&W@sfBx@wWJD;;r#F#mC`qi;ux8 z<8FR;zv_DHgZ(VYezx{J*w4*$+KaEnyNSQtHQdi$;xFO@aGhtAw?3F>CG&jlc`(ly zIy1zF;`7A+!WW5O!&iyF(=D8Tt$1<#JKW7*i}QcN@C$}VeGvIRxP*Re@r8I2Twgbh z;f17gnNAV$3wSA`Q`zt~(#hOC+_w(m8S(DYX~4eqGkl74%F&rFUKXD(otE@h7`{t7 z9q8;4Z-@UXJ`q1IJ|6!aclXQ9bItHrA4Z;s4Rqp(ufvmzpTkp%pTX0MC+ZR2ugu~J z@LaggU&!#P(#cP!rg%QQfp~qqiFjSSjrbtEgZKcvGw$YZ%Xt`T_&CECNq-^zrQ-AP zwMJ));m4$NlFljdz4%3=bHnhsog&Xw|DNG}Pbl6OPlM~eWj4HobQaMmEj|ygY;@`x z-c>pm>GTvohxa!+BMqM~oeaIg{rOt_C49AXI&-cz8UCwu%FsD3UJAb;o!<2SG(1k{ z$ot!tP6F}P`19i9@YLdC@Qk=S4{n~EhL@7gw{+eSUxQZ@{|&DtehP0W9{;28el-=3 zi?_vf{;r0PmQG$eHxhVL`{59!aN|3C4s z@Hcuf43bcS)R9vJ?7*U0;ulTK>!?09C}-QRKa za~obpI@Rcu7q5cX5buH45$}dK#&w=HhWD4wOge+br{kZBZ^y@r|A0>uzk$yZzm6}! zb^eux|16yppM>XOpZIh5QSoB1?1=Uwj4L%;>Z?e2{bs^$G9GF!9&$Nk(Uu;onK8F`e(l-@|tq zokND-kj^wZx5Yoh9~zxF-T&|Vo*8%d_b{Do;)n2j(wWJ*Dq?sI>D;4JNBl0{R66tN zw=;a8bkg??@9$9Y7xA&;W$}sPrSTcK`+9Nn%r|_qbUM)aLA)KlTYMtEUwk}%Onftb zN_-=J5!d-|7#^=j=-OQ#K;yW*|z zSRX|`XWYIeF+3OUo-e7r{*#=CxrQ$@e5dqV)88%rK7QEf{ATz+(iunRzW8W7 z=Esre$6Z%q!?WVuQN+>xGC!IgVyW@AoXWX=LDU{;>Yl~eIw76yRPJh=fK^$a{WBwu3yyX zlrg-SbYcz<&(-_lPniD$qtnaq$CB?@Kzs%sr(fj#y+A*i;n{I_f49-eExr{mBz_eyB7PY!g}bjKH&125TS_PSi10kL z5l@PD7B7r<7k?e^E8YShDBcVoh3ov24PPdm;dEAs55>O|Uygq-z7*djegfYkehfc| zyZNth9xfSv)A0EH!*k`%$rJjC#UJ6RaDCm3h8LDjwvpj|e^dNrysXiwW_WAqxPE(a z*Y9O?1{ywFI@Or-EAdMB5~H)$@L!}eiq28-Vfb02bJg%T10wJ54mt_Mx8cv@?*885 zT)kv?A?aMDQ$+kSUPe0i=~p$pm2{Gh3eQhF@x*vn@z?R5;sx>kxVv6A&q%|+lujc$ z^TiwB%f$!dtHlT68^xF7Tf~>*KjAw6FNR-}&S5$?#Sh{4#2?^~#P8v821cH@Y@@^b zl|cMuJSpzxf5Lfq+3>uEmy>=a`jx~h;I)lTW5at$rwg6l;+^n8M(0z*=Sj!)7m2(6 zTBEbY@YB+n&Yb7Or{GtO&K<*(4~o3+N9m*#{{>Hv>wV8|cp2#=|1>;T<;9cYHKY?a zW$;~hR8#}QyGrMEIz7b;;sd3VjQ(iD=SrsmorU7>;w!}m;%mhFA0a*&pI~%m82*iPHq%)rz7gMQbaoqlUOKM- zhq&wCF*=V8e_=@EbLJv*W)MG*XUFxv6fnG+bP|mX&s8n)1b9QE)5=>P{G6pTKWFLT zdGK?V*XZ;X&yNq1eg@9fr-sjy&U+Y8So;w&R^Q_hSGV5PE+wR zcw6y~ct`Q}cn|T<@!sN};r(zoe;&@mB*SMJ{;l*k(f>~TJAAv**=P7A>0F?5Rs47S zw$XWHc*dRq;rQ@e)ew)5zh`t>8a_Ze1?UVBe-$5NbUydi z2hXuNJjWJ#9z4h1rL#o59==BUZ*Z=@H~gq{`qMcn-WR_loww=VG(6t$$osp1P9pJn zcuMhocv|s2cxK$42RBb{!^=qLZ#w10Z{sz@Uz`x0pE}~{@W$fh@aE!W@%FgR-`(&r z(&<2Ff_OW8y7)wVw)l8_q4;KeiTFl*CGO@g%X#?G@B@Zlk^Xu5*Tv7_{}`R8hNl@3 zc@7gy4DaKM;_>jTxL#L2!^=s>^(%?Heto0U-0*(Vd5t*-iRZ&d8=cP#UoD*v>3l2R z9^Ybgem4A)bQaOMD!u@}EuD&-t4D^X92t3k_t8l!z6XC9clWmz{k(?1Bc0oHDvIC2 zYl)|u6rQ(w;%V@vxX#ng@PX1PNoS~d34E-08+@X8D}09dMEnc!@%SQK=U;939_g&3 zb3lA8eq8(vep>uAen~vR4it z>}*ujcEiu%Za)|Dx);U2#BWHaA^m&a`shDbJU;w$#R*3LcYgzM>r>#t>jvvHd!AvA-rF|cpmKM3sb`VIVzqOKPz4mzaU-$zb@Vx zza`!gzmL29ck{>kH1b?Ie+hTzc?q3N;$P$0r8A%XdCT+QOY7ZWfM@?y@jTeEWvp-J zc`#XJ10q}g>$A5Pl&%H-T==eUJuVHJ_XM!J`sOI{1?2K z_wpR+v=?pNaJ z;eLK49v@#KUIAYrUK(GIyX$rHZ!`R?bf(a`AU+xY)9Czbc*?Pn=Vv3GwBj4^EV#~} z$MA~MIY+0e_!+#u(P?gYKj|c#5#Fys;&JiO;-&F%;wAB^;vMms;%)KyxbDvi!}myM zA)N!_^YIf#=Yru6rE`?dQ}Nw+{Be=zq4~^kKNE{L##7;Xy%`NJES+g|-W2~FFDw2% zUO{{lUI%yc+~oPt#PCm~^9P;&;urA|(z#84qT!3BlW11BpUcG);2Wg#l>T=aLo z9}usA9~Li%|AxEk&BFCwHazx($n)?4o%rG%@aJ*uzvQit{=CHX=JhypM ziLb*;h_A&f;BKA*TyHIJee~xm=4t79Fwbc^ZNyLFoyB8*5#F!v;!${C+|5&*d4_xI zgL%#|&rHvQd9u@)Bc2UkEPZ#qYrOSAKl$wNylwS7=vSq)L%cG+PrNIBNW3$C8h@6K z{(PGwYw)Y6s6PyUDxIlxVoi)Zhg0yx;@{)R#W&&U#4q9L#V_DFaW}uaUj@DO!G4xx zKg)U^>}QHO;d!Vao(Qig-W#tg-UV-h>pX3}^}#$VnWu;6!8{k}^cFvb4-zl`WjOyZ z@lyCW@fr9e@k#hp+|6H!^S@4fG3Vq5uM=EX@-M=3`-|tnb;bEAob#yoV_x^H_!!n- z5Fd(P$K9N6p1a=qV4lv*6K_)F`TUnoBJscQl;X|jhV!QtZ-}S&Jb2v!yzVQW2m7#< z^|{1X;stTNuHxSMpuduSHP3^7_j%!*wZuE)4aK+OO~p6iZN(qq9mVhAJ;aO559jGE zUI_1pyX*ad?>EPJ?ti~I-Sgn2oyZ#eFQcNq@jO`HkKeca$#Z}GFSz@D^Bntm*7IOL zdot$*@viuF@iq7@@um2E++DAmKi1^%e5z-{-R~!)TM+JNR`E1=KBH5_@Ve3|LFYa3 zxA2xm=L5q>Nv9>9vEt3~sYd53Z+&q7GtCK~Gv9a~+^;X_tP>xJZxtWAFx<}_;-m0= z;(PEz;=AyZxZcN$hDUuC`CN*-D4Zv@cx*f=uKl!z=a)`nI)%h@;>E>BEe_`?CEgvc zgzG$Y4DTqNUQ5D$XYn3*Z}FLUU-9YqNZieHh3CU0Z+&onYH)t$c^;gf9ds6nZ^Ktf z|8M#mz4bwV0R3H_2mPyb_K07`k4pbB{d0ytmQK>8;eN)L5_zr?$tGR^f7R#|HN2j5y3%PNUJq|6K6Pbyy=}y&;9YQcy)SXS zpBO$>I-BXt6yJ!?7r%giE&e;c8rOL?8Gc+kSyqMDds;j$eo4H->Tvy4@pAYb+|84f z{dsKo3sWPXGau5)Al?zriMxJP{yPE%4X+}dNpxz6Pr%<3-+(t3Ux&9AKZmy$KZEzg z-TXP&p8?+b;OqAsU%wMP559gAe-rNiXX0`3+2YOduf!YTOK_cMt+zgyC)1bV=cS#V z2lK3Ul6{{x#vgJujXIe^I<6 zo>9Cto&(o8Uo*VAbiSigTYNp<*yyw|e28?;(itKC8$QwK%rtz1bYia!_j9v&OnjHo zIb`?^>6D;zTRa#3P(1aw;XF^pQ{wTb|94J;^H35`EdCar3fKFa(eO8=^9h}|#e3rw zjZSUDJ4ojzI-SI4;~$BSULWpHAMsxJP+YHfoZ$IotfX^Od^vtkIyLCWoDuoC#rX@k``mJbP6qMAcuwgwreDzT8q#?{r;hkN zyou3iYxq#Z!KKwu@iTEl!4X*vnhL@1e$c^Ftmlp4WR~8?>DO_J&d?@}N?&j&s z^|my8fOMA986v(IA8T}`8opLKm*{K|KY(u&Ke#!(-ksw6@q@U#-T_?iNyGn@&OdY> zir>Lw&x$+`FMc1+6JIC~a~rg#awtoYko!g(r)7sqSiZk`eBPb0&7 zOQ#i`zTz$M5z={+&*2jdUm~4RbXJIuz}Jhf#5ajA$A1(*hW{*n1V4hi{rQyrIqR(t zK2Hwd^W-hhgU=6fwubxvxA~jzv+4Ky0>`UvYrR8yPEYC#J|F8;(A>Tz4bvq(^uj57acth`mMKx zb9NSQf%g_)jrSE_jt>*RfsYdZA3jMu*YD;Ds zTKpD%Njit=-!welmyyqhG(Uy=mPkAmo*H-apQE42@Z!>Wi%u!=Vt8evQ`hjW(rHeo zr+8DmzxXhGu=o&s4DPP?I@kNT;cKL`gwA^Lukjzm58^+H@5c||Zk~J0bHebu(s@kh zf%qLf_E(Y52iH%EyZ587lH!jz^(eUHaDNEnxSJ;_`%~QT2GVIn zr-^t2yq$D%@_kS@!#|bIKsw{a`{UEZ7vi(T=i>{+_v4Gj_u}8;ZhxL%4eA{2H$F{Nt?;=82jce!mcRUgY^1NGG9qUp$5Q zMm&x9I{YQv&6A1!dEM~0y-qM^e&(#=d9ZK)(61r>7yh1jf&JmWH5Si}x5jnO&W4YX zPJcQR#QWkijLv++w@GInot@%e;RlV*NyGn@&d+onitobX%#VDZa`!Qr;dyZPIrbr) z{Ngw9qT+)Og!iks_&~gz_%ghb_}6%CT<>pV!+T5T3Z1^@sXNoOsctK#3_x5ZE5cg2t6F&9LhpVxT~BsM%J?#@rl zU&8CnD;|ZvA)O-hOB(*Jbh6WFB%Td#Bb|5XcQJgdbgIyqC|(JlX>=ACzFj(9=GYI!z7lBb{D!28egSM~Xki$A~}1KgZqmw&HrfH2iz%Wc@X~-fiMp@V!Ro zsNr{{Q6k;(z!;bsQ6X9wD@yJ!u=^Ho(!*! z>pbrn-a|Si==2sZgbxz`1|KHA3LlTVc{;N{(+yuIofC96iXX#wN+%7U!w(vMRXR`T z{3-qjzbl^gXt@6m#IxYBzK%RUmGOAu74a0f+n?_2PkL{C@OiQspC|Kq9(=5g*ELK$H9ij4>zd}RkN(_Ff3fF5e>t7y;*0Th;t%kR;&<^K;%}S?=l@Ck zHT;lxSNw?hhxkd{UGLZYJmQ+?{?8-sdLHcXJkDW~#s7W&3D&!RA3uxd{`x$)`~9D0 z>}OHWgZ*5}oW;c#;pN1y;FZMBjy>9--hJP%bH%^B8-%q>{KEmisG<=108q)bj z{5^cL(b;AAMd=Knb49!#e%t6gGCbXq$miH%I_bq1;ID|E$8(9F!wZThJ{9hNVe$BQ zNnG!5CBs`wr#zkZ;_u+yjZQzqr%2}`I@875<8#H+o(`{fp?FGsC9c=|o#DSorv{y) z;??l8;yv&S;@$9@xSMA^&xiYlr(PO)erC~mL3{@OGVb~t>E|{49qDYNQ&D^?UPn4V z(Qjh-C(^l0r@#0me5BEtWcW(yB>pWt4{O8|;+w?_;6I4JitoYQe*Vh!9x?p3bn4N$ zD_#eGD*g!`Ygy!d?~NzH-8|=*Cyn8Sq%((35%Jl0X`@rcTOYi?ALRY0vFE}2(Jng8 z#kb?_#h>CIia*9b!rk>=<9Y`f{)Ke1o(a#xT=6XUGNZH3TOa*-X@2;5=_k*F>#ay< zuXuU&23Gt5j1>9Zl1FrW^Z+-OVE9QCPc`(l;Ix&|=o}USLBJmA)GVyhITHMVO zH+%4_XP*=)4LuL~vCoG0x2bqcysdan zyrXz_ychl~9sTcTHRAiAfrd|)PIWr7#jD~A#e3jO#Jk~Z#Ao8`#i!#ta5ulZU;DlF z!G0cOKhJs|?B{Me7sR*W*TwUn3-|w)cn#j_q{fq6yi1U47j^5S?T96yrgtK zqElA9Ctg+j3%sWIEW81(^Sp0(AL;C*GeCR?K2rQoe2n-te2RG53*r5mE}j~ni|hQ$ z4Bsi8;&gV4zlk3fe;+?4-U2@-J`TSqJ_f&vyZLi+9-bH;e^q$ibbV&r{oG*<{cPf^ z@q9+7h~YJ)bBRtJ@e_DsqtnLl{?h4jF}&}C#k=9-jm~t#*GXqKosHtt@f}8Izv0)U zbCS+Y@uT=XqZ4!W|9yWm;O_pWycF(F7V+ot+|nt)xq993s?sS+r>1yeypeQ@(Qj>d zKj}1~Gf2DjI55uS(m;+gU1#4F*c#4F$##Czab#Jl0yaX0_loQJmzFK2jD=})KM zQhX}j(dhIve5`bSrZZ7|3qHf>%r|_qbjn^1@5>M3rSbhn=eXhjNaq7O_r=@cG1o*s zPuzV;Y)T%glT{CB*abjowCx*0xNI`OZB`#(-RE-;$lFD;$hbjpd}!mEp?yBgl#+Tv;OM&f1hX5yvsR=AtLF6ZH6!-p6? zOZx5Te<|JuUu<;N7`|6JQ|KHNAB&$bIu{IoD4j=io{B%f6Mq}|oN@b>+VFz7d(LG0 zUw9u2i)Y458l6gpw~X9k_w;?wYj(rL`OT4ngp(%DL9pZNFq zap|0G1pwfI$hwb9w+t&jeFX@1{wujj$PN1D;eFWv+%Dn1-9E+5DU{4MGHNT;Ou4|qkRQ`_(k(ur|1 zyziaFpVIGRbcPu|S2{W9FBE?TUukr{GyJf0s?#|pUKKxQbpGe9kN$ZO&#}9n2hXvd zbRLLz$75}be9nyFTqQ9)8}6Pnv*_d$pMk&Ob%IxF%70(1q~VRFvy)D9@oji}qto5+ z3DSvqD?C4+i9ew~+vqGZe1~-2qW_b4G5nBp+OR*T48J3t=5+oQZ;Hp<^xypre$|q{<`=QyaXORPyBf*7~V`eztVYM{1^NK@rQU9@%#A4;;;M_ zo`-(oS@Gex&OgEM#nP!vXSsMqe4Th#e4}`0e24ff{3r1l_&(gt--GjT-tg;&$Jrd7 zD|b$|(N7@06@MPr*L}(GLejZPr-=Avyp++YY_xOGBO?b>Lk>~9y9#{M_o(OmIkLEmNGCY^z zWu%|<@9@5q7f+1WFggtk?<$?w>GTvYi1#--BMtvjI<7xo-1S!*olS6pO#KXI_JdO<5$He;eU!x!0(EG zk3SIKgva_JJU=>r62o7?-RG7IbaILRju#Y9csJbt!s7AqlH#x9WyK5P6>&HJmz;+t zhPO3*p!6HiA1eMXKGx_=HGHLX2GUt0-XGs=baokjRywYKLEQCk8J!1)r`Zxj?UBz1=P%&yIk28i2Jvt4?BZwf z+~U9Cg~Suy3-4DE@%VTtT<5QB`1{g%l}=mnym%M!dUy}vQ6t~WjI&XwzD7I*!8MyH73 zb*1w+bG|2j8*gEBIvPGwIxpT2&+QoTbodmbGsjyW{QhLr!tl?Buk<|l{mIgF)`*wH zH%tEq&ebl%&q}8qoeSb^@Eg+EP5++Z$$yM|9~n<4rTADpz4$sjv-ny(7w*1}+&qO0 zuOgi@bZUs7#@`c<^B}yxjm2Z(t;O@>?Zxxq-Ef`1ui;aqQsCh7E|vsJtY{3m9OviK-`meE;g_!jB7{&sQKKWKDL8vd_z)-vZq@l|;2J(157cVChk zo*Q@1nZM|~D*h*4#ORbZyoq#jN5zePZnqH6iFc4rDb7_7!^cRc2Av7w)$p0psYHK) z;onQA2c2!=-S9o)Gw}oB)A8fD`#N&-oHzV|bhguZBK`v&Z*Syt<9~P}@hf;r@l-Lw z`;}Ha1)dq#`EwgyRyxJ#R1hzM*A#D#*A;JyHxd67Zy`PkZ-cw}t8*Uu7(UGKFQmVU z{#@}D_)??ut>OEnbDYjE;z#jQM(2{@kEQdJPK4RTA`}-@z zmt+XNxaV&@TUR4V^zx|ko(G*)S;O^h#24cOJP-c9ude*}N5**`bkd{=JJSsR7I)9R zJTb#_{+)PMe1~*0(cf?QHR*gx=cf1w{JwPR(vP+Ozx@xs&&||5{QbI=o(JFO?xvGg zd>fuwyjHC6db5dF!t>$5E(WjY<|*Q>59V3PJQY0;=2=6hs`zreo_L1X;XDn*)8b7% z4_ya)blX~cE)_tppfTlB|!9`sYi3Fn+F{v19_ygB}*cw>CA z_$++6_%wW-_z8TY_z`?7?yh$qf6v|_&;7q=@3iN^eILp>yyLn5_w2<#@ZaYRfBo}# z@bwjaZhM61Hlydkex`^U?&r(m$?!bl)$#n|74f3DyIwbc8N-`NXBM6J#b@9j8l8^} z|4cgD=u8veiqADV%M9Nwoy&Cgi(kTz8=dopKb6jN@xuER>)?OSrQkj$!4r#D#FLAc z$J2>-!_$j*!e7Dl{^mEligcFKsUf};Z(wxZH@uH@&e9nmeh42a-Zy@@pJT*(<5O_G z-Z_S^m(E%`o5a7te-uB7|15qSKZ3h?rty3@YxpDS#7q!gZ`7g4^Am+9z+HbP{S=1h zmQHp$uZm~Gi%I8e`ehAoE}bfLT8US}I~kqchEI`B7dq3$JK=N1r{D|4C*!Mdx1Vdd z-i?MIm(E5yr^Pqmm&DKESH;iZcW^h)56tt}@E3lGJSTAyhUX`Pcq}{zuKm}%^}+km zc;1i7cpf~*^3W+So&&ET{yttuyanC_ck}G!dfOU4R5~N+j1(V^Pck~Qy!Fwam$=^L zo(I>voX%?TrT9ki!}u2QL-^0QyWUe=?_qC!^ye$)x#)Q?&pkR<#P8yNiDyU@o`-+L zU&5c@Zl24`6aVmk=PH;df6wsqNqWzNdCJhqEM5xFjk~_P-q*eLLBAROQl1C>c68nm zZ-ZA8AB)!#{}gYGyLs;934Rq7)yD7v(pf`ii1=!JjQB}>g7|TKx_FGl;r*H|{*?8L zaW}uaUu(Se!G4ZsKY#Q**v|s=e-_V<|02E=KPvteeiqkxu6pZ(d7^rS=jX2H!94kr zgxC8(JS!gS*Z$>Bu5BmA( z$37By-k#ElFa8jJPQ3DS;dP}FFOO#sAC6}cAB^V~-;Td3z6CFYyX)=E_p|SK?ted9 z!}DN=+j0)ucMAIpRg15BGDPctLy_?ylF( zzs~Sqr8At)aq*$}d82dP@B~LA&(BgiNyHc9X>grCv*9JAbBIo9@dJ1jqf^iDZqj*3 zr@IkU65oy@7i`*lJ*BYwf?{AqZ?$+u_-8cfY1`y{{TxMLOf@)DRzwzbC#HZ!G=|-UfH`%wwJ|hL4rbNjek7 zkK;3q&H`_J@cw>~_oH>52k%EQQiu0Qv-;tAi&HzlbLh zKaHox-9ET^GI{HRdGdb}-p2x-2lJGBF`Vah@sfB6@s)UK@x^#~&!f)|uUo_O;C17? z6uxd9@%wZd<9c0fy!Ao9GyRV|5Bd}6_Yoh14;B9nA1QtUpD3O#eK`LV@l^O1;&t)4 z;x+L_xVzrwd_TLvbN~C<9i9hwwi4&?l;{5Uv$s6=*FV7B`{^9^Gv4XQ^Er+=6N!(; zQ;P4w(~AFyXU5(2y7_Y(UO_tPGKBkIMLZ2&&*(HWysvah&>1NH7CzeOd}jD+>9nNt zt$1^MtI^qQ_+{ygp>s`qB>uPfkN7?D?RbpeBG1E3JdXG^JSndCH?84?q?0RScz=tC z=fF!FohpXEFP-=3v=y(4cM-pc_Ygma_rvviM;JawIxl4kuXmpK3-~heQur$IxAD!m zo2LoShh2tWlukQ3SH#=ke@Uk~{fCC9I1_n(#?nb6{wbaXck_QpKhOW8>n@c{&|D{+V=6(-|TD2R=dk6+T(~1wI?M`yI@F z7khk%bh2a)?$2)VO!)8OHSnY2)$lX8oo5X5T=jU=3!%@qC!Lt$-SNb@_R~1)&DZzD zLxT4$c^x-j->1_lC_Wi4C4LYuCw>60j@x;rvfuh1? znU0(NCeIQ)-#OyR@WtX~@MYqq@E>ry-v#Vv=;Kb(GU$IX6^(8(|UKfHwa zBfO0G1H2k;=efq;>sZg@U8R#YYj7WWil@f=i&w%2iNB4H5buhQ5q}?_hTHk=^ZMFZ zZ_YFEr@`m%YRAoa&ZP5$_#}Lb_)Gj3@rU?6T<1CJtT*!vW1jPln|a>P7M$lL@wWIa z@!#-!;=A#u;u*3B{g>h?@F*99`)udm%>BV{;BvoIf8Q-E?yZQkK1#w^L**7H}mxQEVx%o9XIo=qO(H$ zTl`1y6gh)=Hi#$2w>lnqfB3k&9XB7h2kZBXx5JO(y00_NdedJ^|F+|%|Afwc@dx-b z@hZ83eZ3NY8;^M@^!0Nn9#{MmJel}bJf-+XJRNTL+l23D^E>W-KU>Oi^JG(}G5=&( zSUtzx?`JzX?ymm;x8Ki(bDp0#ZqD-&a}E{%2Ole5ICpTKUx??$XW(|fcK-Pu-zJ@* zbase;ivQ;6obdQR(pf_1k@zC~wWky3a_H-l-B%9WzRnz=lSh0XUd+>};PF<{c|fO~ z_&vOHJSq|O&Subtv4@q?buNss?4oeFdwid3@uBz)@n!fO z@um1<@&Dn^#Sh^zuZOXI^@W^%{2)F`yj79l{Ktwn!l&Xo&s=A{nP=Ge;Cxm&Zsz%!&RX$}_-65( zMT2>M7SD|Da@>5}DSX_6j+>7=g!PBT`{1YXh^3LQpZ1(DIqM^zJN*Zan||zK!JJRT zqvK&WLhol|Ji2&&Jc0NWJc;-hcpC9Tcn0zPcvjr*w-&!XP|R`n*9YEq+&tOs+{31h zyT3lr!*O?gf84&F-{(9>IBw1}X7S)W$B0M8CyQ6cr;C@vzsBu;?fl<*{8#Brp|ekX z5`NUvIpguC()o$bOYwDh%$uQKAMN~!J)R%8zdrC6oxQv&v&}V*GOj}ops{#@t-}NeICCcog;KEi|@v7i?=En zoacSd$$XVR%h=aqOJJm&4t zuP-0ramD-LZ{hZN-DAHQJYH5hv+2AoJ`1lY{tN!D_%^&LZs&QyJncRHsdO&W87_Vi zpWx}taMqiz@9if9?_0ig+%=SL8^tT)J8`?;nCZ;V!om)E{BP-W zp>tcjGyd4q3A^*=o?~8B3 zABu0lUx{D9quhOSKg~Iu!xP|ke*3&qI_u4Ow&y%^Ic_=$$_CFXpLh(sxcG;7Y4IL- zWnAZZ*I94oIl??G9FN==oi^ep@%P0ml?&$YE?yS@P<#eHKzt%T1h?}S;Qr4Q@5J9H zw$$Uhr2m5cUhyaR5$TMh|Ch5q@;UPNNZ)eYoLlMg!8zO$FN{AG--*8z-;Bq&7y5q5 z&XWlLzwc9+CzIo5o~#vud9sP8$McI%#0!gmj+b!UoI}|1;PvNi$IZvR#QG}Yf8g)p zCSeM8Urn9$reBDD7spNigSUfy^$_ole*iVY~~*R=D7R)>;=c&^*3;PPug>yj~zGX*^@b+i+9DN-4A`; zTaL#PUxX*d?SAe2X*^z1I*;j;6@Q3V^K|NYyr*>1Rtlb1AMw=qU{7b1#}`VcBAun; z74S8l&SsDQA)W4Y{t|y5zbw88zb?K2zb}3We<;2me}(JwjrC9H>y>@(S#kUQU98H% z`R5dmffx34%6hz!bV|@^CY}dxFTNA+B>pqr3)lS)@c3luJfkyR{0aWGc!ny$`797m zhp)ozJiqh$u)*WUrBj{GDe<{yc?bbxAUK)pVs50q%(z1 zIq^w&bx)_h$9qZVCpvw_*WrW3|H3~LKaG#Y?S5~t-)SCSBc0cD)``Euw~1$~8r+{9 z;#u(Da68W<<~iZ|;@v%+kDT?9@0V5t@0Uh9Zua{xopIv#@oC~Is|C+@ zrg(CE0dDu3i2bf~)egZp9S<&Id1x^>7*0?4$m%r49_io1TTi${Z`CoeirfP zo;}`7I#21e5`T<$63$)8T!^tKt2{tKh?NJHLHi6P)$tc^%pXgEOy)A^N_IL^0zK`lqGuT%d@iurBPp6K@yGv&toe#uk;{!aM;U1qS zol|rcil4++N~aX(v)&@%)0$!iHI&MB+PSEKoegyCD=@0ez*V0K` zJGdtc#N*>DJe_qOKP;Vh=o}ZXiJz5DUGCL2kN+o~-gKfq4Snvt@C3MhzRl>T^msw( zd`YLM_%ytn_*T54_-4EouJbhVcn|4Zrqf&eB0f+&-n+r`9U>kFA1z)2A17W6pN8xF zUwix~>9nG=S-b_lOME20S9~~rSp0kZxcDmkG;Zf_&3(Az@h48le4d8$c^ds$=zTjy zKeqT$JPEEJH?6bY?dNpdybk2A6FkSf;yLkRo_+;qz1x4sanm13r>^*?cq{4m=G;0v z>rFq?cftG2j~zGtlXM1)AIC?EKgT~8e~M2L&s3MMcj6iFd3eMqk-x4!fccks{8#Bz zqq9%E3VuYqJAOjEEB+^L=NZ8~cg5|Tv7QI_&93i}(flkdED3JEkE_r5XK~z|{|r8E z4)KY2LGkqUg7YjYo*XZS>paz+^^y0Dd73$H<{3(-mG~gMllTq1tN3NSm*eK+-naMA zar1F2)DQMGSiA^664!lAbk;}S^Hsq;|Hg6C|BcQf@xAzW;wc&g^Q;k1ifX zeZCbu-cma6(P=B*0q^SR^z-<5=}eUP^>jY>_!8+PX%gIr<>HC(AH+-GKZzH^x8wFa53=6_9=|4?R&;KP zx4<8W55u2`e}+f-@6Fc{^Y!8s^ThLbF5LdQ-%>jH#24cwJe`Wpdh_*t2VajGIBvck z9ir1jd_Ue+JbKgMd36+ziuc6r`CnqcAA5YdbaK;~C7u&s=;?gttdD%Z#D2FqZuVQ3 z&JOW+@dM%?;=hac#ZTdOzyGk`i_ZGU_gAZf_gDWqZsz%l&SUYJ_-pZB@My0?UuU-A z@o_uPE9ObztT*$tXP&%{n|UtNDJXssFD-q$-zv^})1N}Wp5vw;r&(}+8i~ikTZ|B85i{0^@3JaN{Wc?x|W+~??F@gvXMzFy6z z6I*;1oZ^l27 z&MNw&o%NBQ7o6Kn$IWwmL1&Km1AMXg$duh%M==d5@w{G#KL_lJ*r({b~0m$3e>_*eK7T=x|v%A0#=`t9i_b=>p| zwGQS?A)XJI+zn`7Lc`kI^oM(YH!Fetf&x3z2-W~r@yc50^xBIp8@A3F0>1?8N zO?(4>-_v>S@sv^D+$*!+b9B;*pTV=^I)6crzbl=nZG-cyFCK=s^mICTe7JP-(HSkC z3!fz337;n35uYnQ37;=M9$${@`TXed|4HWnonzwr@Ux!IHIM%%ou_o7MhkuJxAA!5 zBijYfE0Oq6JQc3{&EoMg(%DLK#INB!#INA}aXU{c<{9eoucZ^OLvVi< zh{wTKdOGW!_2%n)*xKNI%O1zg>vIu02gD2D$Hcqie~5R*!*RRctnBxu$796^y$_S= z#1o&0C&#s)(ODn)eu@1Sa@_29J)L6WKjP)Z|HLbapTcY7cAg^aw~4bp^8FR_yzjV~ z=RZ2##b4qdif8K>+=l_;S@2=Fou>lxjCa+KJi}o5%Dka6XMhG3wT62^84Ab{P#_6csy#%(EGN9PE7Glcp~v|Jel}; zJe_!~_k!n@NjwIg54ZE%=T*X4Z_YF9hv4(KhU4Zui_@tso*!>4J{NB;J{|9X>pVT2 z^=6(v%rnq&Gf#|8!G4E`zoI`{yc_GsiNA+W6aN{XDgF~a7q|1*=KgOHpNsEyI+6F5 zeVugN>?>#IU|)ZVXT&dwufea0FT?NQc1}CbGiQC|IsX_u_qee_?`@LzgLx8)$HP;K ze}bnK?~iA4+{s^mov2;JE3x?h@>)iFk9ot@v`h zqxcfMhxiq|w|F={P&`vt?z4D0d^m3R`w!o5PIKJ-esiAV=E)x99(7 zxcz=JY+Z0q!W}o~*^)W0h&RRWh|k3T5ubuT$L)UY{Ly0v_ftJHZhyV&3Z3lYm+*p~ zPHB%fl}?;)!SiY<9t-c}>3rbv3DPM*XR>%ce72{v*yB5-)11z3@y7V?;#2UW;*;>d z#JAw*#W&#Baea>ecsxOz(AT9$bdrcaz|-Q|&+hT^(#h66c)pdyQ{nH3ufgkze}^~2 zb)F6$A0(aYbUqcoijNVG-y@iRym(xECT{1s!0W>TkN+&4Vsv(j7r}p%&L#RMJbqg` zE$G}AZ-&2+&OQ1u;)cFHSkHpn*N4yO(Qz z>~{hC?d`bv`WsH?L-F(Y5b+qjg6BI-JQ_Y8xBJb^e!q0qn|Y2f&r-+DJbCD>5YL7G zC|)1mAYK>Wj@x{pnm1{}8_|eY@Ys&U(|YNIz=)(EB!* zPE7IHcp~u~crx){@C>-!?^FK!Be^_YNjlf)R1?2~*AvDtIUK8Je+x`B@_nSu@cfa2}>$o|AGg-_(85Z`yargVp*a<`5r`h#Mar^yd zMb0y$%#?)zm!gUI$?=J?@wDi4sQGZ(og2`ywVv>r=a*q zyo_{S)356B4$@gkr?dESytk(_$m27mbC}K?@!#>q;t%m<;{W15;PyP@Wi>ww3)|}P z)6z*jAh6?3H=Bdv-=^Z!oETofJd_JBRw|%?c;?8>0A4b2DPTjB}u)VQ7h9qxZA@g8_(rxST^*;gaS&74E&HxnO#w-=8! zB$%_4_-oep!tI=Po&nB!Gf(2p!8wn0+|1LB{uko!;WNaKqr^7-;{mpN`e zZmv&*eSIgM4quP!zJ77mn|^)zhaETl^>mJluf@-bhkX{z6E6Oe^*6-JvHp&DDg3ec zK>WG*NBC>p?)NI+Zzg^#xaY>*?>EyrZl3I1?qLzf-S0PRIPR`*fZOjkhjE^59XIFs zBXf2X{~qrlei!d8{x?1lxBIp8kMQ_>>69B9Jg>##W$@LW&PI=)kWL3Wr^Vahmpq-@ z9*>he^z~{Codn{e@RYcoPiBu-kj`2xo~(n~NtM7My=;@q~D1T<7oY z@d?tYLuayhZG5(;v)JQXr89)icJV&=e(_ktgZ&;7kA|Pbb-x!p{zN)&(|I9Y9*>?P z^!{|hV~cmh-@@%YYj}Og;PJB3`GU^d;^Xm}()p2oLyvct&JT1x5MP52lFoMeBR#%A zI)BhvB7Oq@-qYFS@srYdLFZ5LXZR)YOe2E(b4@%0ejm5b>md7m?(vi7zm3ns?S3z@-(?=(EuCZ|gXgd#`k9@zhC3v59$8odYQgr?iFM&T7 zZ-f6Q-U^SM>dpHK^AZ1Hze#cXexN?{WOdxkGlEV|@nLu&@#T0i@o(|+xIO<@%u~Zz zZ_Z~5^R#x{%=0^)_TmTe?$WpW{m5Bw`a9?kbKLYF&>1EE4?a;m)u`Y;OchUoe~m|^ zBY!__4E}o)-+FwzbSlvKRlFR2NW2q%M7$&Zr}zZ?ocK8W25#rK&+CD+KJxRI^NgN4 z^z~{po!H_(;7PWGd~Lp8{oM4lhuurMRM41kAEZmW%L(`FUG&~bbj*qG3i{U z^N08a{DP-*!{ag1gx-_%p9kj_M?5W_6gQ`3&Zjl!lg{JCq*IwrDe;PU73p-QU&rH} zrPGB@H}TGRKk-TU$Kqe$Lvg!bJI^?eFO<$tbe4**!@n0li~lJ87rs?I*4W^AZ5NM$ z@5goiV;;XHoqTleiRZzeiZ{YviZ{Sxqz%1qpW$)Dhu{fuJAZfXLspOH_jq;bFQ)&F z_(Hsqr_;vc{iX98ok8OJ@e!WR7am_C9ot_nZu>uZI@>*dRyq%uGhF;0e#6sw;PJ%i zLZ5rValyTPOFS>09@pod)8kd7(~V9I@h*6M>Gb1Xwe)yD=}e;YvG^DGaOr$Pe}cys zOJ^OOW#T{JYsLS<*NdOVf5z>3+IjYQ{DO3%j1QjIW%1YaZ;R(*{eAHq_%rcF_$%=S zc+B*{{n7aodptL8fB)@3I{C#v#!HCL$IFP%!>fq@hSw0^kH3rC`G;{II(WQ?$45#3 z9{sW6ckrp6&RmbLlTL~W!E@gz{uaK&)A`Ngm!wmk&NcC}_yg&T<=kF*JWYns*O~X} zWDxI&=fv%EvHijxuPdEJbQ+3(gSYZ@I(vM$bk5QlE&dliNjg(FpRYW=Ryt9>2%hhH z@z?aXOJ_Fy10KI9ogDP9if6;`ir2ya6|arI!0q$0^Tfy)`ubo!J#JqIKBALZydR!N zd@f!h(di+61OG@o>BQjq4iry}4;L?wj}|YBkH_u& z-*6x1dwhk*cS*k^{k`Jt@xz|ZpC125I^*a(68{|k&(n#WDfC|1{bs`Ly|Vpm;D;9=Mf@f{+tXR>@$J&dH7U4*-c|fM-c$T4-d{ZFJeez;*sFJib&qCF!gXFOL5x-WJ~=-WuO7J`Vp? z{BwLiZs%XmeK_aw>mCow68e7Qd-~DESK$e8{kSPTUQjwG=@b<|j+gUvs(ZYxbY9Zw zDE=JpEuDLB1;0Kv$m27mlYL5XujYtn#us}!t3CdkbUM)apLiSml&5piB&z4S6I`hN}Q>jjUGQCoxaR@TD%v2(bKu*@z~izpYLiq@x@o*$#H$|89iQB zI@jsEEq)cRDV+q|tA-x$E}i((dEF3?iw}}c3i=~GK36)0>C6`|h%Xm!j;|7LivNV$ z^R)A9_xLI445f2M{8Rjj__z4q;!E&<#E;^S#1G^D;W~fp9KpR(&y3smw~y&$7k`Ks z5KsSQ@O+Dir^U;P*TmlzuZ~y6?VM@34=p_Yp2vqszZd;s;yv(jp3ZcSe8uf- zhHvt8c6t0S>1?HQUVJltOF9!cw?`gNnltou<_et@;^BBk+&&lE&+YN*(#bR4($*Mf^Oz&(k^T@f*^K zH7j_Icf@1hk3F5R+@W7z?0!?>_Unu7rxUmR+@4NRkJpz@A?9o>o)2&1>2&e+y}!`IgRB@g?|f>8#*h{mxKAgo z_+31kc*?JW`<6>QIbImIpGS6{vL0_FoeFfCiI>CMi+9F5iNA;U5}$(i6`zC;#&!Nt z9-k+jpXe+UUx%+0KZ}1a{ujPcJl5>s{I`n7z<1zw{*By+lODg|@u$+yNB^aG9y~_g z(AN|DaT9qwCvIP78qvus-T*J==~VD|Q|Sz*(^7mO-bFgwIk&zZpCp~dbf$^V$LD%F zOFh0zIv42d6+eR?_H_RA_#^40o)g@wXW}XGsQE&l?>^2azQ?oS_W4$zlS{lDUQ{|q z=$H3+6Y0E1r-gV2yrcMd{C)AUcyHW(9@%*Yd3>sLexNf$d=37M_-TBR_#gOp;?d>? z&ufi%6nqn|^Y8Nb8R_Jrb3r@@{D2LfXX)&v(@lIg-p|t+;_)w~WBXr;+x}8dXN|`XN#`DO9udEV z|LN&m_IOx<(Dxg8zYgwgbn%>c0$iVaN{<(nPG>qL#oxm#O6MH+>K%`Fl+JiM?~9Mc z`%32;{ZBkTT{>&%%o1OXFA)C&Um|`2Uya-IwDWBA_+jb1qH|pQ1%6gM+q~fUhKpyx zZ;02!?}*pIALBZISi#WO0lTl%xcz+ph)#O(es~V?xp*G&*?3X$y?9CS-FP|N&VP&h z(7@xZJpPgNZ_ytpeghxw=}hqWV(BFPCU}m^#1rFdJ)JEcKPH{hbp8-8iC>n^1J3P^ z$Kw_XeVyq@C!u&-JSA?Qi|uFjcm?TvL#ML%9K5!t)5PO_rE{82fAK%?&!qE$^BL>$ z1=4v%XNmX=e2sLXrwIOiJPtM$@?}J`%s{={)s#;v%8<%J$z9 zxBbkxo?Bjz*Obop%=xbPO1z1u)6U~Vq;r$bF!5{nI8SG~$Ja+x~YDM)9ccz%4QcvF0icw>CA_;7rg_)vT;uJdp4_;KlcOXrmM5itg3e3vrFe{z|NrNk$m4l& z`+P6cDJXssFD0F7+^fnSZz-MF-}1U49uw~-ox1ct^!NnnwD_i#Ef#n0l2aQj?rKefk8NGIL$;GUEb zPlZ?Ubn1A#n{=Ae=_TG6|5!S+IG9Cao>ja8o)6dgOL)AV zbUM>%B>o=WTKo&Vz4&;%oA^e&m-tV3Kitm0l>6|x$ESLHrS#9z|6cqre50qc)8l_i zC)Ii3@bf?xA=?t46T+0c7s`|-tXKQ*rBmeu1GrIU|2tBU8s>v%fNJpPe%y3!da z-U%P>=}hqWGU+U$^PTtte7$s5bFY5!_#e{QN9Ql`J@{4WY@mP7HI)vs`wgwj`(T(8}UEzW#Z9R1?T^rcocjsZs*_1ec0pi!yf-z`nl-e7SDk{@^oH% zJZ1UNdsvT7TJbt~HeB~rz~j}W^D&)w#6QBDN#|G2t%Juulg@lPBgE(86Fi+69{*7~ zXXtDYKZS4ibPjm@s&taC4(`Ipoa1GnEV&!wM7 zd^TRx(<$%qCeqnOr-k?qyrZYn)8nJ0WBX&pZGVQRGvDLeq;rcocZgrd4|qDqJ$_$0 zIoAaD>Y;d6{FSE@tK$Fvxo5@g^X)()R3X(~Pn?;xF<^m}-G zq;$Tc^SSs6e2Vxn{7dm8_&nTxzSwz|d3?Kcp3(VL{0V+YJk#3X`5qC^fd4688$Tyr z3%`cz{P#T`r&8$Goj!CDh<|{m5TAvo5ubr)72k#D6yJg8!|nX{xDS;)UfbiHq<@`$ zSMjTOUr*-~k589Q!XJX?I7>V}zQEI2>G56CDNbjvcv1Ygbe?c-=RE#gI&JCvC*Bf| zRXOza#P*YTyZ~-rXXel;B0du@>*-YUcn9g6pwn6W82*8DUUNPJJw8P`&**$9{sf;d zo!BXZ-#@m(<2$93;m6?q>=93g|4+OceoVXyeg?OnM|Pg89)BgBo^+yA34ML&j>i?B zjwckKil-F+1y3u!4bO(_`~^H-Lpqn~)E2*pHx`e(E;#?@;<51#;>GdK;zjZ9xSc-% z_hG2V$9a5_^jp&ZR=hdB#?#sC@uSiiPUocfQ2e~7^S8&ts)pVl+m9}8`$=#;x3nHF zC7qSbSx)?0yqc#|&*MF%bB#_P@k{t1PiLgZ=SwHk`rsZe7SDjMl1_5&)dr9MPde4; z922jCpOa1o`qw@FS~}h7M5`A1+`HoO#i!zl#V6ybaeE)^JXt+nRyv#Lye+-~uPJ^3 ze^>k*-b6g^Pr>tQAs!p=i0k}4Jw94G1?h|v&yP?fhA} z4?lZ+pU12xlNPsMLarzq$1(BtuI zgg)O*bP|hiz|-RP`Ie)f-Q(q@bB<0W@iX{4;?Xw-&#SI@RJ<9k^K|g|AnD|#^Qm}l ze2jQQe7tyle7g9j_$={H@CCTeztZEsN@o$Bec}u7BjN|}6XN^ubK(#2i{k&{*Kj+3 zCGNuukH@GP+&5jH0k_}Rq}~)f_blQm@w}c+agW!LPDMHm#4F$}J)KS-A0i#wA0}@5 z6Fr?-9$zn=Zp^t!yfePj(>dtzzooO3&Ta99_#;o}wa3%e3VofqKqsU4IXo9`?@2B0 zRS}QBBc14*dEF3?inowXL;CM|{1fTqrZZGLCq7oZKK_MxU3>;^_iN{w@9~Y&89-;N zcz=Ai_&4}|@vrft;s@}P;`{LPxX%B#$D_OxdLQo6i6MR)Pbi*zOYnS?iYLRaz4&{0H&5q7k57=!7j!0zkH^3AbQXDhi*(k}`9=H( ze4o=X|D~s=Da;9mg6|B$bxLLn|^|>84 z>(itT)>n1htbfY-x{jOmH(1}zakIX8FhIk^*u5M>z_Do*8k1?QQi$b&nlUM^%=!` z<0Zvc;SC)(efzvxJ8tG_l{x5tB>pizO?)oC+Hup*#QYl_H~sIja6XQk_4|3gXC03` zAO3rG4;(k^`>;N0ozU}H!o7{}@!Yt5e==}u@cNTq{4}2zMV*fMkoLbTQCoZ)fA92r z;_di*gFg|sf8X+S@vQv0-S5Pk;lGO8zsK*4xc&QT9*EmN*Br0zn{zY!vVVRjt9UDZ z9k{Hx{r#Vf#O?2M=pk-@J$$6N{l0ImcspLV*NOMWkK^V!n*Tms#oiG=iTH8e@t6_* zS>+g!e$8?7->qA>GkESd#h2pu95)#T;i>G$nbOt<(%!Flk+;qnO8qAYhdrFpXpTMU(Zu;@|2K`y$QSb%Qk57N4v)=UU)8F8@>5rweMSKkYtGHdiPu#9Q zhDW3$_nVP<&N}POJj0mhj^k#Y^?cla#8=@jq~DW%jQVfxv+1v;pTcp|Pqi;N&ott1 z;aSBy;W@?I}qxc)qnAH}iZ$r=Iv6yt(*IytVi>yo2NBAdw@aQ^R$C&l}CI)gnvOFE_L z%oQ(*FZFcRc>Iub+R`~9-WvbQ)4AgDC=K7d{+Q=AmQD=uQFub}9e7glU+}czH}Q<( z*YI4pKHnl9uPdGG2ZQI^P&_N%+S7U8`C9yMe5rV%--GA7LOcP!4!7sIgZ=*O z@xP=~jLv!SBKURj7WggkX80rA&U1iyUVA)Ub<^V;C7 zkNo`QJoh&-knnCGeEW}Y^5UWzxtV>AtY zecOr05#Nd@6;F0Fm_LPh0z55l=YPiiFXQp59`7Li_Vhc8x5hv4bOw5ShIGEBGh6&C ze37TK%H#W`^9P+n;wSKv()o{byWsIB(s@DWh4?c(X0y=OrC5BPCiZwP+`L|ydzI-} z@Z9r>XTXb#*T74QSHmmg_MX^z-t~AV>3l$^t9VbmulNkSzxZ_gGw~hx2=QO=3AoNb z!{gse=PI2a#V_Mq#p53j&VRdjTztQHN&Jv_ar`K5=a0{QxaRTu9*@Jnh_UyiHT?wQ zE%6k%e%wqRFD0GPbjpbj$E$fd^*r81Iy>p~5Z{gu^mImee7Et*O+>=w{S@3XA=cdPFwg~-t(Vk9R@wRv}+&2w!gj(;eA6dxdd7$1h){n~lPdwh{}p3?bN{4u^pJmbmW`K}XBk8cxy2j3xH z6F-3K{Kq|hTROez+!ybKKNFvczY_lvkJ&QxzU{>0if_jg;dcJ4+=px)FW~VS(!WN( zw)hpiv8U74;~z^W!5_hM94sCWAL;2#^!QTg6r;03ya>L*>6m{%_&@WDsS!VRc>J7n z+R(Wu-U7er={)p!l2)P5eKwus;xq6JxOwjG{JA_{RXWG%)D%C8H;~S8&Zm{fKa|c> zIs?QX<0GVVmi`wWUm~6Kr-J*lTs$rQgLqZ^C-KVoFStEVJI{WPhfAjioh#zq@H^tu z@PEXo;LpW>#{U!FipOgG=KZa?4|e_}9?yf@_br#`6c7)`ONz%i9h`qz@mP3O@nU#Q z@gjH~+@AkM?n6h9_w@K^>9?RiPP`dD&C~hX0G7LNcJbbb=AjPH=nJ^H_S{E~FK(YYqx1-~ag1%Dtu34e*(=Vj-K**5g`!FmSV zz7A}plSTX|Jg@k9yrB45yp(vHzk=sgPCOP~4cGbWdAzH13ef2(o)7OY-UJ^c-UuHd zJ`5it{uw?2xAQ;bJ}mI~N{|04{iXExi7&>FcshT1{9oxDqVrh%H~h7y6Q^D1y|Vkw zjN5zlfKGPtfA9iM#~hjc{SVa~H~${IeZ>EnAI+UkJI}_Zu-r}k7 zj~q9h_Wgs-r;eN7|I;f??8yINoa3gykB7a>vdZ}RjVQ0PRET9waxS8h&ANPv*|L{BF zkMMuQAK=e%ohN$xH}}UpcROb$+}@vb=YsReCY}b*Bb`L-w~Ba5ypGc`=Wv8`XzRE+ zhf4H2iocEb5buHa7Vm}+#O*oQc}94AvG~)H!E@XwUW9$!7q5ZG>=1g+W%xcZo#W;T--hCo@mAtn@pj^y@vgW%H#<*1 zk53n$$^3i8_u`ivH?K3PB6k%Q_P}v-4kuZku;ZKaG{0Xru^BAlM=Hn7`f%1462F7j z5`ToZaojwY=scHxj+=f9?!yrL|DFr4V-p=W&*c{9IaT}uK1cdp=`V5CN51~hU+cK( z_dOqco~{?~h5syW*Y6a!>kr}fxvyiMKb-ZE^KcKZJ8tG#&&Rzbz8rrjUg|ccAj`1&xPC9u{Lz_iMPT_O6OKHcwJrsny5g1aW_ZNX$oC0_S_kLW!C7z4vm)o&&vDaVLFZ%f zrT8b(Z$y8Jcqe?0(=i`+0Uvj*=aLc|At4TBhSIkbHZ6~ z=DE*2Hyw{WXF7MqYv51B`{FOed*jhNhrZ6(c@la&2X0?y7SPEf{v}?@)2Zz7cGAgx zB{_ieo6<~-}unI!%$K1+NmK39A)zC?T{zFhoge6{25 zoEva^Pwc*Sc-9|s-0bTG{UhQ}@IS@NT@B9poOl`hns`tArg&HUp5yMm9^!Ui{divS z-hXos&HJKkWabhkj?=* zW5oC2Q>A0)pX>3TJ-*N5*ThG2&i8S14(7QG8-7oH4{7;R$i`n9TXx zeky0Z>93`q+i}xRcP+SY`Nh-VB|QC#&U(`ir(fT3)2~FQvH06~8&AKB$A?PieL5q> zJK>Y0GoJJR%HwOLGl9-}@p1Ui;y>a$#n;zI;ZH|7e9$V6Mu=n z5`T`z>>7ICa$XPaLtOFfcrsk)Pw(*((s`Fo8S!`UD&l?d8sfe2`r=>Xjm78SEpR*k zWbVTU9v|rOsnXv`e}?#W{2NbaxyN@%=Ng^e;#ctBJ)Kh?zb75re;{uAVcp(*T`;dR z_T1unJfFu)c)W@DYMx6w+`djG=FbWCaooJl#QQtAw;zee!3Rly9sTj*pW@5K_u>1* zkK<>=tdnbN<;`UtK&u-qLaNeO7qz z$40|G5dRyWgxho8vDJK(h(Dj?xcmLoLdVVd58<4biWk6FI_`cSw83%Hxp^yij$6c6 z;@cfJot_usM9z88ano6TH|QJ|UxJ@-+;r+?4xUH2{YVUb{-?aq2LPo{mrJVzWi z^Q@qALVPKHPW&={QTzga6W4hjI_u3meV8Xk&o}qS%#-G7oEE$|fL&G3xk zL-DNQpW^v&oxg;~8%pO}I!(ow;O#w~?j9c@ouhQdh#$ZwiBoac1$;`rCN?)O`d z|012fbasjN#t(|m#1D&qiJ!rBo~s^@+AH+_{7fgN_*OhIuKhF~FDac%bjpf{{`B(g7{H3Q8^Ml}?*ynCPZdTlWzdw&oPVu>TA@SXK zG4Wk^1>Anz67098$2&{s2Ayu=*YSShiJt`b=VS4N_%PhgQ<-_jdwiL6iqrW{yeR&Y zr?cHzZ|+ax{d_%g+}xkmbWVsj$Ipq+#4n0}iQmHQe(SK`M;=ewJM{HrE1eYLoAFGz z_VakWhIGQ|)D}OFHx`faG^&P4HC_)PKo_#E-N_+nh= zS?%!y(&%{iaD9*@^2^gisMlSup*JPmI9JBpg0Mf^IY z$IDCSDxFH=m+^PR<2?)RLtXJWcr)=Lcq{Qj`1`n>-@d=?e#rNWq#CPD+9XB7hJ|FjM$IZu0{X95_1>%YD6}aweowMHbhtc2dxam)&vtN87 zepLJ%ep38T{JePT7s33O#FOK<#GByv#2erbal79JmCet>!eaD&^L5aC|89RIcHF!& z+wUWCI&Ria4qmpy$~$hTHJ?W{aQl7wTF$e%Ynjp3W1G zztu1F_3b5{RN~L^%((6=ug7ahC+n-=oNJ3`#v4m#5a-s`;~z`s9Xf->YvQA&GnD>h zk1vx>Upn83_r}+Ye}!)npNa3p?RnaH4to5ubhgvEF8(uqU;G;WQ2Yx1N<7Jb!Sjmp zVdyJ{nW2L{E z{ukok;WIp)`5xaWozrx-iXX#wdpiH~_%-R|ejPmbo8md~C!S7}kKTNJF<%$#d1k=v z_gM|;WD&26=k;`od%U4^CedjsJ|1u9>2&k>XzA>yGfsRjK217baIe1h_|A!9|e~FJ4&mARrUgN}b z;*)SY{~YeaVvn!(_+IJPrT?4wyZCWW=bXnMNoN3^XW}2?Q9lm7KXza7J)RA>_i7!T zT;f0A#ietKb9>uaZ{9bC^FFq|#IxbMrSq8n|2%$6I?L(Y6aN-}CY><8Uye55&HD{={)rC+-*~*`xHha&i^;( zzs2LHq%)n)8S$z36;J1`$72nAa}Uk=Y^4)Vd^4UBxAQ--_eZ=iUfJoG=Q50Y)yQ%4 zaWB(vCVmlbFCIHa@Ekjd$HaT#c1}Cb0FO_RPJTLHis!}Wi8sU-ir2?i;yTZIkN+;6 z;dG9Q55WHtj~X*LpY!5j_)Xl-Q;+BM&{=Pu*IJ%ej6tFIBqyCX;@R<};_u=q#NWX) z;yO=mXT6zc2lJG0+}xjjbjpbL!K;YR!fS}n!0Y2WPfKULndd(9baC9w^DCVm;@k0$ z#ACz?p4UL}X!t1H&eMVCHOb@ONhc4THR8GOP2%v)-d3%>pqb=*A19rR0zZ^J8!$B!L6$ExD7 z@jAGj)6Ub(S#R!@ou`xIW}fPFx{6oE`-)G)`-@M)2Rm*)ZXwQLq~qq}9%B9H;`{L_ zc*N4k_Z4z676(n^Q68 zW9MJ$tT*%TVEzq`oB1!%*&==(|5dy|yx=_diRZzOh6hDAh72k)~5x<8w z5Wj=B6i*R9IOn$FN%1bYJvY1Gz8;_M@p&HK=JCBAzl_`SY`~n?#p~h!csehf_2%B* z=ibKuH1vJfL^_GZ2jHp22PO#4Grjo7cno+r+FGf$>N z!Rut~VWIaYf9hbK_~JS7i*L_uR)|-BN z`t=+){T*q7eKiu_hPM`vpEg+EUOYD5O}r-FOS~%nvG^!_u=p^1C~o(=qO$o}#Ot5q z?)N)$9XC&Q8250!<7WN#;E!vB9dO)Te;haO2h4d+;XK0~H|M#FIj@NSg5MDjOBbBy zKjKeW{~Wjbwev?G9^6m$%(#8u(wTmC@%Qk8o=$0xH&^2z!t+}1xOrZ;=xh={iSHCYoj!P8d&E!R{}WH1Ay|J*JPCdV*XMZE z<55P0zAn|L6GOZ%o(R`|YL6F|&UbW*i+_k$5RaBQ*l%U=JDCEnjq5y3Jl;z>cj@;P zzl{$TPnIS4xSxq9!N=ovp09X)_|jQ#?oZh7!PkYQj+^^amd*9?nINW3k6O8TqmU-bBY(iu%B>d4T0H4=}Hn68>-j#m^v zidPjsjMv5OJe%2XbC36z&SN@*#2?}##M5UD?#~$UwD=U<&a;Pk=6HOgbQ;pxDqa!a zm&p8FH-xVb+?vjy{C5l@ca5$}~fSpScB5Bvpg_j`=}#uyd)^~ib_+@#o`n3Rk+Tx!C7zSIl?^q95?e^qjOOF5`IEFN1ot3 zPm5>4&*65Shn&w-k4GKz=Kh#D?O))Y$Z<1gC;G|6+vDlP7vP!1=is?r3Y@ zoyOv~@wT2$SC5aDPO`kgIgb-hf=~B!=6QUJbV||rMZ5&Q-_tqftT)fA5P#wRWyj6) z>PP3gcw79w_`CUn{XP`0iN6vbhe!GR&HXVScQhUs*XR3|#|uekH=SbQyYLF0PEC)u zmrnBh!G1f5U#H(oJX*nEeP8i=1p*(8>wZUh{A=l)p}#=;euI8R@#IB=^;N}_;dOC4 zPbK!-+~fVFQ-;nU@lyCmPiLaXS4!tYI^T=8!8eMxEf(x|t9WaC4{rBcmHi&}_-*No zq;p?hp!fIjQ=3s5Z@yH3I2=tApAGno=<(w z=Y+G~ygzBr`;)7VoA(LJ=-d#WkN+!Pv}ACekHvH1uW_9x&V)CwKaualnJ10oW}cmN zGKg=*bBgCL70i=YJUd>&uHzz^miBulmk<(@%Uj`1Q07j+=h7 z(!rda#T(%th%d(biOXykK(<>595Py`@FWW-;o|)Af3l_mWV&ZSBs~u7~G#9 z#8cy2aXZgm=Go)%OVX)H=bCs0{Jy92+*xm4-*)i&7H@Ls>%;GK5{YlcQ;AQm6zn&h z_(VJhZufhP{TA|g9qFv6(?I-3yp^ZZ*;#M)d!PM&?6`S7ze;DY_$hp(_^`^sem@ug z44;bI{r<^*=X!jTbe7WDCcYToBYqG+AbtQphU+|MJ^oZWFX_A#zl+D15_*4TRSC`~ zj`$2b8E)sf$oZuAcp2&ZOs9hQR=k#UHu8N?Baio#&Luj1#KZAH;<2j+`~6frCO$^I zAU<9^KRy$;=W~_wS>UWU_c_y%;Qjdzj+^`3iq22sjqqQ@x8u9SH{$yocR%hC$IZvh zUM)C>6XF^1bK?E*i{c;PH*tFoQTPjXA3E#JJi|DL7*j*<;rDdnh_A$x;@VH=tT+8| z`ner9`~90ve(`H~2~WSG$D2zhVfElVTZ_lXyGkb`=hM$wZ{|;YG`J@t9XIorp!2zS z5qyfLKgZ+ir1Jrtjp9A=9iGl_9={}=>2$7%PsRV0PI=DfrN>iG3%x&^=%g3lfaefD zhvyMLgBQdjjz04DX;f#PS{`rYbj)+C$aC!ExOt8-Y6SPBt9X?EN7r3ITUE7v8$YCk zgovO50*Z7h-5@C`At@b7BS^PMgCHr=At@qAgVHI2bV#Q(lJXcYi*?Px-2d;p9pilm z+-> zM(0n%6OE0$@5kx9EPfPEh3o!gFuas>;+G5WS2^+j=zkzSmi0Bo$KVabH{eag*Wj&j zo&Ph#$4KWfo$=xi@##iqf#I8^^KSWYf3}IIz<(7l@_xAffOszaB(B$c$?$)qvyD!) zagpa_3m#AW8lF)6D*ig|=BdkbAf4eQq?4pVc)g{?6XTVo^AY{phIf!oK02Mn^Wc4@ z(~AC3!@reIeL4%p>*7Beou3RpDV_dw&WQKLuZn+*-w>aJKg8Yr>caI#jStU*dMey~ zy}XA`TJc?YX7M|CcJW(ye%!t80Ol!acth!=s2HA~rs6N-ZH-P>!^cTyFr7)_J@J|1 zi7JKj%oR_7e~-KC9me&pG5m;ha??2>{tkZ8=-e_q{)EWqKw~NWKVDaS0p37-9^O)XAKqGgFWwo~`TH0?Q9AeO zd?WrRK1ckus^R^bFP8dxD(>$S@vr%~ zh&k!``3$~}=)l(zuXrAO9q}do*Te_oZ;B`XAl$d~;)(DaxSP|>Q@~pv%oBAW{QC5L z&x3io)2S@p39lu70k0>13UB23v#*PJ-A_CZUN?WW@VeTHXT`hVdR_gz_0PUuqd&&; zpud~Wc=7G{H1TBB!+B=&PcpD;QX4UabY z`ST~ZUpwi<65om^6pyMI-mfI$|FS-XcxKk87Eh07#P$BZV|ZohG^bNdyeVGa=(I4r zk8~!`86Z9cA1AzxlHtC$DlS}+GURXLe>6bCQsdQr13h!4-@fdhVqtnyy zNz%zoXNq`6e6DyEe1Ui+d^zs+^DnMx0klXZd_o+VkM~c8N}T@pE`J@l>_L^YEc~3cL~S z=1I);wlaLMbV|}0E?yiTZ*-=6>z}<}IvBoBTk3gmy)EhdDBc|3AU*=$Bt8t^gS+cZ z!}T8a)<1iH#XOfi59axS&NcDx@q6M&@kio^@u;bh?@zKaPdwbcKk3IjsXY(o`J2vL z;!p5w(s$RJ&s!f{?^62jc^>rNtP`G}vf^p*s^Vqw8seq#hWOL;v!7G^$Jf7~7(PHc zZRrdWZ;gK`J{BJM7#r@O#EX! z1@7iA!1*s|cqzjhOaBP{=HdtNc1EY0;p3%~q<**$UyCQiXBnNvhVPV4MLNHTzmFf5 zP6_tyjNy-@(~-{q#M|Ssr$;`Q-lw0~@Qk?ozVrk-S;fcUdBiv11;p3kC2@C7+&mQx zZzi3KbUqe8k9QQ0|512@rEyvPCYuy#OvVe#0TI%i}%BK zihqayBEAU!4R`Zb;XGV6{Ep#qXGA_v4$w~^z8_D9>+7a5Jil~eGzjlwVev=wOB%~(v3h&oO@z?NOxXypj@Eg)8PUntzQT#9QmiRy7 z&GFc?BG21bcs%jZcp}`*-<>Lkeo8un>6{b)0>5T-?i>En?8y869i3Oi7vXQz{oc z#QWs@o(J!f57H?t{u^Fe`W-n}RSa(_oxkX`7Jr0ykxmc#{S2QZozzXj`#VKE6+TzI z48B0T6uu01`|0LcZ}=hUw4rlMycK><{44yD_-Oo=_y+t>@pbtBaGgKaobX(!zk$2= zx991+DSj5uA|9t{xc@oCW8?Y7-^B}y=fX?iZqB}(hYt;JWO#S!*QVcF{6l<@(HU*{ zeCZ6Nvsk>{6XiW_!a!B(fQNxL~|pbGl`mo_wi-%1b9kZ?@M~a-;+*W zI%UOk<5i7LU2pxf??3PyYvp~e1Opz;jIszV~G!k-?yCNdGH)NMrVfj5qyF4=W(u<8@@+6|Iyhe z{ttdaI!ozaH2iPrq;DCXpQ!nf_dOjRSG*FQK)eE;40q?j&6CFP{L<-6r?B{^cxmx( z@bcnc-!JjaUj9Q)Pt;5k;9&H?d)_(|#i z%(=Q`_&?HVN+;UF$ot+He-U^0cPIU1hG&<~Fgovu55WtG|9}@0{~j-g>payAZzY{$ zblQm@!Mlq8hxZi!2OlV&xm9=`hKOgx$KX2uH-`Txoho!zi&w%oiFd)biFd|-6`zS8 z5TA}8#ohdSIS)4se`t83MUm%iJN=i%x8f;reckki7nROUIwi%g;}wifO~cztCu!^O zzIPN)g7+~xLkyoQog#D=h!?<@8J+cpAC^vcI>*I7!_OO?8-~YR9C?42(}^Sg1O5{3 z?(bpFRSLu3mCi9b`NWUlrKFR(Q1D7oQI);*!E?9+&*6ri2hZUcZNmH8RQ!MR+lUWm zeFyQ+@$R_0UN_I@-uhsk{me7Y^I)F4bS8;k$7hPyYa7l#SG*>^(DUGR&+@vkAHW}oCv6}0 z{}NA(NB=JJ+*ZY7i&w zKRzFg_B{A})bq3O{EQQCjZYQN(j{C!Q#=#C2zS>zk?UPy_yOrurE^5QGJe+RTr>QI zA0nR*{prLP?}R56f1_)7y|0R=#NWi-^-kt`vl?DrI`7e`BwhmlQ2Z0Tu6RqlDX#Oh zHGHUaCes-yJ_4U0p08WDKa<7t;B#;{&n)(5iQ#*s^AVkW;`Q(o(kWXsc%`VQi-!Lr zodI;BEsH!S{qT6=^YMh@-{Q%|_u(nT_u?6Fw?E&qKe@d1!N>1XK7LDj9(?@%k4_o! z2Y40n_q&JptGak8ygsh;wD8sk^W0&cuAT?;Or+COd@Mdt{5O1v_+ES@?&ev>{(Nir zQm+%tndWHtb_wM{vxjZ zWQM;howaoGiLb^>7@Z1+e=MCdblQlY!n+uqeuht#PNJUS{hBEr3tuQc5MLrb0AD4( z1Yak<5Z{XH{{L$DHR=38=a%>t{ISuA{$u3(7I*$%$KCsuG`+(8c|-g~JcIaucoy*o zcy3&;x2WMCN~d%0aGtv2pW;o$zs6gNPsBUnZl3Kt2YMSmSvs5OOcVbZpC_GN^nWmX zmvk=E*(-h#KPH_c^v@gqpLF8)3HLL`ipb|fTs#5p_Q&;;8=hM_IqBpV&yJT6uZfoy zuZ~y2-8|>H-a3YNkxmafJ;b}=pNmh&2a8X|$KYx~;j5*yo6dUi&G>esv)}NW z(#hL5yuWwFGviOhH{$<_|Afa`8Ts6J$n_>MJO}QcCzt5FD}DhlVsy$H-b^}4`i0l~ zv3MN3qxew#Gx5QAU)?WQNABemA6^s2D<*g6iPgdpqf@Jr$&@N1qwd;ibt-t#|gY)+6efzQSeR~SegMO!h;dP}JZ;xjb{~6CJz7EeL{y)5c_#?ce zc)l;fdCG{ti&wy(j{fZDFDpt0zlw^g@45f;h?brQJCKKS*vIo={gf~hHP&-~{Z!oT zXI1udq36MVc4W>a;%)I&;*0Qg;`8vWxVv6A|F4E$m(C?Rx5Y2ue;J(^Ya-8;d)+j+ zdyd5$6yC3N;&JfoMkl}FHKmh-P95=VcvGX(*6?A{sZD2;cny4__-Ona@lp63@zwZz z@s;=wxZdA&h98yA89FD$PvMu0&TYeASR3AVcYj|T9Nypf;?eP>;-BNMiuc9S;(EPV z41Z5L>*$mfUxQZ_Ka1B8KaDrS-8|)aKD07?uykG+67J7%@mTmc=~SdY&G41d$x3If zcxHT?bn4LGXZQ{2d_d=pcoqDK(TTY(^7-IiH!beYPZv6Gi+9Gei%-Sh5&s4+jJx~Q zoa-%PcvIy!F9;Ze%~JdLHa&K{_?W-@!i;pM^ITpNzM{b)L@N`e2@%C&KgG-}7Le z7e|EG`-ON+e3ba7_*dd>@NdMo3qk&wK9Bwbf(i8Bt8`%Bb}A> zzcGBdbhgu3CB7BkD1H;)Dt;Z`i@S5;<~eHkZRsQ(6`qHC;z{to#S7t4KSw@)3gB_Y zTi^-Ao8ifDoj;A?1*9{aP7(2;cp33!`1|5Z@#^BI@LJ+0@%p%%e;wzcqv1UbA1D3j zUxxQ(l6Vw8)95TRe2a9l(b*xM0pD+QP8j~Dbo$VFDBcT?u`%*_;`S|p;hAywoS8=_ zyZCH8pV28{cmwHNpwmSB4Bp!4d}jC<>7*JR-rw=!De!61*}}P+Z}>*(l%%s&yg0s3 zI=|3AZunj4w50PuygB}__$WO3rpV{U2s}RSK91ZxuNa<9IxFbp5?_uN6#pGBDt-bl zEB?Zm@P1VgkA>I3b^Zp1ca=_7Iz7cR;{(O3<3q$hz{iO9!N-gD!YAWy{@*wc-y6Qh z@B`AHP5+4aO#F<|`NQyNnMw;z6$SqZt>W738PcN@QZyi@!QHJP*aili}rYou|6tt))|pPJ8hpcsKDDcrWp0 z_!r`1@S);g;$Pu9{}jVlNM|LTHR3}f`^4jn3-|w^cx?O_?&iP3dAMo# zBf}GKjXZDJ=qDA=f~Ugubu$=VOgc5_yeD1_uV{2WG`yX3deZq+ygT04=nOUdTj|WA zvrv2nzTD_+F#LpccG5X5z8$|}bnbfVpM5`vulJ*Ei@d+L=)@AgfhWY>{k_Mzde!ip z(n&g=&m-bV@M6-5DiXX>R8)Dx8%w7ko#x{C@pj^k@lVAY;yrP9y>6Z_44*2Up>$@7 z55^aY|9~$M{~li@{yV--`~pS-d_9;-bwrh-VJxxySHTUtEi}bX82X{ zM)+OaU9X$}e}=!hGxFR{qmxp63Z5R%m+{d? zXR_g|r1R1@;r&`Co&et}ULM~mUKamNyghzcye)nj*Zse0c+6dq_jdxFIO5~*B)Ild z8lGD^Tj=B$UxSwrFE}OK&(h*~@yfW)Q`_(k()pB5XYmerZ}EwEfAR77NZie{j_1Qf z!+(^{Pjps`ug5n@=O_Am48I_q3v{lCpTqx@&K~-I8~)nv$nz6tYIwg=iO0q>;BJ3h zKbPT^rIU?LHSsKXJ@FcNL-A_(C%BvEDA(J`@X^xgPG_8WSA44Y41A{eG<*^6=DEN; zD-1s%oo#fEh;PBq8l7w2`rz|X&fmlLE&ua8_rG>L5$RN*Q$oBvUcuRHJo%m^dCGO^l$A2%m(OVzPv!8hmdmhXaYkGKp zkBi5^FG$~A?@e!g(2qJ5p0~d|5Bgc?{3D(TkNr#Jd8>-Y6R(WFf(I`dyy8v%{+iT= z=a)_wI)%kM|mUte_vx&|!@iq85@eDJ=d43j8i|-WgiT@(r3I7du z^C##0|7rN&hQGEq@*JL_pGy1`o*viN&1rZg>BOED?!yP-G4Z-ar_z-zFOVy>x2OSuS1;|4BL->F+fBtaN(PxhUQpzbQTozbifie}cRF<>ra`Yk1$) zQ{wLD+Pmna5#NDl62F6I6TgM$6;ClcJP!rMU&G(Sb;$6j? zt#9s|#5bP5_?OFG%<)DzE)H#0iz3?D3=R&<7ox4_34ooR-zl+GMF zYsF{bTcneRbG6s-OVZgz=MV86_(SPTrXRKc`R9vg?|)8*?|)wMJox;0pUx}dH}E&a zd(92c!<*ur@hrIeICAsk@zw|PjAouPo(J=srt`k|F}%8Xxo^XHYKfP`>wEs}eFCrB z-1Fddr?UPN@iF+PxL#K;Z++0;Pk*H6K|ja5aLzH}S@6l?J@IMcUGaJ1Yw$(lEASu1 zAKott!i5x7KHaJ+JWcKrQkj$!Q+Wn#uJKH#FLA6 z##4xYil@W%{$@A)ed&Bdr?U9hcx|K8#PA-{*-595_)qv?@nQ?Z{Twb{2p@;*^-eQ< zrF6Q|Su6e-zD0ZrzC(O6eh_!_oaXs(%J3)B*+S=E@lE&(2P2;+=jgv=cqZJv&$&t` zoA_lszjSWVFKKu~=_FVb-mj+O@$t4sr>o)Pr1K7)N#Z&2nc{Wux#G3(?{Rm(o^ZWu z3_l{BK6Flq_rfoT&&98Z&&KcKZl2i1f?qxT^Qa7e^-$zx0kl z9r%1y!t>xcc9%|R@tb&M@hpqO^H5DZ6J8&8^Ss3MwlMs2=~SgNSiCYm#^`+Gt$+4@ ziR)eLd2qd-(OD|q311^V8Q&m23EzRc>rKn`{^qTJ_Wp`_&U+rr^D~{x;v4YW;+ODy z;urA0aW_vk=81jy`MC<_NqjbZf0DxUV4is2h4(kLcpN+v?)vU}-}Tl9{o?eCc^>q0 z(s@rjJ6=(|CSFy%I$jTV^Ss3OEt?zOM>;*}3=r>*4;P<_eoho&spZV?|CrKb~=y6 zf5M|3d43Lq^;y3U=ZPhr9#1IV4^JZA4Ns1{`3rLX^NXkAzc(!Db)KEubK%EDbjqtx|)eM#M|O-PB%|iZ+$S&M&=plc`(m)IzzEi_kL*zoebgw z@tj7dpy3}%XEU9;;v4a%(kaRLY-{)z(z!xssQ4v(oOCMCpJw<<>Abi+-2b)W@$fC; z@8UbebK(1OcTU_qCk+2nI(6wh6t9i{C*B{AaV+vV(-(hHd@-I_d?EfCuJgZTcwy=M zMyI&=KD@m6W4x01L;OSWw|)%oS6%V6cthOHUzPLF+3-GwPn3Q+`rn9`!RHvAC5CU8 zPDeVs#oOWsjm{~P>1Oyi=~SdMN&J0$rgUm^t`-@-MLHen>=18{ACOLC`o9}~Upf=$JQg2^ zM>`SueAs};5?_ZW#NEe{o99)-b4uqTo!sK*@gm~!SBCeugm_&1eet|_W%1m2EnMes zYP5r2fggzI&sF#KKVq*)c7lYHWD;H9K9jD4%@tq6b*z4gI7`GsP>jey;fY_(IQv z*FDSYF84fm-O;RHB|Z?}h(BE#73`$DuHD}Hpr7VKxX&j&5BhJe39svn_#60D@pkwP z@mBZ)@x}OG;`8z7zek?it9Weji+Ft8UGMRd!LOeF{Xw4lKWE9{d9VX(Ifq3(4}Q*) zlb^HH@Z4YD0CzuUX~cfE_Wap?t_}CIz4#k=H}U#-FY(&=7r47#H~*K0FP6>(I!ndJ z;cJb~R>RLpXC0kO;%o5RM&~cXlbwn@4`=DTE`AzMhwJ`iH@t#$;;swtR~7MCcx~|# zczy9=cysZV_$T7c@lSD`zn9^Yq%(@n6!8)Gw?=2F;X9?XfzB`DKj4SO%dQXi^SJnX z_<3Bf_lDsyPe-1IzI5V<_r_lmpM$?5J_}EayLo=)`H;o%a?;sDr=s{Syry)1quFQWe2{cb(;sd4chY%fLwLV_5Pun8XLPn1eqK5S>0B1ikKYz=jNcP)i2sAT z`*n@$ec?=aPSn%k?(3sLbTWz$#B+&%hvyMrgcrlz>poKid_MZp^WgK*Uv$QbKftGmzxz{o9%hK=!WZK1dZY3Ew;v7vO**yd92Wl&KVx+M z@YV;{8+9>!Kl8-%;Cg%0`B%Ir{=(VF=gBNQzW5CM72I9#OI&YiZ+$RNPUgw!c`(lo zI=RKS;YGx6;w8kd+SEY5Bf9c zkMum~=chA9JTE?3{3Cptcs+ap{xtpU{q0zO&a&L_U!?Ono&Dnd@#EqP@KfUR@XO-+ z@oVD0;t%m){`gP-uS4>u|1bFG-1Fy^@2PP2yn0M0t@wRBv(d?I_y^L-y)irwHN|t{ z4UEpmh7XiZJ32$e+u&oQ(~bT4#_;9R8B1rC_!xY%bo$f(#qf*LSxx7v_)7e)_!<0x z_$mBf+?@wEPn`3S=fQaz+?|Kmo5K5*PCO=_O*|W(OFRo+P`ox?RQyA{EUxo^V0bI( z^rq8JyeHmOd=B1Id=@@Xd>=kUd@nu{ck>V8Jj^nDvEkdKf1my?@jvkcM(20K?@K4e z=J38h7Jm(ob|Lcoxa*2<_*=L;S0(9W5HF7Bmd;T2t*GJkq|=&CL-CgQ$42KN5 zykBd@U&puLI{#k7FH5HcoonL7@O$DP$HbRPCms8?*6^d!$wB9& zcozJk(Ya-K{Hu}oy)~Ug;w|x4ad+R{{BIgwR629%loX$hSCCFt_NS)dZKboDPDk;b zcrWSXp+Cs*Y0|k(XO{R)e35vvo#A=-UOXwj8h88Y=Gkoc3F#D}b6UI*enq?)eqFo? zeqa1c{IU2*JlY@O`O*2~8=ek#?^}MPlTmybo=f~Bo=5yRUQ|5xu5kZLipRvu;%@$e zoQL{`w=le~^s~_aTs#v#!stvee2H|b(OD*56<=p`wi$j(I<9|C-1To6oyUg1axL;X z)15hA6Yq+@iR*pIYIu3+Os7*xd@BB-(P`wZ558ZzpYNA;@I3f_={7o@#kb(SrC)|~ zHQ4a!(z#A&w)h|T66sW-zuNHq(s^lj_;GPaJQ03MJU@O;JTHC?clXQ9bKme6uScGT z26PgO*T-KIABd+CAAqM9{~pgQ{vG}MZ^i-W_-I*Wf&iGJKNZKS=+5`YXiC;XfIjora&4P6s*{#oOUGjm{&(6WxeBSFZoE zxa+6Eb>A`@URF92n6rZTIJ}0@X<&Fy>1?3WS9~2l#OQqGtq-1KQJ2D>yUp@Ec#d79 z^R4)K{Cnv)=3K2Y{5R>u|0O)PhsERKXQk7M{x!p+-;BJ!@6d@Yo)b?bUI%|!ycV7k zcjv*)liu*6(&I+$ z{(dc<5}zer9{*OnEWQYL^S9?bY&3kg;TNRej{X(#HuxQ*^ThBZw<6Escsj|%$Kt7R zy{=4#mynL@mlk*ZYDTBN;oYUPo;iDquf+!$ozaGWC!Gs)eh@#0uQfVbz4gI!EGN&g zL!JlEv3S3R=kS<#9Q>U0dvUI=8y@3!=LPW`coN**-!JH=G(5L-YSYOt{vlpM zyf0o_yf7#}765TA(a{4)(-E1gvP!t?Nx zcnW-ncqx33cuD+_czgVqcw77w?&crHdHB=tzYTxoPUJZpNB=ePukbf8DxckF%bwT_E{D#qa z=&cW)V~u!@#l9PPe{<4_C!QUD8F%-09Oo*P;d!J}i%tRYns_PcOr>Ah@D|ePL#LH^ zFT9iZT)eCJY`h=tuGh^o%C3(ojc+s@V~@c;s1z#jK}^n^1O}5-hh3-wiJ;oqlwRi}%6HOJ^bHs=DE=r8AdKd-2(LFX^11KgjUe()oqXJn^0Q zQlqoh@T1a+b1=NWC&gpp7mdy>!{gnLyuT&sBor@>C&%6WJ71amQ2ZFaTs+#L@cyn6|Bv+> z#j~=0t9WL7FRt?+HT;frKA>}7ybAu0csD%SgUEB$1&=2_8&4=c6Mq?Z^WWh-WHkI8 z!z)OCC;cko+ws~)r-|V`q;s22AMu;`V52j}@CDLIb~rpI--##1*GebOYvJ#E*=qPX z=@g@LNxTq#%ji5d{FR51=b;&!!Jsw5}m8!74W;_ zo$&|apW^?DPsgJ_iaaM%@%XsT|BB(+rL&dJJK~%1LgLr)V&Z?`<;0U64fnsIcvAcW z+|B<6=b?q+9Sk2T{X+CdiWk5q7@Zl0ua-^|I_t$7;oFSPKEtm_XDFTP;)C(W(n-s{ zMSmQg6StqvQ{(RU2`r=YmiQ7ptI^48cy;OAqEk!!8s5n0v@(2J?_(VMFugLrE=80$co47j< z8|kDM{|V0_eg%J5{1RSRJjwC!eiau_jF-pVxpnhbH@uB>^3mxao(JzP-T?0{ULPMM zJ`^7&J{bQJck}1tJj^kCiQzk>zl8oC@x}NdqjTEuhtfGr=ZW}1JjRpAbLFlpf#GlC z?p(QkCUMu#Yjlbm{*iS4WzNRpPw-Yor?cT>q*L%jcy7mw=f$TPo%x1ul}=|mJH0p3TvK0X-N`NtT(P&%K}St8yaUnRZ}Unf2v z-zt6>-zk0&-;2BXD{&sq8-By^SbvA-%AJ!Z^y7*@#*^Usx+x9MEuFN#hxa|dcxt?a z(Wzi~Q|Y*VOL5olY;^h<{*83XG3RvgGWdL>v&`^4(rHI$pLiSmn9(`!tq*?AGMb;W z-10p5dGRC>1?E*-|(8!IZLOG_-VX} z(P?A&Q0csIDmnyrOh=)2S-H6R#tF z7yn57Hr_%!<>~M|v=VGQdQ9gK=v;d$`q6K>$|qu=Ivu>SjZ!u40gd%qictmx18 zKUn`kzR=(FJm@!i`hUSc?|2@pPhBWnU)l3u{b}ZD;CZmVD}NtuchCL)P|t()9r=4t z7KppQ*KDije&>+qLC5_$me)P^=ZuOGxet@s=XiK<-h%gyXEz76sHo(g2k#qaalcZC zPs7t0{p{ZQpr3O~*e~RH&_6||nD}wLtmi=|>PpzD>Ur#^zU4vq2UFJfJm}{>AAbBc z5`P_U?s?EJel_g3^E~J$iktA+{`B=cSbvB0Lp%@Guc#g#ltuVcdiLisb;uL^>gl}V zJ@KRBgYdiJ6Y#h(Bk%8GJeBy5crNkc{5esTJP*zfKQ4}H;CZk!RaoEM^We_~9nGH$ z`nl)9`Ub3@9<2X_^=rku;rl!f=A064XVh`egU%PMzb8Hlj}zTjMu55>pv{xg1@=ld3{Ux2^mc`*OO z+~I{~GyHwr-S=dd!jHSk;?eP1MyIjieWVlfa@Zdr9vvTUbjBOLL^@gNEECU+Zhvzb2g;bZ&`P!~ZfmG2({z%RL{K@;)cA=fU%#ADyJ)z3^0ca94x->*mkktq-1W zXX)qnJm_zvQ&@aGUfSqa@z(qO`kn{xL)r=!xP4T{v3F=|8$aw_rufR z+RtowS?NUm5ngWv@qg*plFkIqXJc=Du%DyZ&rdxM=Fd#Oi+FmxuXt-vWKbD-M7yTpCX;w*TefeL%b@!Kzu#^ zo%l+8rFh~SVSlZ79Q}MNsxBp!XA1nQjdEJTP&F~pUXQAOcq%()k9`PCYA)|BJ@F&taP3K?n-|-g` zK7Y;xCv79=^CiPG;qG}7<92vovWZ8-^GjzJ{gQ^)l}<)F4aC#qEyb(gt;H+hopEGZP#f#uE5=EZ3UpWu28vdr?g>ZKco6#>O-UKgabgCKNN;<>ov=bkScQrcw z4gXp?u0K`W^%okQ9}PcZ_*ujM6TicKiJSQO=aJy~-+|}<>z)VC|7GmM8{$jx4C2S| zEaFG-+_*dEZl0pv`e2@Z%u~VhV4i>IR1yClUR(UFyWu&nFP;`}j_W+_z4gI7OPQya z=fOO+>GTsXhYuBhV-wuW_Acwzoc*=PdL5=y@GrJv+pcwefDC&ufD=f^)1&x<#~-JCg@v!{4|{0qZpN&h4I--_467fGiK z{mtSd@L#-6a9^r&U(S0T+?NUTFN+VrZ;PM4AMWQp@t^R&akoEip4dsApNC+c8O)Q? z^I)C~55s;M@wf3z;#Kf$;+62cxXx4D@Y>S(mri~0Px0pB%l;1M|3rKs{wc2W^fLTw z>3s2T*ql1Xz4gKVpJo5IdLHcmPjq&Q&&Pigck2&}yY;8V(?rF2_B=T+ z9v#2pxj*L}-0hpYt|!L&*e^dnZ^3o7j26CbJn;|km&M)s2YB#t6x`oC{J!y)o(K0g zd93jKw-$c|?<`&x?q1AHT_Chx?yQJOQ2#*M4@xD@bP~ohstP@p{t9%=v8Y ztq=CI5&PN2^I$($(di++9RFPWF+N!QAwF6>{R`p#j1y0Xf9<(H=Pcaqo4c;X#`@Ks z2iH}J{(AB9_%`uT_%87g_yO_t_!057_({+G>pF|O>vG>;edKxY`x)+p$1Eyl^5@T! z1yBE_0#E<9;Gblk2OlYJf6^FU0C%64&oO5a@iTZi>D1<2RrA&d*ENH4)ztG~{}aUt z?|Vz}1b9d351`-E@JZ6iPiKmFZhWS6hR|OvJ{#X`_!;ScO8*JY;(r*O zdxpRM+VhXE;N!^cXF9`6i67+rRL0%s>-~IOH1s_9xJVK={J3Z;o)~WD@T<}vME{2PK>UHxiT!%y{Tk2fzAios zFCac2f6wqnxI52FnWvffV!W-<>1y~m>D-_*N&G54)95TRe1~+>#|zKf9`SVeA?bX_ z{+u@ap>!(Hc_LmOkCh_weyyaR$nXrf+y4%9vWU0CbBj;J^NWwiOW^L~#m!T}@TSuF ziB3!L^>_#IOL%AT3wUqw#PP%X)n7azJ`C6S#~J>ebn?*oLHu2Ot$2O>C-J)Y4)MYG z9`P^m{kWTd9p~Ya;kONslQQ!2=3@FUiZ8@p!S!`h8=g-(2k8_N{|zr?bSfL(LOM_A zv=V=ecQrcw4WA~Rv@eF|YL<9ve38*vVfX>*l&5n+l@7J3nsz0)|(Uj_ZFY?)nXl&L@Tskj^FM93*}L|57|b zg77?y6_1Zk5if+#5HEnw#dUwyitpmSZ#Dds^c&GXC*A z%r_!Gf4TV+8lC}npTADh$s&Fn&n+G!VR&Eii$}vti08sfi|4@K$K8GTmHlt*dGPzs z-QT;~+VCOLuT6i1cny5K(V1@edg+X#vr&9BzRTzwH2k)7ex-9y{1^Oh>CEBx^T$s8 z{5%Bv=KKxZ-S>NR-W0!!XOqr%^z#{BMLMr03eQP(@nm>?@nU!*@gn#qcyLaF>vHpS zGJLpnTG07Yycs@8d?Y?ad^kQ=d^Ns6d?mgN*ZJ2QepouE=o}Y6iJupbnK<14%i_`T z+u}L!d*a#f$GDq+8RsEEn#l9!Jh|aHad!@D(9bPi4KHGJ${OBKIz8z$74MF>F*;og zA0-{v|4Q8TryHFGhHsb7Eau!TJ_A2!bWR!mL^`|a{42f_kCQg?{;uM_Cowz+?(XlO zblw%egBKQ0{!(~ui;KU4mlrRJR}wFb*TUVob@MkiyoYpJ(CH)I3?FQC#u&atI-}?; z6CZ)E6JLq{EdC?DQ~VxR^+*=LMO3!CHxKC?b~|y z=aw5@S~}h7lo$UDuV!@W8{SYn8;z#lJxX$0*@UNuvFP#bEf8*1|-+m>$zq7^P!WWBI#g~d###i8O z{sWwc-G(1B{HF9jqkmVt6aK{L#C$vQ{fwI@CGI|dO`(%Ud@`QN=)7xq1?g;|Q$>6e zUSB$``R}h=82-6*ZqOMleia{WbS4|VN;(;nh390QcshKm(fQTzYtm^#=azUQ{E>7z zu|Lt$N8VrOui@_g4yKbz{0lszbb8T$$ME;1vzSh0@r8IT@q>6h@!#-fxcfMA^RzR3 zkaV8V87BT1A1j_Vd3b*(il@eBh*!kth`*12hwJ>S4Bs!Ej&u%*x5rP3Pr}cMPr$E< zZ^3VgZ^G~4ZvOt9hd3D`&ztikhG)UuIlM|ghxlbYztJgacwOlvdNsU{4a5`REsah` z!-q;IFP)L%x$y~JC;0jG1b!a9SbRCYTYM*ePTc)m`+@j%*1w$b`F#mqw;kVC%p~3i z&nupbKaZ=L=l-Aj(bV&xU!3)QJP&@KOwRC+eTo|5d9c1J>t~AB##e~P<eMw$h77an1{hyT2Evn)p!Gw-R56kH>@a zAN)C2eM-i9`m3jZ-h%kWIN`=E65rD&@w4@-#ortlUe7l1z8{5uP}BkO9m~V@XT%Hl z4qx|%_?pi`&zd>>_jLX|;;9A&clqgmzasv_&G6%~A|BkmVCBXH;eBlBtq*=bMq@sX zT8r1iJ4$C4oeAE0f1js|x7`{e7&B^_c-G3{@3&v;`Lo|ARyVw^U7iPX{>(gk#lOdo zi1&Cc+=mn5o$)ic+n<75*FEuec%m%N&$It=n#S{B^4_d3v^#Mr`WgO#CPFG zJP$h2e~;1K<2S<2+v2tH%$^6GOUc9MOkU4}PSVt2 zr=WOZyqM=fXHCy=pDTDCbn3Fcig*pYHvV*J_d^qW8wng$74#*gE?!{Pb2;zo=Lnfo=vt;0?rwy%p|T6Y(KZip z^Y0cv%sdCh-ToXEcl&b|*ZHp*{zCTW&#_>h~`*SwH^}0Sb)_3+ixUN(5yNMsi`-`W@ z5bpCA;;-SO#7p8|i5JBudj9PB!2VCc-E|e_eytXF&yCH7pYi&^_4eR(FNk-;ZyKFP zh9}Jtc@C%3c~yKWo)&l4<>t>~_7>XQ-rug`SLpW>FO)f4 zKTtdaJ`&gKooM*?(s?OM*k3N52;XLO_8ERdI(g~b5zmc3kxn+wVa%M7pTC@^#ocqV zFP*o=>)_dqPJY8{iM!`mW5fI4Zl1c?!u=c|o)8~lbS4)zpY zvw0pom)hqEUpJR{OS~ZNK91aVmGagH{WJx`_e(WB5Bdk`)Dho@HxW;rH=L)1cnZ9| zcs;z6crCn__(Z&)_*nc4++FX-U4vge{XUlG!Pk%OpP8Nq@86oc&ljEt>+|w2?DahO zO6rYN;s0>d@H@EsIQoq_?~Cun|1ml*yz~6I;lFM=-1QUW3->>xcw9V}(J5qjE$Nh{ zQ%}4!-ds9a*`M}?50*|FI>W_V;p4=|;*-S3;4|^y6a@R`=2>L;7U`^|vqO9}zF+(t zen|WbeoFks{NepNCms*KhU@(I4NvfH&g%sGwv>JA>3OhkxeA8+)>k|mK194NK0>@DJ|5ROryIUr zI_v0c6kmhyHadq4zbl=ybRLMG#{V-qaq~R?d=#7qxBuyJ_xUJRp>RJli^sro8=azt z*ON{WIt|6M;2(=e6%OZVBmOVzKNHW)`tIWC@d3Er-w}q-mrip!i^ZGbD~--Z!;eX4 z8J*w7hv1jQ+ZPS@=MV9Z@IP_A-oFh`nm6(}^G>m_|EhRSJgs;w{B7}?crM({GnD5* zA;W7+r!SrQ;=S?a(iuU&z2SqUGl$M_@mcr;>3mIphT$8evy09q@g4XcqjT8sKc#bv z&O`AV_y4K`@|+B$lTf?^o?N`{d*St_5U-8Djl1jJ z!S&|w)(7)+V4mWh2m9ZbPAT!;cqQ?<_y^*%@w&Lq)682R%rk>|I(r_>^E;hx;ydyF z;>${f`}2kPQv6HY&2xbL`P%T6(m6(Ft@sgqn{-BZ30^5GYMW@b z<735d;uFQM<1@rxEgRmiIpWFi1-P64f1HP(#A9|2RzyYZH2j?Oi_pI$UI@QsbRHX? zxKQLd>_;c5cq2R&?yk$tpTY2A(m7Br+_(3{_v2NKPF=&hO6L)sp5hPifktPP;fth` zvV1uI_u{YPtBuZP!%s`61fBEZ#qjIWiOczUV0ePUk@vR+otMO$;VE%LLvd?{WV*Lj*4-a|S^>GTmlj1Lz78y_zI1Rp1!;r;MDOcH+^pNZ@I ziwxf?or-jJiocKlCf*T0EZ!bJEj|T5FFqN+g1hlkj_x~?@9=!kGLnpcT7Ceo3^-AG> zrW3D#XT#mOa`WW#)(7+CEF6A)TF&!eo(*&=im$?Jif5=C&QnJ`E#AQM;B|}hx-C5q zUUwktTZ?zWJL6B6KKp*PyRJUo`k>!|{+FHy{d85rIme2p!Ka9Kz-NfJ!54@x#=jGv zkFONJimw&Fi2sbc>#fhvJ@n^95sJrCB;4S&0LRNP{b&mXt` zWjuKP1p7II{Y>L|u%GFxat_7c#IuPv!E=e%#|z@_dfhyw3~wx*rF5E$FTvXzo$iKD zkj`N`lf@6>bBxXs!}mz%37vi7kMZM1=Yru;#h*Wag8P;IgYbUE6i zy)zA8Bb`Du!u|&F0{C|EM)+>=2KW)&&6AYp!&$@skwPilBp z>3l~gr}!egkaW_~FKu`e=^UWbLVQ2o!RYibe4=z7(fLOF0X|1OWzF#Z&KG|jUxvH= z%*OSuH~hGCO3*naUJSo1-U7cS-VDEwyLs|5&%cJJC>eQ9#?whHJ`~S{YyVwueen6{ zET4}`c^*99a(o!>XF2gy_y^*D;x)zZ;0o#;#z?}&dZ{x!Z(d?LPFd?UU}{3m=1?&f#rbFa5P zIG-IjpQk+!&gTs}=fyAM*TqZJ4fpf5cp>~TuJc4M_58UM%(IkvUiLhgXB3^};=}MX z;=kbO#CPJEa5ql_&T~n_D|($^&a=!}$May$*!9AF_((iD-a@=M-b%bM-U-(^dmBDk zI^F0@6Yql0H#*A<-zS}^bPkGtgP$@wR}7C?`uTYX_H#3xIN}@eB)INRO2Z3C=PsQh z;+OC;;@#_q_xFAAu6T9vnRqSn>3Abt=Wk{BAn9zUGfaFdKF;V&Gkm3V{-Lv0{11GK z_{opL{n;VD58sdL^`0>NPw6ym5cVI6H^%=HAA-jy6M3!%;fZiJPfMNyuNj_KI^WSL zD82}PPdcsWS2Dc0bPmw@M0`KqSvp$tmL{kYx-h9@Z-dEZ;mNhaP5Pc1$ie@lEQo(*^N3}v2thS!kJN;lPlitrUx-f@pO4SM-Sv**dY2f!M>_lH>=WOMA2&J|438=o zd4K<=6I1+8Jb`$}#^L_FB;FoRfxGJ+!}Y#xcuDC@pi@SC99~6yJziaWEnXkjd0H4g zKstZW862=ir2@d;%=U=*`IlaZ z&%J)6iT0?0q=%bnrZw=Qy3t;)n6x;%_$#=kG6`79Zq!@VXm$-7h^4 zUbiLd$BNg(r{H>B-+JqVepIn=pI3Pv^zYGGCw?2>DqgI4cwIZi3*o2ov0Jz48JR#@8~=bUxfc>bmCU{|KIoYxcmOhAv&4G_v7!1zt}RoU-`u2;l;&s&-w_{x|BbtOj`DnnT`}_fIDZRw=Vt+(4C3?foYFZ#zo6mOr1LAC55<4M z8%yU3{nmyLkz zrwN@Hl_KB&G{RpLAB-m!{{nviyWRx6Fa6T+#nQ=1XQ_C0e67*h>a7p1_bk_Y*z@3e zYtlI`UL8L#-UGiZ-VMKlyX$?0>wV&_59Uc+JbZr@zjEZcnocK?_*DE=@ojiY@h$k< zxXzQqTOZ6*m3fMJ9_-IGI`4^J#Vd*@Y8{@3s^SUoy11JsBm2|LTOZ8Rk9j`xJeVgB zo$liA;sd3BhyEzT=Sim?okikx@E^tdf4UexN;+-n zd?nuc|LD38u${~Q|KoSEw`?IZWMoAsL}X@@m6ch(Mv=X;Hz9k3>{(<+W`vB8RAkG@ zh-Cin)93m5Ij`68e>;v}hyUaM`981r=RD8*x~_WwpCO%+^cNVuMLOf@Y!@Gk?-O5- z9~A!d~nvUI(u!-UqKM-V1Lcz6ft2z5s87hx3=^JoGkvh~cxPe}Mix@qPF*qw}rdKS}2S zog?D6@!yQj1;Zapr`i94a}uLQYG{7axq5H9A!dZzr8ybp9v4 z4gb{W^f!ElbfP*0>oZ6EG5y8Tsld7V#_)a8$xi>Ecvk$RbZXE)Z}=nWRHE}-&B*<& zfX5f_geMm7fTza8^AOIH+3;f0nM~(R@kw}j@hx~I@y&QG@xSnT;+OEIxX$0s@Xw@^ zq+@U%hKMJ^$BGxhCx{ouXNWh$=ZH7Kzrw@$>vA488otx;KcqjH{u%Ls_!Xmb$M8h8 zBG20@I?2SB;OTI^uWW|DA)OeVf_*719)(vmI`s_yL^`?YbQ8~k_cuBt3|}an)^wJN zx4_pJoh^o+l+GMFr^ILBm!#8>b9Kw`__ZVVcNd++;yduPc(}hG(9ddk3F%y+Q%d|Y zUP1hY&cS)8BAyhlgX=s^4F6O*#pv`DFNzNoZ;B5Ue;*$wJ_4U8J`A6U>--B1|6V#P z>Fg9=jvo*|jvp33ik}pZ@o}*Jr^KW1b9gv^Th7COhCg2?IB$A=dOZBRCI|gY;@R8u3erfTS@ygQa zN578Y?WI$VPABoIcn|Tecpvdk@F943zu`RN3|}Oj8FZG3Ps7)W@4z>RZ^O5X|Bde! zzlI;gb^c!szb%~YpLUdR1Cirdn=@4`m^{pE(A zlTM7T!Ma*&O=+nKQ?@%^dHk7EB+9lVsz#jzEL{ay9N8cMLaA1gV8x`_+Qcq``5+8{sW^E zt3hynbUm}+;rrEhne%1wO8BcrrT0#@H{l4 zlS{k-UQqlqyoh*zyp;HIysY?Ayb2zk+i?E6hIf$85jr1>AHsWy-^crj-@}KAXYUd0 z*C_F<_;@^={|e_}f#ItR-z)t}^bd$vz>gc9KMns+I-Te|67PV=ZWMX0!uv{UcuqV# zS7ASoc-SvybjljuR60|c^8@ioczdJsso@i(bBxYp@x%BWqqD^D-O@?gGdNd2iYLZ@ zmd*{%)gOl6mCkE)?u!?~V>OQ4-~Z?*F+2wz?r#G+xy9eZ3yb&1Ul;F-zlDb%N8vn` z4R0Zxg>+hre}#7x{|Wy@d_Ue>{65}a{2o3W*ZC(HzDznV^$O0zD)9{X2J!Ovcj9m3 zyTv=ml&Njh98zrg5JToIwl?uKV@_-d)K?KkDcc0 zWB+;Xey*k zi7&w0iO4X*&ePlQiPAYhXNvef{7dmW_*de$@fG5k`UL0UYw?WuCS2#=W%w!S zl%sQ2yexiI{3HB^csu+*@h|X4;uG;0O(V}+D$YY{!!sLR91qXoCi*4CH{kCWof?L> zmCji@?ZyAZyBeK-hEJAG{Jz1yPZy7iFOp6%*6nM<4@##Hou9>D#eX+C7Y&cuEb?`v z1D&|yAL7aI@Z5&;zi4<-=`5mCLVN-KwshWNecm;^m2?i!X(zr9?;@Q_^!pnAg>-Jy znI?V{pC_KKUvM54il@O>;o*9Q^K3Nyh;-hfb6mU>epgi_*(oG@l$v{@!#>H;_>?j>t8}VE?ycB=dZ?jsAG5&!@EiU zRr|ZoGHw{nRBJz2rFLS;i-V=Wj z*L}%ucp2$zq*Gq}TfCalsc(1}>D-~yUHmpaKsvQKS0fFdC!KTyc-|0CgMTfZ#`HHE zepEW8=$sIL6F(!~3cn!!0sc20?pHX^e}*UfAo4tnqLWg51fEg+8$65nYCO02Dg0IO z-|^RRoxhCX4W$$FvtYlPh{wR&i08&X63>Nq5wDAP7q5-?!Nd8Ra~?i7e1_p`rQehO z2J!CrcB8Z3@bl97lFnuE+4wD^^U&}VEhEp>9y)2ncjK9Hw{GswhlYP|e>L$g{QawK zJ%1zm`X641{!jF;k3Dyt`CLEBb9en@uK&VwcYXNxj(+30`*W;A`Fk~Yc!+ufML-o=!5)T_-Dl-nOXcZqB&LqyH2A>n+dS^_984wdd~o{9ND3bN}BT z93~#VZ=56Ej&r*kckdJ2zqj6}OmG8N4ZkDaJ6FQ!|7G-^wtjXVTqpc@?emF;{i>e3 z&&Q+6xVw)2_rN{(=V|J>`#k+2=jsFT>v$LOB?E)!jqc)8@IIdV^AGpjJ?^K2g3f61 zw)lL{-F@ZfzLtCL`ip8Nd3wKFJa^Y8eLGl(!=Agx%{e%D++*S?@ROdqPU&(%=d|bU zac8v&_V=3S?)r`ug6r>k?yjGFKX}{(ZJwQTcV*#t(f^;(zf$7v{J2ijib3aP&)xhn zh6J5g#P2hIA@Si{UsQYmUK)2(xJPWpJe9ob-8=`Gr=jO=p1nExa3 zOn4Vu=jrQR@8-!=DOjJep1XP4(U~CL2%jMyXIL=L9PwEAV)1idBmPKyGXC6$kpv3Dig(4s`<=r5_A`8jbSlxABVGYtVszFRepoua=^PVpkDn6H zJ2trAv*Nk&Yj}9S)4AV&4Nvh=wT5mW8w|P^Wjaz^Wbf8y|2!OkC09+I%C9Z;FHCB;?u>u=k9s_75W*(U&dd?!~G5W`MvA?{+ph=erq~!iMPNjiGPW| zD?S^qhwD7e4DTbIALtAa--VAfI+MKX-TlsHJ?DDv?)Mg*1>)E7mEw6P2mAYtcy4?% zuJ^m!@N?3sMdy-u4g8kTdFWm5?)NnJ8?V!|bLH;0H=RV{-SJf7>+p2qYw@hO-fv#R z%Sq=CIu*r#!|O>WE$@e$8Qw=av8M$4H9$NjK1w$|0Dhx{s<4(Kb$8{=V$x=^y8g*(s=IXIYB4A z_)$E&c9VD$p4#ULK!nbmkepNjhWb zY!&|y-y@!MW^ljz#be^faJ}EthToIUR5}mEC*!d`i9A1B@Oa{z@sxNt&mNu!UNZa* z>0G2!TKqg-Q9AqR*E0M==_H&LtY-)D_;?TLoS;9@@Hx^cKxe-AtN03|v)=Gy(y2@5 zSMl2TS@E9uMe*+VO+4JM^W5(P!_#z$JP)(!q!*uwXBXdz=MvwJ7sA7NZZglChBuJT zEjsUuU&7lMoz8}jkxrM{!TI@Iyfr>u{DnEe^|Qs3;*0U{e*fcszcKufbc)hBD*hUN z%II7+Ja*T}{cS}jzIX#Xx%dq{wfJ>BGalaWL+&@X;T5El^2=a7tB5DZ>xh@Y>x&n| zo8vmqM}`lTPCGgy#oxy#ivNR85x<4c#lv}G#&^Gqidts)Ug@Np8?4U(@ih1e>5S#; zZ)XjED4kMtqCSm0CvW2M#9QKt#9QF0#7E-k#E0WA}~^3=4w(_u^^sz2a^01L7_5 zSYj}9SC-}H{?79DS>3H3O^B-RSI_EHx=kDv$3;DWq5zpO8 z2(K@VhuFlGkTYN8m$mpCj{GN1f(s?NUHy*qD|9^jz8lD#qzmJe%QLtYH#8czN#oOT}#oOTT zh)=*Pi;u-?BL?h>~9b882D%6 zrST!+CGl~1I8Qg$XPV*bq|=JdCh-sO-P+;(-XX*PlFkS^*Tsk7|BA1|ABeBOWA=_b zKfmB{#gE}B@Nj*4u|63MFCm?%6~TU$5`Rp;g3+mIcn9fZr~k2dR=k(d8Ep8M(y2t} zEAa~W3h4}FebyU(NID(p92IYmpO(%j`hOW7qfg}iPM{N8d_0~+d?TJ*d_A5X56?q5 z&&!6Fl+I~7WyJr$D~rck8JwSL;?LvniRZ@~iRZ&x;yQl^!-qM?r%pr$;JPNXT-z(ok>5Z;iaWBiO$>N6Y#3y-{CdHH{lI% zo#z9?dr9XUoqpnH@L}TdzYg|ylz3cxl6Vn(s(4|1F0S)0GklkH8q(P-ULQXq-XA|M z-WNYDz6?Jnz68IFhx5GhfM@blTj^s|c}#Pb=Q*A1^Oow(lw`&e82 zF8#(vr?ugIrL&*@XW~ENV~x&K!@rfzZ8{spZ{jdZCIh`8fP4Pz3Sw+8<;eDhtgw6o*LHG#q<@gx! zrTAn#{J03``O@$W(m6usJMlyKZt;8gkK%XnpT)DT4bH9-Kyh<{{sx*9%OIydNy z7e9?pGdlAP-z=Ru-v;~sz4$ErfOJl>Zoe3QM>;>y`A>WY9%EqS^GVoGXm~C>e4dH9 zE|@>Bcobg5=#)0Rk#tJZX)68(-c~xNS)Y#$A0eF3B;GW~gmZ<5YXI$OmD z<9ozc;QPgw;m7ds<0zcxwBh%pbBxYI@t^TngCd_d9^vuCAK)*D=UgA0hg9M(<1gVl ze=ftzNT({D^5T{8YT}>ZwZuE)jl^f+O~q&6E%9*v>zs!kh7UA+hV*yPpCi5vUu<-~ zF?^qNuFyFsei=Vubj}+7KssUniFnvgIQZG~jQjgH8YPSVPxP-;h8M!a=b026f^$_= zJSkq<=u|SiwREb}`B1zH{)y4)WB63*45u?wd?>y^Iv=n;s|?>GofUNUi!Z}}kxqO1 zXAHkDouBDE7C(%~84~%t@c>UC{vVzKcOOUYJcRRPG`xs(vTO{_Lvis;cv zN$Dru6zt0>@x=HgqjSsf_(LPlRZ%*L#b3iy<9c724KF60u>Yob*so-CY8&23I`1=Q z7x6}TAEPtW@cGgiNN17w0DQI4+2mdCevargKlifFbN6#Ei|HH`Ux=TOeoxNTS;HSl z=OCRY;s@~f!y;ct2GUPqcpf}_9l1*gY*2RczV1%9-g;wp6Z6Tk&PFxi6{ClSpS3K z3GkzMIR7xt!(WE~V|b$BkGWgH1>(K%l}2ZS;m4)3iOxy!b@(}>bKUUxBO>?rE}g{U|KO?daDPX0 zt}+{5Ogb-a;dw(mEnY!7U(l~70k0h8Hxvvh;h=uO{9Df6wSNH@t^*=F;gSJ_jFSbjBIJNIGGEnRwXW zAe~LD+YZD3l+HfpJTLwOe%|5Q4y>GTwDi4T^}UixDVUnrfCbe4(_$JdB|jjtD9g>S>d^$h3PXZShk z{7UDN_%HZP@#nS$`+Gyo7i+yp(uX zyn^^#yo&f7yapc5{}bn-mEj!?A13`D=#LWLg-T*H5z}IB$)`Q{k<|OXKat-@re{^?rMM*SmR2zZ2}^ zXwTg|J?V@W?~YFspNr2DpM@{Pb)MDU^=_WA%(LBdH_sn*c8mXp9~6(hGg!}`#be;V z<2uhp!=Fg!EjrJSdv-qEoTc!@xc1W+UO+mn>AWW15-)9ZDjD8FI-}^c79W9sES>Oq zptpCu+pp8%`SIMX!x}o{#aH3e#BbuW#INBC@o+uEc~*PZ`}1t^+|84FS8yJ-i|4@i ziMPfNinqW|;5yG)?|L^+QvTlQe>`{d%%O8nd@gY|h;JURZl_#pfZ@!ohjJY1h1Jl|F`yp41&(fLUH0^Y~y3^jbdbQ1j# z-0vds1o&#Bv&rzI(kV#igm`}ZjM2Gjc&yJOpJ(dPi6>qMPlt!=zc_roGyE;-^rcfy zyfCq5IuCcYcLDZU-QkB9pe&J%OevvcCllhSiH&vQQp`;}Jw3H>bMIl2C2@oab= zJe=n{&QCe2CZKU6h{zu|X@h;*g@$TX$@IiPu=d3vHcTrJeyzAY%RWBRt<805} zx<&uRvQMv{C;piJGNb>kcfH@=?z!t{r@vb~D}K=E|LR@u_b+5cf}XqnBsxXJC*W^MKiuES zhPRQ+_Q5?(1^l_my%P zUIq`}CucbjoZIr^neb{xr@rBxrSlG*uHxnJzD8%5;a^GTBRY%4+u`3xXDMH={?71| z(iunRl=v9@lF_+kc!H^sAJ=Q?BoY4xPlLOCcl#U8pT+Rv(m6?|r1%NEywPdqxqC(a zfY*x;4Ie7~7(WH)YNYsM9(TOgargBN`?AKn-u-)9;lGdeop^@9!TW@L;_sDA8eNNu zx+WfW9*8F{9PCH>Y0vh>f81BZfA}@{_rj`)hyC}&!#P`tcWCW)G%9Kk9)4V}8JCqckgqOzV-amb;#|x z>#wBqs`yg;b)#R#@Fvo^M5l%L1-!j%5mD`ajXXc6;tRuXFun&)xNzxc&(q ze*LyO=QjS#XCD{-^VJKUyYt+XeMu!=7k|-n*GczT@b56@@Z5F&;QHL+hw=QL`_B(= zcw?1)>2J4?(JQki_JRhD(JP)1|59b-re!b~k@Am5k`&Hd@ zH%}cpwZ&`Tjio=AerxY~*Uw)jczx;Sx$BRn(@T6LK1lp)e3{#1o&XQ$*~xxo z@~(IL)s+1zEd_r`Qqu12m7^1JRQCo*LgM>epEVd(>Wnt20tVI5q?3u9ey1T z=Xt_@JwNB!`EmPoko`*Kx!bSL>7)}MgJ;FVe$pQ9chUcDws*bjCoLO1Ka}*`_4m;! zBfb}}EPfNOCjK}69*cnMtRDd%1P^nTwC&SxFZ-8^5?sV_boZ!W$MZzcW% z{vjUDGl=yWEfXYINEeK0rE;=?oTsh>tNkQw(1voov4a=VXm|7JQp@X7IYR&+yCAsY&OW zcm@2f_#XVe_-;Jr{K(g-CCrl;4_~J;l?z@MUh>>MFI}gTRs1TRSNePD7xk`p&#Tqx zSMc2RQ~e&SXBF`jcwOnAr{C1@-qI;ar@#0c_z3Adq(9N{)zWE2XRY`L_*Us8=k;!{ z;TNSdn$8vRk@y|yyh8tp;pxAMeBM|~CzJR$_$zq$Jn$C%!iLw7&L4E@i2sH+kB=|F#`;Txrsm(CXP-1r{p{6qhUcfC9R{W$;UJa^~64xLNl zweXwbJ@7l?-SEeFxL@HsaTh$>cQ?;i=1J+fn`aiCwBj@HEaE%xm&Lc?ui`pSG4Fae z&sOFs@41`j2AxXcf8n*n-#!(bhkD{=@DFe|kNf^qyA09)iT>4Ju5ZirgT!0oqm9mF z!`Db>44w7jqwsA;XP3rT!{3n3bEkuSEG_`^fQZ>z+W*sg$=JFofdSei#NmT8=V%0_ms{sI(@~5;6uHR z`@T~6d_LcE_kE?PlG5Eeu5zk$x*qPw`6c^8hm-5{IK2&ATUFTn}uO@yCukE?J z-|F0NYtLP${n=oi55?Q!pWxA#KK*=rD4!qo@ve9MvGm7y?)qQR`CNP+K3)7re75)= zd=akmd~NtX>D-`mQ2aW6LOkWUV10fUPmW)}b)FlB$6NC39J=*+lTIS>5_l@{mUuex z7I+psoM$onRn)uQ?blZJtCHt#o{@Ck6(5S%lm1rv&AjVfKkA*} zx$B>!Q(ycH-dsH1g_Syma!>nIxVEpCw)kpDSJiUyAEIYYqQN zIz8ze5$}%wCO#KGEj|aogopE_=cyJk{B+)86%Nzmir6p3iT4?)K{noqxs8<59~a zpMM6?k8gMmJbd3-^Ze-t||~PqHHNd2b}0vdbEfBRzlJmC zm*Ru*CE~mA72;d*b$EEc;r!bSKP81Fs7>5Qi{Lwqd0!04>Tef-bUXRw(*(JUP|4IBN zenk9l{C7OO-+bKfMelkyPe10l=ee6F)y-gkABv~IV|^WYe%`?2i5JITz{7cpF;9B$ zdNDhKE7d(Ykd{!3@4_#OO!c=}txc{nVd4*v}g z@3$lOd%^H0(s_%{^WQ|Ct5SGE@z!`!@s@a6@zHn&@sW5gJe>B{BL}m(V1rWx6;XbJJ{ci;<@o1(kaXO95DQXbZXN1OT0RMM>RY^UOeSL z!G3iTPmcG%b^d{d&yY@WI&;Kd#}|t?!bkPEPSd zcp>S$PybEB>qzGwo%-T;@#f+$-3`t|EAb3?2RuB_;XK_9A19r+=}Z(agU=Lii+?HJ z8ebwl0be0L9$$y+{M!saDV_CnPKkeuUlRWVzbgJ4en&jszrp(dCmsiXjED2L;5;N> z7kLgt&tP~FJUoZ_=oc5ygO@crRSj<`omzC-ir2t98=YQ;PmoSGI+Mk_;`6m%Q9oTL*|{5YNncl++opW5(3(n)zQI9El*ljEhO zGluo4WO#Gw6sOZl{B^vObSBg9Y53>TX+q}<@y7UU@j>`J@z3yOc(|V7Jl`7rlXRBS zIU>Fo|4sY|ep>txep&nxeog!VeizsIqc%Ky9&qO*ysxx)`0<|Qzu-J%5YL3aEM5_R zMf@GSkod=VQSnar8+bVX49-Ih!y6j@iS#Ga? zES<1_Og!wLH9FS}kH0bUdFB#xCKf-3r^a<(G8j*?{>Urh;rF%6dG3C0Ha|Z%Tg`LV3BS(PMZ7WnQJ%Zk z$8XuMrMP>2^nc!Ur|0hLp9c#DU;jMlx&L#vzj*GxF4~y;{Z0HG{7=ta=auBaU%YkA zbJuD8C|J*%;_u*hJ@lEA_{M>J9&)qybp9Gy3#kb&@ zJa?TF=Yn<1B%oZRi;ei!}cu)XWuzC;xY`n5fG{oZum z6YqjI6OZ*=Fi%VIM_m6uT<7WLUGL@@%RIw8f4YzKM~OGXCy5`zr;7iG&+^G`LB&~w+HPUmOw$@uT$m+(Ku&*6WGXL~-F|GIc4 z{9o~=_yh4qc+{5Q<08D@7dyM(MMWj^-2Zu!^q#xtnXDay>kE1AuCL9{lT`5BzrH5! zo@bt(+rq)QZQ{9G&#BDWLVObbk@zvZqxeC*J09L|IR9sc&z4TMn8Etb6VHM#H#+MK zKPsJybWVuBgP%1z*9?!pHS&4ye{>Rye}t#Ob$zlJUP?NX>68_pfL9Seh*uXsfY%rQ z4{t1f2XBSz{2dJ+DV@Txg8dyUUJ##ZbmkepNjk0RY!$DE?-9=sJD6v`cv}1zuJ?P| z@O#p!L+7D*Ej-ruk>{re9#6a*o)Qn|DZul?ONPH8oiFK>7N3n*lulv#wG97II=ks~ z5Z{USkj`852O2&{I#=n;7yk=iVRY6TeoQ*a;sod6SMenHS@9zHMe)M;O+4JMO5E=Q z!_#bwJP!@&q!+J`XBY2>=MwLO7sA7NYBA57hBuJTd^+!o&&AsqozC9%?)9i6uScJG z?p}}f(HSEC13p$fX53)ECWyztXX4@gzR&$GG<>IYa?#l%o&!H(bbj})fBJrj`@QbD zyWe-|+!C*XKM?;IefHSzu8J@7-~-SA(<=iq;c&%*!0!}aOI z`ut;fvK^7nS9|HC6yJqs#I>K(@N&|L9Y5ILisCWwnntIQ;oYQDnockAlK3F$e8&2W zF?@k^TGCk}-U44Mossmn8vcuPhST{?d?V^s-(M8Z zhUdg}-3l6BO*&QS)Do|ZH!?b{4F60zo#_k_?}(2zI#Uf_E1fUsY!IJ_Z=7@ zzIfPgC7oTYTSxEur=L&pezm{n?)_?O<{Tv61RpK_H$GncB0dcd*E5`FzIXl8_wz-9 z_w#E#ck|Rp671Io@yhsi@s0Ry@iq89&)wr@;&G39?jARB(%^AVh{wdw;Cf$Iz3W}S zDg8&DyZ&H0&+UnP9vgti7e9#fOWZ!av7#eP$TGUOE|*2m8BOJUzbK=o~WqvUFvaj?g(QehB}~=v*-T`F)Yk z5BKQA5xRO5o=5yWya*oNZxQad zw0FH*|BlR4!*e%JUpjTfd*knm&&QjK&&5B)b)GKX^=_V(%rnSyH_u)=!^D5U$BX}s zPZGa|&&I=fDzZL{z3bgPrqse|*dMLapaSNc)B-}~9{Ytkt}=cafu{JwZI z{IPfwJkEj0=eMDF0`b9kYCK$@cUhmzhL@DiDmrDvm*JI-P94KLOXnJ$uHu*RzD8%5 z;q#@FBTcZsi^Q|ztEE$m_1R?j&(f(v=NIux_*v;RqJPcsSU*MXZznqO#5>?Gh<|~n z5}$~_goo!LoF|vzZ%OAnI_1PS;qQu{$7_n8#T$wzNgM1}6Y)fN8(in_Z1@Q26s9vq zydXYVydgeaygoi(d=S1!{4;zx9?sv4^RV6U{f1wV{$l!ni7&)&8=Xgnr#u*W4v)}D zEB+In1=st^WBA+BNt79pir-8cM&Ly`MCmrg42Ie2C~+~3aha~ob(IzP~PM|>AvUHosn zw)i!?F|PBpHoUKNQoI&g{3{LLBb{M%_KOd} zkBKkGe-&SfpA|oWUlc!%U&X`uKjl0;cQ`m#>In?bhKHYDKc=5k{2^Yz=#((LmUObF z5B9yDcxJq*(P?M+0O?eqGg!Pl{<+t2Ki}Raz56MLsHho+Z;(z0I^T(Zi0?K!hYY_i zoh5W`i7&t(7@b&0p6$DTUzzc6f6vp&E`AozC!O}J&+CR)mrnc)!T#13kBc{vPFMPE z4eu|VSLqBA&x?;1uY->luZ2&;-N%btw{V{MhHsWmFFN0g_rUjx&&3aj&%uw2@5fJy z|A?Q%b^hyy$N4$(b>|kH1mZXF6yj+!2K$>vJT;zKyeytw{4M+yJe683vW7R2PSi`mIcy>RnEpr7>C3t5YWQgBWT!t~JS#p! zIz#C%Fno)2D$&_4UIE`H-U&Y_-T^;>haX4bJZBAmAe~8co`_Gt;~tBA-q?sI6km_0 z6u*F{6+ee(!FB#ThL@90f=t1As3;x}uPL4%uPdGpZzA3hZy{bEZ-a;PkK#P^HhhTT zv!&mU{ygzM_%fsOt>HgOXFi=H;&buejLrqaA4_L1ofyX>&(9Bd5f!Yq?0#uaIXF*o(uof==3*yhICrfnIqm3Uo4%etj{-w?~~3*ItRsv z<0qvvm;QOfA4z8wo#%du+}{;=eDULWV)3JRYCJp-;XIiQFD9MGblwzyh?f`7o+a4d zO5$1ZTH@94dg4{_rnt`E&hXEq^9h|H;+^ra;?wX6;#2S$;ydv<;@k1B@NoWxoQI8u z?=<`m>HkIljQAz|iqW}ac%l=L=Pg;*U>}o-C&AOmZ7aIP(bVkwHDLw)}Aif$uEWQ#yDgHZtO8g{#4iD$wzz_)z1OB4tuG2eL!sthdipt@+>)he`+~Qa8{GPkc{jBcpqW?V&&t0d}%fUG> zE#4Y0=lRp0KY5)$2j{u#T;%#j;%D)ec=V-D|Ne?@tXl`~de^T`zn|x>pD9N$=Rom{ z_$cvm_&D*h_*7iynP>QB>9nKsy?7gZulN}JfcPljY50BVtfli<{2M&ZAJ5LG zThHI|1mY+0f*E71Rob2q_ef))8iR6SgsF0jz)X#=8u~* zI1l5+qwp_0ck`6}JGg$X=dSY!*DnxnhcETq|2SIbx$9i#`c2{&@b5i$=lo!s;C_Gh z+;!^a3g-MpygL3T9)0Q4kE1)R+ZDrOo{HS}d3556e~Bj(KZ2(eKZIu#zlUcLzl-O< z!}((r3f7^Bcm}+h*KzAMwo35))4+58yfydSt!JKBg7s`Ao)Q1hbJvOSTkNL;ed@XE zB+VUkdW!F$)6aANoQ(9`b&BN+I%CCi;}bo1_q&z*o$0yjwYB^mD(9iaO?9@8-|+Zm?e$J$LNf&)wtx$@NLZPvPlscQ@|!Jyn1AyXe0+$h+S4Z_t0u zbJvfPKUlY7;<50u(*KQqRquM&&tENAxA#4F{a5KU7tf1-C|(=yAYK#y1dmQXz285X zXQcRbe5QC&e4*EO^Y>%^^`5)=yYsl4#XrS&OTQ-lLxx|M&Kx?o#Ao3TrPG#v>_3C^ z6Rtz(S@H1mf<1I{i0{S=NT(nD5{ADgottzTiT{nalFk?OI~qPpI%x|8=X0ERYJ8e> zmeZea_%`XhMQ4|IDg2;xcGCaV@PDP#md*q5)_ANlk^2~DfZNfis3f@CM|VC~ay~P8 z?#|~pI@!d>;CaQ@;RVFM!HeVJxeDib+wi8+xlQK-@tgSnq?3gE?PmB`>7*$boQDbG zsqk6S89;xL;k%?$iq2l~68I6L^Sj~qrPGtnWARV%IA+`nZjimD{ou=Zy;2%n70{t$AkCM(4I^)D2;Zwz5E)<-Hnc~^-1$cO#!+BO2 zzDGJ$>FgJ;j2{#K1pigMGk#Wl7JgBD27UwA`R^N^{M@tm6)~d!M?2`G7T<wM%nDfwEkkMYEd z;4k3eK8Ew8_pW#IbgUk{56tVin`bti0^(Eg;^Og(1oM;>kBOJ{{OS8Q9=D3;?s1!N zeRc6#czs;&tA%&{)7M}6pLp*2SLk#Tzlir2FIqIXuR-F4@X_KQpb9mfy|IaC3_1wSyE*`$0In8=Le3mJ+1MvlTd-0ORgZ1eoUL5a%>-`Qie7bbH(wQy(3BE{t8oo?? z3cel>=Q+jm!*;_@OJ_TsbK>9Q*Q9fX{=bGNxfFR$F40LYegV&jhx7kUKd0g4q?4#b zuwNC$6X3OsPGiG+NT(p3KH~ZDA>#G$5#n|5iFkOw54hi1hHsKiFFISrd*FM-=ivLr zXW_^3aGp4W-S48m?q&F6>FlBt<8tJ_@4yq{+E3+O?_S@l*9hLX_$Z^H+OZ^cLBZff@(;j8?+50edFBb}>s z){9@lw;7#%hF_LW&XU1-xF((rziV`&t_0^t?<+kXem$o-olN3Q@m$im$@&yBys~tL z(5WUq2yY;r`}99Byq9#A(&;C@7#}8n1Ro`S2%m(9>lV&4+wgVLxld=4_&t25c;-^U z{_YWf2|p}e1wSTU2|tDF{Fe=naW(RJrW2jm;vMiL;*;^@;*;?7;@j~|;@{)h@o@ep zoQL9uzioJ9>0hGXO#A}g&ggt%_(D0v<4g19 z;$c7j-;vKV;ku#oxw{Nhcru(}v%Z&WCg!inqmM-H3eN7>~yjAB(?$haX4b zJn0QDES>dqUKjrse@px{UQYZE{9W+`ZwLETQ#>Bt5ZC!z8s0}b`RNQ0&xel?uZNEj zuY*q(AAnC6?}yL9!}$ww9@ZMZ)$kM2UqJtN@%i`#qjSUXxHluu)d4yQ#rNSUalNmX z3@<93J9J8j-^SneI_~=v2l;uhR^qJ(xCx@7`g{IH^#8kG>Zcs_mFKP#e!u=F@$ma) ze|hfz-1tA9yUuHT9U#N4XV16JI}Q!zc@q!6pR$s#50v*jcJ!qih6g`)S4(_!>EP$9 zn|SWNo=~J*@bS_@JRRP~bN6+LvGszlOLX$wJ#N2UF`q6_Z_i!-i}FFgzxe0)a6J0b zr$67dgs)dj@UC}{+wr~Nap!yP`oGgzBz_cME#C5-V4k(&jqxqG&a=n6-pzB6d4BcW z&GRFjKg4(97sX$z5X^H${8jvh=k9S&^SJ+c?jHAZu74!nACG-I@?3@MoD>hwRnq#w zI%oFW^&3_U=FBc$56>sQ052#$7cU`x7B3}!3a=pkQl(&?D&jBVHSp-spPsAqeBZOV z=l=IS+k5Ul?tbGO4)WYx-zPZcQBytlub+p9>sgxhT;=)G^<>U9;`Q+F#J|9|iI2m7 z#KZdy=Ra!rE$N)6b65N<9`#S;`3d{+4bOpx?*rpk4)!azcwGE7qf^T8M$&nePE+x` zcsrx>iQ(g<(~QnU@jCcS@yqy^;urBH;>oK7>$5^U3BC^3{oQ8xAJTc3&KdD4_*J8G z*YL!5B46Lf(Ro3<6aJ$3UsZ$qeM$TeJSVRAThQ=I(&_we(0^CFBVJGZ3%sHDM7%W~ z&U1t3hfao%md+MB!(%nh)*P{%-EuDDPg7y4Y zJP!Wc-N@&Mu%E#2oOt;BkdICt@jUoz;zihn9T z1Mew54IhMu^Q2*(F@`Ud&R#kz#kb-cjLr`4diVaJAFoG8J$J81RjUX4dqVt8{EYYm z{DSy@_zgU~->ls4eZy1#8~J>asYWo*i{csa?6~${HN1*+YS5`JUKXz}eid&l{ukaF z59fKA`|V`-Xz3)Y8Qkx9@g(>(@uK)F@z?N$xX!cM@B`9mL+7w~1N@};^Rl3p`}keS$L|o&-N)~4IwQot$0vxVsvYdtWbvf<99-vF;$83N zxxqY}Ja_Z7ptDuH3BE^s2EJc>3Vs+5=PAYdTrvEP*Ku=ZY7l&06XUzpqeURFBI=)5D|1g~Lq8XDeBI)mx-5+8^UHacSsUnZR;bXJKk z!Z#Y7ora&0&hK_Lt9uL?3O>X$B(%DO=koXVy zn?~my!<$GaR=wbUTZmty|B-l-_k!y?ia(Ec$Mt?cGkltKzMwNpd?LP3d=tJ@d;`7? z59g`H^T0O4Pf6z-owMR+@T=0POaHFni62CslX&%m^?X4*4xRxI=Wjtjhv9EaCm)>( z;(73zMyHYC-KA5DPH*uV_+asF_;B&A_yjz>-wxdGOv5)yX9k@u;?wXS#JA!5#JA$d z@Nk}<%yZiCN7A`Q=edWG`+gozfNMXc;RU5rzd>+*iilUmONsx9mlZ#SSH;75KI4At z8UBfMVmA!t=_Vc%A7FGw8oo$6h3G63&xNlQUx;rI{|euMhxa>}`#oUz73u7!^SAhq z_&xF4_(SoVc&takInjBN7@ivsKQGSIC|Lhj#Z%$0i%-Pg5dR!6kB9S&W__v~-d;Kz z>2wlbkN1+!0p5oXHhh+JPScqy{s+EPJa*$?eO8Lc#Mg`G#W#!R#`oai`iy6Nj(FF* z_mkCmKY7mcr(f5lb4k1wepCD`enIGAzmFHi--4Hh3`kq@!bD@#8S`Q_ZPNt4!3*m zuAlCL(Z7E2+`s+|9)3TfI_vqj=WabmGv{sb;rK)Gy?E4t9$r6<*TlR4}}ybl#-XR=foMvC-*m_*CgMr!!N$DZbF?tTy~7>5QavM0_az zoA?g=wD>msviNoUn)qM%U0nA!`d^BDdLGr&8(u{^4d_%C zuY%VXzmGQ-zl*oR^}ae9K2$mdTLkwzQanFCQM?{LMZ69^9}nj_#`D7p!}m$2FP($p zz3~&$IYIxd;SZ!UkIobEFY)-#MV^xj^ivpK01wa49y+gy@5W0Ror;FHlFoHH?ZmI* zAB!jdAlTne#gpOv@o>Lxala!BUnrf|=`0m5g0B&8jIS4Oh;PTkc^)&*e#8Hg&Hy^s z#rxs+j82Rg!M=yDM_YM4O76LP9a%&twfKBIllY%_Ht|zS)@fJp>y?6c7_e=W{IcWc1w4lb}^_9u!I<>`L#T$#)!<&iM!P|-V z!T%@T3-5u4`;~|J2O2&{It%H{7oUeOH#+MKKPsJbbWVt$#?Kg?tA@vo`RsYg?Qh1` z!Tu%`Pmia>!}Tf5`n+U#QR$SWQ$qYLyu5VYq+i|eHqvQB=Ogh}co*?8cz5wp_y9b- z-*BFhhR>7ES~?5Gzrk0D|BkN_KZ$=Q9=A=fU)#iE<3Hj$|53xQOD8X#TjII#2jaEy zC*n2nxUnM7TVFh(cyBxz9?oBe^YF6a`3ae2GiLf-Vfhy zboLv5UOLCao z{}Ug8e=5EN?lelz?Z>16v~ zu`?&}y^`MSYc&)w&hhv{q(KZtLaeh<#oe#6g8=N_HQ;&<_Xq%(y6W5ZJ= zhCB~5UwjVU%Imm4S@{Wn4!5J> zqongAopIv3@u@~AXefo_Hzzx&KGkeaHJ;|NkF9 z$jZznvO@OC-ka>~kv+1>-h0n%A~UjOE7_H7AuHPlAst0T_?_o@-JW01_x*e{my&tdV>v>-1?Ho?=-rQfaKZDqxI3CZ4+xy#&P8RVtcs}WjreECSb)_?rPDAnW zcuVn3cw6y}cvswf9GUC2^YruhH0fNRGgJH=zEC{uv*7+N5r4({)#BM%zg|2mz8%;3 z_j&xHbZXJLB3=W(BiczuePV@9`tjN!~L!hbP1nwQn=@qE&mOsAmuM7)%ArgN^Uc)X=_HqmJ-z7g*(oiFGQ@c4A; zoTD>a{4Bmm{1v`T{6BmxZuis9v(4kjrIV>wa2|dU&xl_VuZCY0{|LV;-WPu$-Wz{{ z>-?`ho+4rBxmrLcwfKBIllTEVtN1=VpZG((p!fs47;fiZ%z3Eg@x~tSDgDH~gZt7~ z{2hFlr!&FhOQlnk&I<9u_y$jBr^io8$M(;P+x`tt=Yhv#zY}`jTQg@o@#c6kT<=Rd zkC%|nB06Qnzra88bn1G%yL2wl=_P&+A1s}(IagynzDPQ+=qwZe4__~xZ|Lvv_(|zx z>=T^NGvev-%i^zS>9yd|wdFVkWp?EhurTAPtjreRlv-kl#oA^FF zKd$qa@OXXc+@;f4{5IZNJVD=J|J#el!@G+Y#e0bt#{1)T{%xFxDITBe@o%Kxoc>nv zPw?HI&LNLqlg=1Ax5P)`e|S1iJ)R(O=()1}#NxJ}4%dCl=J86>S;w4J#n<3EYI9v-{5-mh9njY`!@qW132Qz=d`oa8D z95>J5Da<)td=mbJ_-=fW__z4ixL)rjkDrjvzjRKEKgBP5I(MA)=6XwWy)PX%*PDJ| zaKEA?5513R@wdgR;_<~R;mL8m-t-qt#(pkz-0WusI!naM;H$;Q;OoUl;oHTx;NOXF!uLAv&iONL?~A>z)1LKL z9XHo?iT+LTbNB=C)PsY44i`^_|116x{!+X$9yP_A^XXn!Ox#{q7Vg)3j+^J|_rZ^c z49o8LxrqN$Qu7Ro_*KGj^IWp~Q_15kaQj^C#++@$yWriVQ-(SFJL}DL?d4oeaNO+w zLON5#zrg2s`b(VkrXNm!ljEj;kj^&o{rDbF|7T~t>8Io8WL|LG^zYNTEdD!w+tUyC zc&wCf&V%VE8WNnhxZ(-%`9*#Gn%FCv{HbV`U9!Yhimz&{dihS$M$o=-g9 zTRLOu^cNqEj}Tvvj}c#sPZhs_&k#R{FTi#F6&~LsomX@Yi2sKl70)y@xW6aGGvXJ- zYvGs0Yv4C&I<`MZ-1f(NIx{@J)#H0Senq?u`+wKt(ccYy4qRd%VvFy?6XW(ij-{W*S#O?W zwRn!@a@;&;QVb8yVLtI2!vZfZef#r`D|)=ObgGUFI_mL7CI=AV(6u*VXN*(%fT9JMtk7vW}$8Vfb!T#qG zkBt`+&xaQi&x4o8?Rm5F)bMya=`^C#QM>`(Q+ycSS9}OQOnePKN_-VQ8Q1yeczmOD zPSV*TejNW^{3*Uq{0V+oJj3YVejOK2ho8pn{8c#*cRl`>$K#|4ea=*(pFq3ph(v9zQFccg6(w z{epNr{D!CVz~iyr3%$Qp>BJSUf+xl8{jI~fO6&1L(&fGKC+)c4oU9Q~gYS^ef(d2^BYv)ovp(|ot)B#64?OL- zdB0bU&N=b&_%-n}_$~3H_#e2vk9MA?&U!P?M&^l?F7%uf93Nb7T=6`3Qt`!jO7Z#l zdybpe-OKA{aop^~6V_)J{~iAj*Xt_jtT+8|`ZXOl{oxaW>#8F@7;h?m3~wR+Gu}Zw z_QasyMLas*N4x?)K)eh-6t~y=AwSn>n&a-zHTuGF^Yx{poWo6yoAtN&I@M2(yX#Nk z_UqW`ng!?fisNQKhcf34@qze#@$c|I#kb9fM<8`Hzi%vuF9C#~Fr?bb$OQ#N<$>O!~IiAiEkMEYwU^@H7`{PH%x8f(nH{<8U zuj0RnU&8-~>wWyw<8d;CK9^EW4(@LP@f3JUT>BY4UQ9Yw=#&yKfmaqkgI5zjiPyt* zp5`9!E1kGgg6kb9{x&{JJTE>@JU2cQxAR=%`S7L3zmrZQI(x($;D@Ahlm0IrzbBm` zbRLQi!vB>{IQ?iDL!S@U)8Y2{u#C?8;!E&co=#zp*OSg6I*r7C#9N8~fwvRCk9WuI z{rZpV9pLdf(n&NmI6q&AC&ZVF7s9_5FMw~t?L4vgzVj}RUyx2yI+w*8<99rrN6vcl z`F$FnkD|UG`g|BkCx-Y?Jc0Okcw+ILcpBVZZ!)eoi^t1L=Ng^L;#csGJ)Ne``pEZ7 zTyGc0&FA0f(}MfkLp&NjKs*~hMEnDM9B!}oJ+61Uvp(|u74s}}+{{yx&Pws>_(t*G z_!jY=`1iQZ^OLjQ%#){i@c!hS<7S@ubS{a{#czr4!S9NHkN<_+dGfM9|2gZ;JS~_f zUZ&9V`9C`Eh~LChzyzb}^AG5gO89`^J_z--dr?b-I2c@%{&LQz{@l&48C67Oq&NDhM#Q(wH%KYZ@ zl-Zwa>`#1;XU6U4uQbzx`$-S!{GNC&{GoUb z{Hb^&{DpV}JS|LTm*KrUogp5d zEgjpRFK+uQJ)Lhneq1`one!L%!}ujn=YJlL`a$UDk+)|C=PHJH3_JmD&#k@hDLr05 zI_2pU5ig6EmCiq$t7;x^Bb^R(J{50|_ms|S`hz__OFC2N%oCr4FBRX4uMppiZ@}$- z+Ie<*{FHQlqjOgLB7Q|Y+N|LI-Vl$1-xtq?|0$jWe}?P)QL~0VAMAC#i`$R)I&{*C z*Tz2(AAsi&?}rx<{|YZ6z6>vk+xg#08}Z3A;#VDyf8y~z(mzapfcPPNq^C34<6lYV z5uH`yf8v`won0P3Bb^kpgL86TJQ@B!r(?dpmu$S*!LYDDo%QDZ>NMW3hGh$V&Xl9` zmUsy~p7=Wa9r2ZTD%?!r&hx&rKJxv1i{Sly0msez`R8(+JLyzV&GHxwU)x5V|jIyvi2e;EBij+=gxxxt*n#1rD<#arN$#hc=@#TVf7 z#pmM7#Lwd^#n0etaeKWD`MUJ?j=Nu%KIFK$?-e+*H!$Bw(}U*YDtWcG6} z`xz&D=($ZaFWAon;_>km;x+Kp;+64CxV>IGe{PRglg zT6`1!jraw8tN1y5A8zMq%=6)h$L~rf%7Wl}ABexE|3o^U(0}dmiocI% z#_jwa>F4oyb?H>4Q(L?W-o(>s>+uoN=}u>icvpO?_$+*e_zZj@Zm+iw*Spf=2c`2Z zokQX~@KfSf@w4KW@vFF`2IjHAz(hox!!ej zz7$`BuN40UUn71J--_Gooy+y^an_r8rZLY+$IU!X>6{UNf?pO-^JQ=zu8Y5m-@|pD z$If~)&q?NaD|hI5D@!Mqcxn6{@%DI9@wRwc+|ILx{mJUAH}izG3eIOy$Ibpsrc+XU zB3?!MTlu13n7Pdqbz*wZ=V@ki2WN9T!nEBuwG6Dv<}uJpRz$L;Um7t{Gb{7XEqboR18 z#XMd|IzP~9AbtREC7qw?clP)w>D;3;PW&$Zx%fMagYz&;JOTbCZuia3^R>tKN~bWL zgW?78W8%&6Q{tcC7sV&wSH#ERcW|Bmk;mW88~Xg&KqtQVIy|}fulT#-XYlvMqbv#b z{{!*Ytj~$t`HyoR%6hz-$J zZu@6Eohu%HA)P+V`C9xlJXXHY=ZU>9i9DVgx6hePbn=U@$BTP96+PZcIuGcy6TgRd zlg_W4tNtGUTsrS8<+&lA0ADPftMpfUe7|%G()m&RL;QsJC-`acCiri-{W!Ao-1hh@ z>5QTiHGk;yVFVsWd<~vJd=;KT{8v1+_!&GCuJh;icxCClpi@o!U%Z}phGoJ1Z6ux! zZzWzGZzoJ$UC&JCXnXm7i=KX4FXT5p9nuqtRIUP6eSO1`sSNwl?QSsi(gZo}mybE3l z*Li9?>&-lSnWvTGW}b6&+KHdSyNQ?iDwwCIcrm=6qm=Ez^CAP zU2~oFk-sl!9sIsvmE)$LVMQ?KI`Q}LZQ@<=Z^b*}2gFz7KZ&ovPm15h&xqf^FW~li zKj7=q_Z)Y>F8#!Da}J~N=j-AYc=LJCtUt}yrPDj^uFsC!uS@4)KMOl<_A}keU_XnC zr^YLYH^r-n*T+A`?e*IEn|i#zbXL!QT09k=NxVLuRlF{qPkb0&P<#+x3fKEv#p7+I^BtWI z;ydx4p3Y#8&yvnPI`hP@;7i4OuL|~ag?JBq1FqM*)8nV4vyRSL@iq7r@n7&8;wSNk zxSc0C&xdCoPg*GS{5+?VQv4a70k{2B^mBN;ymZp84)(LMcpAKpbh6O@#Nz{`Q=ZNc z@v`_hPiMNvH%O-goz3Fy@m=Cm@V(-b@WZ&>&-`5P8IM1b&SpAK#J|B`iJ!-#77o4d zzv6LmJ5MR*N#^nV(s@azkoXI{jHgr8S#LhSFXr=6Q^(EcqxaVY=ck2uI=q8;Q@o3K zW4teJueUnaJKW=6N@qBorQ$>JwVuv4XMN=RC9d};$IbPwpmRigIetd`2!3AtXZ!|k zueTo8`@mTr`TnX+@c!zh<7S?4I#G&*o}Y*K+v3UA2KOtzcoIB0uJfdK)|+`sGf!T} z%{;~E6c8_hmlSV-mlbb@SHtZ*pRzyoo%Lp(?#$EPaWl^tI-SHv;eDk4IbW9^=J9#b zSxaZ3_-cHG_%HZs@ss#w@qh8{;!p7dxY-}`b?N&2Ik#gTzbBoH>w@#}P&_UE)YFMl zG&pbiy6@rk>p9KoWDswHXZLgpc)YfB=FzDqJ_m0moo4LMryd_Bo!xXsiSNRvN~b;j zc^>~pIydQT6~B(}7JqwvaKHA8$HI@`_P*G8&U*Y0>ExyJNIWS0O{bXn3cS4d3B0oSF}$|;bG)ATGrTcw=kLsU=;rbM9-l7# zv>Sr^K3hBuzR1&A50csiv#-c&lj&}kul9Pi-i^z`^t>BQX_+}|1EZ{rK3lZ5?Q;ql$l$xCOy zcy9cdbkfj2=kY(KQ=iV?;&t)=#0TSHB|@JM1M%3n{W!AoB=&fA=`5#{TYM>ASo{cH zT>NLeg7`mp74gUT$GFbl)Z@LS^X@mndFU^m5+5O679S&C8lNiO1)m|_37?DG`7>}H z)_Hup$4^RsI{h=^)9}ll&K-}xmd;K((MpD%tL=DPT(2vc$8$-?_VbC`eko6gD?OcWJbp|%4e6W`ua94pPBzZfEsy^voxya% zN`>Cvfp{F;-rxN6lX^U-be7V|E4~;nD*iKGQv4^p60Y;q_IL;BgwyFF{t)jYo_up~ ze+P&s#Yc*l#m9=5#;4&r|9p>cmQH&*+r``Bd&Q^V2gN7h$HaHyr^L78zv6cO!kmZu z9)IHT_@zV7+ZFnW#DBxz#r1VFdAx*lqHhWAV;S*i_(z^jU5|H`P7XTV#k1l4osRiF z#dv5$yj^k1udK=Ibr>I6sTUYvZfLr{e3xC*#}1ci`WOZ@~}XW@@t!cK%}?zbBoS zbRLTTjXxEix;6MXeIY&?4=WdXAMHFzJ)YL%g>n1)os`>x*DWrd9Iqf=4zD6!25*4t zzP0rD5b1QGGeW!*KFQOW?ePuLnL}r@_$+*{barxX4?FA4*9r4{8l3-gj+=9PfX*fH zJ@_s0m-t=rfAK#YcVG7fZui;F8NGaPPVC2Ncjip$xS6x$_Tav!6fcTr5buX)7Vm{; z$L&17ux}rEyspPPOMg54?&4eV{+`ZAk1vqUZ*&%mU&L2=I-5OyR60?11p9na{5Ab6 zp3Ys5N2&1U{+j!kg?@DLOn55X-j|Jh-hAI#Z_d?5&Pf5sO}{psBH~r?a?*dveXs8E zj?!5`r>ppUyq|QEj5Jpg7B<4;i==aq&NA`+_&Vuir@!6fXQcCh&Ux{B_zmflrT@U= zu`7n&-y}PO^Ak@z5uO~k_qP%K^d2uMo#J%LiWkMJNvAvg`X28oovw8HinqdtOJ_3u zi5~x2I?=xk_Ghj5Yx>)yGmZXUXT3T9*Es*D95?5`7X7p0HSjCqz4063J@Navycyf<#I_Zag`7Qcuu65oNZ^7xOqeZN$R*F7v=0Y5F? z89yi95x<7p`RzRSJRYNR=y{k)=WX%ncoN+9_j0}OdAy)>cG4*-z8$Y1oh_rxD@FYL zEoZ$s57RggEgU!J;R>BL;=kct#G~yB&O;CJDEI)}Uay^Jl(XKvBk|LCEAi)eJMm|DH{8x|=jre9S<=by zeQ@69iKoMtN#_>VyUyc3NT(8=pT#TSXPl1tzIL_ji_fOnk9)YS3Tp z@%_@tMdwHH9QXJc0NUJcami zJhk{yJQJ?-=k|DI>HJNnn)oBUo_MM~!ToI{o&s+rUIA|>UJmbs+xhEo9)@{*g2$Ih zza#yX;-BIhJ)Lho{)==zr}L}$RQ#%^^Sj5RR0};nJLp6g--ai`?Y=c(-%@+Lh;**g zDItCtujuL2@^}~Nq}j{+3h|Wq08eL>#}`Yd0iEUI_3(AlX~F(%_xK6v45D*dd;oq$ zIvwcW^>|qI(EGcD&RgP(@Oa{f@OQ+2#8ct+JlJ{O_jqyX{7I*@_#b!`@nrjg`&(T+ z30_~k4BlA06y6%w`MY?0jC9)3nIPT5Vh?^hbpLAl1|A8mM?f$ouz|91Y99{)o+Bj`L5AAmm>e~!Nr{|k@yad3Wgo)jL> z;PGO({klQtAA@};CEgLQEIu2rCO#8yjO(0jJU(1Hd+Cf8-;Gc8bmn<{lXULU*(QD$ zKOmiNIk(50_2%3z=GvrxxFWXA=Jl&no^9&xPB0jJ0Sm^o`PXKTmJoH-5!``KPR z8{Xa1AKrHL~@@pE`p@z?B6 zJ*RKx597}@wR7Ce|2wbSQTz_xOZusJ-60BJUqjwijmL{hXFQ#f;$!j3(iu$uV~=-}&Np;= zif_ONiT{cZ6F-BG$L;mnd1iQggLGce*)0Aa{=Ia@alJoz{Hk=a91hOgP4V>jL+Q++ z|IFh_>xZ6)&*-ES?~Z2>pMz%>pM~ef?S9&Mig>)9boS6`B>p|#S~^R)-Yy;=EuGtR z#*5#;XG&)){VzTKopjzi65Ovn;;HdN;^pw8;$`r&xZO`X&sC4VkWME$uf;pyu^R;E z!S=uBdJ}s*J8s_}PNS1sd6q_>6yxv5mG^i{>1?OdR(vzw)zj(c@mbROo6bD( zKk=oW&RUNjl1|Q}!Ff0;o*h3cozm>jRgXWF&c}3Kh}XhnG<0G2!T>Ly2oy1?$@8xvN``Env{er2Eo38_ZkUZia z5x=%LZq`?0{T1;ahL|0R_&T)5qc;xS=RC|ATRbzK7&le(x;N>kan?uve&^%h_kFn> zH}9W!(a9&i6fZ9QJM=3$>mz^vLcf9IrvJlKJydy_`|BjVR1$4$RCzaM!eJ{eEeB=mXvfS>P|OFSkYcNN9$ z=f`H^_UAnG5${E3in#sn=&ca9f6scixc&1gzlz)M|2`D&!}p=$H+^$H&3!N3F*sK# z9gh*=L&^p}5G}pq<~%&+zGo7@i)VA(bW)8>5P4q;I&M0XPX_0zsCa+8l;fuJJfr#S z6Bbt0antE@D(KV{?}*oR++1&WuD8A8rt_Nhoy1?@z3_;oksqfCr<#9@*e7Sb>2IVz z)p64={7W$B4Do{a0`X7q#o|ryRk+Tx+2cp0GlI@Z@nQG{@s;>x@vrdPxXu&q@z|fd zIfrI{PSA-behg10{uECo{shl}+j;VFzY00)&HcK@{rbppGtYacgZouOJQdzR`jzRo zbk>`Gx=z8z*JqBKegisv#OvWh#RuUd#RuS%@Q8He`Ly%Q_V@;KYW?^O?)k`^KA3@3F*W=8{FU1;&0=>iRZ_!iRZ=d;&z^;+^?6;dUL<_ za=#Kb4}D%WrjtaxKAr}*{T=kPIO|P6taI>uDD1d74>RZ#7ylfuAie{yBEAj(7}t54 zdc3!EF4O5RehD8T9`)DYevJ_i!>8gp&peNBl1^4S+r+crd&Fzu2gGaOM{qmOW$xEC zXT7;!dAMJHJ8te*e>zXad*c5&9{C)g6Q#wQb7kJ=q*oD1$(0r6yb3CB$*VVB_C)^gl*DzUz7S<4Rs0Cv7mrvPxeuj3H~$tEHr!cnUblPKVE*Zjn|`75!9L6u z&y6n<--$01-;RInxcj=>aGi6ntWVc1nDdn5X3i`0&x-$sUlEUXA-Jv^;!*JXxX$y$ zS#Rc_#yl}vzB#vMp6qnq7SDnw7H^Fw7jKED6Q6*;FFp>>iR=7@Jl@FTtvx;vw_j)5 z%j*smUyqLyxBD|m-0sgTT<2fp@m8$hkVd*@eb6or$e$Lam?(u)6^UiO0AwrvDsN~o--|Y&Kz{yJReG23+6v0UI0HO{sVqi{CoVO5U_+&hV_+>n`_ys(Zc*+~W z{8`15;`zku;RVHO4n zbsb+Hp5pP9xcxYq%A9M&C*xZ@o!uV4B%Q5vu8MEQ?|M3aIqS`N2@pbrG@u>d`?&C)B|5(2hH~VSk8P9X_fV1ArGmUx9 zIBw?onErY38u)ebN%;T7$Kelgo#&ae-pmvBS+GB`KMg%Uhv~!<{}E3n9`$yxKdHpS z@QmWw@GRmV;CXPJzo^ISOQ$xS#^N>cHl9vbkB^bg5IPgYd*L(0U*L1ZpW=&gz24Ox z-!Gl~cY^)@Q9LhxLcAeALzL0=chANJTE>@ydgeGygoh$k4Q&;{+iGAF7fzo=?tN>UwjaL)YJLZ zS#Pd4tY`4~=#Jy&dY93;FTMnSEPe=oCjKKHwNvPMv!AcydORy`f1mOPot)zL@j{+X z8IL!UPNI9k`DrDd5bx~i^zrx%=@gxuY*s-?L7A5Wrg?_o*NrIeoXqG(?2CX6~E}|-12yo zE}`#3cF>6~z73C$+v~FPr*PJr=TaV?OCLCHo=aEh7;rXoRdQ0De%&s&PN_^C!NxCI*OOXdrId7=W4LWXGy0Woq6JI z@a59^mHv8<|0tbFbPkJ8z)y>B!Ow|r!mr`>e%X2Mc|2GJuMz(d-{R@)_V};Tc}VA?_yhc=r}Kx$qxT3sS4qNya}rxT5uOaU`*xLm zOXu+t(kV)(jCf)EBk>k^4e@4p9o)_n&OB|!Q}O=1o6|AxyISzRYnbEaeb*TJqr^wy zlf~EIpNp@;=i_!xJI`{De=nVrboPlK#}A7?!Hd4 z-llQh<~eT8Ti9R0el8S$MSq3#hw*)!jUGQFohmL7CIyLCL6t9NI z=oxw*dgE`4_rw$9_B_~m(s;apbQaJlB0e84D}Dg4D83J`DgF?zBmMwyitGICJU&!9 ziT@7H!$|RW@JZrD@oD0P@pc~FDxC~FD`ETRXm+K9`7!l^UT>x{8xOir!&^$%cb**&e!7q z;oo>V-#P2eb8Iiqu_KO~=h*v?gL8XAJOh4S`g1r}H$47aIv>$_C0-ei-8(oB_WmxW zpV;Hsar?6kO+@>+x@-Q-ID^@%;F1@h13w@kaO&@v-;`@zMAh+|K_M=izsc|LyU(eL|lz zYw0HxUyY~4^>s6PyqI);p;JoyBwpFm`PkzfrSptVSMh)FzD~#dc?0`(%O#GRzrVbL zzlXlg>6qt3IM0W@j+^I0x_^T6c2GPu{?K{c0{A6>pE5-7?o(fj{rp%W?P5=}i(p%E#k6 z$4zG%orAd9H*;U?-|s%^xY@V7%yUva3x3vd)2VqR`1{@09XFjdtpA_*GW?$7reptp z_dkxCPLgNAzC9Oz8-MM%Ifr4rgL9s!U+8mY0_&5BkHOR8CSmq%FZ-6&Ss(dvM8Bxx zX3hh2N{a8pD~aF5tBT*o>*6|3GmrO`PP~7EeH$nq2OlM#4<9F<2mc(`dA{)Y7U?vm zvqQWgzE6Av{)6~1{1|TMxxxLq;jB0Jt2_7WiR0#et)la<_*Zz;{-MvGXY}LZ_W84s zej3M3{|24(;@9wO;xV5G_bZopbi5F5uh-5~#^a5plY>q(@oac|@!EJN@tSxqT<00$ z@j24zPv;BqzW8$SCHU9ki|~!OohRK4^KTJ9zraV92z~xUc@f;-x5Qu5k0+j)_3wzkkEg=TRhs9Oo#%azmyk|XI%UMG z;2(*1$7_gp#T(!{PfL#vkj`8>L&Rs}W5xI46UBGqGjKak1Mb(?&U$mdYH`25bKIPV zJ9PGl-^33||5N(EIO|P+8vUD&n|`|gg7a`k{5?EeyaN7Myd3@#k4Q(J2Rl#9fuYYa z>*;X&`?ZdA-WUHA&nZ3?&nrF|FN*6th+n&$zWYAvpyTHLzWp+|zlX%5;>R3!-~U{2+;n=d{<3%n{D$MEvncq_ z4um~)+;q;f{x9*9_*2JC=h~y-@1aK<6#5)1^(wfonBs--xQ?674~NYOi}?HHj+=Rw zvp%)>mv|;TVrk@g&Jo@GTUc0bXMNEVEuI8# zEM5|CCSDY8jobP2GXEs;5AoR^-z@z;^tX%m!uN`Qfgco~hyRS*ImI`y|doj-@V-5e2$y@n$Ez3C?`7M!0J zj+=fVI&H)Y;9aG^lYT#Ez3G>xKi+ZEZ%Svfcw>CF_;7r__)vVA_zHZb_;P$L9x+Pf z$JY_&|4BRwenvbgeqFo~9(_pY=bhzvKJjaK72Moa^W3n%KdtS!*|$^7Ur+pJys_h^ zV}D=S&T-Qz93?nE9mVtDeI0k7ha(*~okgr4D?SIG=18-@53XOM&9?KW~hi?N1XMhA5Q-_$4!3;oonI?@!viDzn%4w z9~UKp`NM{WJ~uAWc}x5po&dM=&t(3T&icsxp`XohGk@}E!9M2_Pl^{3FOC-zFN&AP zb)Fi|dNa>3=4s-%nWrV4=HkuqPsPXJoyAAty>XpqsI%V8vypiwId10JKxdlx8hoDk zeSD$#@Ay}^oo74u>!5fX{J7JJypKFTuR3n#O!!uCA8(4s$N!LiO8QSdo@7|)IV?aY zg?N5Ey?A3hlXycs8*caE1Li3w-VU$sbj&_1W*?e4ZuVg`{Z`_G@lN8m@owU`@P6X) zq6hmtNIVWc8n@SF=b!4VH}hX({soSk`Sa6RES?u%CEf^MC*AZ~{OmuCK=j+^<9 z&?zbYGhWHlukG=U(g~;2Rs12|Upl+l|B)VFES)qlf^)cBJSo0jI>+hnaMnkjL!Ns- zJ8t%82%Tf%gYe&^pERbq6JcSuo%N=lr)2PX?WyCY{}r7V;!E)8BSPOVrJ|nzH&<`^ zE$F9n-1INgd0+ezo>M$(%wRwBiihDv#k1fg#WUgM@Q6_&-&f>d{#N37@Xj6|Fa2ut zCyRfC&lc~A&lm53FBAU)UnxEZUyIx8s=)lG#NXn)T@f#aM;#e@f2-gL#Q(#K;`Y7| ziy54&3XYql_I+}7$IW@T#Qe3zPvP|)Hy!&vxs~Il(;!xGPTGlA$2&Q0I`-=ieH}NQ zJFFil{xd$zanrG1f0*RB>C}EZm}i=JR(zJ@renYUu*7lGi555Ld?o%OPT;E@H=SM` zgZLJQ1D>*Z%t+ujuhw9`EMy{vMx= zo2kuywr9@y;%)Kep3Zt_z1g2@?9U#@O@9@g1LBkMqvEII2m5(a`~-eMJW+yR{bljE z_-$PGKiuPqMu$Fs?0HD-@egskpBs4H!s5;GGU9fBDu~`#C3 zoA_wye9rlw>Z~{SH{sjC`Csg~xxeue2mR&ZaqxBG`SEYW^Wxv)_Ikf$o`cT%$d7C0 zIpesQrxBg=;tlZY;=}R(i4Vp9#O*wGfBtpWn|X#YPxLXN&xb2?VvDc96N#rz7VKv- z@l<$vT<6K|@$%AXMW?cOX}q?l)5PNg#aD8_MtgiIZa-emB@eE5h4@)~gZN8)v-k^q z7jE~*&hw+kuSzFlieR3b;_2}R;#Kf)@k;m;+|ILw{Yf}B^f_Za6>g?5=V~M8D!b$6 zocExgTf7TiMEZMq-Ez)))4xW)uH&Y^hE7BARd`GB3wT@cb9h%gA|3g8*3Q$ z-f=U}YdVv~U*faHbEXXL<9zY#_+s47bCLbo@3{FnV6pf<(XWo1C*gC}Uvv6q{)BOY z=j0>DBcDsW?i2Ca_$%@2c+_#B&yx#y9Nf-t=Sk|UH}ec*p3IJ$d8(!g_9vTo1w6m_ zR=kk-2E4fA=5?p>x)mHZubb%I;B~8rzlDE{M=XszC-%CUI_ph;Fa0i#oBk#`J;c}J z1H@n9L&TrsW5tW64(6XIUJ#!t-Upv6{u#ayx7YjozY!N6@oT-~?$58=>9{#*SszC( z5BtS&vpyx~_KxH3`bW6A8nd6_?B^@T&3Z?&<7v)|>lPI&Scs z`NeT_zb?`FRs1LXs`%FTg8jTH{tf;>{4YFQ{2~4?uJECwT^h?sYCte(X zBK_+0Uwb_D#L(wbYdYz~TjJU9h*2Uxzu5kV9bD zE62_GNsuY%N1YUU-~Xl`N4!AhV0{Ad{CG;-UT=40!O%o7$bc;0^KxS6Lhox`BN;6Lv$IU!n(di++3?C?cd%dHb^`_sQ{^yRH{tY^_ z#1G+LivOJ@*#D*CkMMPPL^|^0u?yF`-Q#DZlk$V0e_lK}e#6sw;PKd#L(f%xI`PDd z45ClhahrxI_B zXT){RoF4y3I_v4w5MPTo^mJNze5iCz(-|p#3ZLxh%<=dZ={%#eL;N3nzo&E5S#R!F z3+~rt$IZFQlOwoa*Tvt%?}JxsHr!Or{N3o} z67PZ+_H@d6ys>ol(`hC?9d9qbKX-7woy0fdy>PwWAs(MCow0d>{(SM#_%iXe_)78B z_-5SBvxw)w_a46}oilW3k31fGTIloSUpn!`pW-QSJO38?89ZJ}I`8ET z_OqOLYP`Cq)4=1sq*IPgKk+j7aPd#^(ctN#}ob{u4io$M`(-`C$7AadY>~^KBZ>xAcyi=fk>u!Trr7J`2w! zz9xULKA-q1yf|*J_Y&7z(OGZi*~>f)95?fvq|-$FINnD5AN*7C$9NCi&U2G_20H7_ zJmJhU&2cl&yB`MEJ5xL*{-yNo^?vQ~z0#>m=b(5={Fr#D0>M0|#7p46;r4pZbG^4c z9&LK)^Q0}EnBuMRcW~{$>+!#ZU_7O#Wbc~0^^{1cD&kO0Eub`h^@f{WElmiJ!#Fi>E6Z%u`uBHC|i1DPB*! zA>K@UKHf@vCf**m*ZYL;NAz>t{eHwq$IVGg`Xu5X5x*8VZr11H`w`zb?ymn1H&<`= zGo1ZACB~5R(v*I&C{vx@t)H8o=#u!@9^QC&P0!YEuBB&KJm#VgY^Z) zhvTJiz1}JwZz-LmrGkE2@x*vn@uK)=;)U@cxSb~}&xdgy|4KTo=&TZNfp3yd4*I)1 zenvWD>6{lIjo*|`5&D04{O#GH&xf^i;)}1wQ{Z-gY(Im?OG)PxopRzQ@M_}!;I+gb za; zluju+Q^oV*bHy*>3&hXkD{*_hEx6uqJbqj{VdaAB{YCs0{og#D+a8ZLH}rXumwrs~ zjCexvqj(bW!}xo+z23Y0KIj9FmyymRIu*qK#A}ErFCXmB$KpxxCgLUW=HkWiPPm=l zp3mOSdUHPaaz4j6Zq8>%Iupd(;4{Q`;&a3|**Zy_;u+Fq4PiS zUid@tzwy7sAK@>=(^Lxf|Fw8ZJl6cs&ujJ^Ch~YL+*HlSMMFCI#Ove5J)MdkZzi2t zbXtiI#5;*^tQ=f#H}MsCKU~lA2#?Q~PNphB|4Z?V_)77Q@HOI<@$I;sXClvmeICCe zozLjp5buuPm(CRWPdpy)i_quE96Ila&%#sVcK$EuXZCnG>FlCYN&H*9wx`p?7~cp>qO)r0*hCY~OzfZP4~k^QOZ@y^nzLZ`cU zC48WC!uY!DXpes>ovw72ig(7>h|k0~h)>6Nh<}Ig65oj*!tMSXW`BNh)|>Z}EqFh9 z({XdZey4Ls{5l>k-lIlvzaEQsz+d7zPs}ghJb%nQ;mni5aWl_pI;q8v;hDrs)C}gy zDqaZB<#^=#|3tz2|3Z$N*PY4wV&Y@)^0;1C4QGAi`*!-x9XI_CYXx(*7SDrs79WOp z7axT87vF^s7Tt();Ml<_&MirzvE{80uzk*bm^vee)bJpN~%R`6!X&=K0WyPBQUkcv|uKct-KLcuw42Z+Wh_kjLvvXAhl* z;@{(~Je|(Y`pEZ7iG%k`gB>^5dyCF+@f-LA@!0i)`#VKECO#Lp*IR|_UFxile1F9} zn;kdvFkGd@M z`O}pBiHn=vHS;WHo-~e|c@EM^FTNkoA^jA*-z(_xn$o#Pr;hktys3D?2Eln~As!#^ zAYKUXB3=ORk4Ic;w_*py&Zuh4H`}3a13rgodIz`2w;}xXy8U30bZ!ewn4TJO0NjxpyOT04P zPrM>N9JkkN=b7m7Wzy+JXQg--e53eme2e%@{Cn|z_&)JH_+ebi#h$qDD{CznOnLM7`_v8oTgJn{1pDNbcS-SntHsKbe_@aC;ksUQaa=4Pxkm%(n-@KxWB8!-^DkH zm&dn>m&Nzsc0cVrKYRSTbUM-bpLhrSq4;$CFY#&k3-Ryq*W%ydu~vq@Z?W?y@_2UK z?4tR+c7slC@oRWt@z_m+{Vy&a6R#ltAznp1A6^5u`#+iU(Awi&JU&MHjp$DhZ-CG6 zbQXGit8^yN*(p8*-|y)h_4qC6r2Hh<=ey#`@h6_nYmcY?I`lbHmQFhHl6Y2J?@NA< z*OJZl$72k$Wlg=#8)qIa{lFns1+r%&7`=s+F{UaW~DV?az zg8O?%JPZ#P&x$`5&w{_i?ftUz#9S5ne6XGtx6grEbTW$9z;lTA#q)^w#*2tA#Y>1U z#w+4Fe=U!9kj_tZx`_XP_Yr@H4-kKVj}%YYJh)$D#gpTca6A7p&chOqukrXn>6fH` zNW3_H%G0^z@xP_hh0as))_Burx`!0oxZLnpKN|M2{tP6>}UmQMT@!F_2a z9v5%#>GbgU6zLS8GhIAC{)MOWm9yS_-QXl&H`wa9`TX0I&Q9^h_{|9d- zp0;Ihep-pA!8?h6gm)9KjQ7KJ{t+JkLOR{(EE4a6e=R;6Un@Qn-zvTj-zmNa-;LY( zcXJ+2d;GG;|B?P}`p?C0;nCKHK4XpZntqXn5BxxPo-&Ep>@JzTpx2Ndm_IM@f6r)pBya--bycOP1yanD8 z*Lga5e57>7(-|v17M~`*5uYi(9$zSa311?90bh;l{98PJOgdq0g8Ow!{1yF+;#pXK zMLZLJNBm>_zIZJ>9JllT%6W*sKJ+9v>r}zvxU5569H56`ibj+^ILdpc>v+v1sVd#9_QFf9Y(cGgy2x zK1TdEe1iBzd*Uq!h<6ET@tzB>)c8W*A_lsx4e-!@!KOtTZKP_Gd{|(pqZ+rZ; zbOz9gw(-sRG3TTo9#?z`o=|)do>KfMo<{sIo&mS>Kjb_V@^~4KHGJLkDv)JQ1q*IU1F7Z0}&z{a{kB3WV5S_>31MrugPRwsYKfl=f z^*(Mtk1VD0f%sxPucuSYS#O?WEqIPqb=;iKLv(72|A;q~{!`9XD~}J5&OC4j%96@k!FJPJfzsReYYOv&`e)Nv9{BJ>os^L!Qnr9=|6Y+kYr-`!A&P0s9tx z^PBTyo&(c(4kUBjJO}16XDabIct-I9coy+}cplu|M>|hZXT3X5RmaUdztgEHeg|(T zp15Ohu9}L!gSW!%JVn@_LE;h`+`!i$B3{IBs6IG_QN#ar3%^ItQ=&r+9b# z86L4T^3Mg?>x#N1^n4DZpV)EJkJTmUCl`MUPbXd%e_y;7o>P1po>zPlUR3-jUQ+xJ zUJkd{8|8WAr?s%Uj=O(uzq#Y)&Q9VS_Ho>-9~5N5COYn}pM{&&NMoA#HZkoJe?OFPqFpQxiZ(gl}>8$&3I;9 z=g;Hu>e9JLr?&WcyosmN*5f0j6RTTrzs87%;Zwys;xoiQ#TSUr#21TC!&l+DKbt*% zLOLhtoEATZU-oqFc>J|={-YCZTj+iN3y&+_uY0hc3B|kPDRI5tj2% zl1>jgcg4Hme|b9pc|7Iz&~q}IP8#uzd~na;dT)vk z#Q(tU^`7K`#C&bMLMVHR2TmNuP@%cS8%E64;R0Ij~2g(Pr-Gbxz2hs&q?N4<+z!reBWSy)`^$Jw|V+|J$_y~9qIfg{waRP z(|P3a_}_+}t7&u+iBG}b#qIt);C^NDcnRrjrBg6vxdx_32C(uYrFdz5`z*z6D=}+j-t+ zp3Tns$d3!=Iq0~V=Px>k#2@0P#B=oz_UEj4HvB4X=gG=EzdP&AJkyxxx#MP@&U9Xh zx5Hz87kUoA!{dl=$CKiAoOL+^ORzqmL4A> zoljwL<58S^_F;iJf8T+_&ee?@Km^+zbEs*@9{FynLww4 z_&B_V_y+uA@pX6;@pE`{@w51+xX%BX$0thXKRQ#zpW}1I(+>*ve}Q;f{44P)_$u*A z_Hsi(kXb;5tuLkGGdjtii#3>?9ro?Ca^z~Jibag_2{e< zuY>Q9P9>hh`*ON%$c%ZoR_Yv6XCI_!T#XT8~#R5ZVf4Ru-1KkI*(ZJtKkVtB z@p!m&Vh;`O*JJUR_)F=uVt-=p34JbEPm9~R=i#DwD*UE+IsA@z89ZFPEB;u#GyX4b=kLsUh`%@Vyjf4-@w~V_hcoCG5dR!6 z>FHGVcnj(5qSHov2j0cg>Fe>S(s@Q_hWJ1DVozta$A6Me`r*NSKO&w6KjZ0K@%Rhr zd_w27cq2U4zW@LIP2}-hxV^t~=;RZhg%^`fFV0m3kAEVaU36NCe~WjP&T#sDJU&G_ z*Xc|bzlwh$9&1E!zZQwdz`w@r$B~_9lgAHBCpVqr;yLki;`Q-M;&t&`;=}Q~;zRLA zxX%B=<4N|1zRy`fCx!TOJiYiaJd^klJeT-0JfHYKcp==*KZf&A&Exew-c9;xMh5r2 zr}(@0AWvtE$G?oRDOed7h#qa~U&a9x`Pnbuy&LtjH8a=2?{SC^AHbLWEnAkl`TnEVJ3;v${n@{3U29)wJBE86os{Bp@Mpz$;?Ilkz+Vu*h36H&i5J6l{<0o# zAf4ww3C=?k@#pY1;+63B;uY|B#Jl4$;$87RxSjt)&ci5=PxSaQ>5r$sQhXe~-qZQT z<42{lhEAOLYW#wy^RLHKY>PZswx34a_Osx+Z+SglRXTCZSzY`nUfT6@f~<(@oji++@1$JPf?Folg?E-wZt#u4aJ`w5!~OV;_2|V;+60Y;uY{7xX$0# zxO*|f+&(kU4@tV@H{W{{d-@?=B;PD~SDa@Roi08-0c{)=( zzFIn6=&Td(fN%A5c6<(nH_X8i*Lj8;`W@(reECS zHKcQy&Ku$v@y6omJ`2uUbMa^Jw{e~49gh!}&MS0Aioc9c5O0T15^sag5+8%l6CZ^y z!FB%C9^WgSm2~!tufYEnKZKtUKZu_fPcSOj|I6a>@Ef?De*xzq@y^KSiS=lY7r^av zCO`cm;(75ho=zo?HB!8>|7?|FQLbZmdLxb08zbmn<{lXN~{&Y#75WE*!n@MLq{kJ{dPdaHw2k(o4;?ejB@v``6@t5$4xP2eld1iV12kEq>vtGP4{(Xx{{s!K~)9LB)QPSx{XPkI1e6puA*W>G?WBVJ$ZGV@ibHL*_ zq%(s#Z;MaEAA34UcSk;d?ET7v+pi-((=LPxSaw>AXxQR=fKtpD*4OUnJfcj}@PYuM+bZ%BU~{oCSe@W-A`(*2Ro89Pr7+&*Vc(8(=+3@_s8yyWqE(n<7XaNiq>C&1fE zCpG)l&Eq4aQ-scF@dEfnPiL0Lf0RyFI-A5h;=g)2`#pYDI`iq=6rYPfluicrC($2~ z_t$z>+}__`>EsmOju)0rcKT&JUROF-=rj<>rt=KQTBDZN$^!U2yw8vh(!x_$cX= zqccvtEIwKMZG5_TTYQ1|So|CD(fCSS=l{{;2c+{IokQZW_(}1@_!;rP@T=kpCk6X| zQ#?L?7q|20<~*c45P9CLXYhD2+@8Y%^h=57!(a7us(HM%bn4T2Tf8pb-P7sg@v+kB zOJ{<3AAFkAF+cNq@Nf9zK-3z?Uky>Sq=9d7+^o0%yI>c^?cWO&@6V_EUp%zl{=GNP zIc_??-3zaq~H94)d20pMh5tzlv8Czlhhs&G|8}c!GI4iJ!t_ zJU&+XdA|zI?F8}M_%!j__$=|7_Xd4qX2h$rPfZuj_U>3=}~ocO!=4e4Z||Ik@) z?pIXO;C`h%7~FUJKKhGJwD_NRcHCZ9Gx`NQUQIgx(Wxc=0Btu`ZFCj{g!m*iZ{m>ix0+^ix0%th<}a$C_W$G zjE6=EpZ{3q|66=9=k2`scKo)uJ%`W#_4GMlPDpL;?@QvH@p|IV@aNn+J8phIs{PzG z(s9$T&)?HE8#i|^ap>X(R!J24x2UK^j+^~Iz&G)obUIE6 z&dFx+=J+;DwLh#zs>bmDFV59qUwo6d--!8{km`{UOfH=TDk zrV0=A&~ejAJuT=w5l@LHJoNPaZaUj`1?!_7H=S~M0^{5+S9+{tT+8i^dC5G`j_cE7Qcum zI}-Wz>jLwq!_Db1{TTYW9XI{wX9njdzxXqF3Gse-Y4H#7s(2_Jem~lI>Ug}nbmr1| zPkc7sTRQi+-Vx&E>~qQE%cZ}E{&(Wr@D0+bO@F(y-t2R9mf*Slm*Zxii_Qx6`ET*U z_(kcDrGLv=Z~ATNC;B_`xzU(TGVwR@bhy1QU(nC$tT+Af^ou%f<{wL^r1)sOocMQm zMe$g?hWKCj8{&WBZ{l|T1Fi@e5H78e6@IW zd_8Wj>k9Lq5bwu1zbw8Ik3Jgt9N2_s75|8SW$_(&SI5oIujBan^`uo`r_h|> zKJF3EgYS3TbnNHY2(FDqUjuYjBB%=u}>{GG+$#^3k& zIO&g}|AqJ{e7g8be75)sd;xCfe4lwXiXXstI32V9vF!gL$Ibp9q<>WW0DeyTmFeFS zAC6}{9(f+V!1IV7##`a~KJ6rK-*>&l?fYo3xP4ztb=>U3oEv5bqoNi#ZqC1bJ}h`$_J!TF38zt8@xcHDIAoLd|>oilW{iEqJoIc_@kx(+&SI=vPI^BfUxkDqYdbnHG{ za@=&veI0bJi5J3eIc_=+i=_8-3|RC^rMdBX8kK=1AiMg|H(Wz zDxNW`Lw|3av)*)~?+5D#IBw?5vM9LTA>!%r(bC^|CFoD`_;=D7O6Ldh!T4tBoTk6a zSs&g9=KtGqGygI=C&a(T&x@D-Cb-_q;zjV=xY;eUpLU)n&U!P?KIVyzi#&&u>7*B* zfM*qt_iZpwPVtAV&+E8(-8f#inB!(2n$RgFUJHK}*Xye0tT+7}56p_FsHTpa{wX>w z#gF41#EUKtuB(f9LHvF3Zg?N@PWV9ah4@hMdH4w2UT=QB&pE|$^XnS+$9%`leNTHe z_`j@o+^nAwY){nx9Cz0r#?956{cOvAo^{;pXB=~06hDgpE1qddu%CCuGvHAtBfs9+ z`ICD*A8x8CB@uNqi1I+tc~h+y7_BA-i*=sYLh0MChQzmUhP zN@ob2>f(Lz`r-+e1^d%T{0Zw@;W|%ej}MYgIr_uI%i?3i+v4NJTjMiuJ5NrY4+}m1 zvvfw%*&+TZzE3*2=^ydD+hLo3BTk`FfQ6pWr;$`@5D-YVlS0bK?KvnZp1=$L;mD=6a_& z>%*U~9-0+VQA->*^NgUgLi`hat@tv0gZL7B8?N*G&slHgsn0wo95?gqr*m3-AAVW< zE`DA7HvRy&^K@l@5}papp?Xf-p3khY!Fk9do*6GLoyyn4+Z^?Z#~VtgDxId{mGQRX zUGWa$o$(&x!$KeBTyAK1{pAjBkAf2^zz7hWcU+L-m=mBIZ@Bc2$~h}-=c!v4JA@mHi%oK6MtqIgZ|jH2Jrm5E#eRGZQ}Rvy|~VQ$m2Jpll{Bk zJlqz~ia!>wj>kV2d9Gf^Q;7G((}>65>2W*%=bVQE9xvtbH>5wAetq#tcymvuy~q1Y zXA7M{;v4aip3WB@Uo4#`be4-h!hiI1wt4)Nbn<;4-1oEMdGKqV&V7$(I3IZ)>e0z0 zUI)*G>wPcc@tV@CC4;!Q+2ikfe3bMPuMY0ZIPrw|WKULt>?hau9(ly1L@=z{}?YK zz7#JZz8Eiq+t=O5Jk=dH-=BP#Ao$$d#BuZeqO+`T>+u1&o&OJBcZm4!_$cvsKX4wz zpRoQ*+|GZ8c@{YC&i}pRX8z3Ag6rDo@gumMKR@#v7tf2ImrhOkH$9%_QgGjGzaE`* z;&t#W;sfv;;{EYFxZR)T%u~j3vp?O-CUI;ZIm zch;MqKMv;SkCPlX=l?f4Q^j}U^F94#&U(|2rT>%Trhk*pR`KijZ{k_j1n2XA;u-Km z;yv)A;@$C+j=OW7#X}>8zfXIQeM@{fI6v0Y^7GSZ+)QUWaa?as$IbOl;&t+z=IXYrQead-#um(~XR-$lGM-otTs&YrlL+MM%z z?AsUO_3#-UU+47A^|s-4H;T8yw~LR(cZrY2|A*T-+b~a@Cd76gX5;(oX&djrufgE z{vMB?k{37cw_0jOsBbc8N8Ep?z3+(9v>^6wsaN&Ffwj{~o_9ej0x$eiDzm9(f+#W}aspH}fat&rjuW z+{{0M^#wg%9k=r*-w>Ri+Tuy^M&d8y&BV*#t#G^llbPpT$KCk{IBw=&%lZ)>Ux3^B z+wi*Ih_}MOlg?TC8$5nkI-k-xCO#ZL=XA`UjN6|k^pDVw8y-)6Bl7FWGCFC+m*AOk zv!8B1kH@P>=TAD-#Q(tSc{_)h86p|eN4HhxgNH-1FCCw>~Y_sh<6#p8)?MxKWmbdrfr!_$iY zf@culif0$UhUXH$f)~bh{xTk~C!O>^1^26=cv}1|@mKM-;;-Oc#XI9Y#5>|WaXbGd z&cg_gPw@C+>5rkmTznM1#?#s2@x#(tMdz6KclcRP=eoy}{u_C&Y(J&A?LUv}zUA_G zCFvYx&ez0`;B`EmrXG)xPQp#Wx#}$*A0Oc9jPUqu=@h0jU%Vi`R5~{~S3h`suXGyG z*)QGzKOvob(cv#6Q5QU(_*Ufo{g_U2@qTzZ+}>Z?&+744q_cod1@U=!bx-F_XTAA4 z67|UZBlP!YIBvd8(%^h>foA9{SebZ*g^D1H;4EuC`ozxDVQ>15d)oX>6I znee^hRq_4emGQrEd%x^FXFUE$I^F5SyB&E>y5h;jzr<6EPr#oO{|V15z5&mT>-C_fKi8m5Yu_f65X5z{4cH(95j^Z!k-Ecd9CCJ)QF&kGd0iewNTlDE=*;3OD;^KF`nL&m)v}-2Az}N{K`N2>qz& zxLI%iyg&=b&H65^@8GyuZ-1Z9=iDYQU$=(GJ4)wAI$g!r;k`Va0UnpUn@Qn-y*&f-zL5d-;3-1AM*GE zk0*Ta|9`({!R`A!_x9j^+y-wxj|=&_)dJTr?bT4yTq?D&jF9$!0rC$+Z9~zZSgfb1ApS_BzqWnf9>n$#clu4 z-k?)Z`~d!Eu}N?e?h;Ecxt?>r_;+>AO88yO><(*uk%MfuZkTA`oqNw;bX<$ z!6%4!!>5UViO&-M9G~yFJLgi|o^!kZKX}$}b=-WN{U819;=kel6HobPun&KTC&!P9 zm%`)3i{WQ*JO2&N?H%zu__O~-o;T~+J^m_grZ(5xgV(Jj-W`A4(`n=Jt{(qH`V;AY zCjJHfg>;gh3=JImF~j3qJbqC6Khr-Vz79X_>0I%6qDPVMiz)|$^N>uu5}p>f_t#!m z7LUIs{yO_m*Xf({U!3=88^_K4?au4A7w?R}Bfboe5ub~HgxmRJ&Ib2on8)Wxr|Mt9 z{wxr$j4$_e)_VL;>2#rUSiBQ{+S9q>@x+fK@9%gz$;HRv>BQII&xx6pxR$b=>WAb=-75VSNwr{&;^p zv^4zlYdhyB&U(|2W6nvAoBk6zQ^g+z2Yz6e~G_=|1Dk%{|7hInV(=fbPtI?o%r?buD$E34{&Pnmr_!a47 zJ{8>eyB<#;|LJ)%`*VU$M)6~KPVr=M!F|soo&+z3+xwN5dCGdcrF2TuX(L_=@8aq7 zbk>{mu#fXF)NymYt>}Cz-V&cA{i4i2+gWe=QMb)MLVxbtant{V&I<8i_*(H5_y+N1 z_|Ld`HS_sl+iCNvp}&_}ydHB#B?#`XU2i=LZtk9$^KbeG>I#G_6I_q~YtW7fZf z+t+QzoRyvRX5WglZ*Mwo<|#nGv3M@LwfKkl+u}X(&W^jU8{@cn-F>X@ExrpMfa`UQ zaMqiC4A(WqansLrD%iIf;@R=9J^d9P|5ZBe=3l}#q4)?qNy5nU z_7V5}8IKpm?KxaYr=<7_yqx&oct!EUcum~iui?zo(BpliljL-8zdjOAgb(#}#yIQE zd6>g_nBllN55?%r5if$Tkp39vU+1hh{eASeId1w*>FgA5jPDm8f*%wggdf90>G1RC z*?-K_C-nIwQRIF9n>jP#W*5zzQFqKgqN4ITZsuG@zo7UMyp;HU{3Y>y_^Xb)ulu^= z=5-&izNYv+ya8^eHqTpoU2i$--F{ccO+V*9!TISSo*n+xTu^FE#3;_u;qOXpY4!x@jqOC0%mV=A3Q;*;^z;+yca;v4adxV>L1PMXse`rr2x zU&zc#eKU@iX{ao_;51z3I25-`8=|PjeSI29Iy|_zCH6r+-@f7yPoPbI0SUlSZDm zwC95Rl2-gO{mi&tS00a-m(DNegMMZ4t$1Ber&IgMwf&BU*bjalhV&b|B|!b^rQHDcmH$T z^iy07`ccUu@B5i6fhWgJB7W%qy+A*`$4f|O@wK2+T6_jxQ99}P`+jSBypwd=To3x) z#H-`IrE~Ri=psTt20H7_{uJl;!G7*pKULPpu>O0``i&kx;_+)v-`tmWH-hW>SG*1W z#Bno!Ec2vI9^6NJzaDbES#VP|>*H8o*m3i^pVBWbJ{+$gz7($_z8J5K>pYD;{;qTm z(CI0@AOA=?h4}rA6U0m5UpsF8{7zkdAL&nyn{#g0|LXCR;yL&nc*)~QQ$)VM{$u`> z;t%i)xZSt+>F4lxdFd3o8JwTW;@R=q(iu&^vB!H#XFZ({#AETn()ot|D333aPSJmZ z`Im?n##f0q#Mg?yiEqX2evaZfv)khrq|=Yi74Z-7yVCiFe!P^C??>y|aC4RBeYc9v z3*xbOVd-q5U&iANrE`-`Q}K&L(NE0Dh>H5faq}El!koW~FT(dr zzYhJQ&U(|YME{E8rhl5w4e^us1M%c{gLCy*JSm#+|Iw6`A3S!oHKVfD(VZTW9~}~_hr80 z=Dr-GzexOVe5LeXJs`GEdAY%n|`8u!F}8(o&Y~AUJySfo*zGjhtlEuSebbq zh&RPkMn^tR#OuwSX-;z#WI&H=K;N7IN ziGFX7Pms=RI+Mg_;2wt@kN1*Je)C6)Eh%XXf zfG-iBhp)oz`^(PrlgE!pXE&YW;=Azk(kaRH-t>6#w2{yGf9a$azlJ}L+xZXC&*kw- z(kcERI1jIh7sl&&I!!&^TRQL1`B1zIKE%@*?eRs@Sx9Gz_yT;DbWX58KY9G1bbh0A zM0_WHMmp!|U-Nj9bdmS>I-L~aSMl`X&piz8S4Qz?@tn9l4|bkH9aABT6tb^hKSA1j^JbS8*@k53aniq8^1f-e$J@?Wt3OT-i5vACW8 z3g=;)$N%T?^U^O&|FU>N{I;j_#N*GUk35Hs=wudefak{bx{7+dnsh#Zt3Z``P{OA&IjW2@WIj_c`@jZa@L#vc>2>FH~rmoW{dB_zY)KK zFBQLquf#*?@GFjGp8ewU@qfhQ*q^H&Pw{Nz{muL+IJarUpU0oa?L4>X=kj^f0qTkNr1Eo`n z&QS3Z_!#Nrz7)KFzw-F^(rHC!jd*i>v!}DmK=ds5#Jr{X@|Dcmi z{C7MbZtrg)_NRo$Yf9%HojT%o@Mh9^nf}`z?bda~@vycomPglzwyiZN!`6T|Awh9v>y0!F0xn55y;X zI&(d~PCAR|Y!v?*-zA+I?Arlnz4;t+ozEd>95BYapN~9Ocj%-QzlCQO&lWF5xRYHx3!WRd=i~|VR26@gUmtHQ-kJ4nJpM6mo-Ss8 zs`9#n#Vg~Zr1LTTi5_1mo$hp2i+9C0NoNB6ogP0coiFKJ6rX_KlFmZ71t1Nc<$;S~~mack%cq(n%3NMfkjZCY}ucQaWeo&-D0u z>6D`LlXwaISLx*8-0pYQhkqWy`|Gsh=6trKb56WDeqDSReoK4^ejm5@t041a%pBZz z>y_|=;v4Z7J^m(c-(QP)-Nxbz@z$PB7mt4;owIa46F-H2;pxoq_*&`YND!Q#4dU7G zZPNLL{rR8A&q?QXI+w(&;&-I;JN>9Ek@w4bM%?ayH#%9wyWn}mC*TFdKgUbr_MF() zebwWQq_dVzGw~nrcH$@Sj^fAgcg2$@4DMG?@uYZvT<8D9>@#6UV;w|t# z;?3}Z;-BC{#fRY|a65k#=XtugJ?CG0e53Ri)88Wg4Zce{O?lk|9=|M|{dBI2@5BF- zj=iqL*(1-D_3XGkR}bjq62FHR_H@d4ysmU!ND`c@2I4vJmYz;Wj}MSeEjmNQYvALg zlYsr7;_=ne=}BjucnrSP)7kCu3(}cJ=Zg3g{Env+l_R*n=02L|WPP5K(TArQMkQc zJI_RqFO^O^IJl;k(4Y!~ei_{$n1$Bb~!^9*F;iC&>BqT$%F| zFIlkvNyMM9K3cpm>(h%D#Gl9Q{Mk7VMLqtq$KRCxoAeut*TY+TI$b( zslZ$5_Y9v;6s+&$xap+e_mzzk?}W#SC+7Ft9CF*@Sv{aWTp@3>k29lu^&%yF|mI%()1p&yMLH|y>1_ZTEzjbFc85iMuc{-aMHy!)^jf;+(Cx-od{*&i<`aCgTr#5FX|E;K~XB|%*@_|)?8BQX#4%S7dGiA`}BR(DP=eX%?Zti38Y{7k;=eX(QPZi9wP&_xj0uL<>e+T~Df5ASlbJm-FEd5=Mn|^yb zd&S$}e|h>Ro%N<4l|7jMs^j7Pq;pezD*j0Nx0pXk-pF%aoPI{fP5*B?S;PE32annzqCb+*>#G~;$o_rUXS1{3%oEEzdmK0O45RbA z_z?Vvcr1Qgd^vtj{4e~H_#gN!@vP4T`*Tk`GyVv-*ZVQ&Gh6=1^FRKD;QW_x++6Q# zbV`d?!Ykmm|26#@&U&+-(Yb=y{qatoevGr;^xM)O;JE3pqccQ&H9kiA zOPT*GXT9l+5> z+j%ZJ>&-l|%yZXqGtUt^55*7R2@6J^wWz@s4<9+|Kg~_v0c19 zh~E_Ngx?YGfIq=Q>F{~B^CT0}cB49_JVi{}$xju*#uo>!dp zW}fTJQ{8bh&k;Jc#Sh|*#4~0H?pHJM40v1I&NGes)!$hk-kOoj>Gz|vUi<_6XHS2Rv)=T_(?8<4>93-5Ts#)PApH}}|F5$? zyg&347JhoJO#eEaq~cfcXT+a$=#&+I z8LuMV2CpXG3a^LjJk6c;W}c{m!Ts&zxS3}poo?d8@m}J;;C;on;=^#AXRNc{%u}3s zra5lrxj<)@_&I!$c!rF@{aPZP9$zJ19$zb77T+R14BsX`1mA_*>rMV7wAY~@mz?$H zdSkiX$Bvup{f(-~hVxQ{6vH{WNAe>C`pX-3CQzvA=3{$vq<3D4=c z>Bkff`Y$?eI^VMXW%22FdB;tsevzP4#c?y|>t}=Otn0YxSI-p8*+9H1-VzTj4ZrU` zi!%Qf71hyMZ(cV?(cpDIaNP6<(dj2X03Rm403RVf47_wc2-o!_44ADs2!^T0ei95?f1&l2qCZ{k_;KRx{u&U(||O#iy$ zreB@TE%Dd!$DV%DVo#rArXN*2*w5!3H~shMWEJm$=fh3H6zu+#aMqiCar#vpH~qwEewob{&PmVS4~O@9-e_ry2iA9?!2ob{$Zp8iC~P5&I7DdK1FdD36b`Csbs zozh8@H8?+e#8cr1#b3mah?m4q

R_sh<6#pB6}KRqYrdf%dxO1uUB9B%vT?DNOt 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%0DSAbot4Vayh<}Nv$L&5;re8qZJ`YQI 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

a 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

  • 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ν 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,&;o%VxukU>^x1&@agmwKR++4R} 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�rW^I>@4&&lcA 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

    MOu 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%0D3R@V-76-m|ZJ9Od|%;p+eU;Ch~1 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�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%0DXXXR<)uxxV&F3$uDGP_kz`vKs6ko$>ZK(Ac$C( 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%0A5n=H-80NeYKkphmDJ!$YRF1Ps7h*x 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

      rYk>;?3<%mj0l<$!Y6NPWwu0 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 z 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%0A^ZhK;i${W*33Nap*6SAprL18mQ|7Q^ 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%0AXx2w=47Vd&AJv^3Xc+A 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 z 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%0D@Mt8S6{o$5$rSb||5oF04_8!>T;O`F8 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�oZT$$i) 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
      HjWr5|iJ8rz9^DBO!r6TJi$$Y~)?xxyakX3zEme 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
      nN^B?0U#22o*C(5&s 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�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Ρb$j~UGKW%9) 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
    1. 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 z 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

      MyIyY;UZiyx5mX-z7T{R8;=V(~5l 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⩝Th^2VR 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⁣_xZ?kX7pr6OQNQ^fFS@RX17G5A$8To1t}C*` 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�MgMJb6 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%0Ai_f**>UqKwlP6yc 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

      K=1;n`z>xi?TM&j%z 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

      hc_k8| zZ|WHgKdU#-qm_&5g_K zAYI?#h1`eCyb$AsSaWp!-VnPNB;=Q{-l+3tsdmsqi~^e5Iyh)N($Vjbj=l_!>QUWg zm`tXzoKNfcXn0>nmsX@|VM&q-g9cZp8q}T>Y zv9o=}-dm2uP~c7_ZPe|gOqU~Zf1jD;z(^dblIFb~F|X}%#Jt8`v(>13`|=>3?~DZ7 zJ=*Zm)JpU0px-4~@1g7k+m@)COdh7eT(L<@>sNQ6WPA0Z<=@lLWiamNI;GV*HDh~L zPgb?jAMyh6Y^ei(#tX#tI>#aP(yw~n#NqnYTm9^NNkslXe6;*HD6+19h9-Wd-{OX3+1^udSXRDqfI$inR9jNC9k79B6Pt8P%#12Z3b9Z*7e+#8Vcd#A2wC}s zRTNvrxUV(A_5yl33cjmtM4G`Mz+eDO^m(uj7be?gMlx?jye`N7^iuE$4_@ebi9UEy z=IlvRFsSis8rXkSk|&9DAgha4dgI};h#>EW-uuW-pgN*-ujDYf^{C*ixTy8Yeeb@U_ewv_#D=MMu%bbx|w|Di)Fyl-beR;eQKEKze z&vYRCP6q-OKQ~}xRp_pDJE>2h{+u!|spX7XgMu^7pznGFls}K;gFebk-4Jq5RZS+! zKa9MEi|)!gugv4i27zPG0++yrpwXh`eK+Kt!z8U?cX!gg!DO!HLZ{_opIy%F6?~9Y&9gvn$^5+0Y+wC_&GB zZd_>=Kc2x3E6sdv#MFa~^h~O{x--)3u+$jj2zl<+MFt;9Gvk;Kp74CIiTeQOSN(Cn zJnQv+@Tm5IvWah8W1ZA_{3n#`BfI`c=kbk|Ugr6;?mU8~-F0S+ zP9**lH0@2MKV1{?#z#(EB2D``9JHjZ1N8Y^)|$cu14_i-@^!lr%QPTbR!cOuC#kv2t#DsJc%+MkX2WB54t{~&tvNu-<5h|gr(-c zU}989g#&0AMwgxEm;DE2I5kQ`BlrXdW@65w1r5|YVFRrcfQE;5xWO`00!Ptc7+6PV zV4WPNrI$Son`^z8@CoQSg(>=eM!3)-FlhgD^@dV9i{|V-9o+^NvfFX03>zlUCykQ< zMb*_<8Ja@F&7IX982%gJnmU@-Vi6zG)6&sqTG`jZ_bkpz(^*<ZsQjZ{Hf@(TVKukln+V`IDqj__}W$dGjn8s8zL zW^I01T{Zs0zD)F4fY(qFdhhNI)H^JjmT#i0yu11tZl^xw?XdiKIr_QS4$Bt823dt; zG3NIXni;5H>oCBc#}BY5pxk@B!Y$5G8aaQFGX@uU7+~mJ+6BTfV=RZ#vjdl61rZ#k zIrf<&aqwp7{>~KDy1tC|=zeYC^oxEvLW}syvV6T)w-XLkL&oU<0_o*tTQfvl=U}g# zX8wN$Mr4Zs>R~zIUC6i3nU1;`yCkFO)Xsr`9zzvu^#R5f8fnc6+J8Y9V^0n!h>0oR z&<_Lb^CXt4vFNGxve%3()6XrO*lDj(9c#=o7nvu{5=8Kb0YWn6u1AFEZDV!!D%u+* zV5zgeF4Gum=#rKLQ+i(pj|R|`kW?YBFuGXl*L6d>_avnI8!VCRiB%wPg@h5uP<{h? zq5}5@>`dZJ_%y_{9`^qW7J?G$$1n^w*J$tgG80J7*|^5;Bc$wfMh>RM38;Ptwvx00 zcQGC){Weoz%c^_?1!)x+22afRR+;PXx(~!wqedbL=tBLCR)?35{+m-mqfdYi5Br$!1XH9-EejEo;$5ELNRRJ8`_Ubv@c_{?+X1E z(EfIWc3@j4#s(*?4Vy(lK;-DsP3LZW0g zmQ51>n;8Gikysl>bkMMk>U2Xx6w?;zsKPMyI09?{wnx>Wv?qkkqNREPu2#K|1AlbZ zOm|G?K7V2VrwMZy@FFpW~U6ez3w0 zYVKxdI}9S!OggxX2KTPD#!o-ODVPFvH;%0gp6={$ARekCPp@?j*1x6BX!@N-|KO|v za-0UMcTJw78CtW=)8s)b}bb(8PROVNeMWu z{FIkA37F0ZQ5H&@l$Z8XUfN4}X-Y>XS~f-8n_ot}n*-iMLbZ_f1GRjne%4P9@~wqd zr&m^}6G)>4))^^GH((;t?**2dAnvYyiC${zbQ~hbza7Xh7$^R4 zMdncU*U*xTuM>)T8Ix&<2KJJXPG6b_G^WIG4fIy+6%5n{VH zL27$Ynzk}*^&L2kTCPne^5|F3CMc9_br(+1^>Z(wair4^hXviEHP=Tq*9r`gFqA4h z+^J|Let519j{_lVpJ-$Mi~5f zR{mU<9^Kg&93A&%+M@rPW!H|xBW(SgU63sCOd`y-ix#p*U9q&b0|nrHD^5*n6+jyH zxD}FtU;)OeB)oF}$|SGN5ZZC_X|+&W5$kAZo;Z4YJtjag7gduxRDdRnIUsGlQQ><>}up2cvW#LQd{dn zy(?C#-p1)VvfhQO%j&$H@Ov?c)jI+R2~5bCG6x|V5oLQm?G!)@8^K!mvat|aoEJZL znE0VR)kjUlY==3CqNlOWrajU+?}4lztn$@5OH%9Es9O25(XNde?fJOT#@mr&MnA>l zKfO3+1kY4q8Qu(|?pogSVHD;r+Oo(d86k*a)D@WOVi;B1?Ch35$*FC}AdpV->&CfN z&)0Xu7C(?^@Jf%g-nc63AtMC*tqBL6c#PLoPdmOda3mx{G_;-PV$P6T$2C!B{3+s$ zPPfF1-*Y9}zfVB>hA3?l8Gg&daV3xXf0?@44$>yMLtBP5Gs^AWPO-b1D!+Zm93MZ^L13Y8x@8D)le%_@_&>O%(XF<*@lyl=e%pu)!XINBumB`qQDYg02F)2$c9J`Fv=SkE4^$ z23lr={eO<6qg&wLCG)=>QcNKb(DGnTw2t!v8FBL;jg)pbU2Q1+O`?Ro6;w5jj8Zx` zO6eV+k{Y-^a&YX?K1fy%d&%nIUL>o#y=0}g6Jq@|lGTMlvf4d=ic|ZQXtMgdPF4k! z(ER-Mng;ETcD3BD!&B@q4nk=<87bDqULV*8#U|^xG#0=}2aCab2K2sz&Rsv31(Ihj zw>M#AVMsPHl2=Aa{zaSI1h3g?Qthn9jnNurK;j8ucoeZ3Sm6vCh-t(z9*bFx>!LOO zXr$Uo))Czx#_@<7y3=mnVMMf~1uIp7LTO-p<1Z(?cu~l<=s0-_!SWHk4V3A^f z@)F*iaSx^vm~p5FSLAngVg%H$12?DX!z&n8|CDAU^f;rQh-_Jb12cL}oyJHg#&h9t zPLXmXau?`Ew zA8CDG)%wy4OGrR<$;$N}Gc1zbzlwZ-b!NRuiieN%WVr~ZjqEfYNv1MaeSM`yLVY77 zK)=GGa2k(u;;8{F$HmS@=h4~dlZ@%c_@|>Ghpo_%I?HPHYX6d2dbEfn zz9oyq;Gv^M<JE_;|eSS_QKEL(jUPk0;#yz)UP9^lv&Wq68ciuwwyf|>L=t7F?T7c9>& zqcP4->R;3bylt8D0L|E!c}J&zOqO-(#{3co=e)`EWn@QeM$nHs69&;OQkYEtaXGC3 z>dExQ5bzkikEC$oLEGpCP^L-yhkDYESCKqNp{I9g3f5yzxgCT@!%E}C2EA)U4}?3@ zwFB_PPmy|w-rz!SE+{e&dFYi9Jd_H%qoz80h4<9#J9v>3?B*?dpbTy6EaZa0?jUMu zL-61m92)gW@z@Y{SSWS|sCTi$g34GoI0wgV04A=+M7p7O z!GX+&dVePtt{RF|rA~nz)zG;kN9t>2pjeYaoO{XmN*G2bV>FOgU<*pdS1sSlbMarP zD9FXvEYHZrFVLC}y^`o(%ezXjmFhvHq+M!(dXW0X($0J@mET6tNRGW^b*)x*y_<{Lm|ICw=+<_*&ak$ZX-O=TU*Ul- z>Q)$}S3pd9wf*#JyWLN(TVVWJ$|sJy1J>1SilnwD@y3OxYq4LguD7v7R*EaUh3aK` zV#vV}LcC)D=MvkTfi&k={qTYv>hT_45_EZZ$md7OR=3hqX7r%X7foWv8lL|Y5T1;? zpC0d_eT$1QWTz*2uGPCN1?nG5@VYZKx3d$a=qtX5s80>mI~zE~pyu0Hbv?7`%%rN@7$BIevH^Q$Ss^rJi}btRVehU097 zUR9#UdR#S_24JL%`T+{@6c3J9=I@F3RV~L`ecV!PeYkjQlethk&|DG5!bp0?W%nEC+|Xm$^ly~schT383ulD?VhYDM4+30DMQZ3y=& ztl$mn);Rl7@NIPt!jIaZH}{;Eol&^U+v-fDG6PJ#tUG%gJ12DfQ@9y|QP*Cmu3Ab% zv_hJd(tw~)y<+T3*LVhF1q}`gY4=S3ViAd$7t+I12II>bfsCvXV5mH|8yeYaTb{k% znCbZ?fx)?3VEKA&apZDW@8kpW0v6a)i0V9dPP)G;h7f}W(evqb9z`TU&rcMys9^j= zCxU9p1Viw83sZ0;z2}MGW$Vju&I8sMg6Ex5W@&tgH`-Xg(kzV+Q7DTsJob?zKKjl5%oHHPkQk7KR5$OTZWgdD8sCyxpO_WWLJIk z6LbzLpN=!fv?Tto#dKtPxH<=$BXs}n@=l_TPUfr7%X<;!W2W!QgMTA0qSOyfJN>ao z=fCt4tA2;0;n?M)?#M_r^0sYoo=AHTZ22c=U30`PvI!&Bs_x5wq z!n%5luUp}FwqtKLE71*g4!u_a@6tRAa_6a+G05q~>ZHk%7w9zCligji&9w^SIa)QL zheMIjJwNzw0q`H0p`8uvo8sxcUC5>z@Sr@FC_x~9I$qC57f(5R=-)>)we$5Fj8^go z1(cB;5cu_Jbmj{0^HcxCIBe3zRE(EItYqE_G;9J!>9r~oHoNz+R;^p`~jI!WEu zt_`sZnC7czp*UVTgb?jF+S&041bgZtde)uBSNgaf-gb&tU7!X|8=s>o;T)rv?g8Fe z?MA$+)Jw{=!1tEd#(DtCAe20+)Fogw>3Ae7xN(>!nm>}xwIg|9^NpbN`T+Sc55uRtj-t+`?1`rR6di;JAB@#U zB-n&%wvG4>558~ks zo|sM0z#WU>CF*#(8dZl~Gt7p_5$6`@`6J|^HZe>+kBJw(@&}6pv;hcVu<(u&oFK+K zi4Zg=>2?k{mbd}O3*gQJJkNa==QvC2KokR}JMcb^aKH8d96+tZD+lYg;>9j_%OL`< zU>jbH0S8oXCBj8>Y3%6~Y*+)~3T@2qP9rh{#I7`AjT={mR-#Ez(uUso9beg>=&NkDXyCh^cZHPlP9>1&bG{xAJJS83O(s zkC=NzF&@O5;fAZlG}sKEHpflUht1PzvWNPuqvic`*qnP$I@1EZr-;C!sZp_74{o8~pQ)SO0CW_DCm)_-1q#zKFhp?kCrtuj=mGxk-7HP3GfxmQ#iN}m&%slSeK z@Yu#BODZZ%)y$d)`0vTD7=1jx;c=M$gvTLOH8ZBqtgQDW9v6HN!~5#NG$_|tQ*(d^ zZ>pIwb9DUz54)l<{7MF}s_-`cr8UPk9y`6!!x)3lH%x;i#@E+t!73`F-}0E&2peV4 zFzjk(c2v#BM@Od399yr=i=Uct%`NRsZ5=4998*7Iw*GX4`PxSCEewqhea6;XGnyLa z7^7JAv*^hh;#=>i6_ps}7-0l1yt^xTphge3rzTi4Q*LuU8yrK24%s-A-@! z?`WMvT2H92$LCqJHe+HR5J~3V8rb_ZLvF5hd>g*uaon_)j&W79S`TV#YglU4Pdla_ zAFZixYSG+S4Do2Jj7q9)RS8>FRMa2kf6t?-W`W^2-?+_>?WD9!h*Z^E^O`yqH{u%( z(QjZ><3kM-Ck9bdO%XA9zmfXK%4jIZ(kFSeGt56n9aN_!YDj3iLo2hjiP4evF#hnS zj+w2C+8UdVq_4f;Ya%tr9*v-_sLFs6Z#4A-{8;K)ppLDd*)gGh+MK4Aj^>V~CSZl& zt*C-S7A;(e&!Wt3UDPtC=2)<<2;;Z~k*F(ccpy_f!FBpDQLXbzcU#kVe9K~fLnGo~ z0jN~fFIa%j;7GZ)QnYiOC*WF2zsu{x0>i;t_aJQg$YB^v9<)_I3P+4fVK z+PWwHSS@~NmYQZAO4+16XwIC&+gcYb)RC2Gq{`99kfp;&)y<(|48rx0hQ?Ex=8&k_ z0(?9Y(`n6((Y&8L&O^gl+CVi&A9obKZ*p2w8$KN5e@3V}NNf`))+6ljeW&mnL)E4a zoH)_%1Sd|6rk#EE8>!QP=`=qA*~1M}M%T0_kJSHZlV(r8ye;*l*FhKFFlSC1q7~iT z0rgh4^Whik^9|H(kekL-&cydyYL;|RK+du7p&t6~k+n)EyqTvqQ#(hZjDJ8# zf2U?%Q(JZWDXncCBSC61Y4u5EpsM!84GW>y!S&YMwuZ*~InDFv3ui)euBeIxX>05J z$}x~te_^LS{D{s%6v*R@%<2;k#uty~(5MAN4c-1H#D_4tA=Fq%ko5hn`Z*094cgs3 z9EMf3n}(#@?!gc{w9gL|AvT;=QZVgQj@w!fyl*GJSY4V#h4iw=Fx}ObYD8Hx#oabZTL(d zAYSUpOkouhYS7PqzG42N$ml5UJ|xy24F~jO%{Xs7b%FERFecJTsiCD~+Uz4|kFKd1 zdm3>@@70}QaRtpz{ZVl+q#Tzy9rY$IvEj1udQY9Cr{=m%9oD?0X%5;fLZPYNI;fqd z)<Sz#;STLB@kx<{XAE zZywdOptWr&<+#W~)hFhGkIurCnAqzh2*WTFOy%J-X|5J^EHv z_sr1JwEzOl!=yyW3G74$q8N@7Bo1I8h<*e@ARtZx$a%-~$bw=No^HX`iJIvg(A zlL&qFAw#!I-8&3^jyvBRG;sC|0s9p>CE*RQ1w)TLs zoS}U#b&>3LD3pl2;F&(6{IPX?KxdZx?o!b^1~l8PVRz7m7nF?fT|zKK2PeiDtuWt1 z&)hD6BkGlmyF2~N!+BEyFfci6K8?nV zG^mEeXvp~uG+reqw9^ILH-5=3X0<`oh#4KL>-?4)Y@rUK(O~>s!$9gZBwLJ?(RgtU zyclb++Q)9TrnDd$N5FU}`gCG=!sN8oRCw%z2R0tdPPYor>4y~rtTDY1(nrC$ZV$~p zh#A3r-Un#KVI1$vVRv>3^z@34oXt7~(DZ`-_OH`Pp2nW>23CVTa^j4^(RdYCiX30E zqG#6{ARSMZa%1yQeKeERu7m%Qo`a*~RSb#i+vJG9ktHF<<>3#H)Z$c4%dAL9HwE6G8$?q<} zIY$nSq4A+YAYyQ>Wen_APrMB+zZ1qzp zQvOj=MoTeKFjCW-bIc^5Wk3M4WR$e033`6FyRh~$d}Uo~7@=KiD4$%y+D!nk9Jj^X zhn8Ed<^j0*@GlHpoNx(+z~FoOJL=H~?8NPW?T=A#yq`7pZ*7UX7l-krb!VU*BH>LBz(0QdqBs}lwAASMT` z^X?!y*nQMENRE!rnnzD}52*cjkN!iyO3oo%$m~8T1)%BVqvaAJD0k0TAbvP|PdDMJ z1;b%V6TiYkh+nZu@shav@8|E^DrVS%zu(78kX-`cf8Dwu+yOuoA;=LYD(#%9crClL zhU6^WQzy0KYskZ>pm#9UZl?7HaIx8jSgB|K49nPU3^M>zU_YmriP`03{G1_Vm{dL@ z)Q3gM``zGym_C{VPQ_~!3`n$*Ca8k(d4>qxv^B31S4m8oQ zMm3l`qZD=syq&iHoK+qV~-M=6nW67w`ccn3Mj+P&J^r6fdP=ZoVU! z|1R!%rNTi4>Pk>FpQ}J;jdk`0eVIk4ZyIyh*~>b`Bs3Wm4UKM)X;9W86UFefm-e|g zRq$>Mj!gQha_I2+4`qgjoh&K?~Vk0tB>bQk; z;Bh*wePmAh4J>4K{jOU`IwsHivrAxPz-0zO_CVNF)z;V})0sS#!E1a#hy?|&OSLf= zfw21x8X+vt7CF$MchLB(YUOO}*o!v?*=vsQv7A~={L?fX8*@YETh2i{W+OVLCWlsC z8w3yf@K9LKFeE-4kap& z%u1F-uhjL=j29X4cBM#= zDJZl-7Tvzu8PR`%go_SF#07he@DG4>pmpt;p$f9eDVsT`#5q$q8jC;xEIW$y8`{Wt zM%btGVbff{JR2(?q!vbt*rRZ7R(RVE+-)0g7TC90kG#Xglf2#R#G!FT((gLel5gJBV@ z;el7yfvW!1jRlyuy^R$!-@LhYc})-sN~pltRoUmE&vV}rrzv2qI5C6s#mKl{`nYm( zLw@$&PD4}92;lInJEVXE%zBDAKD-$-0Kx?T;=&}1+$q$q?BcLU&y>)#!Dzjt0sr1i zm|-=bqiw|w0mW++HDDz&EBB!B^vT(mll{g)^RRhFSWU=%vp~^!jj7x4#o7aaKv!uv zqrRg=Vir6C0RZQr0A+?A6 zn`h*1PaERx9k)Q%25aN6JGlUDV>$%|471s!O~hmUDmhUkFBo;O7zu@N6(X$CIah1V zh>oU?NBRbN1;s7|OP?4PLipksK*)Kd^c!AoQ-MQSyUF^~l9c4#J^j)mPh50p86eBPIT_gRBE!{8dKT#7;2oexY6 ztKNa5R8|=)38drDaCr1A9oZFHQSoLPZGcvRXoFT$U_GWwr^aSmRVe6ss`6nZSVD|) zx{sNDkn5@_x|J9M(5;l!S`BlKVH;Chz%>xS2LkS)P&(%i;aX9Y$g8k2a_#n>gFKnw%sS9f%4Y6VZvQ1tzT?)9>R@>@REzZ)kB!l<+VL5d+Z3x1tX&&LK#|$2-j=c$B3Sx z&=V&$_%7hp%jnX$Tji+YgJe@hy1WFxn^2kqgr4C!m=q@XD@+v5p<~*#jg!W4W0#^H zb`hm2L_fe#++9-`R&nS{;5VAX0aiMw)>L>ITxO2PUaL20m_cTxLeTDrd?Tu3fI&xY zQwpani{shjwD?dna949Y*2s5Jr1I{EH((8MW|9f8lnn@#DbslPr&@-bv3bk&lCTaL z`1rjnrS~l#E8xY7QGDmxpRz=tLUpr4J`nZ)lug3BST)4593&zIu?cv^TG4y7JX z#>207Cu4SlrS?CwsTZ9_6#5V&yTqbWprAziQZU7Ve_A|M{=CsHoIehpr@N!Aju>tX zGTbl;`&`rQC5d*(%rn0izmcL2Vh772GlqAlxTaR6TMr;D3KCGEO1TB#!c^vsdGQ`F zRP!UY5H>!zG;QD{z$+GRgG*BcKE*uf;4?V8Kdxu1=rB?kH1OH*K*QGL3f0!3+k{W! zt&?sKb;y^vN$PF}3ahh_!Gi~a8K}Bq2NLi{F|%Ebb_C8!jVUZBs)L^c=mo?ImGGrg zvHFKn#`wC`*@#%FBhj^e?%by_h6PR4>U-cdqOjD)8K(vq1-jy=?t=$0or^9zT!b&k zEeI^dpqo>}{IxpSd}X#rv;T`HePTL znO+Pt5EssKu;v)EejC{}G2n_or=mLhm-J2}JIMtpQ4OjU?3j9nIC0usfSEk|^WUsbz^;o#b{s4Ew zd)O7zhBd|wXW*4f5AaU;XaK~6{GrId zlXH4G@LjgN)j#~5#h6JhO1-RgaF8lbPV|>KG>s1+Yeq(;{A$n`IhHC*(S)|3=YZ5u zUm)rW;=K@oVx3WI2qrxz9VMp9)5`DT_(0i)MK%JDLKf~)v+!{&Ub4vf2*B~^<*Yk> z1|^`u0cDh4qfz4odT)aIs7R{#5ma&(3)}nousZ|*A2e>UpL*V4c(Uqr!tkh>#2+9X zIqYPF)YD7M4T@V>RiJe~r4nNhe(;?Nq{}*x>~>(DQTZxRncR)4=H$BpReJz2F&9So zjx3ksoRo^(<8|^2Oz?~GB8yr8t3avY+2kc*2_{Y49O>9xTM2qV&+vJrV(~U2%iX~Q z&c(}6_@}Sf4 z%C4fjj?5(0)^jRH;aZ(Or(@%}#<*$OSZ|Kw&neYz9#@NWt_Q@b%WS8dVMXM4iqv*m z5&_{(oZkvOso>PffeVE}-V`{F;DA&TT?r|FZb15mg%8*$Y98uxfW)mF9MLmYS@yvm zszz>xl&hYB6Qhn-Whm@Sz7A|~5@+@MnDtMCRT0f*K}pVOnyUXzNKxj*F)@?4J7LY8 z@M$Y>npjUv3aK$PQHiQUb_gjUlZHAI?T0*NuuGkg#>Vq&>HR?i|JhkrPwTox@lricaK&0g}fDN4sa_4sle$yV|vVZo*aQ zkZPsBvZciv7)1q&qno~e9L6uxUn3y~{0+nm6s~gm2-#RwIqSWQ9qY!u6n~aOrs6Iw zzGhU)>4Z|n8LLqAwGk1*_!>Nxm)hWYiE(}}mwS)vHe z!r7#7T*Uoso>Y|8e2KI(!7Hl#K@-<{ILng(Boa{I1}IhOt9jFzSsU>h5z3O`HgwhP+RhpA>MJYN;8&mxGlyc#A5Gn}@Y+D{s_YG>>f!uFGIc#LXkl2I2 zn+AfIzvt~4S%8_%CMBEDBxR)VCxp0e@rHwh;MUo*8&>G;`xSG48{s3{xMG-Xn9?HD z$`OfGAbUQPy^&mK_1=oxU5Jo)HxcnzuVExFuCY*igvYR5-9LKv=m0)pD0Hw)kO5_~ z96gOBP>c}<5z22VIq362UY?nxc zKvJ~jfORz?PfZ|Tw<9lL($1$GNMhU^uir*2b@}@e3&x{cl~-chIcr_yjFE$Cug40! zI%W2Uzvz}&d0_3}H1i+F7VCB{9aKODI|F!%a9*vMW%v?e`l+(=Fu6nwt_$E_yC-=B zml9bUM3AI7Lu#6VT(JG(Pzkb*N!d&So|#?)NeR*pZgf7bCf1KyumBW-uOI+<%oLC*FJ*eMB}qT^MVbll0aki55RuAw$pj$Vo-zkC2@^a;DlZs;DN>w-%19k>z-DQJ zWlmP#W6ij|hSI^ba-IS9%QPsFkY^%w$aG#W6|)grNx_V6n1YbjX*qx$X*9kAt0@Q} z#@n>DS12phKpa~H z9IfbuVfNSy=?cv!<1drj0g=9;1%Q!Rs+atmdwnegbC zx)vk~rFw zB8kEqoq zh?P>@Km^IT?^4^cLwsNxyc|?9r#Lr3qBGLZ*DMjIG$vQIIFOHI?b*CmchNDpVJT5A zbydCXmE9~RtP!}C*1NkOgCs{E?q20q3GoGU?caNB2&ryr)OpHmT|(i-_R<c zxhsTUDaHmcy~F2pdjr*oki+iR+)8Ev5SEEPag+ha9iWs$_As)lmP_6|I0sDw+o2XY*XI8?t!qUe@rP7_ipio=4_ShY;$hqElyYuZTLmKadbXgK`;c*7^-bHFHt zvnzUPt6r6$)#LHCI?R*t^^}3{h>EyWE>BSL^|YCxZona6XkaaQHCseDv0J|K8luBc zTTE{`<~RGdlq36|8iUX2h)D+h$ zy~s3y$aHR|$`=~XLa(?UgN-$>u#5e;P|&bQDI)*l7X(~GH{dEFLI~h#A2iGM>=7ej z$D%&2GMLowqK!0r;ZdorWx{J>!eERRrk1x<_KMeq??7iVFSQyT*`WbY)(J-rIn;}* zMs`n5c7Oh~`E~xV`~%2a29CjVG+t1k!vx*pvnP2w&a;}#aic$kY%js^tRxPQdd!kp zAej;4t`EQ!!0UAO9%oz^dTpp$hC3Lh6v5`_<*b{f_iuSwbHy4WT!a@sNVUX&Laapmdt6p;YF^(nez}Z|vfAeUcu4jcp zL)~Vc>NNb7k=ho-s>rT81|+30l{t1(Wn;Urk*+05NK(P zI7$Jmv|T_#e<~dn=wudyh@_XfD(UYI?Sw*uAFpdNVvjh;Sc6$*19b=?prU|)C!Ng9%&>L8#q!nCBMs@FZq z!nF)F(ZUKcpm?_=P}}GtC_q^jS2LB526Qt*vEFR-6 zFXDO$1mUj$ztlHdH@+$yn7!af$q{+Q9`Z!cT?2hzw9%E-7}_eimM~tEu$LXI0qUVI z5O@qJO`vmaMBJoXrjFE{ey(lq=h}MFh=xt2=cJQmd>>$pP;MI{$9=2XCP4TRS6gvBsWrmAGRy(iK7w6JT_xk@$YZnUwdeqdMKG)(`F}O<>@u*P2`4p-;|SS zemel2+3QrvdZ`3NcxQX)5mCu~>3Gz0$ zTp-U+3e}DjYPPa>e9WZWXQB}nazUMBjWCt;j!K!y{*mBLZtTc8k_e@|5JqRiY*M); z#*Be$U}ZYGSQLMf$tRgKE>04JQgL>J`@^#qLBRtmsCSm3YTrzy2ioSd=WBv0>zT_% zRYn_picq3MIUv)qnyH+ca*KBCkSGD%*+F}1xFXqc<3I|Y=PfngaJ!>8|B6LY4*1Fb-jgn`h=fo60 zLAjv_TNYR}u@%@g`lLM_*U=tkG-GDT;{jo6RorbpLRRIK5LZ{KicQ9)u%IP;PhMVq z$Y!gDF1sV7qE3qydRkgAzV_y$`Oh3V5tM5fYbE~MaB6gpdd7^^~RIu ztx3l;@kvl%By=svJ-DJ7<$WCpjt7rx1XgLK5Uo9TndiiVb-PC6w0|+;kQ3TyVazAj zmx;B!2FD&s=}TV&MA>bC^{%^&Ajm=Mw9r$g_s{mot=iPZs(6-!4fztXvO)voX@}S{ z%}@y?Re9CiA!&ioi*pdb<;{rdiu*Xm(8MBDSmhVYnJjn^RIv+ZJj?8ZLNT9-ykW(J zl(nZiQDVh-K^_{V;K|8jUGC_dYwg))t%gL11oUA7p-Qe?EGMq(K-u-IAcb~&;QpgU z-=v#hM_}HVp#Gl$7-{Ox(*+ zuWZq>_t0B(C@ped*LWy$P1&adCCctwgJMQXGcjSsk~}tGDGJO-(bc}F5~kdiueBx+ zTfaEF1ei#Q(=t-4S%rK;cff#~Z(KTkswU`SgBwJC$;lU~H~=q<{TkAl!lGN1U(afz zib6GiAmA#qS5$>g35P^>!Uot}Z0K<0t)=plT=++x@P@9z)Q<2OHLQ2$paCb1{x_>_ zQj|F!CarcGbply;3eQV&cTxhRb&{&YSq*5KvaurCPHM8zBe6eI&Ct!&94s>`4vV@puZ94ap^vUL+J+VIS#~k2w8DYSnBQ7E+NHu+tpbLOXaWUZWX-hx?&BuZP3$?t0-}rrd8;Lt(grUja4if# zOd6uwhIyfei;Qey36Ma@GhR2{4XM8#K|RQ4Ns}IeV zYc96fNM2;y1g>hHn82y5@(9dk4)2WX$G!;flGA-aTERppkI@3Z`2B?=XV7_aDFDE) zBid~g(}rAhZ*o-J_EyXVq9@Nce>OZ3Sg6FEudh z2WQ^CPZSU!G*6NqFa=m^whpRbVWsoW?zG)wC9jU0uLt~W2|xmSCupT=>&+2##)pua zIMFG)eahGo+yLht*_1&#@H`IzejJZhno$3o&_MpbsY?~#_oVT&&zdLbtO*N4S+^OQ zb@RlkP)Rwm9@~eceAxQn{hhZ8yHH5E02F6syPxS6dIN~s$u1onre9k!z+eO@4+7Xr?9;jfiOax*QR*;73Ks zv{MV~8dDu8?x5*kjCuis*DLYg z4H9}Hx=#-UA9L@OyQg=UJc|IToB zGwObk+amYd_-kv@zWm~g?ag;K>-XQexc|-((?xyTTp?}- zom%Kd`BPW8ExF~PhQoaSGi3vF+3#L`8;_NgQcUS&Mn@QUQ@WbvxqI55O5s} z1-h&R8}b!lW5O0mt6_^-a>pySPlhbhyE>`c`w&kUO)obnUr?hYNjqDt{YBU#89=Hu zFukI%?Y&R+>I>{r*YZ9FC~vSvILe4(8#*~0%3jEe=4F>x#*HaP{jv|w}=*pjfpN%IPX{?1%pLoZXGDT^;w6_km{sjpD}2Y zI`US6MK;~*sTc!41tixGZ~9=HITqCOOkcTyhvJ%TH_xI94dCyU_!tN z>aLNLL;erzx|(@`m?E?P7s^#3Yec+zG&q9=f*7+t13v%xXm>Uq_S;9-(*#zwI~lbG z@DlfqpFPII-5`R9P@yrNbkkq?qDt(aG>#j)X8<>`2i>(8j8|&gkD!zI?7BI^LO^q3 zk9=qKTQG8|Wup~rPl{5+F}ONa$yEvwWQYw`U5Ot+)_b;-G&_J*A#L8o-vMI^-+;e| zCqzZ{+px>L+wd?Pcjz1faZ?msD{}&r-Q0N1oNS&OUB$5_5=6c=0BO#vG@kA!Pfm`W z9Y@;whi1~l*{BV+U~~%o$eNwdJ;I1iozOm{UQR?Db(Pb@Y;A5sM>TpVM|m_q@9fegXT z?wUw9XD&M$X-Go1K#SET`kgPXa@}O#CeL>9{?|fkd(7wAJ30xT1jg+Yb#`sHULX7B zNHxavp^f!JNDq%Y>bd=x3ws5&`W2X$>F<&j8(#GYhXKu=JNIT#=E{l}?!HFe^~)}l zp7;$arRw*of^6QC+IgCII};(vY48CM6Kp-N)4Zf|{Mufx@Uao)Kurk<<6ni$;CPbI zxXyn}r_!Kco(Jg4dJ_9qv4LQOy7mftL6oOE-S)sJ8;h+P$ zr4s%OuX>*3h61{}5*2e$YzN3RFbn+EYK3mYAu%MtHGfX^1zdyr8b9hbI-g=O!$+r& zoVIS2!-PftywgHE8K=*e-Mf)tHEiMqq;zb}V}b5h)W3pDPbp zIp#vA5e8Fm&$_G_ye-^e>6*K$6tSi7zzLEH;ik%l1Uh*+3*GUZG5yO@Sij9+5h$|f zv=g?w6c{F)bC^+97~~Zs6GEn`wt0o17wIZi>F9|eJ8Zo`%cN;AXC3yI<62rakFxM# zG(u0Ji%|kT$%v~Zv$41>h2)=vo{pd$9`h-K-&0<>3`- z-~=iV0^`QXP!S<3#DIcz4vnQGbizjB{nCfP(WdMixf(w=tTIc zj?RBow;R6 z#7r?{W2{AoM8DoeuYg-e*p(v~qvz`FdM|aE$>#(AqfOKN;Jg7lf280C?T8w0jNjRdCX?4%uC+0XEQ*hSAnw1HA5m{fo>Ww3(CW*ZQ4XblDP zD@2K4!?B~$XU?=p%B?}MiX&-DfZ*hL;9rLsE>u}!b+2M;`kU~zFmMWtP76D-l7u4>=55O8U3r!+7_aLIX5 zszlSIi@=)qGDE7j2eDQ-zeqcL=X ze1jR|$bBq1jkv8jX|i-GI7sHvGYh_Gs0)xeE6j*;7}P9Iz@wT>yQW-CmbD(*qBl<& zO71dE{dHT}Ve_lpR`1!_<8473i5;c#^jK+}W!O355-}1wQm*N1$reDKYrwdm5+BQd z0oVU6+6WCNN=~*$pBI6gK-n3vnznNKe|T-BKp<>Gc?hO>$YIGIUZ!9(QHfCw!qc8o z`4dGerTAcN@fpn@t26eDj35P<5kV!~10q5F!K^<*H4`gN1HWd)>5Q1wCGB5}1FAZO z?p!U1XiS#?6TQ-_zBt%i$VWGmC^%ND(WTyg@>k4QwC{3u=s}Vec6EST+ z%iInn_gnQ~S)&P7{HoMUmYpCDdCdgrvcJVCDo{I<_KTLKtwc_OGIj1lWc>0#xgc1Y zMC?wz3bgAZrpf>k=)^uFw)#0Z2Uh~KFk6b)En>S?<3Yvo%{AM6%hS5!j7>cXOr>Eg6)Q}bQ`y*Q$kluINWDzpi7-iZit!2O=m`J z0So+<>=gB6U=Z@2pDULfHTRHgfIKNGig`~g+hwC7_^I?_ygKZUzKrZ)cY+gf3a11B z#6kaj(we*^(gm3xfpMW;qK2RikBAIs>1$2TP7pkvf87Xnkin=Zo*XWlg!oxt?;6&=wQemKNSnD6i-2n zK#sH%NYoTE2s&J|d>q$prP@hp^W|gcbrXJ^5Ul`&&}UpF-5g${7tgg_WwV|c;*6grRj?E+(KxW%Iv&p= zXhKcMgX4|9syr6)q9wDQCn#c;$9=Ak$0~F{OHX!=`fxpXAcmjcP&qUBRmCE&5E`=W zrw$>~9c1>66kVyXUMUq|R%`wNXr-Wa*24Ya*e%|}Zor*2xu@*2>Euvu&Nj3ivZ-GP zR?NsMqmU?0>inIU-!u(VK83?c#y-^v1RucLCG}HC0!#c&J$*_Z(h^E3r$us%A~F%C z;xstEaZ1p#o#Ec{i-Bk*Q+36I2dNtcT&erufjQVdTYtzciGqSHu2Z`n!xHcv_rV!% zpc~GFJpA+k*NB=2uga1UmbAORQg6@o#xUkq-CeWe_L7cKzJ5Lj>peb8xMevz+-W4j z_~xrG7||97j3qBpk?` zc65-Y*$)pw$(k#}RMBJvfy+4L%?1&i-@^2u;3w5mcwdPrz~E-~gVdoe#RzOZ)GaT` zQ|1(Mg#&EUG*1ip8Nn5{*_@((7|~OMGs6wW68UcmXGx6a1bn7?*~$YkZ&&x+f|^Ks zK!^2PBZwOzZvQO&ugQ4==(OJ}p7D&=XcA-wDfd~Lk%AqB<&}U-*~OxKnM~npb)zeO z$+NMkFtxS@f(lPQq+%5yr>wbO47)96kui8FOy*W|(Q+nDTx?$i1dw>R5;^r;qn=9a z<@y&H&$(9Dz04#CL!yv{zq*}Nii*wVtDNWG! zZs|6MArb1WsUs{5dhXhDOCVy!cG>SLw#x^RY~)PI9K)1U`JozQ5G@x5E_!Nz|O4-khJl9G;H{N4-as z7a*TKIwi~Z471;O(H`88eBfz!!2P%@tlDjjlE5_S96_12p>$Mjk6eRiO0T#0G85;X zdkN`#RA-QWpE)M?YE5OhU79J{ehSDBDpiF4HBhT+I!wA&Sy??D1(w2sQU(Jc z$r-gzA~*`@pz-1qQlRhdZS@>Siy3rwLWZJYY?oZM=~v%Q=~g5LAT}35WQh%y3~0u& zC4iQGN|h~RL8EL=^e~s2L<%gB*O?+3Pwhl-anT$gb=HVLmU2)r_J#2bc#CQeVeNkA zcEGozzJ>f+>C`YPP;?QAzhViQt6Dgm4CrCb&w;`6H4-jdy?Afp!l^+>c17D!WN~gE1s391JGHVNOz+Cg1N=gZKmO3lP@{`%VKs1;{`( zRi1=&n&=c^A<9XYy-AfCq01-T9@Q@(!AI-%x&>hhUbR(?3AeM~RGq{y&i)(dekJn? z{qgCgw>9Ln>G5sup10uq(Ti)6hPH7=eEMn*D;sEJ7x)=;YX;8xqInTdGOq$Zl5DK> zD5URm6Dzd`SZKSD$ijN$NsimQ@SDs%u&fUJZ_!hV*u+L?zxwDgj3B?^RRkJ+yyk zd5F&4s~~BrITJc31vh1EmA(e0Hv;?EvSl!LOKmE`X$Q2( z+{uXk#^2C8VXgUvjqOIAjd%`dO81stM~$b?4#h27YAX{>T3`sxIK}End%dR|>JBhG zi5aZGHqK8c)%ozC5(7!NEvyN%Hv>$!55juxi5rg^y93$)F(9Nj8{yq}@>N;nO=Q54 zi_g~uOKH@Uy@r=#5S;MF3gK~^k^-kUgR2OMtLwoHgxr*A1K3SOPcUx=kkjZ=CwWPQ z@dvDGAU1RYOg|POMdRVQoJPGF`3`|r6p@l!A@xY?$vHO6JDW4mcBbbVXe3!*iYlX! z-~q-uy^NHv(UlZy!o3%aPSxXsqun!l6!+uumwwDkU#OOi{`_iIR}zO?Jt$ebw6}bE zq?SSpHrhDJCbIs0^XoDVa!TPUel|cEV(~C9LPIm!FDUgA>PEN+53A-@okARgkt;|~ zqQw(6_=S)RNoJIqEY+*m&pM*LCpU5R$Ia$|ZMu>{7;I#hrtpe6BDNR@EA!yZRI1shq@XOex_clUnuV!vIx$!)tdKrOad0>Rye;&qttupOx29b_nIHCnC z)#NUa%xT}AW9Fot4C$DGDM?8!2wh`ME6sIyCGCb5Sg>Z;anIYz*9MT0ZUt4sEg3MM ze#D?m>QIB)X{4L&dc3L5G%?@pBdahI+q@mqf4FhLD=cPmNxI5Yr9QpXq%ydFojAU> zK9oMB?7wi{9Gs_NOF3}v`RkRZrr^&ZhJ4h=$u2WjehpH)@6AF^Do+g|a8pXtfk{p8lFjhA4lx>}zYnjI)wBlCqRWnorNx)eexYrw*8kZbAV|Y4Zh*L+UG-nxAQN6k`WOjDsNec7a}laGC*HIyUn&V;7}NjTVa+5+KjMr_fF zi;zlaRb3aKz@bIpBdzfUTtV2{8B*U&`lE7^e$;qz4P+8{5|ym)P9}(k`0!RJ`|5&1 zmItImo?Dmm(D>`o@+)g=l$(8u;*oBL5QZf*Ltg5FfiH>K*&)s|Iw50aegl4RXsU99 zq?!at1asS5KQK%$Bl4V4%_eRog^L;Yh(5+2yc%1rd5G}B1-wloO_VU3>C82rlqsj< zgd%NOJ6<(KC3Ok=VAhnC*VJr)o4o-S03?Qbj$6`PK!pI+2ZW~0Gfc4#;xpI+fgFk` znWeK}3TMmCx+vw1*OOoMI^-?Ac^`>*xJ`pNql4_tds5H#P&yN^XJ)FC7}dEzDJQlA zxKFLo>^(Y9-oD>Mb!RsRr>_ftiP)J8#G3CGZ4Gpai}Z)%+BQAZlG!Wpw~k0iCN7@cxgVallByK+}(D!gOnn{ z1U$qgT6HRh48Q)xEZ^^K(CL1>gdg0^p zh)`)yy%wn(%8}VoQT z$dO@=yOSm;^f<;*4HEF*)74}#3TiuZLsi~#Bs^{(m#5tswH*q4MA%M{%yJ7g!%Tt2 zvS?HMhzbB6o+=-q_XCKsRNqZccJO8GBfyS^Qg#4-t$bKy7&8UoBN#0>mO}@$ z$LLAqX{|p8IjQh$N``vB+r1{+LPNf?6p2vzU>h_-?$vV1rdAyRzf3rXz}71|9UeAwz1t+~PR_ASjwKUJXSu3EHXS;2+!!IV({W7_Y+~FfgtnV@a%p zjGuYJ^;)Wr)l_~=Mkgz*O>TZ4O_hzL^rnPAI;3|MS2u-QLUL7tiA&q7P%$9eGi%Cl zdN`mD3Bgs`#N1a@lhRZlx-VRlN-jd4FIZ^eyX|&#r341j5};LW`Pw?>lHytA?MikQ z`71>(CawXGlDqb72^hj&MjiHjUKttiKF7 zJ|R*%+-RUx@%xar5Id_8#6p{uyeDGF7tTfCrt{q!)MhMA-SP)t&^o4$vyS1x(2Y9A%)D%0rZm zllY$%;qtKc@*Mgo;;!0|ml7kBn%d;J+1P7DkOD&rifl4B5xhjr2lSVCz7U0k%QNCe zqdi!(-`&$sL~w-gV9vjexaa<|cEoBtjr{{#v8ZaiJ%q2X&fKMLd0|#-cNkr+(pDtd z0H6B=V)eEALtr-?8|5t+Pd9bP0M`IA^gaVKl`D3*z8)J%^kR-rkdH|Yb{{nkr~$^b zOI%!PpG}2{^nsY^1&K?B+^Ly7>82ZX)BVT0XS)Yc_eHylJ{Gv4WLterAC9?!A|58$ ze&JU{bdtjEBpHHDoFGmoF{I*RyXf3&<=^oM*DTdT6z9-bdJ(alT!$)yv8p3pNjr+$ zN4o50Dv4aYZtxXoe<_hcSe~F zUdTA3rk6;W-?vj|$}%#;ou5B7|FPrkFM6MhL>h}KYL;v|CZ(K^!X*~U2cfb)-i~Ew zz>3%1QKi$yGag(?1zSXI27xF@#kJ{IX(@(-|7Hn(kcv>{9^3KO!w4wK1b{X~VJ8>( zf44Q-F)e3}y$Q)Npf=A;Po)s#ufO&5MQgZ$v#~=TBt%PZ4Nv8#lD6Mx~CN zw!8#-J#Z&4kt>{aM}*xdEsILKrA`?lY!*4uxxCd;ZbF4mEi$;?vU4PqWZ>E%1Qasb z5Ev*A*DzU3p%T0+DQo0tC@@R1qvdE`n!P`L2{^DjnSf}I$seK^#Aup8yaqaN0k6rk z4z+b|KuBp@Ep?BqJQ_3W0+YV6=`4gu7s8&af+C$vgdIHtW&Y&T=O0Wso$9d z2*)fT#ia&mpibMZk(Bsbo5DRftC$B{Zld z9+FgcqdbV00CGE(vL1IH^M}nTzU{lkxA9hi>RV~5m{v8*ahRTtoF;)92ZlZM(iVAo zgc5;I)-bIKsQtO}iKCBLuqdNIQf9R%wzwGa3~wbzw!&vg)tgh|nH+-{O8F?8YXXoU zq&uP=#!~)LhJ1)jKsG2aI4R+X>Yq}c5ey-0qHbd-D(6b9i#9;{CC4pD#4|FJs|8<} zXko4vjtw8e)yeAYRa+(2IKg;;rTLK%aEQSoN3hkTJWsMx2pQaGCnHoTqZLA0qzR=) zTA)Ctz0;Y*tiA<{eRxm*sBeC)G~PNZTW7u7Jrf<6;EVVPRQ;OtMhKU!7?PGn(<)=A zF#Yv5)FG;xDOSirxs%qwgbuQZFLcX}vOf)CGlYC)1r(rO9S0!ScFq4Z(j(;i zvbVU3v# zG-Ft6Y&q$B*!5bnlm1n@({g=z=)rUE9$Wqi+5-27MuF3(LGzH5x6ZypU@wF~iVjoE zc^Kk;5-4}0Nn7OTM9}yrIRiKu)DIip4;I+`S6)j&zWMV0aIGmnYske*MRqaqM3%xS zK(Cbv{|l{rot@HnO%F#aPLK&i??l**Z|W{9xBYjWibcp)N*`$|BpF0j;{@nG*svL& zf%e*qY-v;LrYUx(JO|XkH-Mvu#ABwi%mdnm^d}X(|;L*>YHBKX4iD}>ku8PE* ztO~;QB&|*W-{H-|Ig>Tex42vcCVa%UrGRN8wgXW0Dd`%M$~sA%vv!9RoYI^U7nwGg zw3L#6J#3tw?mlT?h%!eDt*r_>KgQjSm{Se|&q>#0+5+;~5g8s6;Whj4^BCAplG*dI z^_*%?l?|uk8gC>PNR%Fz{HmcvCdy5)>BAcUMW;~P<9bkOp{_FiGN!?h)mfSw*uUKu z*ou?xMKW!nxKuz*|I{(YyS8QXUI4)JEs5s{qqx6D+d4_hznPett^yjL`Rm3z?i|d% zK^5Ltm)?VdbsK7A5pxvDzeTQuD|&@G&aP-0KK5xsNBlU%RW z!jh4+iaD+LYI2xtZD3Mg?JoQ*e*EK7xj6@9b`Ej$mBw&12%JO?@CR47MxRE28AJt5o_Boy0aC~j+zbNmvB|7p1NKV^31I-- zC1lK?rv&SOMIX3eQ4y?YMB**HA+x}Qz!T`;LT|yZ-$M;v`$~$k!`_H1@yGt2WqZAm z(j~k8oLG^zM`YN;`909Bm#VHbml~Y~a)O-%(ut6&D187a9+&?TG4bznqgYHeg8rrY z+NpT?l!bN?AA|1RN2v-=1uR=3mz!3wSb*}r4;*cP61>~k6uGN87)oxbNYZ?&w$+6m zS4RjYr;gnZhGN>)&N`{99jCmoQyH@;Ri~iCvJ!TeJ}epirLF=T$Qb{vG~_BY2Q{9A zY`vMO@1#7_u{g5jmxNM&pth|rB~EHkCAK`ad^nxN&8?)=DIpb?4j9{uyIei zUrXS6x}i>OAdZL47apR@y(!PVzv|-f(#Mjrw$~=#%SpEp0u9eL}lfs z6X-gjO3DNMCM3n3znNm3qgefrAi$6z0YaVF>;j!e1fiVgtw|?a+lvKI#nKTdsO6`* zsHft6*2%+G2sn^CQgTv3f7wN8J3fr;Bq9uiWrGbvguW&0Qakoby~Pj!M@ zB_eT`P&i2{TKmid1w$B{kkqHqUWKWm&Q>fsJg=1Fh5Jm?7Rbion579r_allBNpByM z=e}iJ6B-+9YxguaAM5QKFklo7!JB+^(}Q$A%WW$dAq7(0Q~S};(Lr?CnnK2^*SZgMwIAUVnrN$X13`Yg5fjSPjBQP>u{UK=a9h+zq ze(a3$=N2<3ku1GMR%Uc@UlFeIv7_cw3Dk@j4FnUOV|_}VC8j*kKJL% zo#x!VO%R@`)xncxb#K~nVicOAL4O1pIvfmTw+|6T;7VTsz#qd1jHPYa!Z)f@NuSK3 zW$*)p3h$+yqbDby!)KeS1kPD28;)@+CIC}g&&tM_+)nV<$zq2HG*t#V%emP!oSR~^ zzL{@d8^<5Ol6TNE2b=^x`Q2NlAxr%b=fn%-v!E%7Dm%e+z^vh{?CIm?&o%am3xKoR;DWC!A-Or@pXKw#A{B%kZJ6(k{y>Tfm%H}X;rFLybDSUo zpPs>39+=4ux3{1XMGLopF|yWB_8oR;WitJ2L7ZFOHX$vIf*T|k^<2JJNrKD)Fg~Yx z@2O}-iIL?k5BHZn6|JJb2sS4Rl$9CV7+DK)3RxMV!8G^sCcdut7da_64L+~|OdFlR zxSRSEN`%uu~{};7E|8aI5{~wnQzOiRae{21Q02N z#}=URK^`T7$%=Xt%`<`YB&oAhL&Y-I2o`!=6YTX770sX7FgEaJDCF~zH34HXPNb!r=@ES%uXNx+dyEyJ~O&|Be z#n#Na^$f;zC*~sWB*G5CCBUmH3S1_Im;ML`=iIEBudS%bS8WYTO5s9jttWPDFu6mQ zQ&9?{#)%XKmZE=HxWRb98^E9#)d1Ddi_N<4AQbw9ZBFCBy3-K9vICGC2)Mh>Sz+0L zb6phbz29+0$M|f?BOtCUh=DT*rxX#Tkp3RFuBr78J9Dc__qlo`pp@zU2Rbk?)1S^` z(G95U*)g-}=?o-X*b!FMOd$iywIMz~wE&*6NdzT!8FN`m2r(1TsnP#M_`U(l>(Mr9 zYn+iJ_K4-iFY;5|Ws-Zy>E1HzA~U9-8n9D-t_n=T`!4Um%YxNZl9oh{JSv*gjxJ`G zz_k^!D$ulUsbhK`?H@gRL@o#LY!Z)Ql!wUboN19n%k9Zof|!HMAnd~{IU=M#L&*2p zwIe5UuE;(7=?Z+4}|0H(qaF zUyI%dMO@?+7y1~S#as&82U>;BZo*?$c6^F;(D=&0}x~*f^U=ealWu#Az z$fyCUAOs<_PIC8Mye7@Mm}l^n)^cY%T35vO-G7u{uk~k_v@$jFZ8ca5c7++Lq7X?bunj94WH}X5m?etjF-WfQ zN{8JQ!4Q;7fa=%boABaWO%jBJUvTi>AmvAniTO}25)$PXT0g7u&qF*~e7@yPJH-ax zthtek0F8Ouz&RdEz`KD3<2lUuY(CWIwB;-o38amSIZLImrpM^uGoHNkH9L_!VmV>u z{fjX(Q~O%kcQv9zk$aj|f(me)0+{#)-H!lPzI*2ZxkC#2H33TMZ`Q7e&dL^=Tp zT%dk~h$CAeML@NREgT=ka_nen0~UKV)lZg{3B>Fb+{8wMq|kszIfW~nMH9>5jhCJN ziAUVhN;-t~qaK=fL?&xxovH9Fq|RM-y51nA7KH|(b0x$H{uI z)h1C4lRO0=-}O&%q$;jDFLv#WVOv_0>>efM%~PWhuVtDyf{T$iP99;qwwC&aDaDN_ z7;KAVF3Wm1isb~G#3@G(y7ffZJ%F{tm1b$99?UlNx015J>2%!V#v792R?Lj>E?syC zm)XSdnU!vZVoY#}H5a10xm>-nvdeza(`YxH!4DfvBd0w#6ob;U5H&>2YA)m17G-_= zK4D7_KU09w?Au{~Gi2i6)Bs~)ugXQkc05w*te)|5d(On`d&G^`^8_zIbbI#4H%RPO zTj5ANsQgITy-_7BkJcNeV(N43;G))l*lO1*4Mll?Q^ zqK|O?JiBIkF{+?$CKI6J$K0TM3=!zwpmhNW)cJ+8D*6^HhKKyH8|@_)G1;J5hXI=7hBcBW#{fAC;LSsYXM<}-c$Qg7ToV| zU8kmAdQk9~FCmMgPxzvyu6PRw1@DHv0O~s{uAkv}^XM&=(yOWQbU3EPG}w04D`__P z^z!Fuk(*1{CKIDYhlF$~XYj&Au&EmOu*p>(EYBh`M_lL;5z>s7@lK_gl)&f&73C(E zuYfF#7O8PG8p$i3V{VC?y?I`H2Tt3(@;04s<`%U32=2$_^n~#jR>uBX{n|oI{WO0T zk|?7%rrWts(w+szAXW^5G-Z{#2!4*fG=y$QH%ZcizC;e@pLzK>1`er}A(1YCaN>&> zaV(_<%>1>TC6>+Cg#)9eT8{MM?%anX51}iaw4P&E-S(pZ0G*H{33e7!g8YedErKl? z!m?}H_gD>@!oiDH!gsQU-jF!Rmv(anFrcy^hO`%Sw_xv%Xn9a!;?pW`@V#&b1XJ!G zy*q1Y`AT=v4B8S~WV!WiQ^*poVb|aaC4oa_?7&>IX9bhYDxVfLJ}lfv_i+pvS0HUV z@vvl)kv_8*m5m$`ih~MKmd^*e&a>teG+6!UnV63sLle{1tbHj)mODITn&q5uP2d3> zT{b)ALt~WLiSokgA`^?pLlxIe$P*r%BW{zK+PAn$(bt+M4K7qTXgqy#_T^;1anMB3 zQe$6s$!d0Y$@-vEya9Qu-qN%nqpdM_pP6bi+dorDckbKaa`8B_2guoU*cV*Rs+${w33^Pwgoq`a(mrwB~?6X+%5c1%C(^!x^D zDh)%LXk1@|JYrGkb%!(FT*NI(b;rQDh}ScJ#a28bMtxurhrOkB5zCze4+@d?HNNdF z2^>?iEA~xda&t9J4tmD5**K9)$SQ+wD#V%!XAz}~VG?;{gKcK!?)z+!5_tkvWZE3K z@@(q`r2Mlh$N{1YfeCv6kR)%^8Zu!5KkbktFa&zkv#d zu(1mjvV^QC6Bq5SPBLzr#%Al~hdqhpQwH8Ad2{p(OPvSpOA$^Wt#C!8G_zp>Xxbv< zz?G~aHE)`>CA*pN8m|m+<%ied84a$Bonv%?l4TG~Tc+oN<1oZE8v;f|IO<-Y3JZF% z6zZz3W*AQ~38r31PFt~VY1(tqKg#?v9%z?fFaXCl;c0aQL6m1JVxvw2np zRLLF~N|)gUm%ny|c++H54#lnW3R*0$2Kg6RO=YyVksXI`XEyd`UC<5-D=xbDwvA*o zSgJ~rjw4p(8_~0Q#@IKbhQI}btpS!A4O%|s7ifd3g`Ju_6Jt{#7 z-^X)~;}{(gNJW1}UIAEpC@E+S@W_sL8TF>!?iDgl2zC3{q}n3pQ-kM)j#;uG#F;Ro zFZWnsfH>)2T(XGDg3Tffmd$6Q0ZQ`mvzj37ymjGKOK7+9o8+C#26veu^V|d{uB#IT zIt_O4iAX_Y#g2?eQ>{oww2rE(lAYJ#xAW)oxIfXP4ufX=~J(qQ5ReZJNr`&rnNtNrEo9 z?4t=YQohISREtWSf}DCTl>aKg2j=^gml1e_#3*VB3g#{wuPOl@On_$S;+t1X^cl1v zf(O9DN{;_6Z?|wT7}2G%*rQN5t;NFF;4oW_A=AQ@6iLytwp+j8^kTp^u5A-PdLKX1 zo{9bxe$4GgRBbtFoJl$dE}BNcv=(*7v+#~BMYm}{Sbz{}2QjGAD>Hv8^;}CGJ_rSj ze(fwFz>JCAgwEoVzt%#9JU2?<=))x?(1=-HOSuoOaz|My6r3 z&C|K`juRK_fe%3~_O>$JqgJ)|sGA&#vrxINq>|Dhs3ADT%-PBT@OZly-AQxW0NjK= zR^{1B!Ec!+4dKfJR`i35g=-8Iq9fnN3jQJ)JR~>|vzz#&Urw zFIuQ=uvDF6{u-2q5Bo&ncqo<GiW`zcv7SUupo`uJIPO#!+yxHj|{EX}tfx$Pkaj(bG5ZO?aYtvY|n?3b- z956wZj0&ABQVe_lRS?c_g>KCzvL!X#C zz{JNsc zCX<)fYp%k~h_oBX3GsEm+wMN^L*jug7?V3qU)J<3=BX5Q@>GiQPSrvWoK>yB`AMxw zP3~cuz!M>T_BrQ`U@Ec{7wn(fdXq|u!EC*mz|6kGz- zjxluJP~Eqz0|hjY0vX6$%k6Ofn@TpOSdx4Xoh_t9$@m~Hpx9SM^<_WKkiUmRM1g0M zmlUc?SF7eo6V&%jH$HOcRudb~VXeTvBl8Y78XfwCM8GI1=9D$A%u<#R4GWqNlGQx6 z;R2F3m-VSldztwwyKphHRvpA)pu7D(>dz?X?X?ClJA?xhOf#XSi6KaB4&+^YPoSc1 zIOpaA#v+&=i#P3P>6lb6Di$p;d_(1{kRLzPKpHt196LwX2er$+f?{4O9ASNZiYst0ux)k zK?=ZxN;Gbd=nw3p%bGs#k6M$LN$+OFN$_QdAZA*blKbERqDm+TipRsTy7~c&l_4R# zx^AKgxq2TQ8m@JU27^u?CoS3;z=YonNA`Ik94ObL^Dr~*;kZ9&CS|Ug!;Yb^rtE4D zR-n*d$6ki{uDVVvYea}$@B0@)lTnL<>iannw^wPkrb%Y&wMJh+4R`Fc1I!{E=?<-G znJ`6EF&8E8L&Qt*3ZveTX@DvW_}&FhFbNdNZ61VN~lqk8!T+ z8ndaUQod1|rXtpis@(uR7!BbN4$UqnYjMMsoWrbA756nF&0L!I2(R43t!{u>{evkJfKbbk;(|Mk272mq!x=ZRu8 z=Z%&Zo5=oK06DrxmpL^tCwbnHH(72r%*x5b0+7dLdoFVl#)BO2ItalmdW_WNw96xg z!yE^~i-xul4LPaDs+6tlHe2}MD%Y$`=TIasC#uA>{x0)S#eB+=Pq>Evq?*EIDC>6#|NxIzMCc; zYwUUqeB!*+%)E77J|qH0lfLQ+9E%}DIjBX7QYSg@cbJQW@&l_jKA8ch)~1Ltun%wg z?JHE~^k-a6H^z|}xk@z#*_N!52n(?Ha(zCzlBg9OUms7p-9uDfN*Wdp{A#e=pl1&Y z;?(2Rx*x(Tpt`|odxB4$E@I?XyUQKX?2ssECh$?rEYxblzPD?66WMd!?dioiwepKZ zSK%&tR24Ue#IxG?Xd_5ZD$CLI zv1dh&Sc3^9&yfbW8jYWiK(Xd-KTS^ni4Aqx3?01YU5oRJUOtBN>pppohbiSDkblTf zwOI-RPqcJAB+x&OUwlPIo4A>_eAx-;eYrk7N&vG)yHvcua?8Z%$ta3yRM1;kj!&uM z8*ys279S%2+4u(Wc%{XnX$(Ex(OekA%r9e*7cNO?&HD(&I`#{WH6=r-->KB_>|CQ5 z4#hO6yMWIuE}y$(T@Do^IkYOh9}M9>84w3mxm6HD8V)P}Uv$>W^;6fc<-S#}t%;>d zjblBfqS{yO!Yn5>0G3o40@35#0&Z}PTxtu2hh1vaK=fDzJrp#uaUj6Z)hp%dA-4|E zF%{eg;*QsnZOxE(c5BheLI}t?nJZ9HaBN76XCaLqwqEQ`F1VRmc{fO<52!^G*u+2} zW?i@&*kepNf91p>SUG-Um`IHbeI$@)!S8O^Uc4T%Ux%v6=>4=to!T+w4>IJ)JKXmu zQJviRPWgMHFfK|r8B>qF<1jrq3U3nG$MhQdG%q?zXe)CGyLpvBc%s)=JMHxt8@N=1NYf6S&G?$u zQi^sku!B<&?YCsU%MMhnHAC^d0i9H32QdMTdSE`@;B=tzFKanN=W_T;uD$n)1mg%TX-5?UKGswN-^l+0qhKL#)y^AhikFa5)=fiKo@|0rnxc?usqt z>*o9I#_?Hll9T5&Mrke!Dc&F&k`lF33#Hn=z>$iv5Ila+I?vJCH&5lxr>bI3bJ{xT z(xWOFRQ5=r9bt0veA*n8ih|@|L<$nh4#>^Qom>ntj$vBi4M_1m^+CPTE^oFd)HdIx z9wV=ZgCF^AQzDSas)=D$@z`;gVV+SLf zWo>x|F5ef@Y$BSU6zW zw~hsfHtziqqHi>{(60V!X2R_OT1y@EYzZFY$x3x`;eM>M==(7p7$U(zdvW1!#T#Z9 zOT=Dv7a}G{g@-6eXs?n}Re`54=Y#}ZsoA0a^hz4HyfbBdH#)UDS{)>XU1RK-APXd zyQ32|r;i7a!${EtmPO{^*_~yx&Rl;aUYEpyO8qt#NIB62y7%^JZd*k3%COpCR{B#U zW@p_IiOqpHHcT#tTyX4=Mc7|eMG44rB)cakyFbsmM_u^$n%hH_E|OW5@iw!M2X&jiaxYUCY>rqK5N_ewRU;-2Lz(@R;-n(j*E1k&8a8EMx?4Z!L89q z8v{5I1l!=2ESOj&{@%v==}s_#4IsTdYZSH!&u!j864!V`DH*u^H9FAoOw^jw3aT_p z;Gc`RmZBypJSq8=AV|1rV0I`dH(f#(<#*>bt znNNjVl_m4HA5zUA#HCobr#q2WV$%rdKa=mhNUhw!Q%lK|lSWfm0an_WP*O(fjmbN_ zX1!57@f6?^YAZ!zD-l6*`V7~8o4qs_^O5o&L-&z@kF*x~vE6&dzPMqLlVRS|dA^p^ zGhn|LgYtL>mOYCJ{2lnogCj4CzB2O(}BUCb`it|Tlc3Au*bep|D9D}C;!Kuthe z;M&1K4G*%{`#tWF+@u^(5_@7nttR*c7z7xg+tZ4UMo1;vJ3i))1doo64npfM_60R1 zt_YW6gefx0^VVLhKveFk4F4)&kWUfb*4Dn>os0=OJ7O75#I4=dP;j8~$B1qDF$t+Z zyBy}czm2`XLBd}d#PZKyA=?Nj2f2-aK8}__qS?0sIR{b0AfS(Zxud>bNrq)@<= z*3%gr-wGY|+2{rgwC3=7Jeh&$+rFYFR`h{TpXitxzbUZ-nAy`Lq9CAbV3=`K6MroLBA`t z+(6N!ZV+I-OqsAHu+{9<{4@RWxuJb%F{IPwD2q|Hz;e!;Jr_N#6G_;U1gQ+Ec`Nn7lE`E%X1!)2EUL$W{(cv@Vq3Y*D7ea=?XlN@g6k3d z5Xf_LGFCezaSr_XdX^o?McnytQY=}CH(zK!p#5Ujuwv6o(F*(jG z&a2e40D&56)QlX&!T5Q1LNLlx7|^N^C>e~>{0FfMRP>`NGYeN+fiTS>K(YQQ%?_HJ zg7L9zMGIj9z)Ef!YC^W3!?vzw!LX`cDdctdRPuI1ky9{^D|8OKAKt)PO0Bd>`7GD) zW5q*2h-&erta@c{x50oA4LnE*CniViTMOUOjW;D_NzyW}rmD=_qHso5=aS3sq;0MA zANDJ}bT08pxvo<17)(mp7%bkR02j2S2?BA|TNKn5In$#VsRBrSsyE>4mLU=(yrD7k zlh){>%X%Sc$#nRQ@((sqLZqU1^iu6Ftniw1Vj4+o=J)gDFxT5Ae0y)_roXA;S87X{ zsPt;fiTjSFQYylG0la|nTFxm0QRgL=JEC341~Nu9F)uRTCs{|a)a<2Fv)R>JrnV-^k8Gy7b2bmP4gxK01|Sh(nh?D)nEWA%ANz^ ziA3_cBn;jC;F*rB!~z0YW_=$JO$e#Fi_j7ag4;2J+qyoR5?qbr52DNx%)6K0xi%oS zjNMNNIYpR|TW}hkGxYJ*-IM0iGdH(LAL{MuFh;RMjT-hS?*JpkAdlp(Qu|#BdDOr% z9>AT2Ip$9K8*#cz)TLL2Es6K`D8bT3CkAm`N}nR(2GwX32_|`vefb$Bp|o7Bnb=0U zl_%s>ZCJHW^s?noOsWH+(hs1PEJGPuXI_hknkwZN0$U#?!@)*P5k<3zuJ0#kmCowt z#Ky?}%|L!w^pLJHUr+Y-9^8LxA94q+(f#dr*WX=xXY;f24gJiIs2_ae8z<2lFFy6g zkNx2Hee%0+$n_sr|MsKw=l;D<9p3w7^eKE>SJ&}l{6*KktiJz2^(S5X1@-+8s6T%i ze_pHa2lVIey-$7X&i=hmfAj8>d-w1B;=NDf!tT9K((nEi^>g}u2l)HnRM#%<;G0MH zKJ}eDkM4c?+w{BN`dH)MTi^Wn{=MTnfBOgSy|sJq{_ed`<0l^7`{biH@BASy?OB)h z-;DS@{#f1bht!|@`14chrT!iI^Xa`${ThA7ckVvAcmLZT+r9VJw?4jmZ|$3(xbv^e zr{Le@Q+D6H^SyhY{LlZ(|N6iAZ=>iKzxs3PK7Zye{_?ZA_xTT;`+WJ$yTAK}y3v>E zlfL!wZ-4ANcYp29mvEcEsqXoA@qN^x_ixbq@6-G5%lohWdFS=N^5&f*xnC5m;n%*W z?(rYdJudEj>f1E_-=ceb^J8}gKfqJKqxL@kR`ecz?5AnG@%5+Gxc?e`u0JNfiI2v8 z%$R%`!_2?mQNRD&bd#PLiw2G9muXD*c}%A~apu=|c{FKV{dM*GAJOmgyr=JtIr-+t zpWORW&w20NH?N#4Pu|q)`HgQJAMk4bzTc!f{+M3#G;g#<>FcjyoIXb1q@VY`8RxIu z`|cZeUOM;368Lk@r6+GjZ_z#Q75+@z=bIn@*2lhm_dE28v=?cP=<8GXKYu>{q_zJ$ z_&F`_?D+?`?nc`@VATSKqkvFa5y1Z451j z2tSgJ>zi-Ot@57fSKs*N_kHUV-~RY_KK5&Oe_cP9-t(LIUHx3!`2I`kFTY3kS#d*spKXK2Y=bBq%k-bn{Nb7ITw?w(QpTpjfc^r0{5|!%ze4ZKzl*uE=l(1B-EZM{ZR7jpH}8Dt zTzc~6FW-9$R@~elx7)}6{}$O!eEqmJX0|a(9-oWeGCs32t#sWL=TX}Zir>y6o zb@aE@bNnNWjed?_zmx76UPtL#KD_tcJ9qve*3q7~mK%%K(Rc66u>)t;bNv#&|MDmC zAAEg7tp#sw^D{l6eY}6~OLzVj9_g|7NI0ziLe8_w-TnX4$9*jN-~J!}U!v%4^nIbr zxDG=Q__`ZuPbK@0cO#lX|Lbn_gZ@Qaxf}h7oa_Hg&UNj9WdHeY^uyT;>Th?A*OvY> zofmhkpQpdm*I&c`>ALC##90rcAKbF5n_tl^Omb%_kfB%yD^Ifca`uV@1{!Vs; zzW#=~{`cgs5$zlObvI(qQU8_y{GR&x|5;t7^-W(VSkH9-AEXJz7p*V-bvJWYeU--f zpG*H@eRntdQ`X1?r!vFtiPq--i`kG^e@(Tcg<*77xC@g=qIxm)ZgwJ zuOj=;ccaf_FPNYIvpLs4mvjB|-u2(Zct(-GuKqi9{l4=Xe_vhyIp_NSpsxQF=lVb7 z>p$x4fIn2%oga_>7j>P^Nc-!1>iVCyFXH?ELtS@A;*Zt!2hPvmVPp8C(fiKzPxAF2 ziq_P+(*Jx<{k;3WKf>3sNCRJYqt6De(!4u2S3h+ZD?0Rb7rznux@%6H?7!ZPKAydx z{&rU%-qydK;Q4>jvR8Ts{wiNj?UjDw|19VFALIHDTlQ1`=2!42+Ll-!8~sww_20nt zpS0|uwy?jS^Yi}z*XeWhXAIPb?0zErxxa$z^z+|UKgY2lzW+mY{a4j>{rpdGBBGfPu zbp5`%&hair;@`*h(C7Z+oa;Y@qcQaJot*3ccFy%b$hrP$OdLJu?_)jE7su21^UvdY z=yU%l=lVk&$)TVB*KnQg|2@nneQ|7!KfnK8_~$Qiou3EuMqeC9;F{U=eICU^!3~FNA!!hN$5U*9T(|ye@QKTj-By4e-aCT zuK$6$PH`@M{T8nO#GOAYf5Cs%>qWnV>!JJqQO@ z|IYdOKk?7X`+gVmLthj>)7N)!J@lM^FX#H#ad3rxzLj(RH*>E43=DGUKIgbj^Ro6Y z$n*W4{1N@1>UwlvE>NsYUkMy7`uX4bjQpKqTl)GZxE{LyPs3FTUH=O?*Z;?y>+7Em z-{*I8uKy{xVxiCdFz5Q;$+`YBa1cWG`EJhj|10PEUxW)7y3ZfxTz>%2DD?AxDd+k> z$+^A<7c+F9znXLXf5&y2-%qW{y#BV@r{{1<>H6=-a{VvMAJN}Y*RN}Gfn#!f`+2M< z`uXpz%XNyS>1(L2e`-ViPH`=L{a3gidd@rd!`IhxuKz~P^?wuB>3P1i74a9vvGn!* zKM}tFAm{pjl5_nZ=Uo3`xaOhv+RM5AFXvqUPjjySPdV3rf(UPBIzEDwy*NIAc5Xq@)*wJY4l9G>HQj<3#RAIlCm?2T`y;JzT zYdgrGON&GPVD6yWYF~Cc^s!U0Zo@O-eC|B45_zUAD2*4KizT&PRG%9c{@iUd+Rodl zJJkx`sWdxReZqS2PuR-YLBxWcw=;OAob|F*kKR4lTciKP^q)=o&ldlc{|=RS`llNI zcb)&szY%Zn_x$6r{QUftKEKXoLuf!=VqQNjlZH;ZJ?;)W9xWgZ&Ht?0EB$u-D!(1p zaCvfY^l0}WIePr~v~iZ4?LIna1c~lGS0f|NI&Y879}%vwR8)$2cd@Ni98-O!GT#eV zo%iTm;o+L+Fp*?~xXEC58Y~9~YDHPUWQ?PRvZ;WD(Xg+4{h!!54(5Cku#9{Nf zZ|?m(bniN72KS=dG2OdL{0`IVLeCYPof>2TbshV9%}f!fK7oa_@D5)6>*D7wE1em9 z1`;=Hb(CfXRzqpJWVn++@U!Z)Z%X`pfhu8ll!Bk@-)G@`6s>ebDSXP>hD}B=Sk2nF;*9 z6isC7FUnNYWu9Fz<2>h=Rz;!DF8A`%h-KbOhi5tUJ~OkdOGd;G^K4r~O7)A4YfV+b za3K=8x8&H`A5eaum-={-8_?yE`h$n1?yd9Qfru zX=qGxHg`=HAKk8;S*We0ziFKlL8BOaul4opdpT>Z^b4jR;?&mF)^iF0gSJ1tjpZiB ze1xS>C=h^ImR`vwPzni+?KwjkV)0L`Wibc$qhB2biT1ztE(-461)2ZFiv%(cQ|dc| zBB|tdQ8a!qzEIDz7dPlVw{hhFRRROjJ6NDczLx&>fFOhgz)*}I2baG;y@XKAY2$=S z!ei?mi$*m4wEdjGEa(gE97AGXYbXWmXYiM7-KFH&=sDHLpc3N-jm!eK2rsnkw97hM z!er0=e0RUZL5<7>BkkN|hx}#2Ofbi^M1liG|5W~j#b9#TINr%O#&uE-yt|u@dgj(Gt@B-WL*{ya;=juwIg((zXm|B@Jc6H&{qI6 zi+@h)M)C))=$$>?hj{CX6oJmhd)L?W&0*`h+>R=*V(0q6`D@%3$RkK#ekphvV-lz3 zc#Jg|W8eoGC5JVbAB{GhP#sJc9u(?}@ED zzm~C3Wvj~fMJ@ky3iV@z#@+O!dF90=FQM)&tsK{q_%(f)EFJ|e{r_YslNkGQEkP*( z`{D~(22b_g?st~Aj?KCC8ec9y1P52 zLqHJel9UeVkQOPCk`xhCQb0sP1*8O}L{vZ!5Co(_K)^HSx}V2A_@%NEBZh8s%|dp~BkC>0gTSkC=y!0tf%c z2?dY%LPw4NyS;tHYaL&U{Kv)ryO)~(Z!V+$yBP})@k^>Fg5PQuI-CxzVE^-ROjMKj z*WI9|@E^Zbjho(ZTmQAte>$4}H*@x%;>9DsM5tzu&^fM9mxR9DE!@b^>G6MiBH`a2 z92G9=Uo6$9WBdMnBENmPdzaU`^lSZZ$CUrJMv2hH=(l$=lWldjRW7iq2prPTGb027yrjs6^Z=X zpr^mBqe{=nF9i;Lk=K7N!>?eE{8u6VDHZx!3^l?w$$_Ru9>&lHsFyTfVF&$fWI5a*9`cY zfY%E6?ts@0_-_HP6YxecLcfF_;XjA_Ep*#%9^rNd`*~axJ}nAg5QVP@_$#4lczuC z>7EIA-%!^3r=r~gAFdztR|8%hF}lcMl- z0k0Ei=c9lJ>twN8^~2K*&R4g92lLYd9?WkFcyPWh2Rv9ON9gl5;YWD7!R1mv;KBUN zfCuwi10Kvj3V1M|*FMtC<=Z9T!S+uJc(DGxC_G)d$k~dVuVDYT3wW^3n1BcK%L5)< zkMf5;w-bJZ+g~>H3=Oz6ban?NC&Q_rxZ)cL{L%)O` z^o9X%9s0ZH=SAV8GDnvAmpUoKJKfMDTt8T+Sipn(g)IRO=CfywEb}k*dqm;i1Uy(L zS+@VG6ZAKt@Z$jw_FJy(|Gv&Lb1s+CIg}53c>h~8nttzN9`2uhp&#$(se$~!fL{yb zgYUNo0q-Bk$H*D_CG-f_59aFyykY2XKHZN4{(8VK2YgV#^W+Ns5_+(H?*oyk*nn3K__%<-9Psf0?;G$50iO}@;QMNJflw&)2)Acq=*QbrykJ=Wbvw4+Je(g8 z`tkhDfHwyD z`rife!R^fbfCr~rtVn2Lp+|VS!R^?3bGGxVC_H}A$TI)3zZ+>Dt}{9G z!FI+h9twpX;pt`${dk=u=HYe*-?ym(`S7OK^O*wq;QKaDz^4cDg#&fMn^Lb+I**!ujBIrv&_k z(BHhyvVhkN_>O?j4EUjdzZ39N0T1psuLrzwAb&sLvjQHyROpw`Bi#Pkp&xH&%76#w zt3tqo^EEu+a{_f%nuq&&Zor=_9r`8o2v2uj=*Op#10RrDa2|fi{1W_>E#Ir~X;}m};2Sat?!f1m--jPCe*_PG z>5d+@{r2tN9rKv*y;jHfW1e4W?%%8GzQWp{7Z36=Y)Izfe`M#&8o<9aZwwz}{xZCVc?uE)fowIWBHhBR^<4(bLjtlyp$l|-2-mJ;mCZifctnkTrZfnVc@^y zD@RfPm4FB9w+nc%{@{QI^P>YE%+CvWF#le_gZVW95BAUQfCuaNIGX+7+tsiK^XCI~ zg44Yk@Zfa+4tTK6Gq!v=T_0bEJ$PK~bx+XOb8 ziaa(A`{2Ui7KFZUH1faym4DJukS5^aUGoss=ozZ zue5w0{QeTbLHL7v%Kr){g3*CX$rGkxX0A94S=jC>&KjC~@Q3ZIZjFbnSYSNZ*`tiKWYBh>{5;FrG; z9EC64q<*ls-9P=X^^t;qBJXuQp9}9-LG4@&A8s3`_3-z~s?O)|c9E&K9}c%N9>lDf>*PFZ6)~YHqdw(?)f(G29wl| zf$(vCvl+aH)%W|KeYyp0doq~$<7&@nc<;KJ?z`|? z7v(G9J*>`Jc*C{I?}IP0_4+v6>zszK+M#y-3HSWp@HV!8Ol9Y{ydM(Sd}V@{ZLW5f zghw2fSA;)#Uj8z?s%@9T{~kd2;nUq>`^WL{TDHBK3a@)#^;g1=f2O({;GZs$?}d9l z{O=8fAKsn?HX!;P?)jVW&AILMvF$nZ6yEQ9J}Eq-4Sb5hJzox<#oj+{;GXyMk>39J zw*8zIMSc!E<6gCU3*77PgkQL#{yz)%{O|CQyHr2HGkW%RdOkUP@Ltu=2lsq2`0Y;0 zH-dYuzR0$#{<#Kk&skgFMY*V8s@ROeavxB|*$hd)zQUIgxS%D`)NQT;~n zzL`{~Iebt?<@>@tKLq~y&#Ln_JYz!nyYTFfx+iJR7=r!d>;RhSZe};FjEx!#f zdrSToyp}DOWZ^eX=;805B1M!>3(vAlUId=~mR?^5{>>oe8^LECmp6wWk1g*D-+NU) z1U|2wd@kJcOW==ffd4uC3p-xk0e}6W>K})1u=za=Um8RCd+Eej#@BQB z&*Al=)M({1!n@Ct7lEI9MqUQKJ@Sly==cI&+s4&x;Kz!qPG|VtG4iqS>9I9FoB{Vb z^WeW;Q=RSbOGV|s!Y9vAzx)l~T1Wm&0zG@bRks7XjBwBAfKRdURR#F#wq30b|MRrk z*&6QoPVm_al^+3LwMXq950Ac3{yyCEE8#ySSAHMd^M~OPcCzXk-1GO~z28y&WVSu? zem*ono)*4svF5iV-18OTjV`E;f4+(J{qs%k>+HnabkyOE zFI!vn7r{Nh9A5C0^84VPKMdbhU-@fr&)sRkj&xilrrtrf(*#!Mw4*peQ z^=CEsthDm(aL@OHxBgN28F0_fgCD%4{8qT2KN8-*soM7*Jbo_q!)kbp7RrALf7Q-koq&7(41E7t z)p-o}yx*7M{gY$A+LOcXJ8(buvAh60*{kv@@WggvvNrrZ+rRgLdwwu{bxgJYW4Pzn z!>e6X{uj9CFT$4=QvTVbdiMGC{B!V}Uuk|T!#!UMJ|dd-`@P|w9|S*^PxY63{T0RS&`K){) ze5LJ|zlN7wto%XvYkk!I-{6&Oymt*=*v5;oQ>dQz&l~qt=UMo~n0h~FhhJN&*XM_i znJj++-rKH6)PrZX{ak;z=ZC>xeMRkD1o!-M_-9`#zYp&D!|*b{D}NiF_n^U+d1{l0o^X`bDp=3qR3L{t~?4c(rFB-1FgoFEIS@eje0ZzkdMt z{A&1&bE# z=S#v5T~@v|-1D8_uRp8&+we)YADIWgGgIwe4xijpb-sodKcf5rc*THBZt0lhx?{QXs8}9A=8}99lpH8py zcJ8gA`ArJX`nGbp;NH%H@L45Prwu&XQF(XxyOUIZFx=Ze4({!r0Z(yHb>_m46_Brm zd;2%RBWkLhm*Be+>8hC-BC${n-!iVfO_c zhL5u8o`-*H+nFoyl+`p}PvEI+ToEgLQakkU<+a_$)#>2g{w(l!?L2b{xaZ5m>u=Wd zn!-Kb3cm4EDR2!H2$)!zd5{0?~Q`Ktd5e5M^2{{|ms^ZPfv zGs&fnev0XQR z0$*q650hrnbbPsF>7qKR;d=+m^T9n|6#kZ-7pe&*-Ax z|AhN}#W8a}oiBJ;zbAm(Y7vnY?)Oy|hx>iSRp4H~HhgX^EyvFAJof(U53dnJ$K%7` z{g zs&gM+tereoUOjvJ`+uh2lfu1DYIusN%IAf9z6gB1ZO3ZEC&g8rhVUMC9MKJaV6yUk z;4#+AN5f04R6kFJ&-hXKS@1LUmH!C7B)xncyhD5~-~Di}e;D4vt|MQ8`|;f^_>n&} z-R$|)USD1nqsxoJCr(q&zYopx@5h%nL4M0P)oBl3ct_p~-fW2KybjN@PWkC@&(DPy z*{b{}aPNoD;Uh07e;n@l)9`|}o<4;8ac=bdPxt5BH&nkcd`ky;MY#8KJ@_U&9();| z%05Ta9qz|pec@*lseR+&o}U6AVfB~8{djFP{K8Sy-v^JjNd5!d$BpOVKCZh8f8Ne_ z#kBK({yy|^<8yEypJai1{XFoWUej`^0rzp^OK=}IwuFDaNp%LmecU)4{_R-x&vdwt z8|T8C^iutma32S5hWj{hC;Y`^s`CTf-w&tZDdK6nbPMkJ2k>+@-b-3g^XJRU-#@A0 zyFOR0D12}NwX;0@jvYueg!_5mSKu2Ks{SN+lHIC58@{uf@{8g7%s+%*wQ;Y1PovN8 zdta%}m&pHa=a&z{&oov37(At2AHN9q{55##6{-{4&bxSfJf9Fg_#@@B!#$r5e*d8I z)!>`!<$V~{sp+_>%mLgd7)R~zMUKd_xnsn!4ukf zq`C0^wmn}CZ)?}l*1#8LR{QtB&()Rt_h)*)#hjylxP*KnJI{Fo{^|nd;}&_k|I_bM z{Uq=<^OegDKi*dPQgA@=O4qDty29IMODw2Z>fCp^zbPUl`95+bFI7z z-0Rea-?QuK?cpcBSDkL~UPt9`z&-ya{H^KAFNOQ(8rH%6e9kWT=e+Oue(vdr-FOlzu(pKU;LzeQRM4pmzRYnw)-I)z&-ym zyysrk=??e)=?9NHLH#fR?)@_jJ~6rS@5BB0dL{go18UEgaL@0B=d}IcNw^s(%#j=O@p?^W;=Je}|u0raFmA=-J!3&+hk2 z2|sDqvr597R#N?n@HrJ#w*~xADtQO^6}x|XB-}smJOMr|k;dDL;a}SI))nwR*VWE% z;hsMZ&%aLXd<4H=ULLcgp1t4J|E2o5;hrxH_s{<~gIAucx^3Zuevl7_ei0`L|!RJShN z^Dn{gPf)%uJVOKd5cr*$TD~*kem-PAyyW|;vl)J>nCg55_w(RC!u@>vS$Kvns{a7) z`Dmr}ckk!vDKy>Z;p6POUM2XX(#ki3`{#u_!Toc-J?ZDwj`48+yzo14ud@K&YOd;R zg!j!P-v+<2U;aJZ^QYiF?EKYTxPN~0G5n`?>Yo&4G#&5ff6lAG{W?n?_>o?Ey?+n0 z*YWcqwUJLySo!vFKhM?;K0J={W8lqOs{NDU9lOcjhkJe{eC#6S_rd-1K8NA{dC_Zd z&)rc4nE5aZ5Rh^db z8g`z)BmBKTlphWE{3Q5n8{aO6kG1XF8hFf}YX1Sa=a0ePvFnvL;R&Cpoe$un2g#Gz zxWLz6-!G(wmzkmV6o>nDney;wZ9CQ+?)mocL8a85k?=dsg?cN3Wn~@Bcn~RR0-xbGx4^0sPgp zdVLajn-22l;6pd7ep>j$Z1SA&;dZ}JQTSNf&(?&W?W#Jj!Vfl=kAeI7tA+5`oz(s> z;ZusL&ad#%c0E2}MZM1Zb7n{Vo*zCwi|RCnH@DB542Czg>&|oGxvigYRcP{ZM`v?&HSjl{FvU z&pzIZ2j9O>buzormB)ELh_D_(Pr> z?&G&Y@Ud5wuLt*h6L^!>YENId=ZC;|tXF;x-0!Pj3@bf0q{Sb+W+Qu2P*U@DJ>~M0z0Mc#hOyNCAK*UD`~_b6Yvuohd;V|u=XM;Fvewi6?Bmjm@bgoZD*^X$ zX$5$jFV&u=a37bph9_3}h=Fh)myUo>x~Lb-hWmJO5qx%BZo1b zpWW%m>%{yl-c;X_|n{fThTPlum;Mfnfm{yl-~;8O;u zo%`UPKMZeT*SUU&`}f=2gvX2(J#qqZ>ptC|o=*br|Bl+93+~@*R|r1h7v*cgJ>L*s zsk-vr;QoDFec>r=Tsj`^$2(KtSzpn7u7!L4Gx(Ow%KrrS{IBpo?0jR)dQbPK=M%uw z+j+1ea6b+z13zlppO@jDZv%g?tom~_+>e(h!5_V+b}xndan{H17i`@41-#)f)!75T zlUnV$0Dox534g$gl~ItbB=l7-Ii#&Mc@sFs!kL5pvTI$g4a5y z{6P5CQp%5jcd+a7v*ADesQe;$*VC&16+Dq$7v2X?QeJhgz^^@4o!jtl6Dyy>>Un?W zn5}$z_%G{~FAn$n!~JuLUdQj3sEvFo+fQ|dd%h=pt(_O14)^Naj%!o5yO`15aSeqVF*d>Y)39~Z*?xbFja{K1;;cDNru z9)NqDWALua)Sj#GzM15A;EBs=x(V!jzxT7}lf$b&Qk}eTKYlCuB`^C{q84pIAy!2S5K47~0|)vpitdeP6?8+PM8!xF0{>fP0<$@Pbp-o)k^>?EUY@kLlsvM{9n|!3Ws= z18w2s`l{}5xE~LWgWs}o;6k|PKY+hgM(x=S_v69c@EA7!JPr5!Z}0+k{`Lvnj|XGF z{B*xf9;WtWfO|eWe2a}&%ftP6@CA4eJMY>W?)gseeHqlAk#IkL^ncIFm-}q{Jnwwu z{djFD{O#GA|F7YmKM1eTPWkI_&;JR}X4iRBH+#CDJ^wuXt}Uk;a6cYw059~C`sX#c z=ljE}##eqe+>aj@!DoN3{AX}Ke*6;t=K$r8!TtF0Bz()W>X(ObKYomE+X-L3+3bFR zv~WLu%nZ+N_jOl<`|)E9`0Q8J{%&wTe(VdsVdp0&!~OWtw{zb9q$M@KE0Oo(#|`ju zBh{Yca6f)L4gdIr@)6CSe!uzgV;p$p8Or5``|)F8_(U5=)rR}=V>7rP54M5FtE}k` zgL{4q{BAzwKY;u3;A(j3>FS4X;GRDUUuWm-AHemr^1TR)d(;W}@2A0mZytqv z{h#6Gv#6c-;r@B>SS|H;UyuCr;0fVLK2|O}+{b(Q;Wdw`-zvfV^WZh%3#TdH0`AAf zUEuyX@d0puUyX!!o}l)>1utXwyDo;0yruT6f)BL)=I8KSZB%~`-0Ob}&uzz#XW^c| z1pl?I>POi5cwb(ge+K^cOyx7dkIj#FbH6X|t4UlaNGYm{#b_k0(4L;HS`QE<;sgiju;`X9ibv+=fn zPmj0rx}DG5jl6$O`51h23)MdfpJ(U0?!)uuQ9h!L-j6=r&(h1&!~eG9`fTu#c7H;3 zxNlFIz<(&9`px0@V@E_j+Q5Ixs(eTI z&n$zV?x*_O;hx_OAK6&>U*LY;>>~VG8)wF78xi^N<>mSK@SP`>%KxmuV zp6?D%Yx|M0@K0i@os;2z+59hq`}W}zc%P=Kvl;&BHTiM4Z=cV>x7z;q2Hfla3GY@> z{gd2|=i-Ha%@F$W>(|f2{dgxQyz_CjvliTso0`J?c&8QoWNEc$DBO>C-hdz3py}>{ z*Z5p@4#VTv`gjU{y{_u~4u3z7>fD7tZ~L8S-Sv0xw>Qjd!RNi8TswH781i@EJ?*~D z`S8Pb-^?0#mPTs-r|^3X#%o}Kqj1NYQBAN;zFLngs}dp;9>;yLx#d+^U~`?C(7&(3FVhQCo??Kued{P*w|dTYAZ z;NB09;13HZAG62P%QuJpdt2$?zFcy{%YLVJ7KXoS>w7Ku;60jNL-@dV(LFkuNU{>_3S)Xf?lfU{qOnY@X;?Smk;jiQ5m?eM^)exs;f?OxUWZD z;JzO9h9@no{+tN+^1Ltc(t9X|1I3ti{tQ$ca*;d_xwHhuXevdGTT0R z|NDBB7T&Us`mH3~*CXG~c^zMm>LEYCzGu4|+}ESN@I|{d-Dz-NkLJL)=T&|q+}ERR z@MTYw{|WBv(Xa3Xc0BkH?(0#EKC0*a;OkLR_^^J;WrWABrsbFi?>x@Kp9Wh$`^@ zvsJ%7+{azb;E8f*y05~$J$>Nbp5btB&m_3FXBOPsvlxD=huX6W?(NwO_x5}Z_x2oy zdwWj7y*(G(J z3EcB7;X{+C{|CVRIBppHrTogzg8O!LDcp~j|{PXZZ zTj&wX)<0iQef*ge?#FSd;V13-Q5m?8duzb`IIcdt-Bk74Yj8h~>jxiKMfrE(XFk<@ zeGB*FqwnD(Y&>)c?#D;h;SbBGevJNl_I~r@qj>OyXVuPRa6dju1HX1fb+f?z_$W7g z*juV!1n$R2rQsDfsD2f=A0O3%_o=A*jo@ePIJXVlk4FZ;tG3Z}N5W&wQT?~zzCO-` zmpZ08E8w1A1OH)w@_XUF{(c9KYya-mCAhD@cj3N%J%X=zM$=7g)A#p@ufN&hzWx@0 zd;QYz?+2@XQ@F3c9pJwHc7y+A#|3Y}ef^yW_w{!Pe9Z+d$1mW%{_cinwD$i2ueDEg z9>RV965Gc0-k-jINecJgMzX?w{QT-q9 zb-m7)yRW}V;N5NeoEz@zZwa`sU*+Kyp3`)j!+rhj4EOc7KiumNg=hR)^D`Ij>+c6} zUw>D@)6P^ozk~bwdlK&J?>YFAk!nx0K~MLyufK8Nb<1kH1>mPA>Gkd4zW?n4|H-b) z4~6^w_YL?TAE^FpxbJ@#!t>jC&gF35|E`8VvFm-C;J*Le4*zS1+Or4l``>TjdzY)< zet`S__cVN%ofo|b_w$qY;r>34Y1>y{U;KTW81C=4bnw(RPRIrK{d)zt@84^}EB>VU ztp|VI_WLd1e*UBz+|P&fh5PrEjfZ=FD!j*ewPyv~`{z@*pFi0SFP~G({W#qF|2*8! zpIn9KPOkRE9HM%@y!?Df0{HCrmCp+Id|vp6OO>w)_wyky!hf*OJ#~S5zBhdDG1Z>} z_wy&S;OX*dKG(zj{K;2vKYy|hp3biG{s#B+C)eOpY`YPE=+ph|=TDNs%Y+w1=ur^v z=TAz)Z~dbDOK?Ab(h`0@yYl_ve*R=Q+|Qr91)tki{XY-x`_m=xyt*tCu@Ub1t?+Bh z)z0tXzW+T5Z)4YM?!tY&h;H{$`up7Xk8$DY?YKKT+}G10aNqw{gnRw!@Z&bF=m7Wa zVQ;wae_w}RS!VqY_xjPO@-$g{)0&!hGffS(gbRDy3wt~xc~&Fp$jeRzHwPd0&Xx9v|m_*J{# zqYFH_c`ta(57p3#@EX6!-+>oRs14AAx7fCI1ngp{nX! zfR`F2zY0%wP<0-`+l*5_=}0~Mb|B7k`aK(bXnc7A_!et_1^7Jk2Jn@3J*zeRug4LQ zk4^9ef5_w5{CPVE+WRdL{LfD`zbW7c?S6yI@V2c~zW_X80@W!C|D&9|CVY28c@y}E z67o*)jvs5fgWv;p%g4f(+jW!~@Pl?A+9LS8uT*CnykMMYk$>0+@3&a~6TIG1)%gvc zV~6s$;Xm2-KVr0A=gTXLU4KakZ}g?=q=A>Zt=H#(e^Far6u$Pdyb^rXVR=1xC7ZA2 z@F~%i?+nj$MBX2M{V(}w_%YiK`1fdfKXkD5cRunL?EbwE;dKV8e?EmLvwq$Q&oEc* zIRuYZNOexZ$F-4PhVQH({}cX;eUDbmH#8leuZ4M)PXhnh-ftP;?`~5*54_b@)h!8+ zJwaX#KDnB_A>7Xww1zMJRQcE7)vcdLz@N-keinR$-Cw#MzTfVbI|eUSLUnGyUocNF zMt}GIj5l7t=Y$uv{ZTdej2Dz|2hS5jJ{X?W^5fwtu4uWehEIE0b&kQS#*yEI54$T* zZ~JqfuU8w$OTiPCmp6c?v-*ADyY{M`Q{gS``u)f76CbMn5qM5p?{32fT~j`_?I*qc z!>VYyrQz+`$(z70w^5xw@Is@Ne;Yn)oqRQXimiA1;8ovJ{ycoU;RbEXrSk|FuBvc>@1%zdVC&pS(X;T$Y!I*SRTg1s`5WJ_-KAB>6J< z^wsh`@Hyt^;Lm2%e8rfk*Lgcrm}iA&w1Imycz-({><3ZEH; zuY{M|sru`q@Nc5~p6$dz9ysXv#9sYsU zzYCvf{U2?L=EIl!UOWGj5WdmIb*bT(Khf*6!N0cmTOs)1rfPqAcy#+5M{RhYUsV5P zcuxD=aYuOO3d;9^@38Un2>5p~qes4AGJMxswR0}~_1y9g;9XM5*Te6vkbeoUXUBsF z;dkPw{XfA=mQbCG@VWz(zXQK-{U2?r{_e~7UJ@ zm9GrHW#{?p!^b{Rz6HF?W3{IXy!&wZK=`HWs`EDdN(1FL!vD1W;8*ZtHB{#yJe_SH zeuRHy+uIB9#wRu1oA6C`-Qo#+wVek`JWbR0)cLb(X+yEYbX|f`437^}mO&NU!`Ic#0kJM^Sj9=}-6Dk5(re z{Iq#l_&M`N@Ki@scOLwDIr%zxAG^QgAbdzk&F}B<9Y4t9&3L-~i?Ye{z*n?Zt{!}o z)oBMmZ0Buy!gEre`WikvmhxxdDc7m~AMm}2m466-JXRiO=F{{0 zkzKDz0q<=8zIJ+et-tm9s_+_}Rlh#GfnAsB3cvk{>I{M3wfigHf+w$|`g7qY?7Yn~ z`0qa|zYU(t&Ij&;-?shH_wZls`sP{qXYE!04m^RK4~h5A)BT)jit^9HKbS2q314QP zm#hbW>AvcAgpacIXgoam1Lar1OU#$=gfHJL{~cZ~n%Wt6mj3SROM_MN-0;aZuB!uo zuDo8~9-h6rdE5#AvQqF~%~huoJhpA$>cJo1 zRK7L*u#Ja%!pGb9s|<_6$HHH+cCLU&v{L`9h2OrX_Uwb#za>8m?_CT7OYc78u-sVl!-v%FQcue)e|-+}jzFJAzE$;LBZ!+p93;Z_kF)(kiYPoi zd{%M2zBt^^$CZc2u=6Lc!hO0u;M04kpU1&{zNWxO+jWN(@ONy!Hp0(adv?HE{-*i* z4*vFH`AK*aJI{O>K6a1tH{q>qyYvv=-i}9N+i|Tgmv<6tAf6C@$J+lKJaHOLH$6OW zV|jM?lB)8e@SSPY|7GFHODq2pymD#fTf$ouRek_`(Q5f{c&u@%GaK&rT`z)1v(GDS zg8Ti|U%(G;({z7v2|flEFP+fZk4Z%EHUp^@tbXb?p3MJ$Q#^s?!DDx`uoJeC4MRk&lURX+*?Sc>Oi1 z^A5b*BKf=U8tLRq;QjYSL_U_oSJ?Tt_3*Yc2atH?4D2jB%?)O3%)FWPa?3HaGr zs&g9Nr?UJ!ynr2VUWWf{>-!COM0?e_2Y-I8{1N<=?N6gG(ck@jRnO)t4m_c4m!5_9 zv*YFD@N2PEHx0btFnK2UZrgulhYz#<$qT<_{ahG+piH#L36z2lsiNuDf#0)_zXKg-U^=lfa-UEuN@IB@(*3%TkSZm7yQZJ$`63QX4`?G@O$Mn-O=#R?YL|L ze1#o<&4h2X{r2FWkOH{1F4`|wW&+HzT{*ZFekZ|h@n z_`@U0WrnA0DK7}$S6E&Fe%7wL)q&@KPwi<0FVsig3EsAt>i2-pwSPx@G<@_AsxuLu z?x1`D{QM00`|!>HROc@8-z1aA zeP7R>?^j>#PYf?zO1Z4?ISu4_;mu3PYr#*bd_+U|?-`Zv22X3pX?@|}_fnzB@G1jT zXC{1nL-{B0s~@Y*=kOYdl|Kr9VE0Y^4FA^F-@EYhaa8{?{D$p!k}lJ9y#MF4*6(TH zxt^#_0r;R7lrI5aRaRaH{({|y(-=N3wenry%MNS0z2S%L-;o~&&rw48De#t;Rf=&%`Sfkf5xtBME^j4_vJF|8`VzB`$Yx=%is#^Qg!f#zyt{8mZ zV0k(C;w_qPQ}}J$4zz|3tg8GV_=x9Je-u1rUFF|}cblsGQuw-D%5Q^@ovHlS@NIXL z{{`MVk@6SeS(eD7t_Edu>UZv^Pg^&JS`A+ak zW#v8L*K8az5&osMXF7c7c-8qBp4IjX>)}U-D}NAv{B8O7@J@C-dmX;#vgY?s_@*=R zBp>S8`~L^q52l6}iltl;c>jfJPZ{_NcK_B(blX0+gfFx6P6Oc?)@ZsT;68p@0Ds2X zxeWg42G!XPuY6a&8-CBuhyMcq%znQJUuM_2B0f?*@6UC%yyC#WS*+ai@B)wIx!?os zeyz&zPwcp$7Q9YE)oBk;y%jA>cZ;er%W$?O9WNvY(y;L|F|3&CsJab11*G23r8h1ZI$hW3X)w)5M=;I~F< zy6?hwJ(e$p&+4as{tBMNj(7IKFWNZgB79X()xQq^Er;qSwEd6w=h_6yr+{yfeM%v-=(&z)N>jKBet9yg$#(k!OTgc&OQzSc*@s@k6fgDQ~3SQmG1^0 z_OkMQ;mNkj$HPaBRh_BuT(&(~3ZG}&&yV4=C#wDz@IP#Sv+gh@UZDE>;ce_Z#tFFBKMVKz_u&5T z`8|fO&ad{zU-$I#_4>)-UOyN7+1YA;LHN+G<>ldCzdGFOw}5ZA^|w8|=m@pDH{9zF zhI{>~@KrCV&Mf%PP1XMQ;a-0g-0Sav$LXy4``~T2s{RjfuYU&a_3y$Ll~bKZ@YU7i z@jm(Y%QqR^>*s`TzOUC8fETj;U^%$A{{^_$Zw~KJN%h;oclMU|qTBXi5Zvoeffu)N z={xYjcKosw?(JU*_xd~F{_m#mga4UZ?LP|l`X}LD|4;Z=@2F19^?LU0a5lR>n-bn6 zyK?E_jqSQvR(N|mubu}UqloHMfctf~7vMQwRQ?sXU$<%tpT1u2&%y9Hw!B8c{d;-l z!Aq=Coh9(+w#m1^dl#1PfX}$D_8*7)b+J?MOB^6V_RP4HQbRp$`= zn;+yq!1LHR`6m4CW!1kA&-}YQ<)?b~{(s)i!)Ji6i=h>xEIeOvy}kWLxZgj227brR3p|Lzqis?>@3*Oa^m|(P zGP~Z91zyFDA1lLs`&JX4WRLo%AKbTZL*T!CtM)8`XUMHOE8w%Q$iIbun?`;bUT>7@ z{|5i2i1L5IH`%y4z8!~ozb&!rQ;Fb-?7U5CcrDuw{@7pKv_16Aan>8Ju-?g@%stzBLRPApB|2(?94g77}AH4>@Vdsqp!`r^B zc8rIAw_EjR!e6#=z!G>VyT5l0yorrlw!v50d7E$Gb{Q(-Dtx|;2X4a;A5uHxfBtlT zma+4VN#Vupyh?6(hmv}IA^5;n@|y5>?RsSc_%7S;cZRorPIY?1k5-Y7htII(H3go< z&R2W@ANHO4VHG^%kMiB{7B(I@2w#v-`3vwvHcq<=Utr^qm|HX-{(hci^A#U{r{#zui0^TJ$U@q%6Ee&vHfo!_;1BDzf$da@WR%gkKywQt4^A&diMS=u|)IrJiMgsN6N$R)X?jz!MEL# zw}gLbkssm=s=YP+tq4Bq@j)maITQ(JX*!CyKl{|3I`to#x@!BN$} z4nJqx>jc~MI`7Y=cKtXR{AOR(DG0y)fxHB~@k73$wuPW6+(_smc(BYa#5<@3Qy%vQb(JndJ?*M#S? z5gO$3Iu#1v;o7p1?gH`%C@Z*O&TL)t(G+KQ7A-f7D0$itzPzoLCR;3{@*uF`Lyt|4V5biUuMTI72&zssLspq26a`Z4SaGY`7rq5 zsq(S#Axq>7;8jw}m%&Hc=Q4J{egC^3K7Fw2{0jH|?`8N}+mAnE=R3VWOJt1}Stt?w znNji_@Jtmo-2(8*9h9#F_x)F6cxk)d(H-vluYT~xH#Obqa37z~g-@@g{5tr1wtv|S zpJL}BkHdX@avFYpi00S-Jsxcna6_wP^Ow)={B z&c^%R&whNA0UlxF@ZxYEZWy`lU+{Xj2!5@C2_78z)wd0zJ@b6lx|7XKfEK!|h z@WhAY>)}~as?JyNlNIFO!AskD(o^trWt6`He`%?v`vC6y_h-J=-@X5R|DFQAw2|s( zflssjZXvku-z&gE+eQ&Q~OZSAJIcV(`XxzOg*q z>%0K(@S5s$hHtX{=0N!FHPEPKE_DmsKbQIy+&`DP2kxIsJqY*Dr5=U*=Td)!`{z=Bf&1rDFTnkCsaN3sxzw9* z|6J;y@J6Mz9AoZz`u*mgOHBp$&!uL7`{z=#!u@lpx#9k~)PivTTxxN+e=fBw+&`CE z8SbA;tpWGXrPhP{=TaNP{d1{p;kSFJzxu=d^9)1aKiht16#O&$eLOtIyIL+&;WZLR zkDTy(@b-3|d%7XCr=~Sl*yi8NoX$-$-=MOu;{rIjsJVq1M83Xt8=ab>X z&nW*s+|P%vgzuWC{4RKw6q>IC@Bv+wKM!wuPkt4i+r~LD?Rt*)|Dm3$p8(!CtLkKh zw{0%Z3!i7_;j6+YPE)=PylEPF2Y4YnZ`K`t?!5A2;GM?GC&PcW^S|%IJB-o%u7vNm z^78W)&%w8L)^zj07hcipOTzmNlvjh# zEvz~X;d7oS-x}`6>7C%0cB{@{xaUX1N89>75ANqZ-h(%crsI*V@KH9N-w*e3^%3~k zVw$hZa35FSf={&bY4PlQn=cn1ha`p9?4$a*;l7_L46pc_^0nZ8pGHG?mA}=`UEzM8 zMjv=PJD)Zc?%VCz@ceeaoZkoG^XuEC&yeq&N9{iZ_wC*Z_-5<>yKt}n7=EFO<~Pk@ zO~>2g+p)~>>Nc(}4fpL>4Y+T|n!tTK&;eemyV}zS?$=vK!u@*d6u7@{XTe+8d6Ey| zo?i#g^r!k|AKcfY!|+;p)cz~*Njc>Y;JzM3JMwh@zhmbWQ^S2ddLCZmOTE4n+}EQ@ z@Cu{Vo@Q`Ao^16C8}8eUzu>)XJelm6Ug!Pn+l}Yp zzTGGQ_wh_QxNlEt!+rnW4DQ!8I>G&ZkN)riDU1qq~&keuzi{`gF+}FqY@TyZZy-sjnAN#|7eS8D%#}U)vejKp~ z?(5?!xW7L)!v8v``PvKj{2_SU7Mib1a9>|;z~8gu`glJ)-T%+8)9=aPuiJfeY2n=) zC|?Bb*Xhc@oA~iEyzWNL@2haH(*yp(uea}`o(uOnOW-fXR{M9t>)Q2&18}c% z4E}aAwf`Qx{4mx38}4!k?b*XRn_Ee%Hp~`QX0YE(YIf_wUt( z`*yoI+_&3Z;69ET2>0#tSoqo0>W8=CZEk2jm%x3!_z+&o?z`R!_xvt+{0Nw72o`6bGa zfcyGB9zNOXFM?;PsQFwDU)NRs1^j_shus6OW!Jxcf$yB8Iv3&5R;m4e!+m@5%t^h@ zw?974%Lw=NHwXM{`#z|Oa9_V_z|-0F#5QnWe>=lZv{w7Z!oB`m@QIl;zaPPU{rv=f z`myr+;lBQ!fcyIU8@%3X)wu(I)Jg4+e(LFdJ~2kWCx-j_o&oOf^X%{?MKs+~aL-qQ ze^pM?Z3g%Cw=H~Icjbq`J2jDyq1*jbli>~1DZd(?E~DDN3GUm0FW|4(dE~S3&o8Ua zWw_V51#gjE?MZ%G&;I_e`?2a|hM)UIxg790JLP%dUZ*I0za1CUfP20H{6~8~^?*;< zq3I5QFR|l@Y4BJHm7fF8Zr2^&gMVE>`H$ceR?7Flf3f=*ePOUw>#$4q`!u`JJ3GjFysehKi{l4f` z@XB^vupjRCMIV9ZXr}tt;XWSw6P_xy^2yKW+55AT-T$8s-ZZ^(<>8BBsUKc|rz)s? z2lyR3Z{HnWA+GWh;TiL({&e`b&*kgkV{fX?7I;Ftj{F^bqkX>M2l&MgRsROu*T?(t zziob#oQ;Tlcz-78pgO7HIV&nx;QyiPF2Jigwzq+w;4T-JLU4EY;0~d<2d8LCi(7Da zcXusNT!I&uBE=y%LGcK%=D^MOgo?foboT+ZO%OMZtKkX?<0@Y-Q*u5Ux@vAp4{eNC2x(->3t#(>1oFG zyZin8|2ol(8l@`!VCq$gk`(Io-%p>^I(r ze8XvzGlje;er|dWdDW+;ehYb&<0gMM`RqZa{vvrvn(g%lQ7wF!Fuahx5pX zyfOVOBQLtx_#W~*-Atc{$uqn&{x|utDJJJW`3d|yPNaw5&*zH=ranITZ9MKLBVWGV z)aM~z(8G91a+_0u{2gAOwk6-X%k(##yl_X8KcD;}{=9}fXoIQWL_QU-Lywb3Eoa8P zOm1`jCXdzI)W0GB#ozd6@*&wwKZzchzqk9@)~6)@i07aA$;aaPWO4EtbxnR9@~(KE z5JbMazNzm_UMi#MuMc@ zhF^$xnahQgy#h@ys}i@f9G(%vB+DUFgaPt?Z0D^ zm%LkPlV6qG{vP<+%PVtlb6h5{8#d;M@)V{@}jtZO(P$C#N^B)-@e%RR`QzoxvIV7|H_1T$7S-`cwKOl zyy8;R=R0!y@0$7WeN;Qo9q>4njNJaaFlop~;Bm7kdF|Gw&obnLYZ|Xdex{@GX5<_-S%`y}d*}CB3PCMs8n6 zyde+6`|WX_nXj|!k~o9;b4v2}U5wj*huPLA`)s^0)jw`(_Cp2o;a!Z^As<-9kUySj>IaiA!1dq$elpupG&!rtgZxaNN625kF!iU&e?M>P?~^Zx zZR($~k2m#E{xg4X`@GlE{5cN!?h(c_k)J7PJQsOUyw6sSy!8q*?vD;{NS+MuKm0;& zbNZ0q!sE_N@=s=1-vaXLCCp!JCtvo;_&)Ns*l(A~?em1c$!Fkwq>tqGc|wG+@8|!g z&F0VP$(Ic@o{c;w-p{H`ehtr`0?EtQHaXqM|HAzACQtUo)XyO=vC#Np@=Bdd&>`|0 zxIUa9A3ezAJS2aB``v%!eewD*7G7W4eY^F588-oWjtV9}J9$ogpEnDPADh^Wdy_m~ z5tILkJS460NVwkEc|P9DJN zgUS2hdB{ZeUrhZ>@}VnDKfjY#!Skg(kP zPyEvSubux2*UY%7$cy83XmRo`aZPa=R`qaQ#d~{@Z3# zpN{-^KjV4Ghmi?o8@$ifj{N9Rli!DYaC@^ZgUK%)H9n0z0lrT$ zk305=mgWxOY$pt9s7~IbU~Ao9ZYqNj%RVLS7l?JBGXuzE81&JVrt@?gsK^)y%j@ z$Uoq5`80X7c&7dydC)lHPsvBNGvmg2YyQ{HX9;|tA~AW*N&U|F64ReeBc-Ico9rLy~(qTHa>v-81~y3hfgM7H_GHJCvQE? z_&V|q*jGo$%i;Skr^x>sYR>mI`G?CU{~`H_|C#zv-jB%b_Y2C9&w6h9Y)o$7Pi{&651w!IA^#e;#%rd96OC zpY7!K=VAAezuax|ue0NM%N_Dg!%e*ppDVHR+{@p1RPwafO+OjPi{bly*~ydQ`@dDl zuPib-wa9O*Hsf|B?~2F29^@G>nw+WRwtf!zh})P?@@i4cxckWeifPvII(aI*p1MOm z>6pp+M7}Gs@rWPH|Jr#TiRaI0$m`TJeP$+qi|_B3CclE$-Id7u4KO)v$gko1_?^ht z;PVHg$X}E;eNQA$6kzh#kypg`LAH=be`e}0k^dBA@^6rz!Ts?AdDXF|-Ve{a?R>7E zZ1NM5+n-ZTLvF91naL01b#7^L`+T($d6iUV+?M3SXP7>_lH1?=H<vS;V&Lls8*ToCS{b!r{ZRGP-nsM#F-)QG2*?8lZsQv}sZ@EE!sIjSkLtX^$ z6MiOd6Kv`e<9cJq-CfD_`2+c8^k0zt(ic--f;<(TKhz^H64}%@B@g*(`sq#{8K1xE z$G*_iPbIG!WPA?!@7Ql!$a7&GcabkRXmb7{9~Ra0f0I0ah^c=|UL5Z~e<5#(>t1}k z?`Y?LZBCP)l)N@xM`t77kMA4iC0~l?VO7ZO&zaUIw?Ak4GkFF4`>I38FC8*{jv{~G zz|6x0@{RaBz%=qicpf;1d~0fxzlgjWUe~W6uQ1=#uOpv{>(XZOueeU_Am5bB6=@&tj#Pmou;X6E4>`RV_e`pe}1;C1&6@(g&re}_CHzTfePyc%A|y(Yh$$n+Bd z_cOcSnnW}nm%JlhpQa=)?`QhYNxtC+lartPkiYSwaD97CUaNtrkKi-^Yxl$X$0k26`B~gwl9Joc!TOW8#_y>v zLw>iU$*)Rob83_C9BTUOPF`z{@d4yEXE^!sCT84~frj8j{HBN*yMsD*Pkq5*xYMueU&rRF;vHK?xxy?yMZud`Ca=U-ZliQpcB>tY;-ZkNatPa$8@6{CY<-?oZ^lew@RXIeb02o#zwe zmo}RFf64^kUkB{C`5j)(;jJCs&*8(!&)|9QRPyvEOn-~W?Y!+JxBcHIj~Z&`Iex{-qw-F`N8ygn%wqzoxF5oGjE^CZGED|-_L{f91br?Zu=}p zKB|lv_a}0j-;LbngphZ;W^xvh+ng=R3J| z7nDnm{dvY)$|VQW?7K@|7eTMdH^JYNuZDk7F5@n?uj`V0TQ3R@KtX%SEB0oF%M0g(Mk~6Q2`HKp0`ICI-u}T5&#ybKX-p%3t96rb4 z%iwakkn;_|`>|V<%Xz&;|2xTF!~Y;pXTE*vJ4v1zei6>+d(+{cD5n{6d`V3M(!ccC z1Rev<`3Y6MobN=OZ&u}!GaNZN$%n!Vk#B?-BVP+I2j_ljIJ_<8yhct3@<;Gqj-0^` zUqCq_c-^std;oj{<#fdU+@b1aK0`5|$Cb-`u0+mh^5yW$T4^P^QwUS`sC%{LFBf+HMy6}b z`XS^~;A7!D57Sk>&R?ut@^>L;Ir$Fw2J+kR&Ez-XyW!l=5mhh!1mb)zDVKht;PWI` z$s@ta)PP zpL`ClMmZ;t6G(mx-q?}T#^Hk~=RI72r3?hr;iWhrpk}?flz*-l%%%$Ja=1e7>kDzTXeKkrR`ACp;nC=1<4@rgC^e z%DIi4qU1N>&xPlO+kOtCpW>=s<|hpO zR97zj{EeJi!jibCG-<{BQCL@PEk9!=J!yKW7S>`F!K>xOktyzK(d0oCM@=;VH>e z$rpNuKY2=cHn{EQ9{MSu>Sh1<NlpUDniPdNjTvx&Sv zd>8pr_&)N*@MCb>&sWUPpAHYBoD;}-MScwam2z(2IvgFJkF)z>BKAXK<+2}MBPTie zOL#iC?ce6-Q1#)@6Odn2x#TCu=g>-$Cxure4}e!CFA1*$=YE zf%&Q7@V1mw9yuMz%fh=;&RgUUbodO)>42O$@`La#j-0&? zzeG7U|0=o7e?U3&@i_Qg)ys7z5Z9RqY0ZAH>;4#hMj?L)j|;c!V)K)!ddUw#epcnO zuj1o#gE`6L!V5X_OFO(N}& zICA!r4}~8mUk5);z6O37Zr989bKBwXDdz%mK9iq^M@jen{`m-xLH-_|fIMS-Z&P?j z67uwLe>nG_)!}6+rz&zPl2?WYl6QmGArFQ(C7%axK|TlG7H<1rhyBpk;lmt0pYjhN ze=&I|e2pXLcZZ*%oJYtxNB#hQ)sb`8;h!kS=KIorzkh6gY`FZbT${pVlXyoGhv%o9 z|KaDL3zNrzmv-b-b$ENqseznMJU!j~Y$iL(8kCbyBIbX@o!lPyQe%;^0W0AjwCxYAkVEak!@IsX1pTL|zG4fRK za^w}^mB`D(Yms+@*Ch{zH-mHk?HxXda%LcB82L2#c=EmQ$>h7?bI2dT7mz=IFNNFw zBbw#&?Qr-(hhL}sIQSg?E%I3KM~?ys-P0 z{2{!Wa>uQc(8c6*RxUYHQ2#UeD0mO$l5_b_lQUSk zKo zhWskzhv79Trv~y{ljntxS2;4zVa3fn%u+7vYwt(Pl*{}lNMh<&k$*)$>y=B6y&vsV zE;+uWCTB1CW8@!HE;;sobVj-4gdyio^1JZAluOR2!DigM$|WZxnem6@-QZ7^OU_w5 zZ+ov?a$1F-oX_`}JPABP)^Gbt=07yRyYY@h%B3_2Kc}3Gya7Bd-0rth8Ny?H*;T#d z`$`)xp+bprW!$@jybQhtZ@Cg-ig6K4CiA0)q2YEz$- zyafCQxLx;d$j?S@$E~4q9d!rm;77EAEi8e-jFkn z{1|+?BY&Z)m;88T%(%ZPm;5l~{7(K1zK`$UPo1q%v)e7@5Vc>DwlbSk|vyef0KXlH~xU~dtlt> zs$TLZB0oZoZ|f!b?T{aZybU}qT)rxT_n*yA=J33fGZr}o$w$MBQO*eTUxnO`+gatv zd4=Hm7NT6vYX|a&l5c>Iqx`hE{>*Ur7Rt$y)*Hk-wv%Ur@1dNm$Ui}D$9<-9u zI`Z$Tddc?>@NT^0xpK+hg`C&q+u$E4{|x$%pUdnMyY6=03c+Rn$hf|ea^rpOReAWj zAioCrb9jBqe+X}(>LouA`Q4ODeiQWBgS-KJpd){js+atU$e*rU@~0zbHu+@u63X9* z{?|GD2<4nc&T;aS@H3RN5BWFA@4+MBjSIUjXUlje;T?&Thp!9rlaW7%r&1oiugaR7 zbjsx^UFZ2`f8;0cQ^$CKav8S~uEXWX>%ptT?S89(^Qy1vrJrE*(_XpcPeo2A^2zY- zj{JeDUh+30f0}a1--Vo6s+aQ(M1CdZl3xNj)yNCL>yj^lHzZ#KZw=@3?c(qelyd?(W5|!fr#f=x zJA5y>ANIo^4!;Mt`z?BAZ<4&@5qV_z3(AR){7rFna$=L0hW`(4 z=Q9QJGmz(i=TbT0*GY^Upj_6yJ@U(uw}n@CN?UhUZ1mtug9|!O5$RDWc zB|lzy@5VbOD3|=L$eBXE1wPl2zue(_Ddz@q4v=4ipQ4=nnE%TT|BrGaWeGnm-%Iic z@K5B~;lBLe@1Lyj=y1DFY(EJco{e&9BPSPmEqGz_KJen?z2N1^m%}TQFNOaI=l+{G zygTKbKu&M+WAMS`FW|$;!{8IhQ)M;lHHADSd?wuXUj+MMox`^|{4C{{Mg9fy((oIO zoCgm7N;w^n6S2Ve`>H)W7M#y3vBPsx&LrgIC7%E$v+i;$^AqU(Cr50DXMjtsjj$ z7s1<+FMtQb?fKe%`Z#EuV?3&{V2FCl*lUrU}MyUf1#`i49idpOUwMzagIj|3E$o{uOTfZ)Q%{m#~nC&&Qt1;f3IKA8to}G4ieO za*muD4sT02H<8nU{096NM^1l-PotbDIm|@NB98=Lta2iFrJwM=*>UoLc-;9wp2Oed zM=EUQS>{cy8~%77HIZ_;U+2QO$;h+8Q^6%o`pM_--FQbn@`C>1>?`5$MwH(U`OV1N zz}r(!DDt~Gd;;Z+Ma~rR(eQbca|8J+9Day$enZY5A2~cqk#FlL z>vakFF~~2#6TPq0OaEJtlZAW}Jg+0axT=@=iHG;q zD=U}$E6Ax%ei{BF<<~?1ZOAvmyE=R<<$po`MDkDY*_0E6{G|@xPdVvwc_-%`hso2x z&rr@l_48_KDKoDbv`;1P@Yg^w?{vhHJ$AKT#>;r8*gD{``ucZBD2*H?B^)C!`XM5 zJQDn}BmcIlm;9grlk-fu1rE^@As{{z2IISr5>=J41hzOB2=Pjq~qFg|%ycnY{( z-|ooI;P5h(lM^`=$g{(1I&vC1ya(mfMou5{TJR9c8HWBRlTU=tb@&d-?}hw5`6*m*0XT&`Jd!>hdOqVfoy1?M$?(GxDU@_kSH z`OhKBW&i($`5ZwW3LmRna_r|nXDXMR=NNY``8D_=<&tAR|G7@NX$eX|u!tHr=LVhY$FXt74^U9@M@{b}XANfIeaq@_T zy)W{P0P?S>uMFpYYO8wbXCnFuQZD_JLVj!VV(`x7ec?Zo_k{OQuE!myT*lpo`XS_- z;bYlC&55;*cQ7-wdB4IcU`%Ro1;iL zd!HlzeqUvR-=q9($p1io2>Ur<8Ixn@;ZJy8@`lK%M*bB3Gu&QR1JHjz<#Ii@k9Q-L z%Xy7P|6|E}z$Yn}oD(lh-}d)3%ea!$s;GD49g9@Gcw_i-<&t9`H#aGl`ctUiO1=-i zOSyiWI;vc9Iu-M7yyFCUOZZvkl2bFjJX-mDx0TC&h*v+HeXo>D{ypTpBfkOnEBpQW zw!-6VO!)t;7xGgom;CC*&A9&L<>6V#ZG8@MTVDun_ggRYQ`+IpC}%y!ZArcs-jV!I zcvtds@a}Ni&rtL;o;(cue5T4t=}k>A_W3I1GH)M{zmEJ3d=uqI!?;Juv%t@(92s{b z#{EaRjGGtl6W%A!4gZ(&b0ObX?)!a`7ajv{_sK1cn?kvaTOawU$?L*1JM#0YdO0tf zUrM>;_d`xu@;>ltj{JJ6Ugx(|F8Pa))0TVzysIO>x5Fn<&JpBHBR>S6@5ou{@KDP6 z7deN>AHmO4j(r|}UDeC{gy1^xRJqJgyprCHcRVML1OMR2k5vBqePzc@1Gm@h0?5fg zo)4bOkyFIs^(dziavG60fVUza2yaK;A0AA;68Xt2`EGb=@}2N1sk08$nA48r8 zK9xKOK9jr|d>-8Pe-87%$>F;lev$HrA^!^b5cofioF@*CRMG4cyY8!z6ODW&JU*Py zD}}@JQO+6U6e2$bub^_Ir}N%_aIqCggA7ZOAj02|pd*Pvq(0UEqE=XFESb$gi0g z-#CXar~InOUrk;azM0(q{N^_DE~pPBp9eogJ_mjZZqLj1f7#(-lyd+%ugF8;pUEG< z{VL0d-}cWvcntD{WzB@fA^#sd0o?X~%ar>vJ3Oz$t5SXuujOIeZo63_;F1@idw7f)7+KIre>$G0G(;s{Q;td1Uxh<&tB6zsf@8l9LnlOUbjs*TH37 zWd4IN|Jzi(ynYES?%jCDAIc@aJ#tQxw}zji{I;EBO$3%BtV?kMubKo}YX! zycYRy@E+uQ;G@Zp!WWZYfbS;%7k(2i`&Q;H81wL0xvZDn&u^5=d~QPh2lDywugWFI z?&p}*%>2l>lCuaOn2t+60iIB~+?jNm9J; z50J-(msBn}_WNa3luOQJ)Yl*%4zI0Ta()?S=B2rE$w^(=yYY@z-wcoK@tD;hV^h!?%+E0pCX+ z20uvt41N;M{a;e`(tiN@f1q6YPh7>j@s5AV6T)AS7l*$iFA9%P-K;bB6AK>08%z2L zK|jfqOFu1<^8pD$jcT=IXZD%C#U2J+7E?Qna(5Aiwq0}j7QIeU?F zhkQ5uDdoh&=eOUgdO5GaTH$T_qSY|_A%^!y>Hi*bVv*m5Cn8T%&EzB_{{fyBZqL{D zlU>zIKSAiHh;r$tF>*?f*N0aip9Zf&J_%kEZu?1>-Spp{d^$e&JCHmw>KBk#K>c=d z`+3M~aG7U0-;f$++`G#4z6w(=^Kb_Jzal>c{|vY1Wq-aYYE84g?CIfl-CrRmGx-a6 zPRbdU)%0J3d;z>2`Ez{!aJ0&od02@2Da!RcEKn}n^Y<2jb zlv5iym&t3vZ&Qwc7Sqqa4v!XS=HJe9FXY4`?*UIlJ|CWpd@ejK+@7!PC%dYbdG?{c zgmRhBgYeSi`{5NSKNrroDS0AzfATNc&HPL!AB4{#?|{qvgzpDjXAUUW`{A^5>HjhM zJWqZfehqHtCn@&BJ%>lA_5FIK#r-r2xj#G}+~x-$Ke@vTQBFnV6eBMWFGt=PUWvRT zycV4MY3%S`lrtGQ{m3W62UE_EINyon1>hUWd*(3v;TU;~oW`HP?S8n0b$qQ{?+3ph zzhAFy=rc0;@9;QqJ3k@Vw@DpdfO4)QrwI8~cqz)6hy3Q`Tj9OP{cxR}qw?i`ksJ9- zmFs!fs9f$Bel^W}ZXy4QoIP+m51Db@KI-thl#>zp56RQRpHWVE>J@m&jY>GX1<)`LZ8EFb@&xnE90X(en^Txy-{f^z%RRDex3pVp`4w_ zsX)FRUX5}NBfk^*P53bK(z(n$tW^0j4}p08@SAcy4||l$JlsS-`^j&>kHhUeY{zx% zg2SIvP9&_$Yw`&2kCbx}`6=p}b+qF?gXbq-g!@H(xV>NaFb_e>^*nS^F7uED{RER| zg7=2oetMywAr4^8l)M^zHRVi0{&DgR@H^zCF%MDdnR&DGa0}PBxXSfBq);yN z&>j7xCjS|p8E)rcWmfNtyd$r}Yf{cSXOZ8|;X^6sJaR^o+t;m=$lsxU z8u=Uee7HSd+s{geAEuli@H*}oc?$SxM@|^I{k;TH>YMeo{T#;pWF&8b=M|;M&*8e! z5^ncN0PgP{mFs=dQ@QMua_GM=c>sJU-1hkpeU5kd8p`R1oDJlC;5#TM9H0ImgJG) zgUPdFpUffu4f|v--0qWw*e6Go>wWU4ayhRAKYBObahW_W{1)8KTW0k6*x^wdn)$Tz zRuwrh$t%MX!EJtR^UAGU`VU4%!NPC&c~tF!_G?L%5yiiS|0CT=tLsy^#?boAr`(1*H-{JWjUc%vZ z;dXxNVBCh})!^+MIX^pmJmu^}&SdiK@cERp8~byms+ai>!u;=0F7tmIIeW-&!jF(g z#m}uACyxyO6K?0<_H#qkOFt9Q&kNWB4QBz}JJ{4Y&d=I=R`7U@_@<;HB1@s8HY_4Cs1lFx^aaO6yK_-2RiarkwI-*MIPxI)bn<)f+2nWN%iw&z8yx-z z<-}}k=HVoHbofO_&P|7Zb$IkvW?yli8R2%n<;A#J$#cW=Q%>}(rvH)-Z%jG$k<*;K zF1)=Xr<=nkP|g74Od;c};#C?rZ)1 zIwnJY42P$M+x2~koQ&kp;kn3DG%@R&k31Q?INa_l+fN0DH=~>~$Z1I)0Pjft6TB;V zJ9sbhY4CpJQ{cnk-2ViJucVxv$XQFi9sWD{ZTJrIoA3kVv74ItKSCZ8egba$x4(z{ zmct)AJYpNOuk1d_i~OkMx#98PJZ^G_=cSy6$SFu(A709lQ`zAyC?^CtZO8|}yQv&G z=eA~=ef=Chi*i;VXCC=7_;N?iMu(rGoYTlTM}881)sb^o)u;5%DHxA~uaqbE{55jk zk-vodwKe-eZe@Ogz5nEh>F{)LyMIzPGxeFslf&~;PH$80EAH?*lv5Tt4aiHwTab5z zw;}%t-UV*Y*Y?xP;S(umGIFMpPlV4S-vM7lz74*b{2qKg`5pK+IQPHb;a4dqMsu?O zf0IXpKOoNo|Cc-${1tgq_&f5(@Xv7D{{ZZV|Fsh_zyD44mi3elF95gua4_ud!X9oFc_(GK!bbvCcf;d!_%?4c7xw+_jO5GB z>H5mT?Y#Np`&KoSr}Ap;(1F7vrR$OJVb-wbc1TypZ|GyQc{E;(&ln4Dk88^U`j zmmK@^ZbOwz&Ii@A%^_$4g z!nY}xoG)Aayj$<{@5&{oc&l*s9VO2XKdD@D?C;C^8!o94y#J=>HaVYFz2whFj$cPJ zzP3Z3AGed)KXx9P!jr-6btV+!W>qfZ#%trUI85<&vMFtqkJx zjU-P8pXA7&qw0133gwbt1vzWTE5Wxo^7lIY66JJ7&Qv2rw)(Y+3X*C{h5lK z=;V{(N#J&UUt@jKsCt>7KwOvdDwp{=h@67t+u)_h>$LN}$UDlCSAtiE+kPVDG4=Hw z{ww8NLryR9EAT;%oG}hxNjVYQn|{`k`@y$Tj{Uvmp$@-6IoXhNn>-8rF?k^T8F>x( zTk@XpkL2Cqk-M1vW9Q%YAJ^fT;dZ|*Ku&h@dGG>`oKg;NLODl~6GVO({uB9s@Xq8< z;XTNI_{pqqAMzCNfpDImspN66Z|6IF8|9Zl{x0$W_#yHR@IT1g!_Se=gkL0|4*wf& z&&&4z(BXbv%|5Z~z6Uvx$#=oykl%yD96{))CZA&LHLrBWJI}uTjoiyip0Q@!i3;28TF!&cZ&rgD%zu#AfF>gOOydd1}t0bMw7ZfE=1TRZo3SN=C1U!(u zGrSIYM|e}XJulmTJBNo*&Sc~aC7%c%N4^t2iF`YJHu*#NeDeG7C2-sSam@dAhaYhG zHOi0O*#zArj|qS1$a&%L7~RZ1vFly{IdRDI!IQxGywW(l2<0?IP6_hH@QNx&zn{>a z{4t(~4<@(I&u5e8#^c=<@?!9lR*$Og?~^kIrjH-Mfug_+56GtpG`k8$cMw@DwmukrA)oQa#Z>ippi&8AnV`1Labm8}I+OP%ia5@V;I*@`ou*&Iq{7 zhV0wHMT}2U^^(63`HPjydCf-u%gLw1H;`X|Zzewr-wwC^Brj_EIZqypKCe6cJ>|#w z#pHY@j|Gp~-RuWDZUKxNA8zk=_WML>mCHQjLrzBWJn&qO{35De=Go>~P%ilmkW+=c z9=taB0C;`!e()eTpKk|MFa7v}M$1 z@1~q*$O$EX0{??@>^}d8JO{>&+vEHFP!pb>ygs}z`9JXLS{SXvna?U81{F2D| zle{4OI{6CtE%GJsM{v6zMq=Jxs(R^XBKnEc(@d1Tp5H`HH1Zqp_~engoAXLU9s!;L zZu=>V`6)!+6kbE+NS~qTv%Ye> zs$TjDY+-z-a#_c$IN!bGnc+tr`R7!9__`qffpW>OiJX7QtHWQB_k_PA?+*9tWzL(= zH>SgLIJ}U?@V5?6 z*xSs%ouB^bGbwprcv`q!uVC!Y?5bY&&#e|_9!e;e{j(T3rO6k90KiQPa{8Z~@>T{7- zf)}RzXxMLMRK3i9DDrD7m;BMlsZTx>9^}aHpz3vg59N}78##T*ufc~n^2e!qoj*&t zlyB#Mv%^nP&N$?pB_9R9;>fw<@UN6}6gd(5ntfugGl$`^;C4Un zEo#m;vBPsx&J*P1C4USrK{+RoU(w;sDJOm((@!h%xbRNoh2g>E1>wEn_IzzWLmWPb za+)J&0eMsSO7h|Gwd6zLzmxw4-$A|segMw>pLF;=%DIG`N8}gaFUUW`-;jTVee&6r6jPPi1+yB|3ral$9eO$||a^!v*51(%-qCC0hwUJ+fyehl``EGa>^6l{2 zaNFlb^x0I^OFseVr;Bpw=M{3gk-vcVB~RAR`y%fcNS*{f3~u|GT-ekvBfkyb;P8`_ zUkdqW$xFbmkhg~4Aa4o354U~Ve!?6cyT4R^`*$uzBPTxjNO%&s&3}pW%|jlgh?$>a z4sSsD8<5|Gd>y=vBd4pw$5PG(o`0l=B`r2g%>UPf|`y%+DoA9a9PU%Ot`Q^W1!QCZ}qBQFilPTm2Yo4h@|2%N_)>+r^uGXXix z$;ZLllW&1{BHsk>PJR>KoBRfRFr51z>+ofi6KQ~1uT|s`;G4*^z_*fTg6|`*13yUq zBm57z?LP(f!wrW&aJX-vBz(I*^hSOp@}BV6a2_{_!*fy2eB|UKp9?SU$f@A)W|VUf zIW5We!@H^+xo@O4r|;|S@adHE7&)`a@57fka@INgIOSv<7``07)8uL4mmN8`9sZee zf{^1E^8LCugU5i&-^%=?$NVI8cy`JehMe5wL*T_ICkOJ&JG?37tVT`?@|Exoo8+j#oD4hF0?(jR5(-k=n z$UDQs$fv_!kxzwxCf^VD8)O#RJ|69ZM}gb^^O`bW3WsNKcuC5?kNh&^ci~kXIdvW0 znQ~$e@`WEilgEVjapVkj_*}}#kDP_%dEu*6j=V3i3eVGyk{^NJA-@3k4fYE^54n{b z`+PDP`6txpB)884%PE&NPGn+z4arl(gO$s;`wDqC-q8mx87aO0g7N%+jBNI56ef=VFHN2kUYs$TjD#eOKFT=v6ZNe|Q(l$%^^u=0_s8`SIcMRkG*Gn=kjJ zaCl+Ld51oWlfQzOcjVM`cqhuqKg#UeVDjAX-j19h4qreyU68Ycyc2vaA@Hz=nz@*g<-E9GoQPQ+2>3+;7dD?AqYO?W)=8}MXsNs}zwPdbMeqns$C z&3ct0j|8too&#QuJR7_&c>{Pu@_O)=aPGg8!-r8$f8>lJ?+c$yz7#&4d@+0h`5E{U z@>B4YaNB74nOMfTa^C_`FF`*z@IvD-a0()Xwz5>Z@K09UWzeh-4l=}gQtY^ zd1Z8XNy;gMoHFDA@T!y(gn4VP>gD;We=5^wh;r$F0&<3uw}X#TE)n)~)YFtp&c1Ob ze-?QW_iynp%H-pPr%j^1m zNlblvRWIX)V%*-!CBH3l`jfYW4<}y@A5Fd-K0&!2cM+WXTtoF?=yRL$RNm376}q^y$O**D5O4`>M8b>3<2vtxvuP9t5}j{2^cD9UWA?jGG(d_Ej#W z$B{FT{0Mv`d7QbD?(>Z$j{%>gT#vg1&V8<<`XKbVL%H->3Hf`-%fXM34}~8m4}t#) zxBdKsdAp(NQ+nf0L_g1zOX+Upydd8R|44ot{+0YDJn}f{Bz3w>NH{Ptf zeSXypIg!Ylz+;mSfyXBw1Wy9D{p`Xz79u|iFRgN9o{&`J5ua!%mo00#Xd;>hfgzxv&fAA>e|H9+K zZ9iWzZ^;~9ka99DG<_B&&j2q=UJYK6yb8QJ-1f5;{d6YZ0q?1DWS#>tZ$p&JymdqV z2=ZX~1j@gT{I#lH@`HKO&z2e?fj3 z{)YTd_*b}{PuoxQiQo2#^b>}D5-FE{;xF=UydxQTYhO%@mEpPIeqN?LAKr=i zDWdA7AOB+BjdxU0F8vHcP7U%Q@cQJd;f={x!dt-oylm;GGx`}oJ{CSl<%IW%_aT=m z*ZW}yE|r^DWY6TcO$0+`A&ER^4st# zlZ>K2N`(Y*JM367?j!mjwXd-eBDwiRnFOh1W? z_*wGu@C)Rn;Wyy+d~H7uRDJmTqo0?`rJsSwc}w0G?wkDm{@DeOM7|9k8*cl#iThm= zRUbZO#lxq;msz>=^Ab7P$)CdukSASga*B{AhL?rgeximC?(jU%3^|#}pTP5wXJ6)hk#`gz&kQdK zxBX3b*~#LO%l>K8JFCL(T&7b?}ws zwtg+St=|N<{d7P-XUL1gpQxPhbu2Ek@4Y{&T<=f6sgnHd@#qoyj7tE@Pg!Z;6=#;;iZ)8acjZ3&&E_g5q-8(E`5$ien;}r z@L$P~!+Vh*fe(V)e#%I*-Z94ED=88x#X`$PJi;%@Zsby;G@Z(!6zu!<1T`8pKGW-6n$<}E`4TS z>D_q8F7nLqL*(t@e~`C^pM%?es$$-*Is6^vEJV&H^7-({)6G7y@ADjnM<+iBPXM?5 z^g};CIJ_w3JVj1P@<;HB)I&}nc^!B|^1kq< zP4pWo5X5%P}kvkreq`Pb0T6Y?wY z=Z>62GtGXm{S3#r#o#f#<(B<+7W=21a(({_R4)5J@*1;G>X7@vo5Jn5(Qvk``1_HvafDq+=#QkU$2|+Sa3TJh4DH)v8tDG!!T|p<&qz3o#`hVc{F%_@<4cD z@@nuB%JsN4;oN6Kst+h?`e~zF`W%h?pU8*9yOAG(_aHw29|*VoRK>iFa`Dp#=RkaJ!EcTvnESQfSFx4Ld{)M|@yRQ~ z6DyaTC&MMx=S!!?R#c=^3Cu;RHF+WSlyQ9xtyj4hn1XyfJRi9a zkH1yPyTV(MKZExruPu}69aG3d;cLiq<9c|Ie5$>El7E1|ByTH=>>V-Ze?Jdv;2Gg| zf1b^0>T@aA*V_Qf2}xw?tEhU3wmJ2c%c)+&erQa78Qz*a^=~G>J$VXvXXSd_fpELu zY@eg3-j~bdPg5>^Hbwp{^1ATFS8F#kJLy-;rSb6mOf^94Dl$v?p_ zlc(Ec&g&X^8u)Fv?Pn?0(YL_t6T2Tm)0&*<%JqIo4!1dh@l1VsRWIjdbMh#c^Qww| z3XoTXmn5G6FGD^CUQxLow;`PSY(@29INz?yrO#8y|AqW8ydQbN&1N1#$n(NS!EHYo zelYb@RK4`?pU(JF<vcld0|N&36#b3S=u_zLn8 z@HOPc;J?9bKX((E{Bz_l;n!4-%yVwc+XLk?Z>^C3FL?|2Tgs1#=Lvp`%>J?cSWg9) z>zm|{MowDtk?_ovlM?ymRlW2dn!~&CjvC7K{i2a_8TU8jHzQvMZwI&i$4e9*@B3NR z%ee9Ics*FTv%zO7*W<2+bDvwNJ_vmtQZ9XVM*bh15XLJ{p80w7AG$U zub^^do+o17epD{=))4vi$m_#fQhpHfJ2`w5<%A$-9QgqF6w3J-`5RSz_&&*G=5vQ~ zeZM$OIU(^){a>nHasrWaPr1y)8uassd@B z5-FE{end_(@+$DOKUI`VKQEC}gZw$XK6%m|W_}uz zCx*9x+kTc}y#}g!>Bm34$r-6!ulqd8*@)*GD^z{>JR@g|ayhSZ=w~~5arl1nb@0RF ztKg^M_PlIAf2n%uCm8+QRWAMfi=2n#ci_*->+Cf1^O`&m{snIPX^eG`wp8TX^P+|5 zCz*2TXDo7lARi6SNd6lW%3jQnk3V0v5?dMO~yxuW` z{37=47L}9It2>MP;~wRD|DUIvhqxbIcldjiBjAl-YPPlwyr z^#K`-r&TWbACQxg`~^H0d8<7pCm(rpcyYL$PuougRiDy}2t+?WDwlp1A*UYsEO>MB z7<)}Wt;nOmJHc%~bum9Z96p6|${}Y4c>sJNxvgJHZtK^>Z9hHH&vsQW^Am#kIi_6Z zrys^WMcxN~iF^_KD)|EVEx7GxRw^@}pUER*|0iD|mERtZ;$=7W>6A-^{duKa%BBBf z7&jmJVR&)4?I#5DQ$f|s`~+d#`pP9g;y&-jI~tRJMSg4Yil}c-UKZY2xgK{QockO_ z^%K$OH09FgFyzl7?+;&0{tUjH{4sn3-1ajJ^R~m`mnbK5sLYzrca=PSXgK@sklXqP zQ8 z&`*fN=TXj27a|dxTe06s+SyJTH_6s%YM6tewvbBhPNe8ebD4| zAWs4Bs$7pd2yV~U_Bn>?1JUOk<#5-Obxn2jla{Wf@CR`A(*)1Qj0>DRyFP3{pSj>XZ(VZ+>r>Qo zw~w=tUs8M~yqxFm{4l36oc$cYxGfCt?d7;}wh)G_g)gI>KGH|n{-FL>_qGj9$2igQ`poOO>vJ0N3yP12mlTipdoZuE;<4aW;as@$h+uZ;||A$loqL6uw(>entK@uiowBi~_;> z{NuTQZeuSB_SfyB+pnLIA76YvJc;Knhd&pZ!E=|BZd>?6_>o0C1w6`g*JoEezY2Qp z^6QNZ`YYqP%Ws363gU0UtHZf3SzK87QO~Q7Ss#qs!gH5D3puUDXTUoc`2)pEV%%xs zr|@;5xn92OCnfq>?z!t{8^&EFz8StrJlXc}CxsusizkBr>A64dNjTSyeO{9KX!Lo{ zbJu5GXhx{qxW#BU;Cl~Tph}VN3@N#0#`E$X%PI&H)CcjQ{M{<5g z&J(ZR<%9|aImv&D+{d@jXKL|g@GNky8}suTUd!-T4DV`qZ^I|T6Njhc&h2FMIaPcj z{97Yukyr25C%RCuKASyv`RkFhO?)kUulN=CLGcUllW<+nONJ*|66}}Or!%|=oaOU#Ph(b8acHMZ!bB2Bd3%2Y4}Hya~bDzfLHIb-da|Eiyn5HqV)V1!bJtH3yvC( z%y9@65>EmzEjjqHrqJ_-H<6r@$Y~~C9NtcH@HQ&c#qiH0=XKnBGd#2S3-IjX)!_NXJHrc!zXvZ4XaBi_c0x4_Z(#U4l0Odl?}?9v_b_t$8$MBT zRw8Gr_zL(OBWI!ETO{W+a<+?~gzximVu#o42CkF0#53djBWagC+xM8)ue`xRXY<^D z-&hjvKFj5&#C=U=uioW^^0^P;-*e@;d!0(WCx%0>h{uOFGxFOSKGg6rhA%SwSHlm& z`MjusK97jM06%NwT=(kT`b1-W;x2!-{%(EVM@~ZVcj2kTC&JT-kAr82>wXn5ypG|o z8vY)f>vIC*b`{?Z?`Px;GyGf0>Ag2NKl8+U!heyRlBt6FwO+kj{{dM4-JZMkpM{+L z;xpjK#eavN7T*HD4Cnf@pSxat%<~TYBw7)99pojcrPPokm0k%pT~JvVEA@8&+~1J zyHoro{IKM_h5R#yKb4$J`-An5^K0b3r-LVjb3K`#-tbbA^BQu>iN6AmHgf71-d=J> zBd3%2Ncabm^ETF}ui+CUXDMBwm)J`Mhc z_-1$u@s05I;y2-)#IM7k(3~Nk3_EW&{Xvvv^oEOC>!Rw2!hrc4e7T!$!D*P?+%kU0x?Z2Dh z!zCxx;a~$siKl>16fX~-Dqa>oNBnL0_u{SL3*hYkd7Ot0hW}ysImsV}{7d3P;kS*P ze+^IjTjV)hgq)1x3*b57I8zaTjWkyA^2KfIxrsbop zZWb>A-znYD9Y=g`$E!PkQe9pN5>j#lM1I6~6?( zDSi%q&vSp=1nb-iJUdspkH!2klterSJT08-#(8D;>RoVN;;cUoXP;Nm&jrKdu6LEs&PjKSn^3$fJUN{Czac-L z_zrlqIQwZX-U;=6#WyC8X)p8{+}%sLeQ)S465+=r&)vRHM4!{dC%|V){x;+<6W;@0 z=jFI@2VmSip1W~ZBmaQ-O8801KZpEFUcJj-hx|vLyZqD0`A_^LJi&%wAGt5gPi1&f zIKM8J^h9`&@S~)7TzF+8r>5a8C8r;9-WKlz?<_f&u|7S$dbd9Odmo>B?$+m9&1`4cSugd6mB&`p#xsM>pvQ=cV|3z{l`A(s>455E*^qkll&)G zp9C8t_dN;5&Fi`U^@l3rHG^S8&ER}~t#i$WAMHHP9{%&-YcU+^=DF*?6#DETo)_NR zbC<*ap6^i4UCtTQ4;SAFAMLrzNm?(M|5VRi&Y@G`58=l*;%iUEaA=O_E{Fd;-^HH0 zoQtP}`laGW;J7%j*^@lun`MhuX+jEzH7&#Zj z_rh<&-D<@S|1&XJ_(S;d$g6kb4#2ocHU;a->qGv(W6DD*#B;(kihl^tD&7^I({q2^ zQl7hcEku1e@gLyPaGh5juioXa!@S<~+~r?IPD}B#@OQ*tI~%OSd*ZLad%)RG2+!00 zUcKw*Ci)rUx$9>na>k2~fPXE%1U^%IG5k9?`&o{C-zpvteeN;*y5t{5{%!Gt@WRG@ z!f$%+`e~Ik_&*YCeYS4?>qQ#R-9C=Mx@8dW56|kk%i-&30nc4d&hx>zg~ijrOL*>b zx{nF!t9b5mwxhn9_-c4f&s`4xd+yEP-1iT#4sE@9ca&S}88mUuDvcb>a`_`dXK&t1+ps9!EV4!+uR*H3i2@Q3hYv*#|K&-Xo^yZi!I zTy^+mfIOm%L{j?OHi*@KLo(J_)#aqIE5&r(f=LsQ}BN!|0wd~Zx7a=`6;oF89aCSS+9magdbVNGsE+USA!Q2uL>^; z=Q{U9KefaM!e24Gv*dR`es}S9@Sc*h3i)4)^LqH5m*dud_uDbc5L)56Tc1(LUoAcy zzFzX9G44U}*6>qajvF@$`+m)HH|`eX-xA*h|3~sWAV1ZP$miXRB*DB2z}itFDdFpr=l*rLzvnLhnU9>Q1-+|YcoGQrgApS4Te>X43?PGEGA^hm)x!bSoH)1&Ssdz^C2=Vve zqs2SHC&9T6>}QtYYb9qaayE*OhVPP`*_iKNUcH-YN}SvCp1b+3M$TpNrSLnF{}b|` zc=ay774j4P8F@}}-VD|=nRpg>dU4ig7H557IM;K4yZH-0UhwMu>stfQ-F&-a+{WUa z;7vXEuWxNVcRANk|Bm<``1_u_^*NO;{2~14e2fy7*G~cW|!fGOXuMUcDQ4MuuSA4W7IF1a|`8A|406OS~$4pLiAcF}U_~ z-tag(BhOn~nD`aeF(qr_T2T8?`{l-ritf*&y@TLxIX+Wp2)p$ zgde|oId0r&jJwlwH*PEB?-g$jKP36tFzzMs@)-Ay;VE}To}VemPb>ZvJUg80$@~Id zy_?qn%&UUuZeDwlQ$>6?yr%dAcpdS7;IG2jPfg7CEwA47vl#t!@!a(jbuauO{P;jT zE4-)V_r*F77jK1e#~c2W)~1-W=XR@@rt7dx`JIxP!bLH*U-q zfx`b9@3|Xy67naBe+8c@z6SoS_-gnfIM;#w{A&0?$vKalBjRV^XC>zp=6l_%ck_*Q zlM6qddhRIdK@5lD?2SBES>Xxc?7s@uIlcI7jGJ407rc!4D7;Uo3U_6$&jIO!e(HJd z`g{xhG!$f?$Jh9`q_J@a6HGkEoG+}#+rfafm%C~^vm z?}L{Sul#S&PX+Oc@ak~wr=H;*C8srV-WP8P?i1Stv9M|V! z^jY0=*XLKruPHtr-avd6ys`MN@D_0P*$n-3FnqA&oJP(t@ssee;_?4;s~ZYU5RVI= z3fF#?iXX)FbB&kd)-8nR`wq|Dx|K%$F7fB!hb8|E^3QnnEE@uBdSJ&#%c)Im-Q&s|RPP%xj?;<4fFJ$E@bk<-O<*C)Tf+1qoMKMgtk z#J_@n2IqR#!v2o+>fN~f?{3WW+~r?G&bQ*{;0wiHjup&ziFiHuD!BHu+3+)x^8s?s zi+6)xlbpVoZ{mYNUmSNhJiqvOcvbP4@aEz_!h4JV3ZEo?2j_Vf{D1HFunZ*f*HiMJB7d`2@Ah{c^7nY|@-xQ{*5!bBYWN9p)}Ik){cSkcd3W6KAmK-%L%}%u z{7vh*>*rI9n^F8Dcs9@7^Mdd93V7~vO2rArD=eM>Ucz&?KCQ5B(Vn}UhjD|P7sao^ zYkTf;_;vC|p8L<=7M{EOA@PFz*5du)o#3v@{ajPxc;OG>$A@0M8#g8HM+STD^7kWW znD|ckSn(Y3gMKE6XM<0NYd_x`zFBf!M9wzx>hS%NQx@|*;nlnOMq|F$J$Li%hMe2t z9pI0}&%>XJpMobm9IOZ5pO;Gz{5h$3F?c#S*N6S*@akRv{C;t9&t3o1kW*UxD|i+0 zEAVRK=iqh3t0oNke_6a7{B^kY-`cB>IdAwrV0X`5|1*&Dk@$3YfAKBwLE@X>BjN0) z3eLksuRi8Hpr1LOyMAsU=X>!>@Snt^69wz@i+FkXN;vyDjO)fW@%PZ@Y4HZAe&vpr1VAbKpfKXD<3F@723?8-sOw$#b`EkC9VP{0{sz@s^2$zTXgk z1Kvh_F}%I__wX)ot^@n;<<-0XqmqR`gdf8_cl~Eb67(}lJOzBB_$TnG;yvJV#CO5J z7vBp139kLG^6Fjx1JM5;p1b~wCk^`FEnXDja$+9|`rPxjNs@J}RXB69kRPk;{-Uk(34d?kDmoc-{5G0X5Zl5-9@8^lk- z|B#&XI41|a`k3ck^6+AZALl)H>t8l`u>P0Di^A`SPl4YT9}f>54f1&2uE67p{|!$D z=lZb!3|@WAIY<8mJa_#!N)e1#SiBCrjQBEm1@Xo3>f(u02KhC`W5XN3wf{G~de?u- z6yXoyM<>r+|L-EFvv^1N$Kqq*pNNl!4}r6vYd8<1y?WPAH2Rt5x$9>&a%PAxh0hbu zl`2@D1>%|EOW^EhF|H4r#S_4Hc{#4n0qFCX=dRCT$Uh}M6n;s30sNZyeE2_b_Q`%i z$AbB(XM*#b??p~F@!jxz;`iatiQj{lg>zg!FQN@^E;&)DgT7mdXNGr@oP6=aiyD4> z=+(zO@38)ZJ$LKh4LQTaJHp3`?}JYe{}Vo4JWraS|5@T$;q&2KANK!?SMT~Sp3==K z{Bxt8yZ%2%&UW!Z@O|Qk;fKWc!cU18P8;-pRy+^<8eIFo@725h$Dsd&$Adhcw~@$6 zDn0_9PW)$hCh?!(x#8@mAkIS(uio{u4*gX0+^y#^fLz=;rA4k_uQR__Q z_%wJU@e}YS;)mfa;o5&k!-q;v;S9n03>SY6K2E$5e4=%?=FD`W8IB;r}&>EIlf z`8m9Lw+{UMlf^uD>(B!^rNrNbR~Ekxj~2fOuPq*(Dd@kxctv;3z63rA&VJ@$zh-&$G1qOJt3{r>^*n=|pT!TuSBtmE9IVee@z>y+;p}G; z&eeW#?)!Q1gZTRMO)uZ|pAz5i``2^V{|<~BIu-QAbGRO!2+n>kBR`E-@A4ZWKZoZo zzfqPTH@A32cwuqY7Z+!JG@SiJ#R(4*e!TA0yRSd<`(2ujej*6mkxV4~L%=-va+zd=vaCT>JUQ@HD4``SILd zK~4toOYmH9<`2Mp3mg8DlwmzrmN>}J?kLnL-Cj3eZ{-N z2a0!wkAQQ&KV!ZVyn5G9arE=8=dPbg$eAZT9==3;FMOH!PWW2!)KS5DZWK=l{~gZ$ z*P#DX;tTM+xGlaI_5T{4@k}s2&(9!?n^k-uJRh9>>_&cZ!|O@T_sD4|J{R81$Z6}< zyZ!2l{rb>zw_krEr>FQ1_(1VH@FC*2;G^N3Zxq&fvf;l-PNtl}`u-}O0lv}5`O~X+ z^X2Q^anId+pGVGV@yhVa;%(vA#oNFiz&YQSFyGjJ2lG(R4(It9j+|WL!{CLDoU&fM zo9}MyZ%xnLd>0|7j`#w2WAOv<*Twh2Tf;f8c9`$GhJPkGkC8J%{2_dTk@JmL@8%oA z`RUx)V-XZ@$*tp5_u^}&~&Li4vI_L$B7SxPnP_e z$XPAU{C!@Ie{N5B?#5k?{4?V7;djJq+cEBP@g?YUub1Qc9Dw>`p1bqF-&b}+a@HZ| zp;zy679%IorJ#V*OLar`#kfVhde_e>`178-_1}P; z>f-C*b;U2h8;GBSzXoSNXM*X5x{8lQKcmFIf&VD}GkhzY&%0L0-{ZOe{5>lY-we)vst3~ywe{-V`tY3h@Z7D>6^z?U{1W_A@sx#w0fvevhkpTQKbNuZ zGsRn?&voK_zp>rRkLf?$t9u;r-1T1`+rFN1Twm$Cl)#qrlkLl4AJ9!hyN z7{~3qyZ)rA6#O}(=dS-3F>Y4zXn0P~T@HVbUt!N(&Op=`7w-!%*Y z;w#~`;ang5_-&|%_<(ShdyMpQ{B@Y%xf}N}@+XVmhfnw1KAGV=Bk@!YhU!%o2?lf`!{hbx!%-Jl?oW0`Axh~F}$KuRMcq4Lsn3G4GIVHrI^Sn57nu)W% zgE;F4iL-u;IO~5DXZ^3@tUn;md7Tme954Jg#F>)>H+sB2bKH#L{C;t1an@H8XMGEC z)^`$T{ZMh%j}vG8B5~HQ7H9ooan_#`XML<&k>`r_$;Da!oH*;tiL<`3IO|)9v%Zfw z>pvG~{kP(*Un0)>o#L!ND$e@*;;fH*J96DvA0^KEBI2yCEzWb^M4adRZE@!G7w7Bd z7vk(^vN&HC=8FH(H+(S;KQ@T7&t2ji_n0`xy(`YI-#!sfusB%X1a~6WnfYnNnV&=a z`{Kdpmlfx@RmC}OZE=qKnmEU8EzWU!igVn7;v9E`ILDnR&T(gpbKI5U9CxEQ$Nf{B z^D#&iu#X z%un!7~o*t$HaNvyClx*Uc!I>?{z3F&g*S0!`m3%MV$B7 zqr^F{iQ*i0iQ#L-nSVr_ITyrPA0O8VKJVC13UTH%emBE=i*M*3oZHFb z%voyqZ{qC#m^gFJiL*ZLfB*M6NhZ$v!s5&?BhLC)#980b@BxNTG<>1qn+-o^_#ML& zKmEVgC#T`%4R2t0d&B!0KHl*8hHo(ZFT-ydo*?GCl)>-WbFX*Y$LxleG5mGIyBj{z z@b3-ZX!r@k9~z!ER`3l+y>1jUypG|G#oOX_u$ws7bF|^#8NNpRX#U{59v5f+1H;qA z{=es2)bMiR{5hy5;vBb|;a?d3o#7h{KW_K~!_&ku=4*Iu!&`_SeLc9IcM?xiHQ1N$ z#201@e5v@)@U7wtx(D?;;O>Q|0SfJUO{|$*`SdZ4X-D@0`<)dZzIn6zVEp|-yY&TKa)In^DT^Zo*`Zb z{-fbb#TTIewc?!DR`Gl|;Csaj!H?Rq0xV6dX{s*4t zx#4aY_dl6aNSx=eg5lM~IqqBH%x`b_P{T)wGoL>XsQs^ydiKA?@SWn!zbDTApNKO* z34Shs{m|2hPsTaPZg@U%o~u&gJXe*(`Mjv$C5Sc@7X4JP4KaT6+`-b-r z{}=TG#QD4%CeHr96=$FPeS6yf4x@gb;V0mFP991<`;Ub;a2%JORGinDw1(&O+>IT_ z1%@B|y*}=b&Ut;Px0g6`28y%)8RE?UUVJn9|5+V z{QecL8^=v5&iNJ+XFsLHx1%5acQ!P?rquJCv=isKeP5jY4;N?sm*QNXMTRdIXa0V1 z<{T4e{X=oiE0(+HhaX%Au4i^}*5?yv{Y&EKa84SE-+;FePlopo?Zh*{hl(?Ql=vg$ zPZMYU9C5y0Y!PSvPI31CmpJoJi|0iD|A}8gpYic~(7FE1&nwRQBI2BHeR0`_)XG z^=-tt@BPJD|Cu=J=ZLfZNAagPCp!$^C(i!wiSs(}M4a!hGUE%LTu;{L5@&t1IO|^$ zXMH#_qW5vS^uT@d0fx=d#~9)eTCGspM!><5NAJ+#hDWaUr6P+tdA0BeF5>? z=)Z>H^$qVNejhpA#UI1RinD&QIQw5F&iXattUoHw`oG25Pkem+o9o8<*n6t+zgIiD6=@fKAG3> zBI5kI#LME$Zz9h8)`oW!XZ|p8=8qA-hj}e9{1?ObivNe4BjT~$0)`(C#aSN<{~b%N zGy9JcXMF*2*4GkeeFJg!(_NhPy~SBSQJnSPh_jzH;;i2y&iqT_tiL7B`sDcU-RZie zH@uADRmA!AvF75OS6jnB_uPFwZFh;7Z4ZqVKM9{^_#E-(C4-zrhA$Uyf%?sc|0&)9 z^|!^@|0D7L(0{yiL0@kD-F)fE#H%1bqv28F?7yhtWyM<~znbB-#W~;h;<1s_S-cs1 zoOoXNRPloFxrQ$ke--t=8ou7}KMdb5-URt)4ZkYR^-q*Oa(_!ACzW_bcyV#=dwKEd zsDHumy5dby-%0!-&S7_Pp2NO|4-x0S&k~Q1aeoj`3*RQr`R)1becn9(BsPArgZ}AzZA7c1O@gGn> z)$rNkqw=^#mudzvp+Cgi!-H@3Kl{2I_cvk84*@*$l2O4Yq%k~; zIQKW7;YG!{zZDFxCeHn>XZWk)+~1alcM$K1`F1zFxA;KR4>5eC_-xcqGJJ+O&(A`` zmx=Q{toPhM58K3f9&UQ>UQf%S&j;dM|2Ub#Md1fuf9XlYx&G-5&o16GDke5mQ2aA^ z3Gtcm%HmwN7sa_g4LtYP=XG(e&j8Q;^%*AK5dDlde404d?K{I4iGPIrRfcaA?}_@I z;#|*z;@_eEv^dxEk~r7%uIK)G{wvP)eB1rdWcb1J!*zRCoa^(kIQ#D}J}D|DHZ;QU zafVM9=X~diuR#71!&i#0MEz#N{}jK7`o9c6Eq)pGR}H@_o-t=Acw`Cw#r3Br6wikG zG=^sppNabXh8Gi`i~5R&R~H|aE9m=W!<&eYM15<+JBqJDeGkL?imyZcFvG`)pF{mL z!{>+(&K=Bmk>Sh57odKl;XB0dp#GrYC&c6A3HrHg_-*lWsDEO3yqI6+_3S#(0QIR1 z&m`U-^?3|0EIu0byThW8e4iTa_2j}o7P`pJgR z6kmk;1&043egXCC4F6sHDeCtdeoQ<%U$CAR48I}X0QHXzkCQFP<8^NU>XRFuUVH@V za~b}eIA0&jc<#SGRuOL>v=?gSdF-(99KIvY^Y)?PeZ;e1{Xa8&w0L&ZPcwXuIM4G| zarU`OJQ?zj7=A`PJ?gKCSB2jbe+eG*OX9-o$bF|L%pQ3j*nc5$_Fqbz{XcJbO>y@B zia7g!L!5oKHT*qs_CG?L{f`r8|I-bhE6)CRi1RwXPn_5DlZIaqZ;R{gZNndlcSL=> z9FhA-PbS_2^_dONCC=BEs^XoHQ%k%XypuSulikI6J?v-rQ1Mc@{){zzvUpk4&oz9Z zIIp)m#M2{ZpLkCAO>x#g5NCb5sL1`wjht-ah2ho3`MOp|oUdO^41Y^}6Rr;(4eutt z4fTBtA1r`)*zjdEH1Z-V*tl4bLS$67@w4 zFC#t%_0je<9BL@#3uiRh;jW*NgN0@Slbs5YLM1!zsfriswZA z9m5}s7eReO+-JlJ1>YZ`rxfRPyNGx$qZ-Kz8~vs_($Sx@q8a>_~+ss zQ9s`BY2qKDexBh!iSzy8PVr92IVj#8{!pB+Be8J5#eL!ZNHW9IiT{B0k21V~_zCW# z;Z?->KC_wleB`td{~10|d^P-Y@%8ZWhEEgUkNQ>O%-<-^{GEm$6leZJ@frLx#^-+V z{yLfA>BQMzl;H)$w_w~dhF1~ib*Z^H`{es6_P+-CU8MdZ{9|$EeEg_vC(itz z#F@WSocRaEng39nUx(rQT+WwYZ{hn~^>lcBp!4f3QR2MsD&EaS0B&){TeLZ9{V-hbGKjY zXTIS(#4F%=v`?J#J>|LU=PitTQJnoGDi9QK{rP-PCC=x2R>Sj%=SH6|h^Kx%u z7H9pZ;_PRxIO`XRvwnv->-UMXpWEWBezPlS^)HBX+`5K$GQ7JupI>9e znLpX^72$ruUt&d-yRGjsN#F<}8ydlPIWOy^fdx^h+ zoPpvk;4{TpKTn+f|1Qq@-QujjAJa?~mMWTYwFDK5Q=c#UZ9dZ5~NC(5a z82*L$O7t_{@SntwqyAU%v+#rBm*FQ2e=MFXXDH?or)cnRzAmSQM~U{`a^ocXH_-y}XA{hSu(I$tt8e(}h4 zeuA9j;;C{4b%n%PUrLQvWdl=r=@G0W_I^!(yN*H&oIP15Hv;M4j735qM zuL)0tpXZGgUar{Tf11Km8D3Pp2kOg;_k}kWXZ@Ro_Y~*Pu?#T$Yw<-G_gnGh@WbL= z@pHeY#D~JK7=A}QO{w6#@#mnqo^<|PGd&aP`E$+cSus9+0P6D_UQB!n>iP50%%Rti z`X5l=&~W}dICEB`zP;4bJBx2aeJ{fYiXTAzXu~Ip|Bd=thW{Xb74^Ru{+swU)ZY^4 z`FSYLKH}o@xNh{M;s@~g84S-M&ht~m@G|19@#kp6UlQjzX=3PMqg~c^r2x_K|t?jqv-D!+m@z-V}dMTspX} zFo)}qTKo*^D~K<`xYfjehu1g!HSzSwZzbLU{*HKa_=kq~5$E~*%<$3T6Olhfoabtm zIM;2fI@V#A_+RiNhMy7V^ZA-M=XFnfB>E4PiQHfIpHO@y>eGnxdYeU@^X2cK```J& zyc$V8=i9>YcH(K#Pglcxiu0Tg66gAi5a;V1fBzHvr%#u9uID_%e-fX7{#P5mNu1Z0 zUETsQn5arTq8T;%%yi$1f8v!4p$9JiV{ z^V^CS#X7$y&g<~U;yfq)#rb||xZz)l^Y!d&!@m{h>*H4O_t5_?alQ{YD$eWM-{PB* z6Q_LS`ZGU?IP)`zGe3v;CgfKYXMQbl<~J5+{+r_L{}XZM4-#koXmRFG6led-#hJ5K zd^qO2U7UUH72k>aTjC$XABuC_xD_Jzi~T1RXa7aSdHpXV&i`i+L~5I>6ggNC0FKZW|MhTj!GjrymC zC#V>??^jWu+VITcw@{zg@FL<#@p@U_bNBs=y+IqHXz`2iw>^&?wsaWxUGYrtj|}f8 zeiHSci*udFinIS|p8NgJ5oiB@dhYr!iE$5z^Sqrh{GvF|+a1Fniyz0h@hb%j%lB`b zZ*p;-pG=156zBOVEdB`NmKNuFR`uLp&sySK&-Xm{*YiX1?ihD~;lsqgLH#&!-k(er z{|ohV4PPkEb^cYH>$6@wE}k#v#9LzAYvP>mL&IZLj@aR=QZ&I@K%PuBhK~w$nbvRJfEM7v;VQ;?0=y+*Lj&Z&(A(_)*m(ekvLz!VpoaW zFTQ>yGd!I*uahOk3u2usikF1HZg@-aH&EY4oH>KVSwB;p_4CA8zeSw&I}N{L_#MMj zJ|DTxe7 z*C%n+|9d@Ci?g3>hUXP$KQ+YJPknK&Pj_+F_ZDaUMDahcFW-oBzN^Jqze$|=m&93r zOPuw|qa)Xo_36dgPbqQMR}yD_D{xYZ8{!4Mb|5+r?`sL!M(9eEx)*lmR z{zGxr$EqF##tQ$-tsDE#C(in!;;gSLeiVH+7C!~=D$e?z;>`bAob}&|vwnj(>$i)u zp9|uwzah^2v@Zk`;kvOtt2pZ`h;!U(hQDQad&37AKEm*Yp2rSPrFf2DKFh@U_Y&6| zzD@i*a`qd3O#BM!FB^Va{1NIiy!dSW{r+=^w?qANhL;pyiux*s*AQp_jSYWO{1)=t z8{S!*^BpJ7{hBKNI`ZclzEJ!$>VGwSz4&F+|6%xkajwr9!!L_-z6okX?r%qon?n37 zyr?+$v8?!V)K@dSw)h#;za!oX-c_9E?GwWXiE~~{#AoCS=D$*WC495te~N#CpBF!D z_$l!rsK0LbKjIw=V4v^dlZumKI z{=EK8!ykxqf8*B*=E3toPcGgEKR21l@SNfUQD4~b(&F5&s-FA%RZDy>_N%Ms{(kio z|07@U34;tDA>KQGP(RV|Z^XG@KN`MNoPY0Po#DTWb6*Y^eq5aEdC7BsJ#UF~Ju|!% zc^*z+-ExTc%OBJ|C(d;!DgIu8puUPY=T$?T=dGdmaGa~A;+*f>p8NBCSDf?x(sOry z9%8;z#M5KGa}8f8UL5r+#pl8|h_8k3H2k3WM%14+{F3-F)ZZ1KiuL?gd?7qX?a1>` z06F=^Ip31v{QFcD#cv^}hT-+alNJd2XeQ47+laIO{^CzC?q}lhkv~VA>-MAgZRBhh zXZ>Dr*54Fo{R45XPx?BM>(Bb^hF3QHMZ?<|-btMOj234<6U8~-jp7ZlZac*J_W%!y zC&0d(5a-{QyKMMv@lMEjBF^hiyt$+i z;g;J6ZHF3(^ZNFI=kEFz4}Z_(6Y*T|q2eWQ9T+8E13p=t>oZe)0_xX@pDh$jV2k1B z#8aZrYvKjq55?I}ta`yXe4oSp$|=tLg5q4C(&EgoEYA79DbD=2#hKq(ocSM#Gk=0O z^S>77`pgq&{!ijupIzd^o(tCTkoa`?UGcW?e+|!4KXPBv6%78ITf8W|sQC55L48^A zC-BDNcW@ne)9{|+Q5biCIRC!rbaB?t6=(k&#aX|@@XO+5(En}m+PuDrw=NQ_PrR2S z*ZCuOE^%I0pEJCccr?asAkKc?7iWDBan^q+&iW~aFBks?`?Xg57x*!8{(arEhR13U zxo$7vJSP%=3!YCrH@v9fb;Um`6pYtc{A+ku@z(I3hEEXZ-{<^V`~-4ViqD2`F#M$W zA)JQ`;@9AD8%D0@Pw=FM7Zjg_`V!&`;V+Bx^}UJVJ;XO-zxs;rhYu64i|5f8@i*ZM z#OEOA7sL08??(L*arW~-ob{nsBG;Mq*~D3&*YFp`&sK5P?-FPIRdLqeH9SqD$aSuPezJ%+hUXI>SS|=LPXpgA&ezSuhTju!i*cWb^SYg-apd~5 zKDRjguO`m=+TyJ5AkO+O;_PRn_*uLUnIL`{8erT#V?~hh` z?(UD+{|3WPi*p?=8J^&^$n|G^3d4&UUe@q84S!pl>)%zJ>)%tH>pw)C>pxPQ>p#VF zfBk2PbN$zQ?$)2{v(4}ep1b_%!SaS~h%-NVlmC1D(;HsObHD#e;vBb`IL})fan=tM zXZ`2mV=%Ap4PR{dF7e68IVAoy{JuErpNg~p?5{stPq#j-&nM3M8se<4FV23tiL<_! zIP1R>XZ>_>_Vb%K>o>Sr_#n^S^DFLi zL4PB}6T-h2UxnA-#p1`{yTn<4NSyWmh_n7ban|R3(|6_RC zWpjQ`rP9Dx=nR)*4GhdeMfQDcN1qn6U15nwK(fn zinD%$IQuy*&iYH@%um+h|6ZST;;b(z&V8?F_#1||7H9th#F;jbpCZos zU&UF!UYz}$6KDN3an>hp88qfzU)=hzKDBs1^j|`p^%caK-$I=A?ZjFCsW`_SZumUI ze-h{QdAB(84;y~pb9cSs_i>&Yp0!o5P<*|98(%lbWB3c=2l54zrabISjKBeIq#b=^Ex8a4vx1heP=kED6H)tdDy!c*tJI~#D<9fa?&h_kR_yF;C zSpN}*j}zzm%rtzS_z#%xQo~n^bA7gZ?yt{YajwrJ&;9j@-6mMTSmA#;=lUcwJe_!U z^dDt-0dbzUvW7n|&iU5%+@J3&;+*e?p2rT)D;oRQNBl+jXNHd!&x83+5$C*SiL?I& zp8Ng(BF_E~dmcO7e+%?^N<0_(xgySf?uhez{wL0J82|0?VBrVP1N%?qx!->#arR%? z^Vs3M?&$wT@igeafjIkrU7Y>55oiCM#Myrj&;9=UinIUep1c0PLjQBc=fIa3zEXTS z>Ngwyr}$>n-xi+=e)RT`w}|t)@wfP^=<|v=pQkC?1rz7AAnZ9mM&3`NDIzznt%QanAP}!@m>fe19?gH*wDQ zcX7^lw>al})N_Bne~WXzyg}ps^7@vredNB6!8yq*&iW$atgj=^`bOfc?;_6nj}0Gh z_%y>eir>S$c8GI-4;p?#ocnuKyb`WUcg4BCPsO>v2|7fsKd*18#kud94bSVje;$g6 z^ZNFx=kEM-eVU7NeL5K4MV#x?SDfoJM4an0Mx5(2Nu295Tb%1N-|%Ig`|Gntoa=Mc zbGJTmvA=(d^Zh`acOv(Z^+^mbB+lQ5TS`1N#%(Ch`ljNn|5%*${l&Ro--xsRJ8{l; zt2pa-i8KF(IP33=v;S-zBiEDldBs^@T|7C~t&TYR?%;mi;;b((&T*p+Z)Ny9h7U7*jNywtPaK{KpLZ+7w+GV<9TsQ( zDZ@kWK3ku};s3b~ISIwL!Sjlxr}eRdK%lekjiRKH{A3G;!9?5oi7;an}DK z&i-$Uv;L7d>odF;ig~#A4{kj-2Y(FZ5NH2Y#aUlVocZsIv%ZHo>%SCd{SK=K*4fRg9_rH?o>hEr#o+Vv8(vKO5bCQKUPJsi>Khu~ zRQv|&+Z*0l{5I-)89q?_KI%ssK2iJ;>Sr1LgZNX_uP}U_cqth3ms?!{>|h_meI&e2qAtzke9MU!1?M@TB1v#3$o?-ZuP^IM*{? z*I@m4J?DBR6X$vs_uQ>#U#wes@w&KPy&%qYs4LF-HW8nNdA%jh{yTc^pNDSZ?0=T$ ze*Zs+uf@EU8NNn5Hs-rcoUaRe#CiQcCeHOaE6(53dPBTHg<${gi#LbI?e=Vc-F%y4 zJ(G%m49_6W_0J*B*Nf-Gd7UpQ&g*j(ab8zzi1WJCP@MbT)bO`G_s_$-;-ztY_|kL# zJWLVid6;YXLh%k*|5b)>6d#ECorWJ2=kw)naqia@ajx3~&;9iYb$@nFob&mT-*dM< z{Qc3z#Gl~#Qc*k`o)^`{dH(B*^ZdUi-U2zT#G|lo?}+Dte<05D|A}}voc}4}pCV_L zIDdcc0&$-6U&MLN_lqUIyz>NxTlcsW|If ziL<_+IO~UsvwpTX>*tGeAAc8T{ciDE=>NLm|A@1nG#^H;C!g0@41Zpn=d-4GCG5+q zhBp_lj`|LUcM*R9^?k)Z#ySiU{{sG} z=fwGXeNCL#nFr#$&V)XS+!wxHClTlCP8!3rd+xs;5d}`2Y6Z@ZSyJZTL0A?-`!^M@R8y?4->?B9%dN+y*T^aD$e{};%l&vR}H^wc&gr!`?3Q$nZ$R&%Zsx@6=(f>;;bJo&iXG6UnCyCLNK4@;(Q(4FV6a7;;ert z&iYvRfqeJ!=U&&6VBGA6=QI2T@$|^4E1ntNNu2fF#rgU^TAcM0#aX{pob{{4+0RLF z)?W~3eO&y70H|e82iYob{mrk?YC&9OA6cFV24Ih_k+tIP1HJv;Jdo_VblE>!*t| zf4w;Cw~4dp4igDPGq`i1YR9 zN6+2*^ZV>e#rb|Ih6xy~2GnSWE9`Hu~c^I7D+Ge4I&^Pdxc4*Ooq@CJszCteCU zABvZQj}vG8RB`sdQk?Z0#94n@ob{K)*-z48k?Y3#wBoEUAqm&Q{(EtbyV&quh95Hgf#>e|RRhnL(C5$A%{kv6CNVsXIG=Z=#hG7OocXm3Zy?V6 z&f?7fNW2c_HO}y{Sa~XGe?~DKZ-MdmpJPWiL?H$ILH0h@GK)D*OT?R#d-a&F3$QohL85#yJGH*$mGs{%7hSx47Zu#dD+y>T4SQvUsVqLH!$sw-&E~`YwilEZ!%5kpHRS z!^Ib84eBQuK0|y-wxE8#;XjN2hWhn}Zxi2z`u&C<6F-9b%ZA?;59J8@e`0vNk-`7Z zb5$7iX*^FHE=d`bg|dj(gs=77fBtS2{~gcYy@nqV=kxcR;n&3Z{C#YAoKcbUt%T=e za>LV$S3`YH!wZV@`cT^N%Hq5})G@q~_!;!m!ti$D7f|2T@Sfu3vGIcpA0b`^^Ng$_#yGQxPG27{IYmc)Za7wiFgatCmbDl4(TbyccDIu z;km{4qrRx&WyNdY`d`iP+TwLl|El55#eYV92gAFFuRwio!#@>Ii`S!(hEEXBg!&nV ze=oiQ^*(5#NORb%y^gz76&J3_mKq3-#v>zb?KX^$!h?H8%3RokD$5!_$hNLwydz^NSC| z`=yeGR}>$K`WlAU7axcEriQl?pM?5%4gWxVChGecK2&@z>c<*BS)A{0=NSH@_;Tbg zH+-!)-w$s$e6RRMEzbLqg`WHOBg@2j zKXT7=|9<3&_?qOwd=rj~JP-7g;=CWpVt8(G-j9?pyn;CI7hW{Ho;dFpni<|k{C=8X zp6?spL!9^HgA5-b{yyFhd}a7_alRk;(eS0>#c-b28opJ$8tM-ieq4MS>Mt68Q=Hf5 z{|t{mKJr}U!2NY9!!wEJL4AJ1i;3q)eMQ5oi}U%_&~yL!)l{6%uK}L>&#z(P-{Sc- z&hV+?nNkGnHP`Tk;(UIsHhhyf=ex^uf4+yrIp0nbBKPqR%&WV27WCg&oP7=v=hq*` zh}S~SByryF&o+F%IPdqD8NNoG_xsxn-y_cZ{bPoo73cl_4a4t?^L{_}SCQ*aPb|*+ z{d9(B6X*SY0mF-n^M1dQ;V+2uzW!yyn~3v%zqR2V#d*K~q2YbRdB6Xe;iJWQzdyzB zS>n9kUtstz;=JEqXZY{pyx-qv_)&4*@1HmPx;XFm9~vHOV&pmG{eDuz(~9$cKZoJ@ z#d*J9((sDnyx*^3czto+?>9BPl{oLm-!=RLao&&jGkmBx@5jd)K3Sai<8uuEQJnYV z%MD*E&inE0hVK>U{rGXi&x!MX{HEa##Cbm+XHw)jq$d&Q{djuAvy1b7yrAJF#Cbnn z+3**|c|YF3@Ylt8KikZ!~ z&inEGh948>{rCmLZ;11L{E^|YC(Aj+`{!harxWLWca-4;#Cbnn%J53!ydSS=_{-wF zAAiH}*5bS$f6wp_#d$y8-|)}Gc|ZQ8;ZwwUKmM)Z3&eRpzQXWz;(Y(S!*l=r^FDFD zf4=LvyI<4~&iqp1%&#QQ{HEf6Vcb^YoNr%o)(;V9{%rAYGY9jWFTNbU zUHl99UUB9ehx7c@{319%XQcjjBu^S=>i{%Y|v7^D-z6$;SC(iu%(kwD;=kf`{FwMg_$|X9if==G@^2#7`2ak<_)&Nn@fq+c;_UM! zIL~vxQNekxFZEZE^O|^KzP=bay`-M~3>0TSUx;(u@!}l!XL07Q68{nXZxv_$F7bqz z*9~#z-xp_o>=}{!#r(wL%+D|W6nz#G=X~plv;I|a=64t8I`=kws(9-xp_s>P@%Q12 z#HYcRi?4+r5@-HNapqqZXZ~$*=BJt&ig~zG?A~uPKa)7~^NKUSh&c1>i!=W&pXZ~LC9JqcS5ibNkFa9R{x_Ezh@>!AV&;0b_%+D## z{DR`le@UGA4aJ$?T%7rB#hE`?ocUjfGk>Bu^S=>i{%Y~wShr2$1L3E|S$|2K`H5yn zuKyo6C#l3w!n29T&Ki7vUhyb+4RPkz7iWG`apt!YXMTTi=6@#6{Bh#UpDND$RpQLw zD9-$y;>}&*N8KJn>h3Lh%^7DIP)KfGe7RPk?YU=q~gpkEYAGW;>@oq&iq>9 z%x^2soc9d>-0-o6|0K@-e-*Ec{n{k{3j7c8Uhqreb#bn4iMN2KoEy3R72p}gnUfpN z_p5iu{Xe?y15Wb!{^R)EY2%cPa;!e;O*kx$TYdD^CmdN9WSlk}G1}j1$s$-aqc1s( zXoFz&6~gFCg4I`F1gkG1HtPT8=KW^o^~lHLq3rWMKEKcR^ZopO(`U!bN{~VPfy&bg zzfit@kY@_wUC-`t*Rwy|$2|n@3e- zo(JTf&&@BW&*!6vKT3I?f?p+nImq(`;$6=-aMv?OrFp-6-1*=>?nJorPl7vt7ViA* z@C&rA0^IqFaOXc3?))dgoxcp!Tto&OQIlW_Nc z0(^SyN%Wb2tq$*$uNU~H@KY2&4gPESfp8!9NV(_v{0r;zd<^0*RGt&z56RC8@?3*> z*K-rx_1q2jaUX#DxI=K~ABH>sS8(V59)5?`weYsx zD}0)cyC>ZFkA*w_B)H?RguDJ5;GUm5;eS>=_rcx&SK&VHJAuz}Lvuf0Q~vqjAIe(- zPs2wQpM^gyZ-@K1JIlw-EUOl}SxrXv|k&*UH@)y$L|Gq{0VT^ ze;VBLb3S}N^s=o1_*LM}zcoCm^W|6Yl)MOEK;8*oTz(SV?>9IDzQ{85 z^;{4CNRJb5g}ctb%RQfoKiB8;LBy}DdY*u9D}N!#^C{w8&wt>qXUxsb`{Luy4fk;~ zaOZD@f2Tfd0C)b);ah86`@o(5Ah`1%1$X{Gz@2{vd~+T5D!AAC0NnA9!=3*V_`biW z_xCIKiSpTcoBMB{2Y#C37YTf6`00wD2%oCgUnap1mhTF8{d>Zl{{Xo29}0K=v*86D z_d>YiZ-YDj9=PLQg&#M*-rslNH_Jbj`+QvOvikY>CE`EVTt$80^|HAN<)z5X{u74xA^KT7z{$IhJ|99{eb=?1hyPxO59sg&z^WOuXN7v7X z;C}!7Q*gge_(izi5BwFps`L7LxR0B>z21M%^V^!|`Q$#oQtHEaxciw7@~n$^*Ru)S z^=t?Cai_q2+@s*m{|ESM>cd%qUjTnc@#VlP@b?veC*1Yl2VYG69D=+4VYu^u33vW) z;m+T3NAvmR_%z)8+z{^gE#S_-H~h=-_2W&4dw)+4{M^8Af#=89^WP2k=UE?l$<01?ua3An?cGS1SJbz+Z!3 ztN0J$`)VJ*fFCJexUaeYu763m^G|>~|LSn(-wE#gQ{nDUA@CyH{W&)9li;rZ9JuSh z81DM-fxG^P;LiUP-1%RGJO7vPqW0xm_%ZU9yPNmR@oBj8Zw~L({lM+u|CCP+d>Z^Y z#UC8_k?@xke-eC0t?LYUUVbCo_1^(^{wm!0`{B<25#0H|gu6du{?^=o``mE%XW_t? zguDKg;jVv8xa*$+cm2D=oqvD0^B)3t{xjjf(Y~Ay_nhAXcl_OO=YI*_r|a08fsehX zx&IRussB6B!(IRH;jaG_xbt5J zcm7-8&VN7L`5%M3KQ9FSI^6vk4txae`WL+SfA8<&aM!;g-1V;tcmD0*YimxX!2P`3 zZ{g0rKl~l-?;qi=^Gvw&Uk7*mErCA`AJ%pCrNF;|Z?#apzhnR2+~=d@DfpRMR}1_c z`AUJW2Jcb)x`A&3pP~4@;jVu=-1Yw--1Yw+?)+E4o&P$x^WOz`{`=wX&y#__0C#_e z0w0FE{&Dv;@1yHq5bpYyg1i0|;m*G~d>75hcJSlmzlJ;iZ{gQ1U9bB%xa<5Q-1)D7 zJN~-BABSI|I-i02`zv09`}+j`1^4#}%yxfs|6S)ia36OOxgUovcWwRg>=KA~f0l>) z`mGDpZj@HfA9Lja9{V9k^B6*wo>~)6NwcN z@7wE%aKC;%ImnYkyzA+JyPmz_KJIk5k9#)U`7eZTs(rr-?)-m+4{QGa7Wjkk&lLY; z;4i?xRQ%U)*Z(8j^^be7d4FC1f^g?w1HPjAurA#F-yH7z+ri!c1K{f_|DkZ_KO64& z3*lbx?Qowj_Xhqd{7bz~{SJH;op+zgJ^vH0A2X}LUm||G_Ul`?Z?ETksJ<`Evy8l! zb?nT)UC#u#>sb@-x8Tk{_Tl=zxc}d49>&4_I^B4onZoYm|Y{ulm=5yPoyo-meb$-Kr-K_j-?q zJN{(2 zxUU0G!6)eY@N(d9!Pijy$8dk|*}vhND}Mar&HJ^S>Rbx$?>o)FU4JWlLFHc`?s_(Z z`}@|W!JYp=__E4>eBdX;-Jid}mr$PT1AiR;ie8U+2JU@-P44T@S2xwKKW`!4uit$D z_xC{lJIFKN6V3bOdd9Vws7a)8UBO%uvg#*z~|6h9TE6(@VOO#I^6Z2 z3qMKMpWETC|6aKBKL&UHr{T{3G2HS0hP$5&{G)ll9KRUc`6t6yQ6DxAd{6kpir)|J z-)DD3;K#u~RGy3B&VNPV4+Q==-1$F(JO7t(*FWZ;&Hc2`4R`)YaOd9u?mXKBz7yQf zW9$KcT64HB+~4O}47?Nmit?NU_xCiO0r&UeUkLa2QeGDLbqzjlW^46uEpZEcv3lDR z_Xhqjd=GR`{163hv1%vf51HtFTy_xiwZg}ct@;6A@zg**Ryfqx2j z{`sD+H>7sHG}b>JuD7`*)(m{Tz<&+b-KE5D;mc`Xeh+v2DR9?+HQezx!X5ulxZ|IP zyPmJ%j{gzv_$3FL`|0=<;I3ygxZ}5lJOA(Cj{iTnkDG|3z@;zZ~xRZw&knxbwdO zcmDU_&j0Vgzk~0&K)vsCJ=@%We=qtk;Qs#e#RFds?$0%>3is{E+Hl{FWE;HkI^PbT zR4+TRbKt*$Z>jiW8oY7dP7M4naPQ0Yf%gYK5cns7e--#L&o%Ft>zM%e{;mo4{;mi2 z{%#TY_HgfS2i*IchkJjgH+bXz9uD{Z{yy+i;NIV>8@#r^?$3>Z|D(Zc^=za$c@FOU zUo?0v|3*5Gz6pG>=j#c5|I_=jEPQ|EnHcya_>qd=1@8QNz@5JkcoFXWe}X&zMew~< z&+UQV8~DrcqVl{2KSG{(p}C)qPr{E;`~%;l*N%gW5mj`|= z+~;*a-1l1s;LiVQ;P1elf9y*?_p`D7aqw2vKOykd1K$q5uJTNQZzw+;?)YQjuKyCa z)twuK&Cs{OqObzBt^!-)A!Xapm7Q@ZI6A zXP>}N2>dj->%Ru>{5Qe<`!t_~JN^auTI$cg0{%$#C z74GECm@6#Ot9Hxqa(+@C94 zAHKTge>1pW*V_T^-&?vX{0ikc9PYjy8~6;k*LxM*>%BSfyWnHS*ZcS&-0OV;?)82E zcRioOo&P(y^UwZT^FBKN^6*ErkE_7@0(ERoFTn_i|jlCECjN%`Lzb$_Y{;vFkz~_CVxu1?-7(Svr%gAf@ z4O?dZ{nZ2Y*K=1uynm1FM7V#C?c^ZO28j3Xx7{4>$KyK&d8RbP*J@4Gmzmfd?)xqK z2YG(q5MR3=;{Kcx_|@#YXo&OO z?d=Ay&5!%}A-qNPd=>cj@O2cQ9I98~{k5my?&s2huLQqH`PT@1UHIP>zg6Hn!e3MT z)WD~~y%Q4{<`w78~7%0@7Ioj{~G>*@=pu=K=>LuACC+QFJ&-QlnJRGln&L8+9aL>aEflq|L zsr-`z-x%(B*go)G;O=L>!5jNofV-ckHTc+>Em=}^o&(=ZJ_GJPTm?T*@i)VL-Mb6k zulPZ@ud74w8H)cX@Gs#$?hkNZ_vU=3c^*9f6X33Ab-3$UFYry_u4j9=>)8cY3x+=6!Me3h;&0=ZSFNUQZ5uW4NzNyTeyh{(S;J1D@CI!g=sB<(CD14g3`{@4s5`LQECk4I%{Bp%_75I*D_h*m5 z_l4iA{KddK;m;`kq`=RByPp>aeg)k9d;;!%J_|3Yp4S6^7k;VYM*<&(yPtEu-@L!} z`Qh&8Vu3FUe_HiS415yY{oFM0ZQ$bGuv?UzPp|@{06Nn19$uuaK~>Ccl?p?^!oKWj)$)) z?+&~K|5WjR4*W{^*NVR-@VntBZBVcC;lTe1KU49q1pYSs62;H+LG!-2KMTP(R{cu{ zz7qTk#jg?gx^VYrtH5`JpQ`$&20jh${uBf6grB4QCk1{6-2J=>zPl`*8Q+Gq~%Y_rvCSxIlRphC6;T{CL&5G5iGiHi7R1e@O9rz~7Yb z3;#r3gu6eT@DsJJ%i(7z&$aOD|2KT1 z{73jS`CK10@B2RT4E!?H*$Vf1*N40Q&EOj-{|@l2)^glJ__GU>v{@)p!{=qd7gT|{tJIqKKm!=r+i-c_Vd=`77ctE z_!Pyj8u;4qT@^nS?)s;}UH|U_|3CPG%6~%Or@=Q@{P}^;fP1~y27WW#>wN+4^}Y`G zdOryKbNGn%@dx;K@;N_k-uErF-UR|*48E=6SAx3_tHHhA9pGNquJCtN=U(tRb=(8s z6XmA_em30o-vIZV+y+l8{{Vai`5@f&d=>cj@C}t`>Cc+?#r;_c?tNS%@O9xne>V?& zJGl4pAh?fv1l;>_4&3nA+utd%bT5{vq7!9SuA&(!4L8=Vjry zsQzEVJeobM*CHPuO{z>A0WRc@Q2{PQ~Yy*zY0G=@$UuxDf|@0 z{}A|`Uo_8^=W|uK=W}hi=Wvt2w}vmN{!a;fcev;60J!JvQ258ne_Y^ygeTOWbKv9U z7sK73zrm}z&O8Wr{ZGPO{|oR@)jtGxJ;QLE&44tG7v!JU6&xbtrX zcOUkFJN_WJXgm6ZrXBR~|mM=Bfbq?Zx46_w!izlFEMx-1GAn_-;Dxjqt;j=MK2n z^(@@^Ux9C_{G)KkC%$U#zvI(^XW+j5S_|&_*M}dcbxno457XekSN#XWrz+2pa3A+v zxbt5E|DE#p!5v?PJANqeVYqL9zl6K~Z{hoBU5o#xd0*Uz<=}r+{j0*aQJ%HoKJHF% z=bs8cP5C?Fj_-myz8rW3ev$Iu26z4Uz^7lZQxZ@v%JN`Ym<3EMF|Nn)% z|6@j*`|Ne4;XZB#{;uj@3-0{u!#7ZW_Jp6U+mZd?zFj^v@T1|r{rzL$XTp6Qz9jI! zzRA!Kf_zo@zVf!fv+x5IzdhW2+Xe1EU z_;h(M-1YatUH_|a*YghC^?Vxmf8f6UjQOs4-|ch5UFV{KF9Ub|8^B%X=5Y6IFSz3m zfII#axUVy32Yy4~w*~%8;4i~{y&8qPp2YXfeRg~rzLDl61NZf9ZMgSkL%6RGd%~T6 zKe+QB3U~ga;m&^{+<7j8`+9p1-0=^=9sd^G*Ut~&zMjnaLvx=UKR?{@li-}fo&%?dmHv@kk?)A=}7&B`_YyTWO^KY+r5xCd8 zT;MCi*VlR{!?%)e4F9!!o4|L1@2>dY!riz1;qK32fgb~Re`dhlhpXUT*Uj)>sm{CL zd&wV!yZ$HOuKyFb>-h@qdJlnamuqZyej_<-1VObADF#<`*J#b+#GekAn;4!CB;_)?}cBi`1=BX z6yBjeKNI-N@VylOufRWsf1>!cW^3MG_h)^$`?F=>JHV%Fy}Q8=lJ5oohy0+xkAT0T z_!9y@4L;AD_5D3R@EP#M6@Ojex4E&LGqu7U3f?^OKszz>I? zs`%f-OY&3T7s=0oUm?F3ezW{4_#N`U!ta;g1@D*N4}VGi1bj&TEc|`>f8oA9jG3c( zPJDfsFYxj3qR!uR;2C(A;@5`zy1F6U*U$FAb8ufjcMp6YxUZil!xvVaXTdw=J#g1w zhP(b7;I8vFxa)Zy?tOU;?%S{T;jZU1xa;`_?s~?~**p)fXBoKbnE-d+HitWYJGkQy zg|DMN9}VAM{>Q-2g!}gEBKTyT7nj3*y}CZ|Tj4t>&)?xbe;b!8*voPG(jmdD=voU-_^?#edcY;q-{GM>vzaM-v_46>e>puqWe$Ifq z{;S}gpPS*X=PtPC;X%0Tc>?ZwK7zZRFX67|N4V>mE7`oiu4f^*>sbQs{oNSudbWal ze|HLeD%|_KAKdl-4(|Ou2JZS#gu9<*xa+ULUH_wS$3F#k{AYoG4flSHox6Eoyxwte z@7H*^*Si$l>&?PlXFL4YI=^-f{5Np#*YDu2|Nr2w{{*<}KMn5suZO$;x59n@;qP$Q z^9bCxUjuO0GYI$me+$1xeVc7u^FI3V%lv^a0{7#W<>8C!I<^Yj_mkIwyUvZ^?<>!5 z;jVvwxa&C#?s|@ayPlKbuIDVc?+^6CT~8nUM)moj!2bb%R`D;vUH_Z#<<*~$;I98m zxcj;2Jk9&=`j>%w9##%~O}P8NG2HcU1)re$cY?eAsc_eSEZp^<1b01ug1erJ;I8LN zxa+wA?s<3`?s{H=dmi2n{6o0s;XiQK{{!6fFmB%F{dN5d!rjkSxa)6&yZ&9_j^7jR z_!9y@4eoh6KkylF@9%YR_vaS4_xE17`|~i|{dphmb$teZOy}=6fsdW9d0)K0;O}YQH-h{5x~&8M72MC)?Fk>%^H=-9=U4rQ!u|Zr(QrRM za|zt_{{`-PZiKs@JK(OT3U@vIa6d2f5#05B3I9ZW{vq%=f6=_Z3;KCKxa(gWKAZZv z65RE#26sPqg1i2yaL>cOfgcQa|Br#Y{uAMIss6LzuKxnK>%SB3`tO6go+se0=UKSx zc?0fx-h+D{#-*C~(e*3{_dF~W_=<4P!y0hczb@SKum#-pZx44rr^8+U;c(Y~4&3n< z!ySKb;19z+Z%+sQ65RXyFSz^jG2Hw6HQfFA5$^shw?Om$dR;5S=hFGRcHkSry}voQ z>+gWO{=MO@e>&Xtcf*~h1o!puM!4hefII$KxZ_`eJN|39<9~!ZKD}Ub|2=ORxaVOl zxcj+2+_$q^!rjju;6C3Eg|DQ2KN`M^{EzTgwgvQ`rm`Q{!ih4-Ri$^*E43J=6&?@04u;<&qVkywcg2rZw%i-@!P^(|IYAt6#rYe z>)#*lex3$*{pY~l&lzyna~0h4a5LQX+y!?%gK*a~1b00j!(Gq6;jSmKaPvO8o+RA+ zI}z@BCc(YG8wb7>-21yT-1Ywk?)}{#?)ndbyPs#lUH=7e*MA$_@%O+T|61Vxf_uL{ zgL}PS!@XZ)$N%sB8VC1!SB1OIwc(rTe8~ph4)=cT26z2?!Cn7BaPQX5C8h(h*$KJsE;9l<|aIg1C_(jV9DctM*58U;SU95Q@UH>?^>sbWu zdX|Q}|5>=}X@@_h{!f9sp55WowcY~U^%UXm&)IO-b0PdX)pI-C@%O?V|90RX!aZ+a z1^zwU`!#Oy|Gi%e!aZ+G1->HO`@1IG{ag?3e(nKxANGYmq<$6y?}U3E&VYL!&V#%D z%iym68o2BK2mD37pY}Pp-?#Hd;P1ixex%Rgem~NG;T@Xi*_UYEU;Dgp_hHe%mx25F z>Yd;pYQ0n8e!tMZaKG>CV7S-Y3HN%t;J$r11MWFL5AOSom%)9%?i%=9>gO%+Mdf$H zC&(X$PnQ1^zLoqXxaaUqxNjdng!?-A1>DaseGm8j^EsAmo)h0cPr-dZwgvu@>R%r2 z*E?2$zpwZlJUv_eeaIc~sq(!8pALUa@&6b2@8JWAKQr+2;dg4zFAw}$_ydZ69`5zN z2KRd35BxLu-Kzhaz{f7tyuW`}{Ct6rhr6HYz%y|7bDh99f?uuvY#sQo;D1&8?t$+E z_kJA`_)&20R~hd8s=&Qpw+DVN{6Y2qvA~~(yZ^7j-RFP7KUe_!QF?C;Ew+i?)U|lY2L3c^>cB!>t7M>^KMnR>)!_M{5u6+47@Y&9{6plzYO>F z>IS&$zYXr|!?SSbe+BOR@4}t`6S(s)m~QUB^Dhqf^?Aj>SB1Ntw!pJ+@9(y7*S|B| z_3s(@esIsjN$_6n*BNm4p#t~$(hK+X>PficUkLomz`qTAv1Ob0%h!ix;hX7tvJu?z zTL!*Q;0FbMI^4%S7ybv;b2HrWcLn}J;I9Y%Eqq@ccedr4`{sJmaK~o?-!kwW0zU}u z;~oL`oSy@C{KbLa75M#uzYAYp^ZyCl*X_~36U#UE)93FzfiDF2d9iHZzl8hzofP;6 zaNl0<1)r?-9sn=NkAS<*QuBV<=ZEj1_$32h0sgh(w}87p+ruxZmy_rSJP*HI@zVo89PWCqfV-aS z;CCti?SbD5*RSD7JQn!Va6LRpydLRC4MU&6;Lep28Yz!y>c)^M-uSMY-se;C~L9|L#(li|*P7To!- zhaaHh-U>fN{xsb2FTtJvTe#y51>OPwQ1M5@UH=Ji*MBD5^`8%S z{@dWXTb{TF?%TUZ;m-dQ{A<`*lC?FYveJHwJzO-2474JfXRL1@8E-;rcjL;>W<3TD7_Vj$bkG&EZ;BVmr7V z?k9d7_;2C*HCBle;Ld*ya0DSr^6F^-sxQUyz)x}zZ$-P;va`Q|1scN?xALzR_&RXcvq|7v!(Gqx2A@lNSo_!EaD5GG z;`f1{0@troNL&N=A#Mu%AAvs?_(+56El0BsF&g-ytv~l)A1Ry_zYN^xjc^K~dC%*mnzBo^^1~dP%`~FV~?mT*X=}+-? zofbd&eER>}kjI`4ydCc6XY%m0elEa$|FZ}m(#h8e_x;Zj-1&RpzMol!JAVc4`_EPQ zI{LXEzL9<&fcv4(?xSxOPhWq)qGTiI0z$fbGUic*a+z0pT(bd5F;eLP7K;VP$bM*62;KT5%_47#J zqj0a&uMc}p?0)~6-LI#o^gz$<^|Zj>((%%PXW(n-XTL7({Ps4)@1~!#fw#lY(a*WS z{ra|#>(}dxi1+&wI^mw5F1Y8X8@{RfQ-b?_j6HDozYO=jR^Y$T&sDhJZ_p2SJp=HB zejbE7{|G#%b&bM*El=pqvHR@vC>eMv@D{kwuXNxUxX-WFz}w(Hzp{b1!+jp*0`Gu( z-}7*vUj?|&uVUc-9Dw`mIq5=tTKm)u_jy+eya(>{u^e~>?(?xX@IJWD#{szKXE5-g zz=z?UpM)Nyxo=&X+a&x%c?y2Ayaj%yycO=bYJ>k(@maXv2iOkx{N&)iE_A@%&m!FO z)(L-B^>o2skaxphlb7M1w+ehY&0#NmMR^~5qI>|}E+2$%BOiiqFCT_aktg)v-1Fe~ z<0awyD?SB3P~HMRRNe~jlDEN6lxN{5%iG~+%JXnv-wW{P6kmkDDEH@P+=n;iU5I~Q z-VOKXv;284=dt%7-ru)e4!i>Q_jdLM-WPZ^@P4?jg9C71?*`%5==w4g_;BDOfsY2B zNYuunJfe!^f4FBnR3;*eQ3;*eQs~5^W|Gv(&1fC8&1NZeO z3vbo+tsTCmueWetmpTH^2VQ{t_gNI-S=}CW!grK+!F_+R8}9psWw_T{fqT8ZaId#7 z@M_@waDU(a0DNEdc@Xa3FE9jme}>^(`Su;|{*1!ipOjwM^}M-1EpYcI4R?PsaQ~iy zY~by1_a_H;e>&jqPaf|66yWYp5$^tU!rh+|+_#TC@V{su%W&U*RRZq~yf5%-;Qeqv zFEap7Yfc8?z8($*J{blk*z&5x(t=Oo)L(-V)sF?SbE@`Ron65AO9=;a+b)-0K~Hd%c5juXhCQ zJfndp=5L-K$0y;Qw=~@A%D~@Ne_G+bpV=08Ht_bqbAflj(|W!v4^QYkD!}KG7X$AM zyesf-xW6yA1h440J#arC)C+h2`{3?>74H7`2R;z^Al&^Ng1eu?aQAZr?)8qsz24L> zn&;E&ZGn5eX}H&$f%|)*vw^q6z1|$$>+OJhy?MCTTY!7LU2x~=4!jh258U(C3-`ME z;LGWJslxrZtUvI9zy|{#3Vayu$6q7xA=Nnw_v0hKG0ykL?8#K~T>1M#Q*iG~3*7f} zTH)?z8{GZO!rjmIz;l6jz}=rb-2ExQ-G?IF>+OVly(PHU+XMG{%W$u^0{8dURs-*c zd%Xj2uXhmc^$x+k-eI`cn^>TEPJG;C;Hkh{;C_A}4e!$RKLanxvv7Z(XFJ^ab8zSH zfIEK?Ue@{58F*LV-Ei+q3GT=5J#g1qhP%!R+}G7A+}|JA4|hESaMv>kcRfRJ*E0-v zJ&6UI=VwIwn1nB==ZjPDh2<^qMdfLDt2_hWO5PfH8{EIoJsWsCe0Sx~!He<^`04U| z;03sUUwIeYzhAx^K2G^daQCMNzNzBNaQ`0m3f$|h!hh8M_QPGz0NlU-eGu+?M&RDZ z(ZCZ6HP4&llW^~ED)1J#`;dlve=~6JZ)@OfaPMyp?)p0d&j((Bd%a!o=d|zL@UJ{S z@UP`P@NYan@T8uXufSK3_XgevUrq7V!297FDSjaELHL1+AA%RrLo`Exvy~N&Qa-o(jALzJc-1)l$FTs7>9=P|n7w+Ts!FNzS)xi7VJ1Kq$eujJ) zey4mS@KLy5mrX3veEqQ};om5KD)1Kgf_gnE9e4)5qT*ZOZSpqwW%6v`?eHfQp9{PL zzKUL-$Om44U!wRf_}S`PH~eaO3BIK2?18&KW%$R6ufXS0JyrN6I&MGQ^$fsAm46WK z{3Gz2m46iO`AjU@Ja6_S+;f-;yan$0Ob4EUdp=tOZ-aYZvT)C5JKXb`3%mpF`OF7i zfP3GI@D}ZRC*1Sg6?iw?^IV2|zbb+E2Hpqv{tm#0G(Uszx8+0d_vORzPv!oQr*9vf zC)v_Ght89NJ5LMzYvoVFOX`0H?tW(BV|9MD!{?Ic;B(76;GX9^-1AU?ujuO)-1FQG zUr)y^!8exoz_*n5!kwoN?mShv^Yp`aRQ>^Yr`9zHKS4eM_xo2y;nS2qu~_q*>@QEk zesW?w84*3{wzGNb+y9}kmup2DNg}@k-P}cDNiTd$1TBom8S=OtGo=q zOJ0HBC$GYtryuS-190aVgg>PGL-4HDI}CRp5{oy_!_&%>gg+xs!Jn761fGV!toRJv z@B7KZoxdIKJUO`YbihB*ar5vt^``)L-@4#s#dpK6l$YRF%X{Dt%gb=TucZS2hvIwT zPs;n?&&#XuA$dRiJNZE1gYY@^{)3^whv5q3eq)xc&DZxDtJ#f!M8SZ_r1l}8XAKdd$ z4ZI)jc^C+M5bi#Yz`fp4xYwIlvUz^y)qW-6t|t|E3*7az!rjldz_Wq3!`;t3{BYG@ zfS)5T!u@`!PWa7=FTt;r_rR}}m*F?aD{$wp!u|fIe)x%cy?>y=b;+K!frD_pJeL@0 z@Y+YL|D$?F;s2EOUrsxG3-u=#cn945 z%r|&rKMR3(HF&L`7pV{3aMxdgyZ#=y>n{ghfgh>$R^hIvAAXnW9Duu?LHHcXKLU6B zDEvF+Pv{Gu{rD@PJW06or{R8oPX<15nfhF|Hh68nJm+ojE$iWlT!Yv4>qgbn0r&fa z^6-ZgUx5Ep-UWX~-W_-e{(|Cr;C}y58UCi?EAY4FRrtH|{=f$U9}Ij1{-N@Z2A-=Wh=@7kCGJXXP)#&y{z=%knO`Uw7#aycBp3 zd>_4jP!7BTe_8Rpf%m~vdVaYIUtQOQe)uNx0r+|H!N7+CABJC{Jc)Gu#P_@%taT;f zUT-S!7P!}&hI_pkxYwJ7yPkIVIjS=Ucm58z^B3Wc?}V?V{&c}7%e&zl$jflgZ3X^< z=D8RCvb+!O_p4Rm-|M*j@Y!^I8GvssAB0brkHB63DEvXynOHV4>#s30|5>}ecvPN* zKOs-S{eHd{xcifayZ#K^^=IL(za8%Sb8zSHfbXXM6yeU(8F&}m{pp6gKP9;P(*t*Z zdf|SbVjp}J-SAi8tIPZ08_5UYuV~%|;Y0Evxc6lkex~}FSgv_~Tz?Y2nCeNvmy)-@ z)ABTYC3yz!{cnR+Q^uXPpGTi;Cz}=rJ z-0vUlhj**b1MsCiKX6}%N8rvs3O`Eu6U#TxkMk$t&Yy-mJ_BD)b+*D+l()fGmgnH^ zLr38GzzguJwca8;t@q7z!u>v{F8Gih$9BWtlb7J{XbyYe3EiLQg?qhyfmh+KzaQ@U z2jH$}5bkq+3Pfw#f^{@^TpN6l3`d|!DU?s^J= z7X$Bvzod0_!Cg-`-1U^ zEy10qC-7dl^Y_7*(z>c}=kE`E2<|+?aMwQqcmC19Qxlr!$8*~fcslS5yieX` z9q<=bXA$16es;otCGUdoBJU2o4EH`(;EU+<6}^G?!B`@9&0`}LS1 z`26bIFnn402z-Kk6uyx>^~>gYbAMXk?oS%-`ZI9XpM^VrJA7{SCkJ=_4!H9d;qFf- z-2Lf-yFcCV$?8uTzJ$C2Us~P^cm6*3%8DO=`}0wQ@blH5p}>dXcPoAb?&n=c;eH&E zSh;x~{JeA$eyy&zX}Igpz+Hc9;BD|rReu)l&ug{Auk`%Dz1|ME*IR_U{!aL*%HIWd z{%*MQm*M`LSOxx#^7jVb7kD-Bez+fZ55S++J`TcPkq6 z6+WQ8^#?u>_#pgaf;&%7;N`$8@X4yP3is>I{qVeAe;){Z5PqoQhu~v% zJ2ebX$w%NH$w%Q|$WyB|&yVYGf$yMt((qr&Gw><$R`^tT8{GZL!oA*hxYwJfD}Mn# zSzd%Ye<$4eOYqH=rw8u-l;Q4A1@8Xz!rh-fxcf5z?@~R3@TzdimcvU_Ke@H$Ae^fpUe_TESe_B2Y ze?gvD^XK`g&4c@sgu6d!xcifV|5f>0;m+R%cm5pQeeMW6A9w-o{uklye<$4i?}EGk z-EjB61b6>?;O>7f+qwrrUKCxEw{J5TE;Hkh{ z;0G#yE8O+8!Cg-l?t0qc&Yy=bq2m_dE69s*AGb5`65M_6f#0nBW%&K_3f!Mdufm^)I1N)pM*Pq8vd;EWZ*B#Tj4Lu+u(1=b8sKG1Md3| z`M?YC#dUw92wz#=3Ex)U1^4ZHH{7@Hr3P=jeeVgpx4~=IbFa4#?)6sTuD>7d`iJ1o zKMem){U3ol|0vw~Q)@TR&xYz-3w#rK8os$a1K(Pnh5NYe@KY3@gI_4`fIlQJ!kxbp zK3(x$aOdxaJAWDO{1v$K_rjgO4}OR08G!q^gK&R;!4N#TSbhJ7;p@l~>oo7L^C#i2 zsh$+v`CH)5-wJpBHn{U=;m+R5la38k--(T@X_)+ps_*L=}-1&RpQxso@JAVc4 z{8hN~_rslk0Pg&Q@C#JW2;9dVg}VjZUs#XV(s1X`z#mhd*1+4~k1IY4 ze^TBKe_Eb{KP&HmzaY=UUzHc&Z_0~s_oox?{*>VEPY?Vauzrow&gYaGDBXH**h0mw>#Cpy1uz)-XUqqgQFD7q+FDXyM zU4I7d`m=D?-wsbGe-7^a9dPF_2HpujQ~A5#eqOXY@KWGC@CTH?7w$Uy;0G(d3U@vI zfe!>e2zNaraMv>mcRh*qo9D;%B;n4VhTp1nW#D(pTj76`x54k1=iokW2mA}g=iz=H zyAXIW@J{$@dVaeEcRfAuHYu*3hv{!1l|gFpWEPjE?GZr7Ji_-9bT5_;m%)xZ>#ts-1$4<&R>E%e-GUG z%W&tfz`K{MueS={K%cYghi@z&fam3d@B`!{@I<`n*A6!}_1sUQet&pR;BC z$3zmopFG{*wdZpdP1pY*17BR;3SU*;246>>gJ<=*tPc2g@;p2zFTnjdw=TFpH`onN zC{GEVl=r}0XD@x(dVl%?uLj-^|CRC#!2S7|LAdvKsKFcecR29GM)i7Y^HAI0vOZUt zgjeJ#xIZu20v}d*;{suX^%u*I5X>7V+3l3s2~NV;_7Gc{T8UcvkU4aOW8gd?fHu`0C1^+O*!kF`6IeZwWjN zUqX2@@a5%MxbwHeohJu(o({O{FT#Dh&*Tk(m_ex8SMGyikT`j3eud_Q@*!N<-t z*OP&-yL|nBXoYVnZ-cx3Y~by1*PmvayoUC#*I^^d}xC$V`wpRXs*lMFl!cm51~ zit22IJAYf?Ik@w5z+HbH?)-(oyWrzgXE*#8@)CRjc@KPfc`tlLc^`abc@@5@ydUoK zaR~1G!*J&xfjj>w-1$>mG|z+cx4@l04R`)b;MoRmJm1>`&%w8?mzU^(=j6o(uU#L? zy3TjP=hpjuyBfS!kFPV`@N1O6+~BqRcPW1b{x^9q`~`U*{0;d4{55?K!eHP-fe!~h z68I>*MW2UHZCPKquMe)LCGd3M8Tc1kR~GL4?Sbdu{=SJ0_&dsJ_x zq1?|5{FHhbiEM*6_Ol)Ce&*orX9wK<%){N!0{jv6xd?w;-U)aAOK{Ia58U;a;jX^| zcm2I^*WU+s{Z;r&s=puZ`iJ0N?=akXM&Qmf8hC2k=6Q4e7Wh-DGYxnCOyF6#^R&ZV ze-7^a9f21cd|bmkcLv@CpRPIYh8N}K2CvP(A74}g?+v^U-jS&vpbGbOxIgfLzz5;J zJ`cfjx(*D(i}J*F^}2lh=~SJ`z*B*@z^_!Ebl@3ypW<8Lt*WyP?seth&eIWiKJWtE zkH3n6cfvR!TFYs#M{cx{$DDdIHM*<&(`}u*y4$bpsPr`jWo`R2Po?GB4 z-M?*x`+izm;Mu_2;XAKfuR9lb2fU#8Jlxlr0(@Y#dj2lB^K=JZ3cLq?p6V$FUV&E> z-wXHmzx2WVc%jb8i6u!MYp%aO>v<03GydCc6>vDm2z$;o;9-dR31-SR63+_DKftLdBfj_5u%7Itl!;0^Px2pa= zxYsoRcb>t(hXNml`}xL^z(?VJzA^Eu`n-7Fe4Zu)PX*or_jNK2_w!2`czM-&9j)+` z`q>6|pL1~cp(F5o;03t*Q-r(zPPpqY(I?i|)dTnQrRBgYa6d2F8+c#f)xi7VBdT)% z?)!~{@Dc6TP=nWQul>B!F#MW&8xo0~>i^++^Y^PJ;a97k6#P1Q3*7x|g*$&6-1)Qc zyOh5j?)-VU>nXsUrwDhR&cI7>=kI~vq&mxR=dT1_g*#6_-1QH@oqsU!kp^#^hta?j zJO4ZnwfHkMCrNloo^J5k{k>Fc{SPwmN7tx(YlGMFdk)*+&(^~exdv~{-w}8ozOw2m zz}J%(;Ty_3;aPbJ?mRtk=PARdC{G2xhrAkif8Yb~yz&gf_mz*p50j4uo|sbK2wxwL zRD2R%lBeN+mS+NQh2N|AHuyi~Irvxd4)~AqJbZo4VFA8{ybJ!Cyc_ao&$O;Q{0n&j{++xFevsDH9e6459{6#}Q-=Hd%PR0k6kmlOBJYPE zAs>JrB_D*lo*}sF8HT%_#IDWr(53uI`04T#yjR`=ze}EmKQ7O}{e5j&xWBKh9X{{c z^}2HnUb{Vdw$6zT_^`a#;I-Q$=kE->3;v_(?}q{Jc>#WjybJz-yc_jyf*(6m46sMT|N@{XyA#CS%*n@9-Jo$zj2*Du6Fnoc@DmtyaVoaum{skMi`utMW2kc`EQn zKdt;}_`C89{2O^IJT%26z4(`~uBY2mE4r9)6j;0Qdc? zF1Yh|!=1kbcm5u@^Y_BDn$JG?GV9m-UTyH&e9o);rTy@{@2@s^Z9adk{KN36@)7tE z@=^Hl^3)#9^I&g*pQ!jW{8V`cex|$?ezv>~euX>-cRd|&*OP}|q&x+<^LN2re>dFq zm*B3y2kzsR;XZC9@G9K(^ut}x0NnWp10R9A{!zH=Pwd$|56+(qJPr50WZ+&`E8O|p z;J0WWv+%#k+u`?negf}+uh>>!XC9uD7XmK^-U;{jA$Gwl>(!6j4fpk-)ZmTRhaUJA zx<2$ac-5?}y*0eh$FX>(=WZgy*%cA-KO^av1LZjKE(~o>BO#^2BfJ z$M@sw*X2q0hw@Z|*ZMh0eQSZcpREnv*v~e&`GY9wgw|2nY&ph1yDZt&I zBHaDygu6do4c^$FZn*nXZtz-vyxt1j>+OY~sQKxGFRuL>fUhkdgs&$bf^Q@rhHoQJ zCva-p%vl{c3@q>-mBE`j&xvU$St= zx5NLceayjorVKqy1&{5PibA<@U*-PcYFoDu;P2+i^}`pOUMV{>GkXT zF&Ov|e09YS!`GCLz$eQ`;akZQ`!vtPHu5BVdwCk}JQ=w2w8HmNo;J9@XFL~p2mB%B z$p>D5zoYmf{C#;R{9}0+Jh4H&U)}J9<)y%T;EO4~9C!sjQSrTj_rZ@r&c|ZIF z`4HUuG7LXn{TYFKUq<0?Dn7Mu^SnJTZ-M*!+0*b>6`z4Se-?he;@jaj$#Zb;ZwK7_ zn-9DI_x=_G?}U4Qy8`cqXSH7?cuw8}_dJy0o`(wD^H7DmpZ)NQ)XxFP(r!RKs<&%kTPsr}X3 z;B(b!)<4_euJwH-t^NOv^(?6Wx#kL)m1n&MA3ICx|JW6t(x0uCtp7(XPc6PAKX;yH zPtR8Wd75q~9pAc4-TC<}zYq4gTyq}(zT1_iG`rtN^d~%TdeGR#(Iuu@LIh4JOkdPpL^l%|ExEF%>1)j zj#~MzKYpL&QVm|qGe+mt#0H<$AH5#Bc7xaA=T`i&4c>U%84X_RkKdnm zb%WRPETufRH+b#1em(K;4PJ|1QSrafd0&fdJnp0huN~K~Gj7=6wLH_5XS)Wk z?c!4PeYJi4z3OY-s@B?nU8+{)|9zh4+FYB%q9}av`n479-QDe-(aN6Q?s#`gf7{Y^(Z0Us_GrnHHPQIyXj^AA67T4a z)epF7l9N<+#NyH3SaWCT(rvN*vF-!03p%2mty`jTarbxh^hA4Cmr@=MH&l3<85KJj z^>#~@#HGrY6jkbl^v60o_D4Gp8Aa`pNH}^h677kHA)wAEP@Gs2l{mrh#ap+e$ymKA znRud#q6E}(YvaE#yUy-Nb0=kb(L2pF+S1=1?ufN@LoL|f+|tq;wOdG{P?}vOf%G=V z+N01OZbiX(M0Iw=AYLJ(No=?+6{*AO?Z~CAC>(A-crXn0=<9|8b;J*a2a1iNNOxCP zGzN{0b;qMcYu0aD)E94#>{mHO_lDbgo4Zg(dvAAt5BkA7{k(6t-=Wg$<==Z2>G!DgYWQdV?>me1ogV4$Ka2DS zJ<_*&qz@sEOq?1P;FFI%Pjl88D&Cf-jidPl$#SI~q1+u0NRDr)2?xoaOtdY}LWMgI zE|ssQDJs@5<}Y`=2_9vRow$YYQJ(3hr^k7?{$$j(Pq8ZBUI*Ev6pc;#CprDYAhP_E_;2`%$lsPT$v+3*Wcj~^IN~uWxzVZkzb>f)cE3Rq z{=A7_ulC<#m#^m6RDK@5$>pC$92KFaGw{jB{yRT=lghW#+tCH^kUv>}cdV3r_SirP zrqnYRbT9r7eqD0BK?#QVAB(SDzAe|8s{Ca6*?+%cUsCx=K|XJ%xa9iJtP_U!h~xa) z>20?T9`gH=7`R8JSI3-A`jF!j&oPzWpOpT8RC>Ffb~3yEcK8OQ_tHP(TOz*(1tj@R z#Me%5=lkEolyAQuztS#9xpsOx`lVsYZ&2kQS3oL%625kNyZjQ=8(E}$idRcic}AjO zlCcXx_R^o1?eaH?Wuo%Q6egFye3BZ@&;SN|s-InDYOw%HP)S`^G7i{vn%Tl^`i- zyo!Wg{pZ`N{yl1)PxW7bubtkmKk<`XHWjt^GLipr8Z_}K!k6a1$?0i$6-|Rj`~3MD zNx$=4EfU`3`qSLoEB(sM98UO;B<7OSw_o1T6UI^_+T2yty*Lyq4!Ixk%Wp+l852sD zR8%dgAn%^6tLvLC@R@Form-T0KVo8UmdnIS=4vIz%M!*Cmy`qTgONK9Uz)R#e}Zyp z+#z{W9E|~!m7nbKROO!scRs%Qry=sEhIya64N*@Y&pT(O(J-`TWrKfBal?Y^IdW*t zTnav&cg}U3taj_R!9Q+k7<{|o$ZH!xta_t&+`Lx@>*h8b`Rc}9yK66bx-IXV)rQe@ ztaWz&6X$`QFOldQj`1Y3Y4De?QZ^08cq_#XUO79jVeo5Avm=M<<|by`F!(eZs$}7b>2A!CA3jrddLAmHmd&H zAc2O#zi%1*JtQ!kDj2l*y#C~`ByLq1_pG(uF0o*oSAV*#cHVlqB@|V*mNm24vKR37?5eM?0y`IED zpN41G>`?9=m@54^8(aOh_8Hw+%3R%jTkD<0fZ ziIA#JaM$jq8wQ`@R!ESqqhWA z*-=FQ#ZAW!KzrX}xk=xEu=b3+-bpFXb30_opBe^#tmO;&#itB}j{N!U_>_|0?izfR zHQME?;m8%mM*QauLpPI>G!CLq4Am9GHZ;upe(hk{Y^6O~g%bO3!_bYaU4ywI2BiDe zV5t(r({0BaxB*E0(GyOheNHzFt_hOulm3mq{XJ#gsA~k#A@WIH&#oyXry+8AhOXg9 zt}=X2kUs3|QJk@24D|;aj$IK#4^!O_&A$gIWA)IwZ20$*zxHGhzn`ZcM3Ekm%bM|Q z-AWZ~P;Q9aXY1ywAnOv)8!5c;Rr*z(jCD${k7f{$yjF->>mta2KwnW}fcA4nFed0Y zPR~q~uZKOc6Y1UAk!S7pT4;3BvF^g!txd<;^WD*7Zxgy-sOi|1v(Nd>d<+^Q|AwJ0 z`Ga*U8^};Vf`hMf?$E}=Lt9qD033jVYY3e*-GvVK%%+OucpD%T$GJK4!`Pl`|pw8`j7nG9LR@o_S$`^ zHvIH)VqmCm<>2bs*$qPzPs3_ITgM6m1Csr0ohVIW8Xga9*vYq1hBq#GoU_Bag+D%Y z{c%(gmMNFI)aa5^YW%I;iXIMScE{@Nb0NNB*v@-MCepuX+#cK#YCt!u9fU4m4Cnqq zHH4+WI9~E6mWn7Bnjwr~8Ks?UICjbG{4dd*<%tM{6ZHA!&v6Ga|Gll|sDB)>Dw7q-asM@=dQzaoNUAs_v2 zd{oJ)BY%B6p0x|YmiiBEp=SEsP~A%6`vb(cYfLeoI~*sq_pg5XkJGfz1O>paVaU15 zV*A`>aYy%JeHt5yFv>9M8tUuThT57tI-{-Cp}Chwx^dcaFdi;y9zYzn@aKhAEDz0% zboa;N^QuG1_`d#@FdayQ`#LU=p`GZT}z`?*h36U8^fodI;Q4lys4^OGZ`s4j(;7Olx zuNnBd&v?`fJnb`HH!*+J^3H0(TPp4`$NsN`%#D(w(xQ?QV>OPnn&Z(>XS6LIYB>~- z_J#UmkZE6kSF}}$Ji$phXesUJE-7Dw6-Q&Nr$4@hR~_{UNfH8{=_@GxhW_|SGDyhn z|6JhP`(=%Z)!)^`1$A%FPhOBG_`LG-zdVty2;~L&VDuU@l<$AUWb50D=!+@6|D)yx z3ItW~QF99&m*?jr6=#%}&qck9Ooie9jOni<^0ge~Lz|52&BFT-muChEB5{Le;b$o> zgG-jU_n3vmjRcOH6FxuylNrr=3H~EyMgV7-M%GUe2nPRz-|I|4-)f6Z98+y<@O4{H3} zI)yO7AjvB$2g8f7@C_G|S?IEvImu-$bF#}$<`iZ@>BS<-Y(MfUp}P8wcY`A=mPZ*6 zBW@-6M;Rm?-Jh|NB1Re1DnZSkFU=dY%yETC-AJh5Ilep?3UEyfOVkXBVqF|PJC_LJ zFU_V#5&u%nzl{A{+pJAv$NDL|Lj3OfGvFognB*}Zwtqx0S)0c$XJ{RMuQ#_kI0DPQ zR8Q7L`Grt%R+6mk}OlbH9i{zQA_n5v))GmoO|Of!z$7TieywZe)cE zsA9!J*%O+DG?fx)$d05-;Fn6<~Tk-LNfA#0s=2!TQh1g)Xm z7m#H4)_DlgK8j)8geo8t#NLLluVNjI}VVSS9r#Q$-S zKS+=rR5PJ|%Ar0E%BSrN6zjXo>HUbNK;?=GLH-Nh9}|=_5+kQ(Uw0R6-Pa$*=AMNp?Q*lwCxSK;U+Dz=2S0@VL7^`NZIeTH zGSS2-@H+(F2IxR4+~D&U>mvd(-wVY1ZIn?477gn$MSBSGpR#FU8YS^(6ySLf|I-05 z#{&3@0{j}p(+L2nJeyg8en&ya<6Le&zHaR`ISKS93c3=oi-&>gZ2n&1dw@Oa;JI~J zdKwo#nSz;j0`}2FsD>J&P)`BzeFw#PkuvIKPgBs>0DH@U4v>MB%2X;q4sPR3!&mD4 zJkC<|Y-$v02@rJ-iX^S0Rw~p^AUYfr6{e$(E7a9MyvIiQNGoOLZQUk-D=FPa0Qi^< zGP!ACBcL2#)4m;oOaDdC zo_5lUb#E#D%0kFYINl{-!kE9t&l?1$VNV&C=JIDO(Qnu2FM;;MB>H_q z=PvRVXn#+lKcvwo=A!=i>h*t2qb~(*xkHDDZm{d-eUul^87?&;q#!KB04LNWd0YG_WOwciJex4HvybhfVV*WyA4p8kCMeC zji2U394}16S27pP+O_n{G;T>_PY^I+%+>hWV1uPJNpW%Mr`!~CBn1J@0sOp+QaBYC$*Riov42k7?`hUzD|GG>#O&zC@dJ~1C*uUP~A6o6mZAXV2+tss9su2AEvxAg%n z{VdSt5na>uYqj*W-`bdz{K_(?E{_aMA&3=Idh` z=(_;?&;ei0F!Q~*j6K-w@Ua(+dFuLX3M19yftCGp>B$bO)% zNkA%)5pXT+9RNJyfSiF%A+t2(SAlxbL2`{n+v^2n{v56a)F>S4ON}*6`MZF444VN!g#%*a?dBfH{K^V4*2KttXG)aO%?DT;VZOY@(=|0*#}vQ+QU;C`(B3h)&%Ff&^JJEB>Sn#0vuF%3lI#rvoRS3RAU# z`76*u4fGR4|33*JlabPN=L^yth1Ee0zAOWk%MOjHIiS_pbXWMgHH&HRivaB(2JWU- zu;i_oeWQUe!EATOoG_17rqv{jU(%b<2eI9Ap;Lwjsb7c_Cr{>^a0RB5p z8V6~z(V0sy>lwF*UjvzeT{x|qC$+mIdEQMj4e+HNN!)gnB;RzCYy^Cdlf(szWPc<; zF86YvZX_hnZ@3K{e$-U(Re_uL1NLzzQ)+)DjW-3r#k>H(x9$8C{T~|r*Py+TL?1Jn z?GEh(nOV5Dm5;AJ4Vocz=4(D^=i795q0ik}6}MP}?*z2NfjfhsLT=EIM}WH7K_-iA zkA{2UT%kjbUrs3A?k31T9t=y7g>U0@dIkUBe}IZi*mjKgVnVs>?xA zwN$|eHPH0{oNz!+cKZC{{TlqUfPQZnc*^|ZBU-}WA< zGNZv?(%^M~?j8m%W&~Z(FsSLnxCaE?~-TL`)$Hc@%}tISr#1-|`SBzhc4=f&}n=0$<RNm^In>mW zO(W|Kl-y$AlYisr9P#{cbdK;crYY-Qq>d1IOcQOW8s;68-9uEEk#!~fxMqXTm<{EG zG>!Li(44+AtCix%mge{iR$2>cpiKos*7Hc`FF0oXujS;v&w7*H8?C$*6h3YhvwM@( z#P0j8z3kp>UB~V%*1hb0!1@xqAGE&5?yc4AF<->K5Bh{-N&s@u={cAo9uqVdY#=* zTBBE_ zw2V5!f7zPJ?o-wZcE4g>%I?$F)$D%NqQ~F-1xgn6gj-M$ zG$(wWJ)_MDzhqCAIU#rfkqXURs!Kt^6f>8ET~ILH%q1xo6wEMlNxTIG=bE{a{5&&P zlFu=7DS6bu#~e4_%+5SdowALaE{8dFvq6~$jJX&;ax-JxM03VV2xJklEqa+TZl-{# z6UHe4VI@IZXWSTfo=d(tk<1I7aYaJ^De^o?^m0nhKg16|hhdDX5fH`vhYeCBbt+0J z{%n&>0tydO$W}?e44`S}f<&H_LN0MZtA+)&x}bIk#Kn<76i=N3qL^z5REy%2_zKM# zRMjks7v6dWOc5U=Fw0s<141IvzG&wonH@8u-EGFW%iXk+;;H#-GCtHQ&xjKkw! zp9~9P_$L%wvwh^2SjFs?S~cu0vFO1;|AcbuB{1%vP+|R)-KEy=*sZkQX1Cfp!0s~Z z2)i}bjqEPB?qv6Tt8NXYUun@zApe9_)*6nlv$n9i+6uE-GP@hBud}62uQAcB9SZZ!(=Wos5awcsHpDq|G*2E;UTNh$(G|?Q|&T zaGD)C{Rg1^+@Zfk zD|N}bL+F16Er3|5OxGIFL--mK2bkW62y;5<^BfG9A(+cu%qq~=IT+4I%6S)K%ofnP zY`PqA3jI2vUklnXn{HCE#*HHM<1BR2Zu3C^9wQKo=(x~t=L`-Zh558YGqV119+YWf zWB&gj4xXyX6mgRzsShH~AYqsks}%mtX*a@uA(68Dn7_z?TzFAdDFP9SF5HR3A|zUX z2;bGjBd*86|9;N4aQ9@2A#^5r#{X_AyrNa+q)zJ;LTkqqAcPddV!n^z(J2)@1# zQ;tG9Dx}*G{b8FVC&x{|7?XyC{%M;g5;d}DGVPySZhZ_{`6pLce{3Lksg>UdcS?)( zB8~o2BGwpG(?2C@-N0^}btk*+)+gBAYdyzqhxKE2_gQ~rcfXarmeO@vMeKH28`!KFlt?#fqVEvxmgH{&U_fI)w&0zPiwTRs#)=GA-vo2!ysC5~;*IU=I zdxLd?-688M>>jhe#qN#P&)`N$BIeX<%xv27;tAr^8_X%Rm&E37>ZioqJv|>=Klqx3 zSbdp3U={d?xsc?RMMOz{t2vvjwIqMaOMi88OyYi`{QMVUjB=uV13u~J(?6MA zyh!!j>7QND04Z`Wp8mN7q)FmGx!~3{O3V~#?4@kY>0iti@>5!}uPh*OOZ?LdK4d53 z)w6L68;tRprqzID5i>VFXx5g~&j7ga=R9Z0a`9zLmWe;LWSRIgOO}T}w`6(vOG}oG zuUfoJ|L)F%y#mY2=q#?{DFl1Hu`i`P%Vzok>Mo|IgdPMKEN#>ACmscm6G0+a#bg^8l zqM`FA^9FE;atZC^%m`=Rjh{y-!A;1^B%kPBsCF{7hbgJCAqk0_AyAFbZchCPEFIUYZpGkdNrCL6jdkgD(D9)+OmB4ItQg9}e zOjJAcE(UQv9f<8FAl1a+)gg6hBa6lbQN$Tbv!4NC0!7cLp7I+w;$Nou&!0r=V~Jl` zNEq(>G-*`X%q-2K3wD0EdFU79ej7H0+*%bT`?UKrh%{zUx|x?2kVE!kEK zna$jT%jbhF@z<6Y!!N>|8P9#)$*8~flStqS-8GkFGL7J@zxk|E zXnY5SW}Wtp;Xdxm=Ah+gxVfMN*8%YL@!uOPV_KeH)L;$bH`_GxYdb+CZ8K&C{iTzs zD`s$Ls=x_pUXGt@D9JZm^k{!+u8R%{nn315_<7txOK!7;{#~Rup9Ae%L}%uNzCh@F z+wxV=es9xF))oO3YnkMfVkwBPp2<=zlSQCa+H^gW8Ub;=HUqGmKvXZ2d`c9f{FOep zax1lRj{cg3If_A{B>zOF^;dQm)bPN@%< z`&EEmq$DI+Ng{bwLF8+O*t>3T3ce-|;_imkRGAh!{hBta;PBWvG zZUL4*NkRURNEWvGG;I5K!zCe z*((CAfYs;Ere|vmgLaW6&FWn4b&{r@13{JMg1~K(W*w)YiIAjOU(idLNSX~Cu+wY| zd;_px@JFC$Q5%gR`ne$k~*D$Z~@Z&q|5_8en5&&Mf5Va`145UbV$O5%htUlxz*3r zrh^ks!sQu4yU(9TEVL1ge@LhT2nIV5o0q|jl0|+=a))F`=Pt=fXfkC$Z*u4`hO3)g z!CQHvGP~24L+3P7vHhIt8I!q`ES@!U=-kHqERk4zv-|T%@97jrDnUH1BMddVqOn0;;nY5!YxtV#9MEA!2Bwjzd>6Umj4^jGAPnW1Hd zOILC_Jnj&(UYAJn&zY0WXLNHG5xtY(9~L%O`|zH*mTY*?dwsXJs~@6way3=99uXtF!r}a87+TpA^nnlg%fE za~iVwgmBJ<*?dAcXKgm05YB1JCf)MSS(i5YE|@O(%qTCaIl~ zMHA^@@HgNf7^G9FynLQp=K1o8oR`5)Fi7V>vmU_DYKk6P$>%(`nPaO9zl=yRgmcGD z{4D(S!FlxVK}=+@p?hh@yfOX^cvex&ys-s@5P!kgUBm+S%6WOC$XcnuxWFsmN}1$& zY2xd7mRxmfxQB2V6J;4(8z(f1TM7x2%*w*e1@@b-B^0y_ZkVT&!gvsua&@t zg6|=>BNEt@_j3epkigCyYVqR|*fsGDP;QgJC6nGp;2sI=W_BKuz@?*Ur}*O%2xpPS zI4OZW%-bmmv|MOjh|3|;B#TCIlZ+-ti&mH>9SG7Pp!70{e#w_d(W7yuXVMRJuLjL1 z#6S4PkO8NILNUvv83Gf)&m}dTAev;NblTf8GSaD{$yScDmvqa8MkkG&MCWL=(CGA0 zXq32EanvP5I+9E!zAW6(Ii)bdqd?J*R25kajV2Et{_}xx#wC-2s5vRKFgVxbF^rBj zlLjQg3Tn2DFBcGsevrjdCyPyzMX!?u`>5gU;;4Md=oi8wotUP`@in2*DJs)clJz19 zI#d-7IcHr~2LwUKtnG@XU zBy+_?agh0nRfci98SgSG7mwmV0MQ0+8@iTyaTW(;X0_PjKu}=W9LSbH4hQljkjsH_ z5)ivzD1m&YOqIYG4um8yE_)uzo-2Xzd8EU|M%KMxRD}8?uINs1%oSC!QI^ahie*jU zHl}(idKU}zb~}~GNTXlE>7VdOFEZRNZT({ca9gvF1*!Trl_(s3nK`6W{*l9~~c@qaOsbWK33B-17Bqb5%(>HdJ5RyTd0FnLx<7YmXB zQo{AjI$b!>N?!8>D10CbhX8;~ae zy5k@K?ra)sYo({s&U(Y@2ip;n{&5yCdlf`xqdL?TnW(6tG- zNZHUVdd5jjw<+98EArD$>QVJ}YVQ4#`A419boU~q?1!DybR{FD>~A}%>83_X+23+f z(*+J!nu@i*IH@0WQoFJg{@!x3puK#T0li7DF?nWAd;G$Jrif3Nyda=$f0w2!;wh6? z1bnxHyDB9XKu(aZE#w3@;y0*%CFaI+)l{&!(0zMJ@g(<+CB>87x0Do5ao86gIEgl%c}iKbXwqYjzi84kj=y9Qy`w=erIYV<{7WW3;rPoYf5-7xPoR03;A;xz zL2<;tT=TEc{A>7yGlFS!-;`2vq2^z!`7hS|(eXcY%4(bNEBJ#!I%>v?G;r#i!@uh| zCP&2w!4TeE!oPGFkQ1aMmmvS<@S9k2cyl5cqz(F_(V*d>8Z4qPIEE)MLL@u2i_c|A;{(r{U>ujl-(nlKg7!5|%~FQRd!6hVHCjcMc) zV#(dPGZ7{Jdw38N|GjML#s7eYd0fMMj4?=#druo792i!E(p_N#~s25B+IZ{DGW2eVAEPa>dTzj3{Pf|s#$Ie@VR z(nHF(jwMF2D4y$5KA2kse~_1V67wF85&w|uub9j=U6i>Le-sBv?o<-1m@;{Xom<6p zR~i-Pa6IqTl)vrEp?e7?l_jlI{ym1$Ed_}kO_eSGyNn)mX+e)ZEzxv`LC@m{oCn=# z(80eE(bEM7J^Ck-$6PzwBp+%{vXH{7W#5c$Ldc}!rvT{X{fWgvHzZ`OL6aqw_PstH z%IVfb@}`zn>A!IXbfv=0K&$hwgkxeW=f=s+0*wbPvR(F*`EsF@xogvBZR%C%I$OMG5<&04$@MXA7)cZ8h z%>dlxfLR$8*LR>pCKyn zH^L&;*FjKe^G%9Yi1=AHP1;-lTQj&WW)+C%+W?h#yP|DF{H`S0E=9Wx@dq3lk3~|y za7Ip?_z;mb3m*x1Rq-)MG8JD2NX0w5`ol)mzKr~Cm%sf2KOe{oZM6Armp?_{l}IzPzJan8 ze|;H~N1^F)CW-p=EB=ln!JU-oy-EBXQ2c!Y#4p$Yoxei~{9P{a9|QSo8*RSd{QQj9HrvV)splRW9b%f)-8aGy?cKAJu0aHJ~@`I2WNf8 z$@_)zPq}%YzKc7^s0`Zfu8R3G$qdXU9^}_#zmI?Y;#al&5Wlmrpz2*2V@RtCs;&e>e+S*a6gD?1PrhrX0i&Z-jh8Ktt6|U>Si{xH%OWYZ?qqmKr07s zlR%Vr-S0VvBphrPJ?qDiOc+fL6 zhLG<`BpF#$VWnBI$qztPZo*gBtjmJtD@erZtP~tC)uk-+s}E(FH5aMHMfDZgUja@Q z7uAR5{9S5$EeDkBuIE6uFg3`4a^&H=jSPyBMP;oeK5UhJN)&N7FnbC2G8wa<5_k$F z@X=BpF;{_hEP-ymP9V|d*97zlWNtnP)F*AEuFbbjpqyBnzYh9$2=fQZBSg{F^b#SZ z&A$fe4Tp@@2Xc|=DqYrgNC#hLR%RT&a*aM8v|@+e$LZCpVeRg~tZoLT#m1SZspi}r z?&IqC&Xp{wKQR1VfWFs(v-(Kh^W-|PQt}K2KMvrh3CvZLhB`Tk1gjeA^Q^E+$)9As zR!aUw*7%U5`4Ur8PZqQNh)bY`Jpm*DHRqO_89gg`Y*n@^6CekLiP`EC4sA79^> z+Cgd}y7{>*c793Gtb|4uVL7vLke#3o3n~W@KC%?Je=jZ8R6w;e>8}&B#U;|L&tQT( z>lyl~gcX|AKtKEF=P>=;Pd{J7PcZmBU~>337^GQvFi3+*7R@|@L7E8V1Zid#4ARh& z6QmgnZb{%bCrGn{V30aj7Im~)9|Y4lVOl~oT2=>xbm=UIV}e1t=9d$sKgARb(p|5 zf*?33(YfX<5~ux{XnSr%Vk-SgDSec=X*72bqK`5+`?K&@dw3I=B4|nVX+439bwN)+ zqrNF1|4nya&3^=s5*t5pQo3<}bmJU>?AUJ$#4rZP$W24F=wqHBS*1u)Dwt=^Ci7;0 z?8wDz?o_N(5z40w|F185>4R0 z+QdxT!Wcm4L6a=s0-)$)p19;v4{1~r&G(0d)?UVOe`GsLUiv)5U0@!v*h*^r=WNzu zp}8#G$t-PU_1NUQ3iomp!gy9Odzgi|Bw1Fz;6GfIAia4_#}6l}46s8IxLPZyP{kcK zjBR$|ghALXp#?g#MgjXmXjUHt=BZILX^h_osBsm3rc#d7nc4Fj3e}KU>2r^A$!}NN zJn=)sTAZHZ@v%w9Q=q8kJ0K*iFGQF9zc;rLQ^AL{{Ee`UQjdxtXrAarY(oAQ-KZHA zZZzL-gIfqiCdvLBB+sD-5aZPPuoYCN0~d!O3e6a##Xoo zxmDxGX|3s$z3-W7Dqj3wTf)WeAa3ciX%9OP=wIQpI17m}tQm?%VQY~VSojATr`3l= zZ3oEpeXaVVdyvAnSBsry`>EZ&1F~oU8XJP$imJfb zlIr^u*VouVHKI>B;qWm}yak`d$t1?G#wZ$v&rq$WR$oiW6RLF);X}apaces0*1I*3b(I!y<+%c} zB=7?z308CfMb4xJGZkUpj31UcRa!dMhiCqjSe!{~?|TXJVk+i} zd9;)i{1s(1;y%K2qbsG}GigQoLrQx(HEq1aO&hP_(R%)T;HS4zvGRFKx#o%E(P3L< zyD+MtVt9HI49^vcW*k$Ve&qI1vm<8sc8y7BzDszCiRP1RcJp;eJ2f}yr3q0^&Z`yZ zQsgXY+pVA43E@6!QVmi*i&TuSeU9~@2C(kb0%%(K*yt6X(x{Vc>fOqa(u^)~GUp5S z5J+qPtx#Cfnw!A4lfk1}20V@$kD0VG@jr#)q>#IOK4x?aaLsCdJ*_c+8cV2 zxO)XZjz+QPH^f5?2kewygRGr@RLj3qB`{As zoSgr5J1-g@9jo>P0=L=)7J3YuGe3ZOevXRxIewgaieO47(;`Lr7m<*Zzlt?t2QfjP zzbV%|LCZvovlEJ8ol-OkTi?(FFKdB?v$P?}u_!7J!?$F4gfcGCKyDpr5dHwj5bD(5 zo10hG%*JmpG<#*!>~o6dn#P0z1cIUSoYpZO7Bm(tuFmLVSTIP7;w-An{Exx+Dm?bb zuRP`n8fw`Te-$2>;+ecq28+II{IDp0MYi-RdrY2&XsYL79;jyi4LMVde9LV3Oi0_f z$`(ZvqBj$qtG!0Ixx|A-Klqp@t^sH{Tfc3~$>^F}jWuKk^-rl1s(GRxlPZhsp#8BP z(F32=0xQ0v1s0Oov_C%EGeLQL*NzEwAmcYRko5~aK<3l=Ed1w2T~oeN{o+rq7d09%+goT1l|5P zW`uWY41QzvTC>uKq^8|IkgrayY@Nvf&P!)_%IKc)=O`oj4j(7Zp z@5*%jS8D!)qs|vJ@ULc$cLT5Kf#aq|3Hr3aemsC=28_l6bXRi9&;b6RQEe@=s;ol9 zW)zv{Px9v?B2Z<;avKZqc9%)51tv&=9D@l!HWpM`xGgn7i$L?e2Y;T+S9sH^LQI_V z3=1e6((Cy(7Sv3loU+bi4)AB;N(y`vKeq~FO16%R<+`Qj%q%k36totEEGlMJnXv}W?71jyDx`F-lZGW=mvUZmG^L%x zkwIaS)JO84n}~H;o#(R!g}f<)`NGKBRpt7VgOB{yKD8x{io>UYwqU2m& zO&v$6PX(GaNX@de2=9Zn+et)#9cx`VYbH(2#G#|oAf%V>RIN9!s_HU5orfVN};s~s^*f2RW@DvOr6u9-1xdZSY3s- zb5*>)z_c|!mP?Ymz>ys5cVj`5wXSfQW>D5hMG~sfkian#;*SU@8L*(Ft6k_*&9!za z8nDu$Hf~BRPIMk;aI2L4z)L9Hb|DSKodG8aSB^9rM{G_cvn`RE%8XdHZqTOA(B+(CZ3?r5lH3}Qjx)GShCZ#6>%D%#)K}}S?lxuWZ zq9jP^Z0pdQNNTcl)$enNN)pL^BTg)crRrC@7r-XGSVv7Y4v1oXVAUj2o`aUT4TI?+ zG6C3JbZ9sY!&QA4OKOEH#furbt!fl|nCypPTs_7-H@5%->Xh7V6UUhO$n6@FdN#Do zZa0Fz%hYWwh`5w*E`yHXzz0XmJSYe84m0ySnAxKyO$YF|4Um&PE>b4fo8x)7yupOZ za+jglK{HVoNvL=e8e*jlhs>lF%OYKUFOu4Mlhrt8vN|Lv8@;#95xnZ%c5~gBL=j78 zQ;&O6N#k!yqFisH^H4S3udzwPfLN}Z1Dq z%C|ln2}EX5eSxzF*@)4wjTrP10-;#x6>hw z+gm;;Gl_>x>L66?!%UQ}Y)^b1u`>YkG?ITbAx!4}QPVNs?$iUXpySMB_VhR<(q?HN z1Fa-+sQ$Pq=3aH$Pq3!SC~Z&fJzdk?FtX{UvBmb!T(vhP zk}5kQoA&?XEIrJaXKhA`^GtlE1{_&8^&10z&o&y79rW%%9@fz#%Gs|?s))}hPGQKD z+mbrcBg${w^crnCp7G<6)+1`TY(~~2JW$@MKU^``>m1P}!2{)8kcYN8TbCLW9{G8s z)Dmdkk)`!!Ps_&fdg!pX$~h?#Jf3zsWiY24J?wOfe)^1+DT>UcyTWa31^70Fp(saG>(m}-y4Q+q zMuvAiMdPXAUZNQx(7SjK>3B%iBg#8F(us}9B%e`|(&ap0F#KP>Iyr4>*n?v)P>NJi zL3WI%`2Tk<<2>mMjg|EAXqF@df&t?yqj+9QlcoYawP8d>j0ohJz0c^w zHrJUx9#iX-k;3qr!wi@4$aKg9azrQV)4F zlWE|rKJi1vd#yl52u#dO4|z@r|J5sUy}(p|rg0FDa?MC-ZPVD14EC_)9`?->l`@KX zCQL0bMc-2_J#4?nCQfQj&Xu@ik{w7J-KEQ z_UNV_QN#7z)I29Z4YTR#+{q;idkox2TfKhvIrCB#(|Z<{oS%odyi~_SD5*K6Seax9 zg+0{J+iZ9xey8J9a-KoR5)vHox-*{|)|M z3H&=Ha0>5W@EIp@kJ&We&dtHENk#x)vuJU9cXxYdba78_cf7l$zilxdp!bMc+~3!` zxU-{WaeE}P_+Vv4xT0)PXGg66;G*_e|KiHU9kEDfe{0kbTz90oGciihQU(!qvE8cD1f92 zjq7(+PGSTs;un9sql+{RS%kxFJ>7jaM}+SdLf@gjaJ09Vng9_>pNR%9;$sRH>F(<4 zCI!c(1HG4Uw=n|w#%O0E>3_{M1M|$l(o7R?N;1t1Utpe2z7J%7L7+UdpeA7U2j*w` zbK59ldL~}^^^3rQO#hokh$7}8Vj3`O33K^zikhD}Cg6YG@MUCW_6H`gOYaFocxS*5 z$9#o;euf|a&w`I;J{FijneN;Xs;Sw5f0_Qf4+lemSri$ETNChSE)R^&G~@8>3`|7) ztoH@16#=t7Fl*Y50A5Pq*2~N^L+9@}z9TS4kM;i$7mED_1qF!C3rzoIU`)+($gDk( zlX)TY5(s3j4NS=_2w08qE)L|P5P#-LqQhMu2&@ehBFcI+P*@bm%=GthMM*mG0B(Mm zJ3`k6tTj7;y%_uy>*94aP z4?K!Q!GgdzF7Zg9K)H69s_V}@62PC`VwYs)C%LNd7;!UeG7kkp@K4+o7<(BZ3KV25 zON>NFS(^PjiqK~MF>gxap{0Hvm_#zTi++e1|9CU7ka9vH1KSXhn1fsRPN`}jE7QOC z+CZQm;?08yr;-TQGBZVY1wu6lE#E*)?11kG%Q1iojM|CDFi~HB6fHciATzilvle-o z!J5FRO#e7DGYC~UXa*(&H3|uHk@uAC@b;rze?DY>VW2wGKl(1JNi}pX_efw=JNSJ* zvnDWwYSV_>;Bcr3zZjT?Z2WPsurrY9?}fi0Fq)zum>F;vTo@P)4M*EUOa$|1Lt2^s zbIc3Bk7$47cp$JdFlrpM#0=zp9&EI)3!Do-DzGx80(t&QV!9pK#E{%S#boJQ;5D=T zl5v^wK(@aH`TJ)T1!nmBq3$SRbR6)l%$bFZ5hU5`%&isXfSpgw71V@^iUO-L{hNbh zsXk6ByGk_y=$NV#nm*J2v{4f%%A61=3GP7O_Gh!~$|1YFC%Ld3luO!%-UfFdFcWSe z$*(_f4n_I%b_8;64vg`~iYRg%ODShpz<*gF=lsAp|7FDU5p)~$i9mtBmy&WY2LkZ- zk$N3*R995HU+L$OGpP7=1>=z~`e0kY?4k~~{Vwia19tDqG6SnaFd2c>*P@u^5bhz9 zD?94H0!3AK1xAgBtti-0lo`C36ZYB(!D{u4fY}$QKEeq{k*X4sOxi*bE!ni0`vUVX z2+S;{-%zDPVK=?4b4!_%CmxMhYMk>bHf| z<5r+6nsASx)C&XVfgLqPPW9wED9qLIXmg6h<}cw%XFbC-~_qBtiTM9 z36jb4XTF;RNft5ZxxhFw0k+AyN!amc-c8*l5S$h;cV+q?z4}`2x-`6;E5l2s|2ZBa zRGp7!`cJ}GLlbP9LB{jkZ2_}3aPE}vBeOR#(A3gE6G|9pYLK7+abp7GW&}dp1LKzO z2w2ot_L2cYMSRE68lk{B?+a8T1Z|~AbA^PaOXy-`@CU5{On=t#?_=oZVVXuzE1}H$ zeHd2!#}2<4SnYqG`DUQ{Eml6uU-@PrK)L&8z3IzG>hQ(uD`Z_#X)jeuJGx8C*I-87 z80+beZ{cZnN$KkD^_anL=#L|=e&fcq0~tRVnIsk)n)Yq#(_v*PfPE9qZ1R= z0VCYq*47t|QxbErGr@pMEIkF#lQfe>u zQ#dGDaxvzC^}W5_y>;EKQAv9Cg= z^L=~vZ^XO8ebI=$wul;S2Rg8PO_=W+R1YlIqCMdjEaQ40&*2)fwD@AI_v*0R)77b@ ztQJd`1AVof9aw$E+R>UWXW=l-uPY%StlADlC}*uv%EGelP>YI2R;NgPNqKk+S}VS{ zxBEc2t9yVHWNBw7{?rumVL3NR z!VqTiL}jh7uGY1l5elH`K1Z)m@y^;wVnZwFANaxoYdBGsr1XiZRfpoyy6*m1T=k^0 z*O>B_XnRL2-QHBP1XAa(%6qZ+ZLQzDc1u|p79*XG zSyx8MmxR+xUC|Nii}uFryO;&Tt)XG}TGbm^nL;qneewA#j7T$jW=H%Gq!*11bo6$| zxZ}3L{wyga`;*YIysTY%#;&WYzQbrE<3b&|q~hOO)PRBB-isXrY)JIB;~Q;GPs$~w zVX{h*@Lm|aUbNW8$UA5=Y4Nf&TfBKoJw{Hnd*W6N6kO_-JgAnjhSG?(c}oe(Z0l@p zXG1cQuD80B`v1Bx?_Y#lo8!#}#-;Z7UKqyqa9{I4R7sVFd}++HH#8(qV$bdcY0MdD zbnEQs>Oe>6!d6Ugyt~z4T@UwkL(!tWQ1rx2C>n61?a|&ExUjCNGo?yS7i;dUTGt?cOoLx|-Z!}12NB}+N0UQ7nK$mUqQv8Ab{xV}Cz&;s!>I~d~EVTg@J_G6T1 z0b-906P7fUpkztkUhGQl4`bkNL#;7Lc6VVjuCI?a15qM&y4nx97LG@x6gF#Gy1P3U zhOpfgT~S>V>g;dUS41fsd~Kr`*i zUDn^+iJYCWgG88~JW7h860IG5*aB2@)-)70H{CBU#R}+aaHb25@jZY z-Qf0ExUVIQJ63=Tgtk>R+GQi zIFshA8jA=`s>5{A61$6{A$mx!Vv(Lh7zkk^<53Ft^~AU@q$kRXW^~8)7#TMMlOdXV z+DbdT$spy5^zzh;z?yVYCNwgRz^0>P^QaA%8Xx@=W)C(#EC)Med1&0H{pxpI6Q1P^ z+tRMB)Z2Jicu8?ncl$b6t>*S<#RVAB`u0+<#Wadmf>OUUEo4P=Pfrw6vtdk*(Z=eW zxYjVRXyuVE%B`+sncgDS8Fg7;@1$q5`dl14pyroY&V&=reM*)j1R=EzTZ+?`ny747 z1Oq&;hVf_QNevlNHWAT-J>9V=W_!i;#(t=1MHw=La?%V? zmb~_qGp(sZmzs)Is1=Gq(Tt-%wm;T=AQqO}X+>qa^@1Ngi})=QCxS1WL;@dhfj`Xu*1D!O{(U#@>eszqShG z1vBs1(S8(77UC>{_qBfk;thhD_lxD@eG75IO4;k^j z-Ti&dvDQA?lB4X;zP)wxL30XcYmA0C=J?-YPk1A@4T>`CVl|~T%NnsLKD!1@Z*W(A z2#Usw5lDeYGnp`ORGU!ti-YMg*4? zd86z=SG0>xRqQ;ME3IRqeu87P#Jgp4e1zvG6;9RFTpZHCNs!z~O3P;Op^yv*XKTev zD#)&cJFyi>yY|>v;@zPxBhufCQ7(d0g+pB}wCEy4g{Xe4@|1E(U+k_y(JHvtITi~XWT zSwE63Dit*ve)(C>lO+r+Y1yHYB`m78j$X(La+29y8f%Ruv{D+tB%%dUlw${C$*c2u zb|2m)#6Cavh-3`riT;vOp6LHesz&2lmm!NYNS;p|@rKH8>3}R^y5q$C(IGHxG%?U1vdmQTH6lvMVezgool0;n?~P(<{sK8;I zy9cIGkLK3aUR)IJYUw3yPIDM2K}Og}-q#uuMnIyx6Y{8*1@J3)Lo?d8>1wf$ol0=WxhAD^+JTt;+2L z*NImk&V2l@j#&RamjJNdKiHwnU9uHgs;+Io6m=Mv^>@HZ+Tb)sjIxMK3Bu@1xH#Vt z!@dSjv2eyjQ><9Dy*b{2<3AeS(reYFq_sHa!DfWPvtMKXx{g=_mc`NDi*WG-Cs`MC z_im(TETGZ6HRCL|dD>(g)~{9w6Q0LGw95Z?Zhi6Cgli4F1pVn~VOIo0 z3~$@E#iKaeB4bYTU1zQ<9oqZYfQ~Wf*dRUYQ6cA%lK$+iaT*Ij>>7d9voA^x%w%Ju zo~Ii6;Ze#Ae<|D6zP|d+R33(Huqszioc(ezai&p$=jL96aLVq3y-ifdv*EO6z1q+a zrg5gHxur9T1!5cruzkkm>be#>1MM`p`|1Wgpg=O!4Eb=Ep_Zm>D$>*jhe#20E;U0< zHZ7%{aeIPu*qP1H&IWG%rP=xIO(mUW&#_1B_%Ih9WOxy68tE=AT^)nj!Ipk6s*7bD z?nv=)PuqBx^>?Q^nvB_b?@y#Gml}CKH6A0ol`$UKm?4U^t` zm-YmBskRTI_Ka9Hx~Le{B=*j=vKHP$DK722vn?6>=7~DN=e=N@cNt;2Dk~SL91+l< zv;@~sL8iSuz8`QomMqcqIz?3vE@)uggRN7VFD2bi=Edi~<8G>YkgpAk58``RLnFr@ zCB?OUbYZa}+DSW3YOf5JZ?WAd*IUniUQlV@W<-W-E^gdNZ0IusuO5=#8E22$dQW3Q z?Xd+j@?$Eo0J8s(EMTu4aTi~QWihtpLe-62*ANF5}$5N^4BRB6l4Q z>F7!X-4DbB*S#Pia!=Iil=*HYO$up7gl>S^b<(nXt~zX=hl9Y5K3pss;SNxG-NU|g zg*9TdcOcqowBfm9jI%h3UVo^4i`4D4l2ZNY1YX{@X-B5^+Fifrj2q4n zrn^Jm+FSR`emw@@N_!81mXrL1Oe(iaaJd-`5bx@tM+@v{ zCAxdvUG=j!a3y7^jXHG?qb@k%#>}ce2Gve;DV4^mZA&F?xYIZ*N1E7kC-G@34lgsC z=0pVY#`sP4E=+rFyd%e_QJ5$=3lO#2sh*)Wdb;t*2?jqoQ^)BMpNn~qga5uw8uwwH z?X{cNH?CiU{X*G5q(Lc-ruW+H#I`amUU=<#r13S*3PI!f~`RZ(5{wBKzj#X58(HP=nIi z41J)hpB~{i>?s{KYrAL(u@2Xg<%+u3`5YZ|gRh=u>{vzZn>6;!oc7{%%dtYNF5P`* z{h`UJyC2`zi>nkyPdL(t9B~kcTNb@_)lYHoj3R&;SfvPMd zMw)dQE%|8qo~Km9xwXAt_bSRrQk8d5E&mxRXvd;@$A-r zmwcwp0;u@v7~Wh%hl^>AIP$!ZTqS^I9`5erlBN39M77AklnXEKapqkx|7zzVhNC$Q z3OIYA-L|wu=oq^Z$`JQHF=fGjOd{Nww3-y)X(eX?gKL$Tu+jq)1Bs$W1D(}_%VJ&d zAfS4biLcP4S6N;R@NEY%0TP5EY0-45T`|On#8TKrD?mX5*FK&~qbBWhIq?9{3_6_qI40PBt;%9i$nOJ%3 z8A0jkDv1n}X>}fY4vi1=$@cNwJRR1`?OdF-Am>KB(G(`x0(%*f^cHYkjaYAEN=J|U z;0cnLQOD~yOdx2QiN?nq0$dp3HTJ9_^k|3=#K&voFlU5Xh-1tQuBC z-omt}&v?i=T^&>pHj~h>O-1KT#&&uTqSv{nXwV5Um9NbOhC6gB#uS{MOT>{@Jw1g= zd*w1GOs{Dx#9-H>da&8=XnmD*g-&f7_eOaN+}zrUoikcy-~nmAEKAo0dfE)_Q2}@I zCU0k;u}0lW#PHFqJ*&g_AVB3?f;h_~li7*O`#hbNMP8Jm=#cKtCV@0dtM65 zHDFIV?6Yj1w#$vaHaWY%t_)4YxK`A!z}bFCi{kJC2*-q^Hw*E&1*)2cX6$rQsqF*s z+x0vzTk(q%+|i$wk<NSZtv!RaZ-AC5fw}7_HTt5adEZ8U{M`)c_mR+Z>Wx-Q8|aI&+nYqk10p z>{-wr|KL8tYx~6gZCdUBD<1`+?MDcom(Xd==CQMnaRpW*g7G~vz*Cxk&l!TeUni~E zTp3?aLWkTc@9*S&>^A2fM!3&7ob)QCG>0>FU@onfmOK+q#AV2KW{W(=$ZT27c%yQCMq8b?Gv6=KVu!I*b_Cw-y#t<&0*;VSBoU|FlFta_30!bUL zJntKjxsH8dfG0ifv{2YiUKKc&4TBjBKR3)j*^@|k!w)@@slVlC!E!p3!9KLHnXeeS z6WPPsnnj-QBW}`Y7w1N!`+kT83uwcY>_`tDIOkVcrPo4bYVwR-ykwi>ocqhk4Bpki z$LXH^)N?1_eSiwv$FiZ`+}n%AoV;AfIPA!ZU*DiiKdAipW<8bxsc*kt+@AQ_W|=ge z#pwdwqO&&<7A=C%a9IK`SSEuaJ~CS3!%Lu)4^OozAN6>lrg_ImdN=LnxNIzUz3J{d z$o87*vNntKI6Q_^I>5z9=uS#dhcxa<+G7DajZwR8>juij?Y3up%n9%O;*psz73%kt z&UX9AUWQVSrOkEy&C>k3A`JiTwHWnav)3KqrjC~0=3d&SOS->l(Afm7&+wEhUqcv) z6<(??oycZAm^;JGT)uXy_9JL2Y#(Rvtd<9sv!Ak6+NYH=xBe$K%{|qJ&fpFhHeq5B zoHyYGi&1Rx@&OnxaOlX2_cYb}uoGL|^J0Jcr?b3BIs0mt^N}U$%v;3RoJqW0pYXzU zJ}_6;=u=MVRJ^kWl+$&r_OS4B9$R#E{$E*pT#_50g-2N5CriBL$Of{aOnUE`)JyD) z{lbnjq4_k8pBb?==WKf==O7m}Wxh$<8?6%Q0oB1g2r0qlbEA6~~wKvL>2?z%a`xg)IWjg}yh^ z;u(JqLuPHV3BqTL|1WLt0Ut%x{r_(gO2|SIKp}!cfJhYxO$bsF2(W<-B3%%Y5IUg< z0YN}O>OL`w1@uu-R8$n~*c+gLVngg56_lcaqKF0fpL6dyo10H|e30+|H?P<3?7rtS z=bn3RnL9IgXU)gUXV8QfyU9)+(Yw?U@)F^RBoh9}xugbE`iUfbW?^r%(3pTnLp&Dt zuD5m)Znz;{k#BD3@Gk$4%F)c=q^Z{>k2A18-7<#^zE?~WG0a4=|J?~{*BvR0cq_3j zKjB!PWF5ZPLD~Etwe`$yo7s8u|L=^`&s)t%$CT5*uiz1`rPH0xo-`z<2m1Z*n4IA# z(LCz)pX#DJ!ICa3@!5);QJP05@MG=xmm?+fJM-x5jt1ZMpKa(LXY|r74;y*9(hNGq z&|f6ledSjt{Bzw|+y(OF`W!P;eG)x;C~sy#VK?);lmUGAKf>HKGi$A#eNy!QyFl?x z*KivDzIfa6q+Z)wp20PXR&8j=tU;YRo$TZl<~Tne4NpzV>f7^TJ2}qGhtp2&43Z3A z)iKj~eCE~(J(rfshOS2PFNNstlf9=mS)OEKe%?$4Oy_!Le92SXWXNrcoi1;endZkA zOzbr$a{;u}g(v#GwS7hk{bGnlBLy=jpXqN;oahfIY~3p2^Fg%d`uAn)K7%__zgK2B z*Iu5f#V5BiD9;&7*Zyg^N;7acZd8xYzz;KW>hZt2PaTh>nd>}WL$`3I_*XCd#7*N8 zUi)j+%DKTv$Gv>|v55Wc^JxV_j{x#l2LC?Ge4a$Nzj$!jpRNI!EB&PgSN2zD=6sx{ z#Edl$8j#^AUy>L%nI4tO57Fmms@Mj0X0Z?7?3NBuIyF1ar$E#ApQn4xw|_Fu}V_npeSw`tAq<}S5d`ZGp(RBqfGn%tto6(13y;!bEq>?Qc{5ec_wiQ)aR+ z#WegMaK7+lbgHpu(DBKn3Oe{o8JbyVC0AEDBxhi@fajS~#|6J#3qRe%Ui&W93eTuJvjbqdwo4B1llP|<(Er!Tf0oe23mTQu^U-*& z8$V~d?s@n^z=fm zP9@{rf0~m%HsYLgp6|u;xAfYMIgExUtejb0Z53hK9gY0x&JIO(+>F+y36wY;@xtAi z4bt`LG-uGj%tQhGi2;wa!t=`bPMPV*{`J4yoJpIDd?mz8Hlfp~GweOunJaa6{P^!X zO8RF6I!x+~L%wBbFYW56osS%RCA9QEu-M-&QP-|lEu3fZl^MtJOf3DmMz~w2lb2HW z6PzC^(*w%StZq7U-q=D(E#x2R_LzN!1>HK2{*-_wRl3)q$ojtzH9uiM9z1DVj7%ZR z=}v_|@XTr<4|2l4H`KdrojTE|rPLMMf8D{Cns#aKdj22I7u<(loJAlT_8&a7^$-ru^3m&U6#HNy%fDPtv@X_y# z?AWe_N~PrYLQ_Xgq~}FbT`Ao?%KZuZV;<^~efAFq=o8J={6F_hdc&D|f4&}Rr-bs^ zh52S5?xc^qEBS@9FK1SvdA^N|yrzV2hy2^_M(zciQ3Y`RZLXxlrytzfGqzIC`_Avt zn)~2Vza?}IPG@=ur7GxgkHd@&>DX#UV03N7{JD#HeDE1o7_ZS+$rOiV^TXNflI%KpBn*@;oLD_4wNNq<#cM*mQ5 z7G|mPng0CREX*>U&-{_uP+{~J)@D&#QCId0nv^Qu#=N$s$2L-o(&xL8*7VQiK3})^ z#A~86;**xebdOJ7T&`FAw0?2%$pkXu6T8L7_VP#fb-!njQ)(k}I`PvMms=Kd4gD=8 z=lcRqgBJGJq(^J^b0fWYX-zM~1M!KAqsPQ^UXtk5mg2)pO@1R+7Dr!Vwgu>GKiPH{ zZzKPUqr1f?T@#ZLpS-MGW_;tt<$K2Wi=G-6-uNzLOWnEQ{tmH#Vx$d1k+3bbd7tlF`fNT9&D<53^b*Ccn;y5}wm);!Xt6Un$w-{d)4<7Hq6Fhj;GMw`o?JLpqcV4pS#azGZnzzOHs`0AS zau0oDeX>y1{~|mUIQPG-PY3=V;r)PbGrW@T(OA2|)CbYT_^QjN(yN&8Q4@KM(m=k& z*qTyiTa53VGK@itueJw|Tx(){bv^XS9=yH>Px0UlJ-8lCN^g$wH7O0`TTJ+fTY7Vh zuX$-e-%e1u_4X zbNUnQL6!^G_NMC>geQw_P3afm+8%if$4d$&R4=-uKBzvOxZ1Qz`##u%-{iqx@!-+a zaYwS>%tPPOL*Ios$7h!~$zwuZCK9jbwBK|?eZEy5c5e6J_j~Y$qaQ@Mk^jyzHT`MpcvjSxM#3iy1%CI+J)Le}W!-nA)N8 z;l+#{X??BmT@(*qbjxf74bB*Zth`yWX_Ytq> z^v?m|RjFb}veS(?`-67=BRrMz!Am2%@_p^WJJ2DY?c|D{$9ud?A|5H-8KU1z{_^sz zUHR_!&_6EvBa}WbJoe$`D-T{d&ia#1+j-IWrwPv$o?$opCJKL4xE{%FBVNxr&T1UC z8_pv}yYRS+m!FA8%5N>|xFYc^;`Mwb$K}S>jBlpl>a{(u<4t#Y*m>83``{-cbmagq zU`D*L9R9gV3%Wlyx`nxC6lq7iL992VPve)R)^Z!Z&Jf9R**kInJZsOIquU_=|CobG zfY!R1`g~f>mdp{cdtP|jemRpW?5^!kd)Ia{&$tCYsIf&WUyES(RDLs`+VZFN{FcTB zBmHer>PT~@rdl4#hNn)q*P|>pOp=5XG=bo9ZxL`~F$y0=+BTZ+v z|6o3B;NXZ28OxaNahN*+bOF6&UU^w3IiW~DPnX0_D=C|&$hOffGqojrkK*+9`5zA? z!zBJi=SVSFp8cEo%#72qqup5_nIv{P`?PB9{?(dJ zG4`m8Wg0gAM?j<$y>~LLAad!K*{Lmu;vc7nz)_^^52W zoXD2{si~DQt#vT6DX)afcIN*hvl!9H`H5gwnuv#cXKJ?OIIm^v5#h2PY0Kb-A(NiW zPi!I%JhHcC!uJoR|Ap40o_f@-$m&+@ z%=4toz-`Rv{&`o>efU`u%o)Z+InUtJ;(GM@`;=X#3+L0;3mra3IP2>>e35Y0w|Drp z4)5Ub)eh%tnVRlB7-Yz|p&Q#yUJew$#sy zvr`gyj)-TK);t~;=uA&&iQ;hbOB&;E|y_486k zf4*ZU&(XVnPI0*F=PZZ2er|EN>*xCpALgWcR5+GbEx8WD`E}b}4~O%;R4uQG4tLXi zgfzUceGV<#qR zdAh?j->6R^4KK`He>5Jb*ZZZY*La{l(^$9mUH>&6sONjHyfAn5ml~ro;NN4tLYdbGWO|aCnk@W;@*+p6u{G4sY!6 zREO(lwxcoU&D@9Z!n~FFWZzsr$2i>eQ)AAXT|Y-S`egac_Ahm~>t`E>yMF4u3*PMd zInL3i%V)OV(&5s4eRTOX>>F>^cEOyl>2Bi2M2p@LRz9(>1T!af_^avm6iwXDr{#f7bq>y z+Eti;U0}gW!1qN(aOb?Dy5c=SjME1FzWG>K_LFM^nq61Ae>I^XtZx<*9M_vX-@TKJXnp=%b|-@Fb}xoq_L{sV-T-zZhig3;`aK zWBFv@$zp#F@FvosE(QK)du!)<;5u$z1N<_H&x63f?rH5j4ZMML%sYXHnpyovz-!8Z z*cSGCYv5H!SUw2&kSxnb0sl`Y%clbG#R<_e z5BLn}utUHr=Nh?hHSjmZ&ON~28)@|~0-wl(bXs---#Og!kAOcRQ(E={pCRq~XXMf^ zodllI-P-r_0F4%n^K3bo*9Cr)=$it6r;*)X&vVsI>&cc60{vrra!Jc5;Frh&e5MDV z2mCAap16=Jd1m02nycu{e z>1XZ$zEt|*CxM?7{Z`;==XK!4l3$(opmBIgju+p9{-E@4r+{BC@vk8LoZ6W!<03uZ zRQ|mj7tRNLH5ue~0{)qdbGieM&9iYH4g59fA0`2x;J5m#fFGCkvK08O4Xu6+@V}*9 zuLJ&DAFJO2ykflNuLEx}-g3Rpqw)DbPAHFqe)Ke}FDLC)_3O{FyfW~+k}YolT=mU> z7q_$eZou!ZYk6lw>;Qy6&8YAgwx<%5D`GL1@V(q5@|4_!m7Xa_t)arWxzipW1dfiOZy;1tN zv7m3#!0KlJS37foUn%3jn}E+8Z|&R#T@WmKf^m>u%->`e_;vebo4*Et$Yo9|YdAnbl7OzDLFz(}DM>W%WhCKa}(08-c%}Jzl2E4q~^E-e)Bj4`> zzCgx-F9EMAN^6zUd9iX0ayKK;9D=Y z_7?$HeF%6PDc=piRsRI=9nubW0smgg_haDCHn;x#417af%l`mAL*i4Tn%%DPRDB)b z*GYZ22)OFI15c9cGZTTUemd~8B)>NSSN-k4dsnf3KMP#-TY#UC_W3Pv)gJ=hyPvfm zE5|*JPexzM6M+wscHJJh>bn9TEB){Y;Hn=3{9(E7vmChUuLIt?mG$#^;HrNG_-?5m z2Z5{p7vNQESo>$m^$(2Cxxmkr{<%AFwciK$&vJcoGVtG<*mUOruPW!=i-4b!@xVR6 zRlfmvEjeDl23+;KfS;Xf{rLs>k8Lgg6Zn`*ERUD#UK+Q~(%;npevOn%XW**u0enMy zYkwAS)n5ht4=eXQ2we4#1J9gjclZRj>c0kFPx4I>%gY~T&$dQm6fYCjYBzBbmM zX~0!K8+g48tG^St>hA~MvZ2+#2VC`^0iP%Jv!aX_Fuw`FZ;|^r7XerM-GQ%_erhUk z)n5VpsEn`f0j~NDz{icV`P~hCsPIpL-zf1fFXg8By-M0q72vO@Tl*b=50Z9~4!mCn ztIq@8x4Y#NfY%rQRstU+=Y6*Tzgdo_j{%=I(As|%_+g2|yTHG_)apM09w*1ypMjTe zW%Yjm|4GghtIGMk#!FFn`Vc@?=i6Tsgc zZvCk%<)-l|6kQ|W&&u&V3wSSy+aPa}bUH^KTj4tPM07t?^Zk>k_?;C;GSJ9o)> zp89!E&QqQTep2`cz&{jz82BFHm6B~bYX42)4S?Sz$Cu8)e--@@;CD8+cCP?_w)A^T zfPX62Ems1cCF7#ofj67xGs``|_4oJB0iP%F+yeZ@Dn7IP47@Wc8Tcv5Z!IZjja!5ER^J%7p1-F8Unl8i0^bpB?Ti54U+Vol;B6XP{Y}8N zz26ReW6tK15l)uJpb-Lwsfb00VA@Eaj zp5Gm~#<>shZ!@g@@xYr(oTmYQO!B)J_>U6*RlrAPTKj8&ug|soQQ*Vmyx8;UJJPD z>jA%fkhPNre66&%bl?vUu=)YOpGmiT81Q;>zBU>7*-{S+flrfhLJ@HF{|4X>472Ip z2VC_J0beNoZwIdWw}8KMk+uIFaMk|^e3y(9DoB5z<)Zgbs{p^dnYG^(xawO0UoQ2j zFYsq%+&c((B`L=#!1X+LCh&DqAFcyFT*gbQf&U@)9|68V+SgOSd-t^Y{Ra3hxsG}O zc$~!dIPleS94{x=Q8dm?M_K#vz*m*CytW6g4}7H@7t(-dNHZ8{=h4MTJBXv?d5Ep^NE3mp{UqSss$0L?0k0wba5vz;l(+icz<0}WIUl&* zFP;SaKIz}C0={4B|1#iRI@xsp3tY#0_W{@WqE7%{l4tE~2Cn1(oxuN;7-u z;2mTf{xfhbmy^Kj%5@KYn5mZIXXCA()nxpu{HGMlTLRblZ=Hav9X%gaJ2wopc7}jn z=MRho{w427%PinJ|71S!dAUaJTLXN{V9Q?t-aW?h*MN7EdiWObio>n`Q{dHmTYe1q zJ{cFqG`HI|4n3rwNdT_xv^H?PZ{7&_kV~!IR=`h4d+7*V)9ndd)9nvj(;W$1)13%> zpY+>T0N45UuK~Ykg7tq7@HeGgsY?R z<>{8^0Y4$vZLS2a@mvnPX)9~zTHs&GcyR-8jsG*iwV&ArTJ z-#&r7qxHXTOS{(kto_Udz_s6Q1N^YmlS_bWzdaQA+Y+}0z$;g>eq00m8|mk70UqdP z_3MByF0lMj;8mnvz5x7v@qat;>2kjF2k^~uyweBCYutX4@zPnTrQ>;5(0;ECJYW28 z3B015M_&m1(`nXDSKv=cKi?Dh1yim5V&FfGv|NABr~Y3ee&&Gwn8aZ$@cMphXDaaj zh(EJ{e=Y5L0dPJ3t^}^_?snkXUe*KGdb;l z!2go^R#ED^#`&kFHf}Y5KRw#=I>67bZ@JDFP&=yc2>P>Sd_DlU#vu>*)pGx40`So_ zY`TkpYq?wpe89z4e>3po((gP1d~UYYKMj1c9GBk#uKJIFCyM@8;9L4y`+oz!w}Rzo z$?;s{srqw)cNBdZaGmFt0ermFgOR}XcwGQo=W7)LPn7z0J@9L!y#5P(W5DL?Dc}Jq zmzRKl($(re1HM}9e+zumSgZHR`IE+Nzg#Db1zuD3PX?~zjV8dOC2k#n$F#HQ_5`l& zXb^C17bAe5yu{kM9JuP|0MBh}^)~?5cC;3_wxjjHzmwzaX5iY6-UhDi=tJOnL#;nQ z0oQhM4EW#utv+7zq2;Ce8o>4Zqz!Ow7Z(AaInCN109^IMfu~44nGIaq(L&%&4sm90JpxVEG5z_lG+0X#~M*Gqu6mGSvX;5v@F9ryq_F02Rsv5bE<0e@e{S1$p7 zRqo@w0bKq02)O$5EpYYcFmUzfFW~A=dAZJ{<#m~i8{>hiKed3XKMjGaKdphQKV5*U zKYf7DsBX)>Kky=%KXWPYZ>65+0r5z*oq)q7U$@a-1Cn ze2C;X1pK;cHobd+>pZY6z;mR$J_g=V;&2@J?PIL{B=Jl0)i2BPHo#kpojZYlE%CZa zt~05f3AL@A)xd{IeOLp0#YC%L2fUW}y$Sf*bF6+R@O#Dnr@;5hdD9QTzsRt5jsxE% z*D=d?vfDLZdOx5V@EeC&T{7^$B%T)le@E(nXW;FJSUXw3JNC1DFz~aae&z$OChc?@ zaGi%eANZS{t$lqih~~GN#OG$vx05)p1D;XU+IbB4ugR9b1bmtvXMtCf__>T`U~0lrbrFB$@GEbXWb@cPovrvtxpicL2g_-8T> z83vsHr-7Goz-L?RD+GRv^uvpQ7s>hlwZI>jdU6}^jndz)2ma$goA8ssUrD!oEAWO= zj=O*#knz~(z>iD2J_>xZ_?am6Ma%1`@K(V8kn{I!;1A0A{siE;(boT^z%Lj7?*^V( z&+1uD9!tv&T$??bcze!KJ=7XwcfKW75p+s)ct4g8`^%O3~+>`2Ss z23}A4=flAJYk6eY{nY<4G9EY|co%8!>A>rY|HFZgY;5h$0v@bq`6IylN&R^N_#PQw zz7G6*IWBw%yrHyHonNE*>ebz*dj#|!NIXvfFG#ogI4K9U(?E{PHG%hI0WB%OugtT& z74SCoEYAe~c^%7#0Us@Pt_1$RjDKzg-lB@N^Bi!kf8PP`BKjzaljb+SrnS=m_$=XF zfzKD71AK|_g}^_T4?f0&7kKa`z!#)j`$Zmny$659gTD#<=WJ_#KkyGZfV5PS^Gl8A z)l%OAz?;f>{XpQiSFm<+fsY7SUI1L@v(5%SQsTS>_{VZSvl4js_SXLGz!%AR*?Qo2 z$+&A1@cwc<+6?^hy4L=iz+Y}<`NzO}kFtC(@MCiRcm#O!3ReF&@J-@pY%jZA%jM$9 z_WN1D+esXffu~9NUI2W*^ury1&y@Zs6ZnxTHr;-}FG{fdQQ*@p_Pq%FT#4IG;4wAq z4j%!3Sp44${JHb3{%7EC%XsM|@Z<8`FZEI587JS9fS)VlwDW=gc$rPNHSpmnmUjhy zx76n#@K0J>{iVQ%NIB|r4%E+XL93qu`l1PzF9e=1{eLm=jbp6-R^S(=TYf+AdU77L z33y?&)o%fQO6u*~z<-nRz-Pc`O8>qe_^<)i{xRUKq`p;^^L35SyK-D^1AMn!|Lh8U zg^V-%0N*O@RG-JG_8*e*TR!NYm*ekL;FsiE|K|d)(ZuoCNq}|;O{L2Ye z|0wXi;{S`l-<9#nHsBK_{yzX;D{=oF_?;4mYQ1gx8lUDd_Pai(M0xAJmbU}_QK{z{ zz(1Drmu%p>$6GsNfX|ZnUk?0F>4)b7?-FJ0gn)k~>D~@}k+jptf!{3s_UpiZPqOy+ z01rsNeGGUT>1V3+vHQi*>O6XFlzzA+@U7BM_5)rZ?Q0V7+ok`x9(Yteo8DuI46NoVC*ec~i?XfOnKQ3;}*f+Vync*VMOmmI5Cp z`CS9N(g>@61^8UKzwi$5#B8hI2mDLXN6B`LLkqEA1-RZXSq1#PY1aPTz$-Pg{6XLy zrJg?pe3P`(?Z6+E57z|WJo`Yfw|9=QIV;uYXkQmy_I;15bY|K5Wi27aC#A7iB5X#BfN`|<@G4Qt1UebWimGOBN@LMHc!+YzG zPetH6WE>k0yhjylXDINGq#P#z?=J0X9&qgkuLgd!g|)u|_;ES!UJYE+T?71D>Hjwa zA0_7-JAiMI{$wBUOS@QqegM8)csXfj8qXHePW`~gOFz&6xc(1EQ{eB(`Qsqq3uQcf z8Su^0pU($=Wi#vl65u_gK0E+i=Vv?${LXUL&Mx5BNd5l;c%5jgKM4Hw(U$)Xe2w(O z<>Wj-<2g~{UKRKkQvd4!Un1?j8SuNMUbO~(Sn6kA;D@9f2LZR<`+U=ZYdxF;{Ghb! z>w#-Oc?;*dU1PUF@s-5NSa#wp7Gmhx)_ zT>GCi;P2;JJEMVX|5E_mC;dP%aP3c40pA^C?LP@z`;D!@=TEWvcYr_58KmWN;M&g| z0IvPaG2nm6c}mPsYft00OX@=+@ON^pt|su;YFOSD_}a59zXZ(2>E}NJu6DizzD%y${0jVT8IPUt z;N>p0>1(;1OtRl=0H0FZ@~(3HRDBIOPsswlSo8yd$I5XbA9y{{PXn%hmUt!bg7(&* zrN9TsIP(tRm0Mf=i^6#r#v#_{%)IZR|J>o+^+>bu?E!AB`+WPr{uJq-_4lTlZnEr9 zXSn^K@l-!sJ6u9zgqty!yL|bu4IR483}xv z@OD4+Q>{@Joejc{P#%O#?ny_%#l9%W;jv*~KxUf5zc{;#>y2Y;`#6_5UwE z1Ae90IqYz@A>EfRW&~Ta|4+(1m%q?bPq>z2vc&%ahjZMty|i^W$8D30!#e=KMtEn3 zvz>FL-wrsO?M#*+1%Zzceu=}`&d5A^qvbM(vz_xLaJj(G6F%1ATyOhHe&;xx?W_>} zeBeujUoBkg!#m>V?ZAH*{*1!~Q7TmL9M0uiLF|9)aMo)%{^)SlR~3DEIsZ_9&Jli& z!x;tW#Y-FNYo9B;nZK76NZ8>ht}_vCrwIOFw_Fqv!bR z|1doOT>rP}VX%`WcD4c^BK#Z2&Us}2CK(?d1pN_dN9AQ4#Q9}^S_-cO{Cwfnglqiu z_qMeiJ=eD*Qs0_6obBH$c3J}0|5a-1aMw;3;hJs-$?rhmb%f^uZzOy!@Wk@u6fHLh z$8x{b;q3p{;{P4MKNEhB!#VzSN3nIE?_r0tomS${f7;<}XN#QQZFM-?nI`(} zz$XgVajxd;dbuv~A?RNc{ine7f0e!xuJP|Gar*)IPT}X|l5@0Zy4tVS&owyAH9jqX zYks=|zvfcAe=moddSbC}u){e%dj2~M_&1W@eBh(mVOqxJnw9aB?Ti#Y4fwOd3xPi& ze7>QPPzS7ZiemB#Lm$eS({GKoN*8y)J{6Vl^UCQwthjTeL zX5+Mc3p~|gU!0T!mSYm|o{j7d$-<-PE644KjAwcQ*YWU3u%q>4I_Oi`AT1#e{q+v# z`1F@JtO6boeyhW|e(L$iy$)wPZ;Ac^;5&pr>~OZD-hOYhqL`UavlCt;5CGQ zD_rBbR^sr32anAsqqJ~&vHb;Nr!w&Q!p{c2PWU;%?-pKHxcW0l{L$axDZfg14(PWC zzsj-i_7BT}Yq{JFT_z2d;MXdHGuZ)lTeajBH#lruza<{Io&8ZuelZYDM|MM;1`JgA>fULKQ3JT zOo_4S?r`*O9CkaL{TVHGJ_J5W_#Uv|NbDc*;8A02`r00g#7=qO`rPSw;IE3l8t|>c zYYNx=sy`Qi{($IHfqyT&9oQKt`3gE*4qYZg`u~BNZbi}0a`fCJK9zQ%zfaY6aVXiw zWxeAMmy6z~coMjdGj{>k_Vo#HJ)im>_>NIF-NVAw|3v;kOWasl(~9fE*>a$Y2VO;Z zb>V8~9I?{~cq8HZoM4SZZ5iiZ4EkNx4c|macb=p>1$d$G8DQt2*jWhtsPJ2WM~k1& zIQF?*G|pRq>-g<0;98EK0N49X2Z6`SiTW=N=kZUf_!%|Me&D!qx$KktmIwZs@Oa=O zs@nbaf34Nd5aG2!|G4nFz&8qS47_4BYySe^QNr5^*Lt!?;@ri94+A?x#m-3JgN2U< zJ0qmst#)`taxuxe>3a}(vhdvwFE5N&2ZU?A)%p-K-inY{1-@Czw>5CJlMcM|xz_Fw z;Cg?2xNwc9Rnzrd(Chv85a?G*f3?ohbG=$B@mvpluJFfzm#c15eiHbfqJIhaV$p8} zK1cW)z$?i8rgwlJ7yZY=H4eKZUtfFh6JY0Vu^%(E89- z?uUK@`ZVF+JKXj2h{M^>>qP%6@FL+Sglqh7mN-_-Dd(-mB`P zYg)T)K<^XY33wyn>A=qy-cz{xIZ^!2171z|m5v=g&gya%=y!>Jt)u67_LX$k0q-sR zDX{ZstWDuv&=-sT1K`Vre+m3E;okuNMELi@H4fV(-Ewk%p!{Ru=LwG^_c#tZ&!HaZ zAFX8l@8sw?4wdA69^KKqyl ze-3y~UmJ&)Jopaa-ww9=H#|7kCtkF^>HT*(Jcs#YsSnx)Rj>SfYbLB;F8c8Jl(uuf zt-J&1SBSo+2bXMz?cXN)OF^$(s$E!rm*{T@c#1sJ`esd@cZTavmSg4@D1|) z9S{Bya82(U4}K8%6Y~AI2RDJCZCZ{`iO$b}7Ub1|KW}BedLFz9@Rvm2)`NEf{)*^( zJG`PWUiAkqr#0dE5xkk}o0jj@j-I&;*L}qvd=>EZv=1+9J@|UyTE0(t@RxvVeqVRE zo8NbVYkqaU18?ShZI+$N@fTW@>;K>+c<`FQYszt_z6aO;t5N%Up56iU%F}^&7W;iX z_yFK5M4#uuCjh@$^!oc+^;7vg(BC8a|2UjO+0R6gu73m16|VC{)V{|5ZAZ@^HU6J? zaD5)L+DQ_BegM7lUx90!qviZY?I@1}USI5=?ZM9jzEt#$J$Nc`Ew3&fyeIHm#Qr57 z{8HeziGG|1p9=gA(O>DouLiF5LC=FZo^E}(#nCg*r57(c-$&!G^+C@&mH!~^^fSi} z7pd}Zf!7lMfAZkRfNQyzlX0=8tGqJs6;226zY2>+}27 zALYM;zN6^N$+%VZ$}0o!D*9R;ygu*=qHpfO+W{{SeK!x@8~7B_5AonRz-NelvIn0D z{Cd$Z^x!Li-z54~9()b()uMmUgFg=ZHqmeP;I9F{L-g-?@XvtXBl`Uw{0Q*-ME{ou zkCFPW^=gCY6Fqnm@P|d;z=Jmf{)Ff|IGjn9|o@R|I^`a{G%m(jx&GM z`0Kn#jDK@S@5Vn3xXusE0REWx5d>aOz7GW6Prm1P@NvL3{yHC1{nz=HD?$IM_@i-E zz1q?Cr+lgGuk#I+>%7Fb!G1u_Pe1YCUjy$idL1vQedWJ`ez53IdGLyId{#R;zftEW zD%W|8?Ll8f?056vy@A&kz5dUq+E+dT^bJKn-h)pAuJaGC^5DyWcNF_NUsCcRg8{(Pq)PPXW)dGK1mFBW}c51tBqi0ChJI5+)NIi7Y0o-SPHW2&E;-vUR^{ki7% z3J<;jxcXDR*PqNLX?^@tmuXNrh=J#nw z&*i20-Ri-20#|=NcDU=$9^mSa&ND@SVr70Ja-BD-{HT;ybI`|2d~_bA>UAFGFwhTV z0WD)Z_+;RZihi~SUkLn3(O>JqR|9`j^!k4${FTc^`2(QW>yJ9$Q}vqP4?ush*x%#9 z_XB@K^hbefzWxIKhUj&EsQRPxEgQ;x73Bq@Z{@+$fb0BBeGY`$QJxL@&0>G32hRnr z@znXJYG1D}F9-dDVqfQb@KeC|iM~p_ zO-KDvem3w$ay={AgEt1gT=Y8MQ|)Vhhk;)6JH~@g2EIr9pY6dH0@r+9>%mt8j}rgy z^572u*Xxy=JopR1H9k6zRpX=c5BGvzxz0aT{qGWoN^&1n`7-fe=btLqd5>*DpD6mS z!1ILn0zOl?&OcTAIuEk|^lC@vld8Uv*trq(orT}w!S4e;K=eBQ6z#tWdi7K1nWFw@ z(5H)ionNVXorif|V(E62!~$9xd+=1?^+kV?2k#ENq3HX1@WH@!KBvydRR4EbH+@S$ zzfbse9{gtDCq#d@2Y(QFl=%Oo2Y(T`&hylHl`(LHvw^EW%N*|d zb1iW7N9UQMKhHUO*Pm@3{4L<>&u0#I{rMKS`lIt$(VqmFFroY;f1st72d@uY{YiDW z>rV&Z$;LYUe%Ij~2Q9B$53ch!)la>@RSfzHa=+mg555-oJkf9P;7`O^ff(rUErGErXIXCaLsSJ2M+*$S^OE`!G{Ca{ObH! z&6k#M5$H9)t3CJ~z%{=Qc<{%7Ykpt$;5&f7DEZarOsoIOKLx$!SLgq#euEr0<7NJ= z@`r`j@!$=Czajco9y|^BLD6S=@F4J?ML)!Y=K$CEPXw-Uo(}wZiRXL|z7)8|Gd$m! z`V#I>^uG0jp#M(%*ZIyGXVt&sq1XA&sQ=YNuk)8xulJ#A%RF4=dcV1$2X6tqkHkmk zJF6YFKM?dfKUwEBqkazPJBWRqcdUAyw|o!iwR|52uI2j_aBUY`JoxLtwS0A6Gy3xz z=+z&e%nMe%`V$LW`>X06yf$$4N9RqeeT`2q(5pZFfvZ2mfa~#Mj0c|#T>a7c*Xqwq zDaV^Zul_s@T<2rI3|#H&{A;zZ`hB2(TGG||*Qk$^dBn<9uk){!tNoT9dYvDwdYwl- z81!F@KY1Q}0`Q+iuk)tWzRs^+1^P{LKVz*2Ul06S(LdqAp9ik@S9D&s`tz~a`4;s1 zh3mX&)$9D~sxqHi`I~ax|6C8A0{kt}%Vk9Kdt`CJjO=uruJ#S2w`BRioX3Z{q{;{8 za>-IRnYG$con+6a{1s8V>ALpCeWQ2BrD{*@==igP*i)|K+jNJ!b^^eY<$JEf`FN!L z!+7A@9;X3cDfMtRaBVLuf$R18TY&5J=d})J|C8nWdf*zD%?@Y(^?LGaz@wxh>;hg+ z_{YHY`tuRsdcWp4aJ}DQ3XryOxv>B0XDkC+l&70-ls|`?_=`V{f$RJMy&jBqIyibx zx1ZSW=Ww<^R_qT2K2dls@B-oEflm`Y4ftH)vw`b;j)lNq7X1p~jX4vvtOPz=_$|P% z5x&;pjMCW%E$e}6d^S6rxexY@;eCBMpeztYEWYG}q zKbi3>QFQWi6vLP&3!f`%W@?ksN{92dRQdj2hsVliUVZCu*N&+Ow2f`J`K=^zV$OEt zwB48FaNf3yUcBh<3sf&ZKk{_|y_SpKXJb9Tv|QGLevf>Az~Ssq9eVNdnZw->#GvB#VFrN^~%9L|2W zq!%xJ9PZ|Kw8J^S$tE2%~zqrIo)*8&v!W6nIilehqEp1hgUhA^|M63*WqlxpYR_Y z&iW<7|8_Xr*Ku-^G=66M()m~Q9L{#Gp%*V59L{>3Z#EFP_DhApb$sh1yPp8+j$hV|`p;kc<&#}$m}Fm3wO!l|QX zj%__*YU|WtW2R5-K6Tohi)R*2n^`!ZaQc|M$*tOE6ckLoVn#;6guEFOri|+`%hzK1 zR5r*aToM8h8^o`(5 zt9HGvoG>kGO4yGcl8#B4QY0rRBLlNeduQvjXL=WMdTz%5Rf4Crcfr*ByaIN5@M$~E zk%b&b-r3uMF{5UV%b74`>{O}<=5yYtQPan8DH`Jjk!Pj8=S|O>GHwjj7e^BT6-<~y z1#7KRWl%ZS4K5*@-^?NOWo(O_oN=>f=S&+jea6%&c?A;+=j6;v^|i>KI(hP#DO5+N zOf4MKqF3KR&1V$m(a%$D!ehqgjGdl0nbH_Hed^3lUoL*%%saVZlk<# zf6Fgv?%}o9{sG>J7I*(#`hL3mYriAI50iG@zt~^L4{rLS|Hb~S<;6{Z41GUc|FvY? z{X74Q{pWGww7C2Cr|+km{tB~q>HYaQg8L^E;~{{YF3=~ttd+HnZ{=%v+@Rn2nE-4v zU4g7))9k?F8R@6F?(mRX%Ogp24Qb6vISdM=C z&~cV&l0Mo^bTs_&3VQMWt@(?y%$EHZIE+7P{xu&(#7z32J1+a@0tYvJ%V>L~_;2oF zQ%IJCIQ|Lr()2a{w-RFs+8rwM(pJ(ocM)@8w2?kB!~E};{m&08?FZdo*Zg~2{u~Vs zBum9_1p6n$_oMWk_m6@7^?87rPu)%Puit;74<>%F|DLYa!+;1merM53_gA~kNEXTe zT=BoL?60e2{UGbnvOoI2LiX2mbT>_3zvs~Yk^FC*&R&%~-vX!m+P&K&{k4*Q zI_={wy1%kD9_de$^w*1!)92?o=>D4iK9BVGNcsUyNY=W);yoVeCuPtES~i<^d+g%A zO83|F8&J7hr3hu!SmuGfKdCfFE&m@zr1tl*q`%@iyFcfjpFx1>xAaK=@7Z?0JEa}j zZ)JV$=CS{6OY9!qG^1hw{qOAIf38gQTiDF*$o?nO3;pl!k^UFA+x_%7ZoifFKieby zJ@NzbT-lM+uTL*bf2>FP&DYo+b7{M~VE*}c*^$aGT~3Vkyp+>Vp%B zTEXvpUBLKHYj@cr{%iGP|C`WD_gB8f!~d0%KDQZnQNMM)Q}%Z?{P`i-AGz+Qoaciw z1NVK8%Ki&w{GxjGU%&Hw!${?KT=Kt=H`2oSZ%!}WU-KU+ZPuqYu%2#~>y%u+YyUV0Kwzv@PQfnIrcansIA(f_sV$Sul4@7ZXG<<@ z+t#pl7q)Aib|HVvja$$o*fTn+#A1}MOT@l7^+wILjx*Egnn)X?W&inF99!Y37JQ86 z&wN{wk9Yi;W6j4N{><0m_&C6y&!rdFFaFHk+y(SR}tOPKjq4k)@JDG>T=>9MOSEL@P`E36qP znwuP0{7Pyd?W@9i!w;}1p>Db_P_!V{;G&AB`X!O*2nl9>HN2Fygu1@KGpFpbAkeH= zu-vu+g4H9Q#lDNs}~ zE9(6w9|S|coa&dj_(;@>?iouq7rsilO&mTVv2n}_ z{T&E>M0-;>Lq`LPet3<87b;9?Y)ynRQ<5@5+m>!lxV8zk^+0iEN^Yy&tzHj=%B2K~ zyOaIQl*B;sl9YvJzs!_mmgF!_KUA~C|BR01QVJ)AKFvt`;;Qz6{H=lfpNoe@B|Mc` z-WQ1asZ-p{FPrQPhQ43CHOi)&e>7t|nTQH~LYvKQ3trDGDj;W?ypKC(1u&6L)eD=~~GrK&;?b(#ExKLCsrRXxMOjM(C1B*8&E`B8{khY_+ zyiF?qsL8^CC@N8IA4Qodje|wA6SJ3|N?1~ZeISw>APb3^p@Nju?9ho|Xmm=4?9i`S zTy~i$fk5bsK z-8?fXyUF)ii@4n{Sdd5`NV#y{ifyKQzHV zOoDAQL$6VS%>zXP0$Y>lX&+5 z!J+|NL9^3-$x7(CJ3z;ST70MshE4`U15=WWtzZ#-q8eHw7}^zVawNdL>w*Q91AL%c zIByeG&PTJTjTH?~B$G2AGFi$>+m^88HWFkNjcA;eMt*%t34F*2P&1oJ3D_z_W@`mQ zKL?t85|E0YKp%|ZTvP9d1<3crtm66Uk}t|cVDYxZK-yvLBgj4KKDZy!V^CpAt~Qgv zqE|WUrMfuk2RICY;vjVn91Z1k#JF^+6fdK4rXr@|)Dm8j!oCDTOH%mcB2e7jmUEB_JBbS07VVBDDGO;U zF9G^|i~UG@Wv2AwzN<=5$~dc-Zqe|8Ru28aqD?6aNlpE1!jfS$h~N?*8l?8#FIYS| z_E7bb<4JbWEb0f36^_U*8cgN?XLj13TK*|nMORVre97fco2auefoC(xToW3HYr=7; z2@g_DxG$Ufz@k~yFCLqD59i!e1U{q9E}BU_?(f_iCiMKssR(v3Lssi%hmL1AIg+*L zxT#=C^nr4-FyWdTX!p#}W;*PwSWX|y)(C1(6v~pL27i-AXQQ^au(DQ&tm3oEQB5fc z+Byl^-h?ImQ@|kgjSLsO1%pu z;OGM;@vP8}16fq`S)o@=r;lrAJjd-XEA*kZzCqccZ8WHj-2Q?^>r(b`H2!~WhsU@^ z*#e;&Rl$sbWLREwP0B(}kB@Ed(WuXDhBIS>)V)wyicj3vWQV>mBZt4Uxc`3Rkbmq- z?Vq!PMRTdPeUqK`eYn-w{@Iq7tzyT6P4++)dx@&pb3F2qUis-@=qL|}sB%+!-)Dyo zX;`?vC)@hBJz)v|*e$E5FLl}P&>>mVtd&(Xi+uiyk4m;X2v9RfmNuK!kOxqi>6Xzro+oYCn0Xk@0dDo8}rY>CI`wkX8yslZOmJw*TcsAKO%UVz20@kI>nAd zmdH(;yT74a6|2fPE!_VFv#GD6$kB-5cdZ>&P563=YZV%Y01o_k_iXw-0UXbWi6tPg+?KCkT^+gjSdoT(JC`^ zg!{g&-1?{|;|P};IsD(dKZ!@Mc&6#kI&gp1&NP0vKkFd<+4ckFXb?;1Eqo{m_m>xz z>HoC9+;O0W_LsJQHT`A#GX1Oem)j1U{SW=6_Ma35Tuz;e^3f~y9J(;puiEAOxtyQI zyR@!zYt(8ghHcTuqK{Yb?JQqse+A$56=>Vq3RRC(Fv=9VyhF;G^UA*+<9k24{D(2V z%kQh;d#^lyUR#0rt_n5CepEE-n40Bri}I_C;RMFla@Nwq~(OE^x0lX%g^^E51Nu+Fm=Y5(aE#& zrcdCxBFR(eo_`D8FnY{bnqpA0rDL)$ndWGWrYQrBnX`vnT5%d^9u9FQ<}+H zv;%KxK|?n=GK2@`G+r=OB*>>o)S_~;7Vk(5rk&E`vhKhG3nNq$bYzGy0CvZ_&aP#u zyB#0u!Cgm0Y%(nU)FgN4y;4w4#$j-9`ulIQM)irld~7^cI6Pw@T|VJ6q@#3Rn^aeplQ*)fwdR;pmVJ4xNO*z+)7;d|}UjUx5lwmx&V1m_m5z%8`?u zlRtF|Rh60fg~?N978E4Y1Q4nK1rtV#o?ZQwPC8GRt7beTE6-V&A8hgspWx9@nJy## znQ%q>Kv54LeTtfSen!GmXQix2>Ya8J*kEK+Vc}LBwG9fUCGNKD}2Q+MCbW@Qn;7& zfueFLbSZ_LYkVk4&&P|pC%#0jpB&pJG}V+V zaLRLPM=ES>9~2;SZRBu?2c}<4ozuW`_2VODh74=avNG3kt?I3jTp?8Z2;d=&HWC9-S3>E8J1N zoJ*K{D|-!xs(2Q4Lc!umbd_>aa-fKYBmJmP)xGcNvOf(7 z4-=t0BnFBHBnNh+$8uuZ(-Wx*&PWgJ=pHcNyZ7^%xY7w+R){m1u%w7K1d6j`Unb+G zGdbThcYAF$u((I#C>!OEOX5f!qA!rPv+zUeZ>U*Lr%~W<_G*DS2R=882BqXA9S68| zm;|L&%%n2e-|AG!kn=`q6N9(xuN&HNXbBxP=cZ?+oz%lC*M+nb`b}%EDcj?YLnZb9 zXu{O=#DuEdQxAMeF*lhy(2R=8_t(TIUpWqfFP7(X*gKNEF0&{=EPw(dDSoHODGU4;hrq>F3#ay$P?wqnF zy5*JhZZ$U<4d4IYSXy&4seR^oEz!5c@m{`l#s&VggI>m5%+-_ldwqV3zAUwOF5REI zH>zT}AmQjcDjy@;< zRkUesc(ZY%J?|F%h}oO-&9@Wz02lKNN5pQmKSbiKAJUf3)qn(IM7zPc#W-oau$$j7n>*5`9;G*1+q=!?$0^wSPh#JD-MqWVTOq(NQU7FC5635N7bx-*yl$J2bSZcV&SZfBC9H@!@tWOGfs`5oGv zPn#z2W)lUwcQd=0^UIGjx+`=hLSwpH_Q`)zvW6TgW%H}>SHuzJ2#9|)^W9{9~?%`LKmI66;r z+&6J=LLy)EGArPoq$!Jx_xvX1a--eemA3V!mu({-EDmp9ZMXBYyyt|shmDv}+i==q zzSYXFCFvby2V`4^OqWWXF=gOM5&TRW{|*a` z$5yaa1pIiyM)WGllFhth>s^s{CRzUoQWGa@^=pxiC)w2=Qrq)e{ZY~1LfVJIdM=nU zUPRjmGe^BbviC|$9bc=8>HsNDhE=8{xH7tFpC{6@sB@@GFB^f+xKOQg9YnxSxbG1b zHXc`%J-$&HlEquB;A^rT^(G0p zdo3wBpB26Ah<+x)-(iud@m93c5!HyLpP$joS~88+iavKl7m=W6SY*OvMYUtdzRzcT z$|b?1u!ut?K6SJrZtqe24;w`)lI`8>c5dNO{AA({yxsJmnS22xy0^3cHrn<^cz?US zzq9{7+IA?szwO;erC!>UOk0nKTQO^*s#T)tKJ+qqm(C@x-N+L0Xe(w-R9AZI!D8c? zH8$BXmP6ad@OD0iO3r3E`!AqvOJV;7cDu>>owV&<*uLD^{xWUb2HRIU_P?TS`(XQj zo$aS+Tlu)s{@-o4a}$ZGOWV$e?dzTGU1?hn*#3~SJ%_f932(Qp=y|(6YA*32-WDET z*rTsiy(X%=NU^b$N*d$aBG^hBUsHjE_-n@ne$4HD-foJ>8vjG~JxRQh-*rKZpAtb` z+IYSS#CXMWrh4=7Gm4*O+k>|oiQMV{(WfMC9wb1&i<2V+vTwTO1s^36-Bg-pVewJYmQ9T$^SZ{ zM@jH}SmbnHcRM0}A}i1Sww9dk>k&uvCke_|QIXR#ZF59*NzgPba(w#G5oMC#(o!OO ztTKl|n}u&2`3#aS4$H%bHmO~Q9pxHQtuLh%k*|D754)8FyThXJflZWgj*=f_$`38I zVKF(j&7p@CMe!3#ljv0@ZUY@Ftx3>1EOJ6J+7S&Q!KkpvIX297MDs{+eOP1;kj8x{ zZbgoK14*9`%Q0@ZIm!=6wWpL)qOs8t{Yip28rR#*V%%PHlqsZY8CE(q<%AWPV^|gm zMutUZbXsE5hPh7#Q)*F#BwG@e^4`&o(HyHXO@bfE`EXci>^T9S5$JHvY!`}`)#bF9+X-%F~)VI|ua(FKmEQdOGaOD~%{Ydv~9F*FA09MQ)*Kj`Bfxc;~_8EThdwX?D#b8^lpS5%aot9 z&mq$DL}#b`Ow@QEN#Yqt&W~?w8$n*CB%OWwl0HAYPdJEf_P=!G^GSMh1Ucs7S7)Ec zNWa}%y#zShZv5Eu#d@# z6XBuGKJ!S=4KOpm~ClAnBMpGQf*Gr~Tm!{ImCXI`wC*JpZ>y`=vmyiZtZI~{xR zU|UHN)oA|v1@yvdQc~`Am)A>n=|OUSY9H=WQjT_)w@P-IP4X4tT}p&DvR_&uCmF?$ z<$IcyW_)AHz_`M1GFsbj?lu>DuI6JV1tXPU*{;Bkg7{q8BX2J)*44Xl%(U!$|YM5 zJIbp`bwgN*&c5I%H^ZwpLCQ@km{AN605<- zj`9mq{SsD2boM((UYUO3b1uCiSA*k@@&W<(dM^5$WRT2tu z<^@O8i3FE~MJ3K~phfs^mOSIJ`g!}C;4jrLYW^%$ z0<&}VPR;q+LVLrz@Sx4NjC2pu>rr~enEyYwTf3jDTVJCsZ-=*@l{0XfkB#)r$(dz7 zkTa8Mb2#P8XwTD0nSbGyLa(Ouig}eRieENm-r9{`f$-L{DM$ILd`~Icto3bP%8PGk zKlNg~lm9%-Kj|K%*Q1=yPV{0K(bwqpc6h7tf{mE`^9Rm9ZRTm$6z%IORgq6$RI1X9 zQB?I=adB5u1u8UxEBMX;JravR3cX^EvkALtw%wFQI8!&-E3$U`9J~Ee+BRCZN1x>V z?St;BUl~VNo#-B5>5aZBf02K-d@2RwHqzFaEUOf>{@u&+a#ZmsC(G%xeJWq2i`%g> zN_TuV?g)MD%%*(y`CgTti|2jz^6m+=yLH7^WitU=A4D&*NYan+Af#n)OP5?WxSK_qR9e8~m4=^^N|SW_^?Y2D4t}f5fa;`?s6*&Hnez`WF9RX8m7( zy=iRcR(}_>zRf?;tZ(-(GwVD2Ys`AB|7Ekj%m2Aq-|atc*6aLrFX#R5_otingZ{B* zz0tqitRME@W7d!QUpDK<{D;i?aeoC0U4@!Y`0JVVCVwZhe$qe0te^5vH|wYU=~TNb z)O^N2*sP!R&ob-h{Hx9SdH+*p{eu4+vwqQk!mMBR*QL5tq2?Ci4|e>3aX{57cVRH*s7zr9)S^ba-bH~iDg`c3}|S>JEgZ~3>& zdY@Up?JqZr_kY{pz^vc#cawFVS?}^Ml=V7VcdQv3RpT}Dp;Am|6}hv;H;>w|L4wo z?9T3c58m6QF0l08dv7i)#X=Dq7C^v)Vo*U5DFSw|U@xfHd#|zgmY_zB8e5DpMiYB9 zu_gY$-*e{9+_wc5Tm1RYd_FUC?>XOdZohN;P+W6k) z!1&$qkbSuDuxZ1pIYZ_NX6`{=L0d($D*S{J1gpde=75D>LC2V%Ym>+C02K|DnA&Y^9Z7$nj^c%pa*IN&51#O zi9q5Uqa^gx0SXcdeKHcxg%Q})v|&&)oc2(^9jssydQ|cDp~_<1ZfEtVva8M9U+wJ` zEQw`R+47jM#7e|pRQ*IW{jiMnbwRVXrEsDe`0xo8jCBpMQ{H5v**&)`n9Ujm-8j#gG%kb78`&P}6=2Xu|{M_OLE>?*^ya6$6{ zsR2+`(0pL(h$HwOlsc2|7AsN%m-2mNYM#80Nj)d;<5Qo=du=McjQkT*ZRLGZYKXi~ zPED5gy3`VRpPo8P-e;z+m-jiTr{sNZ>K%EXmnvLNJ?E!7%X>p=qP#Cj?J4ieQU}QU z^3)1>Uy<4%?<-Re$os0)oASOU^)Go}n`*j(`aW)af%x9o42DnC*H{ZI&szYsnOUHd{=^h?`_rM^1a zv}6-QEo)3Cc0AQ`y6N#4LZFt*O$P?28NEV-H=3qwd9T#8uHlNM@_}U(Hd3_9hnCEz zw-8|TItDal$V1Ms(qq91x(i3UgSUb3DDK2x8H+Ue#Dvm=RBt;G*eb`D`778TSP89Z z%g0IirJyN*r_#6+A21T6k}cmx*i>#hfYmKx-)Oi1qkK}#uLN(Kh~IEVrN=n(GRzB7 zugOCfi~7CF8XgVo8bgoyeaaf{#>YV*dApH08>X9tsVg>v*}?T7O(a~OVQ;5(Ft>O< zGM+?WFt6cBR3Wuquuq#W5fEkUpM3(1KrIJ|C99VCVrk0c@qz{Q_#(6sbow-e%J%J) zJPNA-$PNw@6cNLSq9NogkK}iZDIECd9Zvh=3H^b@d2fh)baut`7aZBJgd=-KqL zp7_#9sYyuW7QL9FDvjKtm&6k6PIOT(qlF~h0|)-#PK<&kU(_j}cL?YK=HLi0gzmKx z4Pi@nA}CY9-#x0B=LYr$or#(WL3#el&TWT?HOv*s%P=TU`dmxRnHDWy9b2CWX6z} zp_~qjwCdf9NE425w5kY4I9gQ}ckN|cSgppT8^a<6q18C4s*7Py>;`Q=BN0-7AWmoE$MIHOlTYCuL$Z$Q8Spe>#7U7L2 zGYom_Hm1{w;GAT z(}eTV{#b)Y4h5!AgsJD0o3}v!)bjix0QmP4g~}BR zK=v=Ybts}VLxk$w80swRgQ^|3==2wz1hfKv9|DGfxpf41lsfkphu>1bZs0A5_;*c) z!?Ek3AOEJ%V*pzhLB)Hj>OPXMn6R|Vetrs{08cc841V)3)46XVPjm_TtF5?Fo`Moa1@8j z%thG=0Gttl=rf%|C=QpJGlk3z0Nh5<@8Tr9xaS`$z*3ESsk_9O*YJ3YV96Dl-k0>d zA_niTU}8*BKjb#ts#(^M7KcmJMOhc{dXX>6lpiiL7x@X`O^W2zvC9X{9vAs6Tv1Mp zITVkj1Uo*vV(7XUe6sqC7;_08R}m~>)?l8kd{Oo=cu$fq%9MYRBmZac-m4;ijq=6k ziT?No;&%1l>hRlv*QE;oUPpfgcoVAdA9MJ#!P~D2{~6^=?|L_3j!5KzZPV((In%PxzX_)^eB^&a5w8(~DXU|K8YLpr|_{I$d|b=7%wtc`v$ z?ngl|mjiH9r0BEQkNb7|2DPNgkf~yw9kJIzeK!*OiemD;Djptwj{XB?(Lft^r_4=P zfaLsk0Q8GM%rd_CK-~*hLkn^{p!Uc|ild4w(3OpXJPfE+dC1WFX$Q0(fGZ*p; zka;b>9gY-GHy5d!#F*)L%p_Qf?KV&r`hJ;$$TKVOI64BUl5kC|#M6b~T}?jAwwpVy zQYBJ=9|7PQtHcG}ryz-^_W<~;CQ!JNRh+Aj%+w5bHRr-rsp4Ee07ep2HOD4&IizUX z1%TN#X=UqLrA?_UhSbv0?45;{lF;{ZIDuSptoEWt7vNW*?i1E!W3 z_}%w1C*Z5np7hb^Gu!~uq(`97i~0=Q${6(-sHFAoc*K2%(L>P1#ho~fALSd_N>G69 zGt2_>fC#YfDFEd487_s$(cqsFVGf-VVZuHGF;{_qYlJzK7z|IqCt;uAN$_5X_>|D@ zYti$i41=~)kJMF{iB1UU7~H+6p&kq^Wr^l zq;=~*xGPL-2digt3)O*nkY8c-&yDnpE>*!PO#jJgc(6h4t&_$DU0Db8dfWojmWT8h z7zh~pdQ1c_!)k9dO&ry1Jq+nqvNvt*NVB7wuS3tDsq1z|hq8{=cF-3jLrhryJ>(xM zqT#4!L(8+Hn#?ZUh>%gPR>(yyXyYgslO7`-u!N&r{UAIOxBn10{=qPXV2pB6Plikt zuW6Kv;+N)$`?Q7`Oh7u72)&qg(!=22;g#2|P% z{S~YuWMJepAqIc#vh6(hxixAtytE0;H25um&r#W57)a%61Nv$Z{szv+NlS)mF}Pp$DL>g4YK4$*WE-FjF+D5oV(jOIzZxDVLu=+>r z$|w%S2N?#Sl8*Hb?lGx1w?(#*wCWw)>KFOVMqgS zNmRcLH7n~OWnBXD^_J!DME>p+34W`5^9Y#FM1b961y3vBZSX#e_|ga4i=epDDS!ua zxW#qNhLT;TQ>o=ZYFGYt%0Ha^1He0& z{1xP*>4h+C?S~yuGE`)WijZI~#N)CmBEK^onZbQU@1$sg{Ec`#PqcV|*~ts0E8l+) z^v^8MCtSY?!D%6&cr?-7yMR?B9AR;Sf4Q+IMNpS?`4%f z0YUcXkH&Hz-0D9?KWn;jcr`?a`wI#3&%@&)q9wXCv~N1v?gsBc@}1~@TlpgYDtLdY zBLA)<|225rUF^!g@5na?uMPQ*`yVS`VtW{PVlt{JtB@|$XB;9kJC@^A$SZN^j1f1eL} zCFB(w!hBG<%`TU+*=r#y+k-&S$2lky}hyjw-Cn4zOha#gNH5X&75>au(}1?}a4&H{h~6{?&j*M?xRq9OSQ%d$ zGS3423d_@B!;2X;TBnCQaLv6yJQ1NJ?i6risOAkY--`f_hFe3xw_rBd+J=rAd_k#K z?M_|O5s*F+?8?|D_lA1Lfw^-YK=r71#un6L(9L`xmgS@5L#(JrLS3f;ae+nY$5_OJ zTUE{VaNgVrz{3{gOVAbcTh+oZw|O0aKNIBCxz8$}*~a{vym4XZ!=n0v@|jUgOYqu} zFY+?x7rgAqj{vVCl2`s~j{F|r&5q=?mL8ZGa5;LIVcC6C(FB<_cyI_%a#~oI3`z{R zCPu%lXc;H`HIVlc?S$=JN82C3`(va{K0z2S9z1hYS;afdeX;fF?I?^$z7i(C^ea3GW~Pwu(Uf zHie**9ZkCfa6km2pVVU-{MS{TSp~$Y5lS{W$p&jhU8MTVl|Wo?QK4J!ss;(#6W~2> z`C64}_&-;W3q#YGEnpz0A7qVIib5(LAS9WeGI_YktPR} z)hLj>-)I}uw7A`}wbrS827ou3dyzWZ$5EaWU<$L_8dW5K$xt-cDx;-kjmm1&v%l`Vl5Bf6L~piwXsKC`l$|Qd znlT*sl*e6ppmM?$zbmmfm4XW5WKDF$hKF8Ol^|PRP`hrgL^HdaZ&$%iF+JFL%#f}E;ey~6aJvD#*a){q zgR&1%eZ=) zaiY$g6k~o3{v-LA$-sHRI+JtKXb01c9WoiB(cvBjKFkQ7NnZpZO~8!m&P~E30PaL* zI;$BWr>yQE53($urZ8=bO%JXY(lLUBX~@x6^>8DV91H9`+zTk(kBSwWGz~d$rPyYQ zCFV@r>#Jak!VE;Z3ba&#kA zMHjI8TehoWm|~c2+kw9eF$|(V7LU-UqhicK;4jU`z=m|&%H*6VP3a(qlWr_M+Yl*_ zDKyC=wvHx^YnNt&fu;?{vLBMKl6ePCyiZ3bo&u_}!nI2V*fefoX=_vY;o7A(;B~ir ze=_AyG@@JAF6{(LCHRx`F|x)+$EW7eEm=tfafdV68|CF(4U^ESA= zy~t}Xa*b|IzY10ZS{mKn?J;~*)O<%bF11wio!y!)39CL5t=gOFrM;=v$(!pn;<7}E z-X(0kgl+@W!3D8?70{mu5>EuV#p&&L2*(z4OLCxlTSI1B+=&b5*X|_cmI-GjsQX)v zFIsMs=*t}`e6teFwGrSd%1iv`Rx1A@@UD&cH^lmnEu=FKfc0#|<_aMHO*}k)ZoQli zUDDOR0ps6BY2{oZ(&Qu&7GK=0FEW>9WG+Mlaa1X3JpmblJNo2EIDNsLE}@aR5@8E5 z!$_1U4RSl1^dtDjP9n)mbP+dZXnCOXtLgmR^q8{31q@_eK-Pm~Nez{oV*Hh6Mfnr z{814`bSUNq4HhxGfImCJh#qN<j*&MF5Ea4a$5|3P-(*!MhH39On#fwK!i& ztj=C}nH>(I0a@#05CoRiJE!*}RH1753{>+3a&inAz)LCtn@K$Mpi zXUu?+cee)1dY22eUGFvqZ#ZuM>&Ux=g!pk2zlPhYsL{RY6Rn~~4>~pWL)|DL4m5hW zTe+>VMU9Hq-!C0CX4!PnlEA#9{;xkfnJ(Q0vng~yOKJUm!tUZa42XgH7u<vs)7oEPORg;Z*G zUUVC%Sd81>o?bcuCe>Joc~MReWylma3Tv7drT9I0;y$gRL{0Oee~ZwRRTtGq;k+pQ zP!E3gr@=@0^P==i>xeZ5Y_ISYBYmm)AmanSz+*fiXW@WqP^xxaG?Z-LRqaoyvUgP3 zsjjkEMw6Sd;-mqm+oLpK^hz3Vxo-&KBGTso!Xi@roV2YcH4;B31=D3e^nRXvti;aLmbi{E6gg#qAa0PO2H_ zbGNaUwR) zEQZV$FYf#Yd}J+zElFRRlbVqp){I2uhXW&7?hqLC`=#G<*GtS=>#Z_c{Bf^V@inRU zTgX^2{YzhqAnK*3KzPeSnDMnC1W)J{e3gjI?MKDt;Ijk|-VQ+*nV8dld_oS~#@@OD zlj1Srx_hN*fP>HZ=!Nle-3Q;HU8T{Y$`C_Eo`;+w+(X-8agihL=}%^=@vS$-k2p7M86{&V2HZu#1w zfs>FQRmN;-hKXfY0TX8uaJ)Y5LIjU_e$;fI;(V(#7`b%m^J})(|b!5M2t)t&s%%EMlJeWu<_q$85yo zc>);{tuS;W5_df6N44Xibe9?Ucry|@4sCt{(o)UC9P_AVJd8u>qni>V1#cA$*zxy7 zN_POhoYI|te@;zaLHgUNedPU@)UopZYw8MlznkLDKVALKley8bUyA)7GY|}}nAc_V z>bp*Ti|?NaU3i~^Hb39f!}o8(H#fA67=?!x=1zM`8;6}O3keOkVrqi$i+;6AM;RAYs zspb&_xZzICBL@tR=%WW5x!Tgl3^)enFh&;Ezb#U_Xv_o%$cI4ERZ@jP4_p16zwuLF z?u9ufP`u9H`Z;EJ&lkUTP9@4nHlNPKAUN*Cz;&=r$L)0v=d?}zSx9Q!!t;j{FhBr7 zqVJGLBMp}-*{9EJ3$Xt)dtr1!yH_Sf0A#a`r?*;P3 zbIK31kDQMGA$VU}zMJx4_7Nqea}YncT_s`m5heY=8)^Bjk}&&7xOM?xHbD%RPg9(I z*h~zgBFsMG?izs3qzFB)A{v4)`-tN=0&q7$v0ep**+(?}9)LG%(iCPN(exDn_2$-~ zDa<}hKGO<-4i==jhMB_2KGfA7q4P|~Iq9PS9ZpNfedM#D=6TNNWPgW#K>TTu?N*VR z-+Wg!vNtPI!xgdL$v3hsY&65c#>tX>Yzrf7ob-p@p|}&ro&-oc;%wt&63Ejn%Re#Z zhm8{)3*s%Y{QSlVJ4$(t6XMJUJg%X@1z`I$MU4}7X`{vor$0hzZJgXm={N9rFOsGy zYMijMo7XrI=Ncfat#C`we3~}bI2i-Xlt_X~L@cjyLOo_49t#L$Nc1D7-E1b4rWro> zTw2S|{)%Dx9v!}K3g2AmJE8*~d7pnyas3v$bs=-!=l@-jpN5n22tW5f+~+^^_`>?T z!Q=W_Uo?ixiRCNJrL|gEoK?igQsd^?d=qA=VoV+Y`G04|hmjB0?A7-hC zz}sl~`B{oRZ~~G)+;K zO2-1T3#mk$+Y69`DZrrlG;JUkpz{9SYDQ*9&;}q4-?3cgt2z4PnXSCAU8xT z=MPhmT6LI0{Z-R2g(kyVRoEBGMz{)NIVY_%%)h#JdvwsHSGprwn7V4a%iwJnqsJNO z=zf=>5;nH9=*dRw0sR@ zWI`GYUSAzx>uUlc`ud`_uO2a*;lM&@?rRDZAew${lJ)TWPA|i5MqgdiXJ6T*00Vs` z^<^YsGW0=7z>@?^0-ovzGoF33>S|VW_f5(x^9EJ>Sy7ghS4qIL;<5pczAFj1E2H8j zG4gyk1Qu~IIMof2eV1uGv?-5$^ZK?K&7~zoc=d(Rpip{g zYH3*SLU5AaRQ48l??_)JyfET3B#Dzf8zoM)=3WJjzJxhb51tcd?|RMJ!Yno2%YFI; zJikTs_vz<2)@NW58FIy*2gNkA!2E*mZ4(ltd?P7>8+OGVi~NK z5n>swmeFDvua+@lnXHzr#IlQ8#x`zsr0304%hnA$z_PDe#*42PsAYm!7OG`ps>NcA z(5hv-lIe)7Bh|8fgN3lHQp=>$ZqT+`EmIl{gXK82?3(Ee1*fQGw`lKpC zd0+c!3hh9iJVHnQ5=oCx#3CZZ8L(b(IQ^U;#*|N+Pb;Ea%oKo+o7kN%&wdj0bc|5yOc%cus*Qnr8j_O0v>_*mMig=BPC^2kICK8efc=Dsq z+~6kQPAb?81vpLupH>905?~GeMG6~T155$46~OZit9VhBDe5{!@r=pXn=W8a1@Lr4 z1&B{n_$uYyUlXr~CIIUp{i~T|)G(=8*=5M;icop|W=XE+IhN{E##hLiCuz*1Eo1M6 ztkuHeX_wVlJBz}dYf^Z(WG$YF=}2jCDiXpwI}(c$)h7+nKkN{UcbbLsy}|tp#ZsUC z?_cE9z5R>Dl2lGgEP-0mVo9qdBbKaM>WihJTJ*EgR4rNIv`|Yi^TC7>a7uEY$F{*0qqN@2*KFOkY4LF4Fg`MZlej|#0SuW`7u zCi`myNZO0ZEq6>@_2K>ELmo34yA|f{!%YMBADb<-JerUIjUcQJEjRVqQRSheDlG_A z{0H$Q&nb00DSVZ^*5nv>Jis)Tbt~zcj2!&PlTE7v)P-Zk>pbz)ae<)>eK*z^)~Y-T zRSI}W_O;65$*6IVHG0)&1xCEiBU5WuoKgVKQmq-#Kmj~tRRL1&9ItJog_ftUiXUv9 zv{30hjWwiqVCL?35gK3mJ>dbZ>TT-OPG7$Z#p6sDp4%Eb8L}UZqIEkw{@OI=usi2tVxF53A26-v10aXX%2$NK3djccw`Obk zw|JI>Po-qqhONZ`?HjSF)BuU)4d~EhhsfNq?1;$RsRi3sis{^txmL|x8naoe=5Ebc zUew&ZIUBBO?pHDvURQJf(#er|K(_Sc;B&NiZJ8B`eSVLdk~oV?Zwn z*2wcKh&^aZ0?v`F!OEhyxzko-4 z%13dCc6>t1VCj(Pmw3oXvFOKl$XK!H_jX97So9M+WNWeLCw9ms_$Wm~aKQOovXnW~n_V%b40Q^hh(Ez`uZqgr+o%T8+9T`W7RWrkRG zQOhi`=rOHBW{YLIa^{LlgMt^7w$nM|eGAx(Itmzl3iFjmOR^M4B7Jn;Eu-cnGbgh3eZ+8yP&4)+HZk z41>xeYLzTHMl>|++w#EL*kkgY(#O^G&^d8ql_S*j95od=D;-WZ@RsDfLi3CV+dtMWBgG8!B>LVHE5>7F()?f7G-RdL%>oNDtSjX%`CBFPJZ4wNE24v^GrQowYhLGJ%`W**s$;n& z`!pfsj0<&Ts1|mf>a2N<6@lyCKP5VN+OwuUi%KZF)|WmKPk^pkHjjb>VW7Ve1qG{I z1+E`&RzLFGXd!Fm64ytg-cdkB1fU6lI0SBJAnx#`r1Gd~SM&QCDLi>v$;%<-~DQco8u52<#dL3P~YXLx9}I-#WAIO5TgBw9m{_E#VA zOlu9Rbf6{5rTmKrM_nf|)>S-sx75W$DL`zf=V*Wm41oOM`$RCKE^N55C} ztS?8jSM*EE5%CrM)BL=hV|d!>uu83hZ-xt6;}=v6OrHxI-`9!0f$7J?_n*Qy4>={D zN1F1@15Ekmais+ngVJ);e8u3j95r7tBrQkHR}4+dQS%kU({jW+-g4wT-aO2-pkicN zj-Ia=otC5LD=N}*^nAtGv>ZKOQJI#b=PSmg<>>i}@o717zG7lpj-0R9CM`$KS8SW! zfb3OJv0a*9w1SH5)BJK3R7_6Gk@FQ(()=RLLsENVcTD~BL~Qm)0>iRXN{RDReNVut zB0^hM!gXpNpI08*kB;n>*>Ncl;K*Y}`J z3zHOfg`N;Xy8<@ALUo?Cp6EiQ!*_dVFp~h7ZbAM(kf}Tco#=oT0M})nXwo7Wp6;)lbSIuQ76oE)Zdj!%2cuIo5pUFEPMJmn+3K{Y8LQ8 z32-NR6RK%GCFGTZ-o^4X%@r^$8Bnho1!koMgu*+Ayxl;bRfV@($U6-5Wf4!>4jR50 z$;>eNqchcyou&S`49FWT+8;yyks9C-@K8R}%P>wVsUjFVH(9pe_;97x*nN^|Qq8|0 z;DeeN2W7q!@_oaQHwCku1!&06HS-tE@W#$dW(UST++XqI0G(>#{&tQJL%^JTrk8mh zJ_vnyNV2R1sXv`Q8@nj<;W-evltMdH@!?^i5AOo=Q47fP;o*5cT%!2*0R7Cu{aqa& zhJXTiK^+sOmstdK3-QyhlBM*nS{A59n{s2X&GD~1nYbQ$wBbl7`u5vzSDdFw^q3Hi z#I;!JiLuw^_yeEJT)@^VTTJJsC==xAr0XLWM zcRiVhW9?5hdM4KX?Nj2U{#sz{fqnt&gNY1f_-_F*`|?bvISlFfGB!7K?8;=0xohay zRmmJaX!Q`IDhtzors#MT*0NiOon&isgHlQxE5xmzeUyfte29ts&Dd6X}P^Ln?Dc?x4uwKY(%uXt^0Qhq@D^pE+hDu)# z$y=>-7=g2u^(4s8RAKF-thYh_$g=dKq~X|K`AH;31Ke?lL)E`hetYox=kc`#GE5S1 zp@6sw!)yo84g?;-;#FVRht-#DWokLR)dFyIK&*0!j9Te{SmhB?$?Jev<+5Vd@vT*6 zc|hHx)v`h?W4ep#l?lEcf`c0)->rmxJ<`5X*{|obyv*K6`)w$QtK#mX@%RlN709?1 zJMeKRA8Yuyg^w5TC<$H#CM(a9fXxVu1>%`u%~=w#CeH@^w3Gxa64`(?E`}BH%m%F6 zN&-5YVdgFgK7^Mt%;MRAXS|mLEDc$CmIPc4hvxAk<|8VJAQ zSrYI#iVTkr$p$@yz%vswJeLK1fYE&ZW(=P@RPae=HaJprQ8Fv?CBX^3A#|$X)Qq8DDm;p zo@m$LTKu$FzlN3HLxCL#H#?p$^xI(UZ`Aw^%wtQ_Z^G-}z|VfyQ^RdmufSI2P~Q(h zs_{_Y6#aG%JlT_m+{%J-ZU(fLq5O@7bI@;_d!dKd0dVUW>)u2ds<^i&NHw~bq*s&m zz)qI%(Tb1uczEU9yO_8GM*O(d-KcmKNUFZ^j2R2PT-$o$N3Wcl8WVrb6KF=yMY|Lg z-=y9E*R zZBz5LCFxeOgpVeCw8z6sb8+Vqm=fGmCl3DeB+#<~_cHgFE^?adIv*hB?|9^|;v~81 zDo)Yz3bb^ZF=K(3JT}K_^BI#owq@1Lr(SvjRDVg;4Nni94+RhOlC#UWvQ$UV(<@+X z3ru1}6(C$#SQal#O>?E`Gy>=05qY+XpVl^@pS(SJFf*mrFksezd=qEo)J2{@MPk-<2NxIv?vskN&10OHOk=}OD2+rV5RBJM6#B#w0Py* zWt_MY5>j+Y8w|3SKB1*!9-vt6FHZcSI(Dy)F?O#?nsqC2c{gOJ#FtipjWJQ)_3Uz0 z$c@N}W@j@zOs-s8lO>ik}fg`ci0#s)C36I1YzXt)pG4KK|d zi!(^y&(cemkbW}ghmn4&rTd_3v0Yde?`|xAb__sQ1B66a%(GnE$my-=>nEWXKm`w3 z1wEPGX&&(NEa|W0(=Qs0zd(@wsijLg&Enyvxw9b|UUOJraGCXAUVwpE8U;uLu9arS zjQzdf--SKTWJw9Hy~J-`P;!|FC>6xRy}$%Hwq)!zn})y-(rnJ!3&?pmi8RRm5uUME zS+|R<(Y~qdHu%*Haam<=KWzc_9TWtq73Tu@slzhCGnNm|*AAz&C`iJ5<&0mJ+ z6n`n0#jL&TrJ<*-aY*vpr5c(G9Z2$2SXzhN2$s9nfhaS0^m2W^Gj@XQ5P8i#;T>_%`6?q`CsEs5M3 z5*3mA7`;+^$w<#>|x zpGIR880^ILc!*czlbr5>zREqMKW6Di^P`-ek1qNPq`zV5O{8tW<3a0f0KE?$y*ym? zHdJrXMh^4@zzY`pt@u@+0YlGft=aS~V2y&31Z%rU(n~KuBaR=y#Ko4*_K;}wo2T0G z$klB*#Mr+WV=q9pG}kx>gBY9THF&ro z-Gg~AnA_9rrMdmVM8PGx;C?RFO)z_0tdSn_N*K&sg0J; z9)%@xUTpeTW3VU-l8Fje+)F=?7@0!)zAhb_7VtL=<-wTHSb(hZy4F`iZvy&;T`0v_1r3@XC20f8wi% z-o(;*z<;9TVvBE(XeIbrXO&@08)SPyQZBRpk;|N>I>G}_Ayw_wkA~DUt)+P#5<^-) zm-ejr54yYlI&T*dcqz@kjlXV}rtCY|3#9NW2;Zrfh7?_bv^&p5o$OeO*pslAZw;Q6 zPoLP*JnkUO-Hru=EbPtXU#UM8%()aU9_Vn)EY~v4v6QmEYA^M^zuIKYlP>ul*K&hn z2`ZfSnAH+yQds?|rpZ$b{d5OrwsS0AP3})Jg>`hl^znV;DA&mIr50sUFBHfgtZ@0f202w zCetYn%ADg^ydpPpV-G|Mo^F(6yynNJ*YPP=hj=#iYQbcB^<{@+{^VG^j+Z+&bt?5* z!O;}D)#cplSiC-AOn9>qx+{T=+u-YVK}4F~UKGP0>esd?VP#Ol+oF0%yb3u~g9m%< zPV6Jc)0Oj3tHjqJOO?rKCE=roD+gDVZ$*A{G^VTYdo>n*`c$~l1?o~km!<{5Dc@U}PJn|;N zh71&9qy+;Q{A;|_r?B+m0W+{*@B{-GJXOX^H<^S3fFR)i4G-}tyT$;a|C}@J14nINfdj;g|6?Vqw1Wnw| z_-wL+z4Lq1Xl8ic-><@P9Ku}`Wb*pjZi`RzX|OoxKHy5k!Dd@|rPcdf5H6}?A1kl# zt#PpFepO!IJHgO+o9;_(dEeXZKZyhKu!WBOr{fWmTh@P?<}YV0*nTN~d$!bTC$rgn zm_uDl_s+&^Tv}@vn==Qzs&%mqyV&+>Z4DM)Lto323~|Y|HbWeppCN*ww^}7|EjEUx z;Mkzu;a4Mb?Bl?a(_u+Y!DDk>v8_$dD!rRBj&Rva-3yKj`rJ-8ILc)&n+D!jPB){b z40zoC=?v%&{@9?$Z)U)Iu0hPyKKK(SnT;_DjX`p6S+3ntb8W|^m`yIo%eJsPnRqk# zwrS}3I_6souPNW=4GU`V59S5Uev6=OVpuS&(+&>O%dQ8oZo@x6!>XyQdd^_NK6PCk zb3<#J5D@B*nD{QaVOj!dkE$%W?#>kjST9$7G;q_&to3mXqkryq#J0w8&_w9vU{#Rb z{>DuuUXo+Fd1H3 zbgl((mJR*3#6QfA7&XUh3OXh)q3YvMwSNvCGCIhCL+N0|V~c}KOH$EYz}Vs-)1w3y zuZ=BAw?Oh?S6artlN=3~a^$7!^~CSaVD$^p5{n$!#7JiBS~QYL7kG7r3bq8Rt4Y#{ zn(fcqZIDI3-oU~P)xR3gE7nop;-?Ra+RfjjB2h|1^ zt;={^IS*=1>;W9cHuWSSF`Uslq;LlZVgY(SZ!(;NglhR`lL0znc6cl$4*T-IT(^+^luJjXVtDfAWIO2#rW=j+yq5|3 zs0s+(*7I~o*DL2AKNE$w+sfjw`@d%*#PLn)zgHs22E zo(z8a4ybO7M5ES17iiSN6`KrYi%L*_ob6`TuadgREp~^)?!=Jw!$U!cvt7~cLS~wPE zFKIpZ9t%p|Y`JB}@1V4(?635bKf;;G?@6a{UUf8A^M0uk&+PL3z zBS^ye12=p=xeEcTOQ*SM7>#WB9Ee!i(uU76Z#j;icKXN5U5jn_{9rw&MmE(8Fv!YD z`a?L>Bx^OifFB8a#l5QbAt^YlsKB5!7=A14W&Y$?0?uREEACLW2uZ>DzTfmgDByIK zz03;7Qq0w7_KG`Kk%BY)rlyGlG3^~oF&7=$tI!&B6AEmFe>F+NHHY>xdpMRNyMU0~ zz(OM738wceTvD&qlmRQ+&%>)NwSR>o3h$HIu(y~fh zB>PrdbH0Nxces|T9ZNCSu-VIcH&#^mv?(%N(`GNT*0mhzSO!|i#h4-DRowecdCNmd zu^l!0I=_h-<3Ng9J4qGChn4Zy)HgjHMA5%qvMhY5Vq<7ZtSLA3+~@|q$juBkuHpq) z$PBe-go4NgHzTZiU{e_(&f7L-kr6Ite*0fWh@$hqkrC*4G3WU06=w!pr34rFzTup| zz07pSQp^>(_KLGcB)ps7*1YCG%s*Yrdyb`;OSSD4XBewV3LsZ%+sh1cE!`YTBMV^x zw99os%WG3qFNeY6qBg_$wW!{vh%|DpE1t0or+!;|-W)o~rW%*K+bbfe}ZLxYr_Ta_A*ml%kHjaXV)^?v6P&K<)&Job`ZJ%;;x>=kf}kiFujm8IlX7YsV)F~li%_~gf( zbSW)P-npX+w!RzS{J1N-!};E$tBi}l#lHdYX@_MVbu7U$r(I^h)gmhozufQD;c+Nf z4%&}!-bZDZ`bP6qSU|w*BV=IY-Y$k%xgp(>6-B3Eeb6A+c%cOlP#nQCXh1i)`1QKDO>gzW4kydK!)e*vrV6Kxiwnt2$`c!f$bWCyr@r zWQ9jaG+guHT!Gt6jsvgR6-~m{zW)jR>o$*yI1p3)vL5%JFEbo*iLc;MCxU8-lTLm? z$0y;)^9~GMDyOYzb;r@;Lug+L)xIt$aMuOJzOlOe&VIqw)KL2(q2O328^;=~2}?Eo zKT^XPF08Ej(kTKPJq2Lx>!tFtZk!O2Q@wnDA~ob^T{n*6s?3^v2(6`1?Qv9AeVv%! z+xNS(K-aoBtYZx!-01&v(*gW$3&M)sHF7mXOIvhV>b71E-}SX`*yu#)#K_9aoa>Ow z+!{oSlYhBs|0v@lKk9dJ(!7Q|4WY8%BD?MlSWz!0E8E10y^>hnJUK!Tc~y}ugHE1@ z(k2_>lkZR!>E|SN6lMF27VF`|O;kn2E?mrYuZpUFQ8rr@xxLLAk{W?u$iUay<*c3x z=yE2t%USH^b6W#oU^NV(e+7EgwdVJ{#gK6wYoip4AwQ+ZYA@X1E$>IMpABBz3FGk( z?}qxEKaP~OgWMQvXJk0Qi!H4_QST77%%ZrL)}rK}liA=VqWCw;#3dHR&Vofz)JqTB z4u1lL$$tV5NlQ*1^rV-9-A%6)EM6PR^ZEncoE1(|B6%07>CzFN$5GBi<7YwzUF;-5 zeQZmjo>pQAT}h7~gulR$zO|*lbTaAvCu1Wl>HAwc@lc8d zh{H^)u_D}{AO43)&}s|1>tqUl2BqsrztW|PaPf=Dc5ex&%^1(SouCISNT!BntsU!m ze+0>1vqFPezsHL;tSaOJLilN$!e;Ied21^@Dm3U$zA1$|4;B*3+<`@<1yc)?1I%sE3~?JYTB@rzV)6zD z`cN$ELgunM- zqSdqogNXwfDqeOpzmZx!k6$N_1ui8aecirT|A5bfzZ?&7hpPv~pyxgC8^!BnywAX$ zB-%^ggAev4F!|TvA@KeugWiS^Uiabs2<{|7Ub^3K&wCCg|1~@W-c;a(@cIDnf8b6M z7B1(%V_OuF80R0{-6wlG)Lv zg{Q(*#jIGZ)6YL^Kn8EbEe@%166haTX#tC*Zt6&~)shGW>hn>p=KeQ1BZs9PBDGp*TxRhj02p%LQhgS$$^-p^oRNf z?@d9=mOoKXECW?q$^03!wrpo-h@By~Gq z`euBP1`u?p3+gF}bhh7tW#B@ytyr)2OSofGE!X&IE|O9Uet^UyL6GLH2B08N-IZ1y zo5E70ivMF;z6%SA)P7!Z!cX1S7ZTWJju|_$Q|Q%2qT~kb@2KS?{BRTEh?0x zya*&8hY1OB6#8V1UxO1p@MuO7`V&=SV7}?huy}2#lGiwZIdUBdB&j3W3J))xLm)X! z?XPeV;@?Z*Uj%Vq4Agc~jduL|9AGbX@iNk#l(BF8oB|P1zJ7N^(o?`lkjq8sdQ;2yBgokTCgk@Q`q_YbFM*ODV-`5#C4OP7>{<4;+pSVKDjY@envaTaFyD zyspFh7Tigqz4ReiRQw=J{%`OQ_!P)_Z3yA@8s2Z=P7;LWp{N8thAHtC9s<|O;Zby} z0}MAMO7IZ6?ipXYz2~(ieUM8>q@dq;f@#%OvSzP-SO`bZBn#4x@YREG3NGmjUAhPt zUzKd3ec29hZ52Tr1ao|J0h)ju0P`=kblG3r#*UTU2J+pwlQK${UWKH5lJKuwINU-~ z{=?X$L{;~XXn!Ko^)u5@)0LWdr7$YS;hrRQC73PCCD7nl|eZ#-2sWjk=q0pb30M;MMES% z>749v=>I|3Ij`ZrX6cM7t&dy!?X+;&36c+hVP`f;iKNVpq}QQBFL)CQn&BaeslW-B z?frHIzc=nA(cYfF#siBj#=zoF!$Tzav2;WU=Qa0DH2-iXiT3v7S)1mHf~ByS>+ukY zxhI9~7;{DYsNG|(=*hkR7nv%c$}!T}HJ zv={OzMMSry^|6M#FxQ%al+Ipzb1j{o1}$F8jau>`o-%4KDA*Qwdr1gjG3)QH-R%oH z{)077cr|rb>*I4?f5Ik6mNAVXXmkHb$1;TLR{u+0hNJ0&9rgbR@;_N%z^3OQ$&}I_Rhqfo3mW_zwAs3-h{-(|pGA<3Sr zVIS6BhP_&QbsaV?A4^CqlOgH^dOOC(1URGX-FC+4b0FFiaD9`{6(Z+*0|8n!;>ZDS0zIj>+&VOb4p zIe`c`b!o4-2$qJV;(C7Z<;?V)!L(N~_pjM2{+LBFi%c`a{cQHi^IV+GEk5`|qEC&U ztL2c#Z9~2ATkE?%+-#Q3+us|9&}!Lq_RZVh8wb@2Z+dG>Ya0O;{sV7wdHI7nW^tQw zn8kNxjBQaCpVE1Sx9)-E1$o(<1ZUri-Re@yk)f@^nAr4z0a1Kecnul7j6;X^(yFVt zzz<4Uzdz=%O6`~!v6||+N9t{DbO1~h7>LB^t3-9p8-P?HI|jwj$)nYK!=gD((#AM_$j7m1A(+j>FW%x|f$1nq3m>e$NI# zM-DvOOC#K@X%u_{H%2-f!|`W(m2yv{y|gCr@9>+Ow;i(KR!Dm_vWBim9r!J=`~kK= zlIw0<&e+e}2^0s~)=X$PRQ?10DR|SWLHxTD|8aFWE^A$h-ka~<+16bo;?>%{+k8)L4|sUf zJ+)&Xd-30hkMG~Bn)xNv{G`3Al7GR)pQu;W38DMN^s2V`0ui^R zy{e}nv}H}s@c8le%h9LG+ftp^2Hi}fGivqzYkj zt8dsHjJ9@U+7>QSxDorT`zmiDOXQD)0} zR2{xWu>aSiit2Z7pf%dno5j7~v?N4TYz$5Rg|iqo*P~jS`v)_^kJ6($F*nYbAErmu zJ&ZwfVs3Q;I=^?1>OuIdPCcrkLqxQ?ibUeI=>zwt}Z>Q63sVqvS(|?z!nYShi64$o{D`c zr_q_$0^Llb^XJ{8+P)Am`7`QKjS3TtJ*qv6Hk)N@=}}oN->FAsh3nX(vhW|cM|EUS z$1H9K>o`yKZwPH!7H5xYX?~AtOD17k*z#4kb7(ER?menIiV+Pzc8}_PWV9-MogZP2 zYAS>Bv+PlQLZ8*SMrXUxzA==3hXE>crge`lx2vp~^ctZb5zwMV{56sqs+55cLa7q)Sh|b0_A3&_Zn|1^Vl37uQWmJ zT||)|F7wooL4TpEhHUEo7cx&DTZxWCJLF>I6Rt{=A1#HG-pO@WVkX6ACeLnI;<(}7 zoz|k6vaDbu#CVzYM-8iW%gwU9?J)fWzq}?|4O?ke)PP%&hucN;9l6QvG)FeM9DB|G zOWSEW(CHt0JI!=D@{?|-S($sWIa=(So>ItLZ>2Q{*IOM`2FWd$9f)Vi^AZ_%Kw;*`awS()qF0y*G&Z>L$A z`#pA5{Q%PxGg?8-PdZJJY6%yAqG^hb2;DDcnqq7@BCame6wSj7$1&WE5ZbaaT&&E- z#sZ86bYAxacO3BPOjhL0T>P|?6>-bjmZ&;zs)<`wR*=iTzGl|1b+RH}gB{6ia`~5S z>{~R(0PD1=CT>-36^e4QBGq=Y88>gTBK}TTEn6^I5q~hOa2+QrEc^$atmx6Ejv3vZ zthgFNTb9wMe7~8vR$+40aru{p*L|{L4r}-yd$QsjWV9;N2tUGP#kbX6`I#*Lx`2`V zy(TNd`#*aQ(QP&MMD|2UdgnzbhTqQ}FEgM&9-vJ{3>l()&gkQjH z#md~L%m_cq@~>67tvjI(uhuq>KTkF))de~?-B+u_hMEW9v;1yQ zUI#DUP&2nPoZEs9o}GZPL90s#&wln|neVZo=6ZPef6KqZnJ2R<*QXESnkiqQRH`c><@A>!)NuWAw&IQFaBF$T79`Il_R?aY0z%RD}vUe%WD zJNSW@fc?O|swq7Xn?Ivo)tE5R*sI#7*JiVAExjtM@e0ZbR5x#D7))rplob_f7D?tCJ zKWf__bR`&O2L~Xh)VdHQPI%i9+4Mq`I0M^|av{na@OPaSqBugW7SdyNScnqI)Nvt- z#ecVjC^rA&kgre?=4>7x1h3XwsN=;vR)j0T22iHfLLIL^unuA^!HxqV^1niD6Yv+Y z670w(sUb+!S_@#DdA`p|uo;8l#+I%G`=T>o3qLACEN_ zwHLs+QgRF6?L#3`YXOX>gq#BSB9rQW1#rs?piP0gepMrU-M*?8Uei}KZ!yoWkWaQ` zG0(r(U{3zff^#9p%d9_rQmu=54y|E9&S5pthPdbF>LQ)Rn_Q%`xXCsnkn#RIXWl+F z98Uk(i*&xFBR}aPox`(7j6!2-(*wVGW4Q4moh~CGxdmgm@#L#5IY03toju{<{L$$; zEYi7xLYqAE_7DW;m$67kkHcelcx`Tx&f(c-n0Km8M8w|=)q`WCqm#XA+Dm+RcKJBO z@%JB0_A8*~Cml?_aWq`~i3XFO+zOHXOF8rQy)lTmx(p^qqqrDlTfi9DqEWVKz6_Ui z#&M1X%RN4w!Q}tqe&V?GW{b%8TB36SGyczLFnL56Dh?*!TDjS5Tgzaw)$*MNldW(a z2a_%Q2Odm*c5EH9xjUG=17mE9viXjh&9STako;Z6hq(LaH?s<@EKIaIF4VE`x(_C2 zSj+#|gUMTM4M*~ad4Gh3I#*VAQP!DM^HtXbUTrEQQ?Y8}gpKmJzay9_3GqZ@S@%d+XkU5yV?s19RUk<5=U zm@LN%Q&o8rq)7jN3ilXrd_-(ME+N(ZG!*b zDAYA?D~<+27dP1j<5RU4z<4m(ifp<7#Lz*o+AAln90lHAZxeRCfN2M&6jsp;Bx-wDsF@1{q0Kin}f?Mp|tjqKmEjS@^4pK$87p3_BY!${_MQKB_4_EDxRvt|#3fT3zrjNrFpha7I%w14 zU)a4e&v>UQI7Y?nKZAW!HMT8M-uqy~nOHKWDPq!@+#&#oBc z@0A;jE$i)^|Crg4M6;g1MytJ`N5S^2#HI^++*GuQ$%1|c-N-BGb1geODuYo8Qu;>Z zWDZaJkKhr7#%p7L;P!iv`Iok&jA5teRC*qN&*uNb!WSa&UK{%(w{@>UHgEArSy55AoAE*)&FJx#{_{^f)sa7cwU;KYnKALqU6G!9 zI~>Cw!rH5pKUcSx)*8iECtI4K4%zT;>-Lhr67(JiO4)yIw?v$=EJprv{rA)0Uiyxh z<(1v<0F_SQ4m%^cHiBh7cKGJcuH{9?Qq#||78Dk=fEvSrLVNv;f0C6uc7ye$=jBd! zEO|f6(sbZTyS6(aaCrlVWmh^(o1|QH>TYV_ zIE=kaXV=o)u|$>LDN^b22t&*X9CwD5bdTV%6WDbeXR+`a##xH@b}~cklr;ql3tO9I z4kWoyEJ4c2y){&MUlx_#$1K#$f#o?Bx7Q=5UQZ0F$*Iz}oouMhuHdVp;Jf5b{cdi0 zEUz0%>7x;ae?S@ClGa?QQ>|K zs&-Yi7GujqHVz>yGD{!{7{~%l#xRil3B<|#Aww32EI*UQF(f1~zy=(+C+$9dXsg|CPV<(sh5c2xRJ zu5^?VW`sY`rNDn_`@`|!5Q^^xZ90z!90#B>Sn$O~FG&vBm3?yWyXZ*$}q_nOF;fRTOANN;=r=C$@Fa%#n&?Rz)f|7Pq~bO*Uhw~^bAOZSu8 zk4ra}+fU4kY*usTd+uv1Z$dLoc#*B9W1CHL5=fFtqmw{a%te@Cun|_{VS-5!Rt`WL;W2w<)o8FJE=(``-YM@y( zuC;Yb>N0Gi<-3IO+o#1;Z3%>7Ty%ICx%34Pm_a4 z#wQX)(jemeQlBEop7>jZ#R$g0gMid;6a6(Ln2^Hk(-H(@$Jq+OgeD9-&zaT;#=af` z(E)<7RGF4wg8JzQ##Yw|CMFilgEoAzAXfhVpq!j#Y!-6|!ae)f{GTbtK$ROJwiJ>Z zUWnG$L*hL5APX4Y0s_rXZQO*8UF6W^PgVT^HG%cd;$NsKNtD^ikT0El?`CD zw6efM&k6k0^Dg}3zAaM8`C7oy?2RbS{WU`U4eo34nzJAO1gPIdt-Ci|_ZCcp|GfSG zokiKlUBWeeD*j)3-b(-A<9>w1#c68Ky=Qum{v4g&Lw{bs`&|(+&aXYN-u;P4=@n7Y z!^id~-B*8=-j7|d*c-h_Js6g06#r)M()Ud@D{}Paz816qaXa~;Ml;iB^tGtwz9LfB z-5B|D*_$I@!kyQ)mige7A0o)+sn*IDzhKMpC4BUsG9Sb#LJ)@i^sK~}mG?!cKsl}7 zDEnB{g?W)}G5AY^dm{}_9Ee#H)Ugj>guWoP>i*|#q2rii`Sjg3pZS!#(p`vDac3i6 zE;|$XVh_Yvg&TAD`z7ago{MI-}9f{kC180efXQWpU!IJ7`SYL|_fxq$>AmQ$vG;nY#c#MD_20e`mH)#1 z7`|nmyers?e;lP7@t@g+V_Tpf!@_!Mut!n-V8^CiEp9o$oF+c*XV<(H@5C(!L34x? z+Er=GJ80hw9*)|QwGZdQ=aVZw7<9AdZSKWE^`;&iH|q>+$Xxn`eU}0wS!ZMeW|IDF zyBr$@{Ra7Lll%Rbdwn;reqDC=>T=)6hQZZCmrrhR@l&qXLGkL{t1rWs74JL)%Dn8! zeV1XWzQP^YaK!!MzU(@8{fhC`_h#R?nqF9$EMNUbESpuyQq;y4pLIO+Mvz>z$-Q&K z{%y_&|eZd*9S^%whv8-gzHxzvE?I2$)R zUN60I$&Z|I-E|lN)(n8?HAAOgE{)=1WW&(qG^ophw*0|jP*i?7+QR@~w+|}V&gkct zN82j*g;>4P9|+J*Z@*$QkM}CVfx*Dl@iz$$GavYwK!A&96QD2mnbKE95iI zsf+gf>J6^fw|cd~D#7@D@tStT*Tx6rkM}h`uFxpKeO>S_(~X7kwee!x*1CwK@vpsd$vVr-u(9c)H5v`e;l`F5_7sY=*piLLdL#$p;_eg!)@D~JMrgs z{@q^*aV9Vvbl^|Y9h)4VVK8|SQXJ>bpaU)(y8K7o)rLIp!ZZP7#~BIw2;L(IMz6!K zS7NaHGkBo34)~)+e?({pslTDi%YD?y-CKAOQ~g5*OEhJNeH`)|gt*sl@Y_1#x+BcX z#tdyxk4M7>%~EijdtM2QZ^nyn0C#iV7z_pt8d4pP&O`>4?j@R}*6xc|Hmj}Zuh$>A znfNE#AQE^}yj}!DZ;t;$q!D26eqsv-O3NVg?*QGKb{*#j0at{96$~dOE^+H+AKJ(K zYa&|3r05S# zOwBk5X%Fy_32>%`a5c=vaWQnc#pRrB+N_N72G=sOGP8h6bb^L1zY=2n{5GfDcjpG8 zl?S7c$FNf+O0i8jPR({hv`1t&3*hTXpx){FGrSP|;*)*ROr7H#kN;vu=r||h#l+zp z=Oh=#un`czDZ}N=d=u&(+5%FgF}>9+EK3Own~IP=+%-3;#2ogj{U_Moxaihrg3m>Dxphds%an}%#bDVdDgA16C0*B^9aJPVyU&X0wi`@}~`{1Df)Xf$*EVcR_38`KsQfs3G-69^1%4tijuBrB`Y8xI-`BSR zJNV1{?zwcGyA~qAPZJd}kx{cho`B__PBdilVAvv09L5hC++C*oz^r>(Uk!B zQz$n>{B#HbPvg+#Oa+efZ^9pZ6c_DJKWFe9BR$9Yx5^7<-k(nVVzyvQNS{%ECEoDa z#4kVWf|O`j|1L5Iv|}6b;B%%rqbMoPe;&y3`jY7Rc{Jv8KqjkSuXH)RIRBo?do5?DHvUhP*oDU+QQ@z-QTY#R!*Rakz780HMbf<%>;FH*@L{n0 zW%m+atoRL=)V$w}jV73)-?D83RLA*k_m!yntQ{Da{Z8yfE2}%sSK?CzXbINe4XB^m z`#lDXCZ4#9`vxbDsPn4CC=n+IsP~ z;@?~+(C6(B8HbD|@lTI~sL7AT%V1|r_cDP0oB%%AR`}fwy$`m~bq?D{`?rl+wu$Ip z&speI#y1wNL(dKBC98$sGtPk0u7Y$~t=E}%;QiimQ>zUG)|n6-|H*U4-fvw;!H>-p z9!~i>Xe9AbsFo-x`B5oeElj>ilT_;$IFr>hLe~IM8k5zu#xkN$6*5^(YbMxZ-K%Q1J&VuF?5d84jDQ;AReH8nVO1_Pf*;?uDAM7{V|Wq);@H^l3} zu>umlN9>X5-c464*<<{>B09Rxo8om0l&Qo{<=u2WBzv^qUFY@o(f%cry2~H!Iozjw4Nwj2#7XPacw3*U)d-j_;BLXI6Ds2Ptzly+;w#YOjSq*LTVmcME zVFi&w-MKOiH8gttVfA&|W0Rkj@kVlj)|}Y+n!{TNp8{F5H-LQS+> zT^z!6)A3r$R;BYEBONr-*b*?_NcUlNetTW z4Gdz6?W+fBq6WbcS!f#%|2C5IwXrIe6@4j%&D$r}5!kdp#s7NFyfmNXSl^cAo>P^D z5^|+;S&6`CzjL|&D4okn%hS2Gb1Pe49O1Oz2;C=HMctINN-1o88O*SJHCd7pC^5Wb zJL>i?D^W@M73Vo`P}Y{9DbIOClBd*-)M^sM^ea_ar?R;Q)b2UQCCu_|g{sBy8Kuf< zR=bdID_v*{M_sdO7xHbT3vCUFPc~yrlYC)Km3r^P3 zOo0Nfl&}kgiH0<$BkgpG>?Y|X+P3n7vKaJDtG#zq$&Q{=my1g+j1DS%PA5kxwKS}$ z{i=o9+eD&5xlq=VQcJEw;zemOqrKe*Fxpa9_8z53e^YEot*U&$Z{nlkNYvt&Tt}$S zIx7;@wDuI%pcEyb_2Fm@A2gwYi6}*SpF(|BG-^3cg;B`nRSHj5Q!2?Nq*Rimtq_k^ zNuVkTk-DL1EeZKet0ag<>n;^cf;zO8WF>*kMzWC-0-XR%;oAzu$~V;xr_COxXCz=3K+Cn=^U%6K$oPg zKp-kfpc+!Om>|XeA-aqds7pWq)JULey3T4j8zrXiQS~-kBN_}dkQT1lamF9Df-fg3D$aIO1 zf*k3hRv1sBnc%C^Ub?wcUJM!)4+=mEg{7^Pf-P7G)UgONTH0FTMcYmCufm#BuW#jD zjTwtIqOA?3Eu|<4z4`7r4{D0m!zl~3M%9f?Ez|}>8ctgvX^pDAtA%14;1RY7lGdo& zyIQE>Sdp%jBK=Jvxu#N4l+_~%)^ilXkrR?ZwIpm>tu*oj31F>_h~5;&2&E_qDScP4 zp%iKJuB=R*X~=FBW-N9NhApKup_!2c!%3;U>tpc5+bV^Nn5t$*(UY=|bk%aAT8~rv zk|V?ynUzDYC*ywgdXoHssjo^J5G8tZlJe5lTS49Cu5rbPC4`E|E9p`1SJrFTuN;cf zuZ+b=+b#n2lt<-G^LaQ-fTN&qChLOwuCIjx-1&lHJp*l8x&1B!9EO z$N#40t<5anbPG~h$(kZ$;5{cOm)+|q*Xv1?>$Kk{%JoLo2oF`1QVXSMV#(y3AYOK_ zBVMm35ici*hSMhE^+wx8yl7Q{az&a-Qub3?(xf`!6+?Qv#79}s$a$CeD3zq7*-$r7 z6b3n>M&2t~vzdNYU6dFJC`BMe)WJJSHKj;E?NXlJY$`;i+6<()p^Q!P3`I+o6OwVZh?OL3DgAki%!g84$5Dq+FL9A>m67rF*Hsy-ZpRhK)Tmx=1A4!5rfu_j{SHlzWcu2mENJ0hg?7Uq z<4>wVNrZloHl!I1gfS}Kc>J3h6D926DnLptVXsh{kN0oCDH^3>3Q%j=Cc?i;fQ^o< z@RjgM?N;DaTQI4+b;bUvbSjqx2`ee7Kzgy&RV&~C8dCQm9ejEpq7$`RR#ekhwd4YN zy%mDr>-Bn5)|0{$hVj*qY#Ki4-AejNTd$!{SVE{QTS--Vzp`G#e&tY-w$N|B#b z8A#-Bpl)RPDGPn{uQHPKFe>orJ!_^r0dy3s$#RM4iqOK+>)h&7ZWUEmrCQ4)*ccLgJzz^BBV1)<%csqZ(!gT~wqAZjxT zavHa+%uu7s8k1awN%lX2P8R!3Yb)aniZ-+|{atDH(KK7_-3ElJ;0)5n-xQ-b zhWI%#Zt6isTy>^u+kM%=>3@}wFvV4hp?yikf^;`4Z_^NDMZL5Ul=mio07zdHAgP7P zH|aZ4l!;=kOjJTakMrbN?F^e@1(L6)ep%Z=Qok%Slj^TZ$F*KBDW${UhxDT1nm7vp-HgjUv58k3i2CLyrjm6w$fD76}_!zcevleL5r zg0ZzzG4<O8!-_rHn|e)kGhH{ef7Y6&zYo<3JfIKTQsUq^%~`iv(WvG&UV| zB_yX&ZA)TbX-lI*1uj`lX)CaG1mLBbNUE(YZlGJLV@kcCv)~~WWu!zI$htph*niLv z`vb{J@_S0y^YYDPiK5RYs}M@Xwv%cWWhK@IpVy>s5nd<##tImkY9nBkm6`w}l`t&? zZVhF!QWIdT6xx!44H=ZzDCk+vG1iDQ+{kKFg40k+#H(U{(<@4sDNv|hk z{uf0XKPwPow^h{r_DfSSvPN*W-@V>~up@v}MM4j)k|5tTxT7=vQE)5jkX2AI9Lai0 zW3j^s3UgOpQ6&H!Gs@d~#r8|rt&by4-D#6msFIi|t&(sZXq8g6B<5VQtdxct(Vf@GfHzh;Cg8zZ0@6dk<>hDm`(=_cbmqS!^0 z#VCq`fd>!jTnE1f4{E-739Z_iR!vEAFXaTaHLaS`S^#Dgjg2Jb6sWDq z8Bkl(=uv@9tEQMSq+FeHLQ^dDRI{EE707$rpPUtmFxL@|>*PzR<)0Mh+f;TGP^_XC z$mvO2kGH&UwrB&q#a7+@vv&=*^`ahOF1nULhe=>=lwv z>+s2X4f~ZKD*dLNUSldrQnwCcGo{k{p}$QAkal|4Y!%`Zl&qu!BW)UbJ!!5$y;Nom zy*=Nu(H0`~mi1C;fY9qDCx-T5fn2RpDjP(KmUOVRg(rH{Dv2ItCA~*EM&7d&`Jk!y z6%`imE2R=nl5F3c*1({=uEVL9wrx*nvwyj@F!mKZ>DW`X2jy+KHMKO$`e+qxMbX%m z^`+FpFqP(*NR`f&HjzzQF$^fnLlnuCpwo=3mom|{-kcnk+ML`P_2y(fwK+KmMc0*; zAgC;xZ9s=#LkF~#Bq*|)mPS1J7IFDhF66`FP0^u3ye}o&Kq`As`YBMF6Br>6h_Y{J z6sa^PtLe>2aWbWOAjN`DX&z9Zm&nj;RkBtpeO+O5f<8gnsmuc@D(QGnJ3q1>Z#94Y zQZf&u1Lho=2hss^F3bZs{~-K2lF+E6$9W{JbwH~qX+-N<)>?+H(`t{hbA4Gz2~Mvk zB{037WDysP1BM3WjI?DOFpY-)>eB&TB=JE#MZk7b))Uoe(^T49?tbMl=zj8*De$#TlwD9!^0Clp;rK~5nAHBV< zEf3oI5+B9mt)7396GZBW@Tsfs%4MXyDYqDO%PyxU&S>f4S` zTJrR;cum8ER%y8$w#pinqLNZcuJ%RNO>6+_v4U6){*nsuYFiTXN?RJWDsE0$O=(N2 zswuthf+uKbNHNnX(U8_do9g&_D%exS9*8?BH7p20Al1ysN~|)p8oI5_y{6y_SY@Rq zz>r>91&mbUxUAF!7}6iBfYD~Gwp7g}DNxC>dtWSGE5n)qy`tyG}PN)2s_5;nzLr!io$2xX;)ol5wWPE*Y!$7Bm4R`8~3j(VZs zCQ5UN#TLElt!aJ)8Dy;(th7o3=`svk0k-uRY^AYvV%*UJmAO@lE~xx+ z&J<+ox`rZkD~m;`r8mcrD4i>9E@u$7LKPAxYK*glRcT9BQrnW-htig;q_!o&rxM)@ zA;mDIo^0?XtMWhGFM&;#q#9wWP+f(#WsJ6>&39boS58MKvCx32C#$7Atelcs6}Ti( zD{V<(Qn4f^L8lRlEl{hJO66BTmuoxine9~Cd@9(5SzjBVZ~<$TgdmV=W@IH+a?=GJ z%P=ry?uGn~X%(=_N=<;#ag{$EHqM30FTKu^6sY8UKAug`Cq4?rsCtM-&1v6#2^a`c zjwxlehWfhXdy2j;S+?4(tk$qwIXOzVa_;qR1&OHDWE`lno6Fd2rIH*cZBIfsf@rJ+ zSS%kHGEQ3og4h557Aq(n707e;DzQlVY)H!KR!}xHR#2I;m5Dm!&P`*CPPqh9R%=MI5vM|0s-!)N_*9j@;0DVPRuJ6m7*qk)H%}azh1`m@Dy7My?e3uPN_i8K(`o6eO+~O7-Trd!=)Qj#J+nB%l$f(MVfX zg1{tmkxEzQaTXHv5+LD#jwj}seqK8~QFT@O`o@@}Z$g<_hQ3fiJmT`^?D70F& zeo;*nq#9vL|BEnxYyKCpwx#%^EM&Rb7g;y4L8|eAu^Rj(72?&lB<7X2G-^#5aw%B1 z)SQ+toI2G^r$j^AkjqqolBt+iDo;)-|BFDnoWNAG%xXY7kAvoa5nyQ2bc#w%fRRcv zl%lwT4OyuPFf{**7-*Xzm+3S}0$R&!qiFbgMM*lU_A09pW73;U-8Z+u3@-dfnJQJi z&;UyNu9WMPH>Gr@RFdo!*h^;w@NG7Ubi&xAW%Lj($e-S|Z@3Vr$-l9^0=6_LWO44UTQckym z(m^LFt6{ei!j7*X&Ho|@PV>KrN}B&gR66%7CER3UPYPlcMOLXrrsI1)7HbP%ly{R= zqTdyRxVp~>s}=QrRO$U_v~_w`noCx3oK@j;C~YR|FIHPp?qap2ezjO_sc0=$Tbh~| zt1Sh>#cE5ouvqOR{^)xX1SMZj{jy{^P4q1L4NDXV)J;-fB7z&}Ye_E+fsjw?auVtp zgtSj9=9F~x)R!eB$r9BPER+Tsv2;=?OIXpW+o&brNJ1a|uBhRP=@4l8u!3U|L8;bL z3+0-NLX~m0D4a{^(+Yc5+hPQ*SXnM0!m{a#hBy&|hkl z2lJ}n8S?L^Pv@@D{I`N7DLh8ycw(6GgjDyYS}1!?zk3U8p)s`+wNQIoTM~Migj?-IEtIsEe$1K%M@&Ju zlT-ym)RMz6CA#FN9r{y5YEdM6QQFrk2?17CO3#JT*QDvF^(Xt%%93@=cSRe0 zYN2d0C9+aXu5yAglg)@5Vbd>uFDp$p>EG_jN)t{)F4g!4VPNcWYRWATVwkGLBGK^K)WRivr9vbX=$z5QBm!t}TJ3m21K`GKCs zEoyM6b`wEg@=c9birtvvT$SKLSx;+irNpgYqSapRGU@5ndeA|oit2uA&PrzQN!60Nax$d+5NQ39{_DCS+OB`rEyEzuO&DlU*vf+$}aB$NOu`c(l?(KB^#i&7Cf&S9~h z^|zx?gwLL{AcJ&O%?X9_P=lmOYP!uvvA9IL>6_HvO&N%MPly-uB$v4|f612`jbF&X z>X@=3XIKVPlDCp6O1WQqw?MHw|Q!}n$A51Kpl?g^!h~gj5NtNvriQgv^??03P?_}cl z#OoKnUckTw3|zp#1q@ukzy%Ckz`z9zT)@Bu3|zp#1q@ukzy%Ckz`z9zT)@Bu3|zp# z1q@ukzy%Ckz`z9zT)@Bu3|zp#1q@ukzy%Ckz`z9zT)@D;N({Vw6UFb`kB~pt{inV) z_}8UK8vN%@S1Qx9rOorzO1(0%FtvH6;%r{1RX5L+i?a)prOm|~ZrHqQ^TbTOrj?gY z)?>x7FXmmPX!B%gVqrS|!^vGc@;kQOG&@sXIC;}_c|mkMJ2SC)x>(#SD(O`S7Q_R=uD4gDOj3TEB zv$K_ApT{LjCG%tPSfQG)R|^0)@^Y-CR-eW9lK%pIn=j1xZPT~8 z!n}Dk21y;z0T!w-17Hc9JSvp(Qw!yy-&X)MqSL7&{ZyZ+ludI~Qkb2t&|9ViBXK}h z^@aJ_5<>)guO^iGPk{Qi>wS=lO<V)F9&xrti6P{&l6g2dN+{*I9Y!{#SU@ItX3DF}b!`9Uov9j;ZMGcVZ* zMF242y-ZNliKfDWg=C3o$V{GjuFuR7)p7GQkJ0Cwre-Szg5I=bgB{cD?scr$?#4d%L?S@_j|l`);PU-s5?H`H0)o;~j8wcrWL@ z;NT&Phl1Oa&1StrRPJR_{Z&CVFX!D%U-tX&e9v*cA9S-Ta~sa|1&`V$Mnex8!uC(Ov-qCPdCxpb!{43re#9N6 z&R^;MH*~&n$n^2Go*~f(4cEKc9q0DGfy$TVyyuNf4{=*U60o<^FDe4KYE{X`|J36dCvRB=@)D>f6ox3>^-Nbfme9n z%}o)29u;70)aGZn&N_5*im|fN`)qEMnsTWG!~5}EZ$D7hleum^{mDIssi(g$%Wlhg zt9!@M*#mATzOD04jAz$)D@R9B!8?JU zQJBpg%&z9Yk7d{9F3GOBGy95z+1*3gRlD)qE!kE4+vW|~SK#5|sqC5|D$b2&-79*B z(9WYE1M2WkxfL(BAFTlXTgLl0ZOXm|z-GLevv}ow0Aa&u_R`nkc|Q;St82}quJJxs zAvo^M-sn|&r!4;d(*Jq2_lb%-HJ-gb7a{sfPzxo0kB%S5{JGidZ_ZwJAnV?nT|JU@ zAM4MqzIr@+F#3k~p+^Dc1{AK#Zv0I4;Okzq*-+Jh5=9=}{i*nwKo14mB!oykEM1RHs@dkrIkj@HV@hUWN@g_We=4F_K zq3r63P1#Gv#?PPwZ!=mWw0!0)(Ruzwe(~xzWiQ@^@AqDky&8nD21~_zhYO@`MCVuM zynj4Rg)jHs>5iX430?$ge}IMy{9WU{4qbR(cZjAg^Zw@a5Gp*5i;wO4RcyNOf0*1MBd<~82#P2-qU?>kuKv$X0q<-ETKD4Fa^@1q`d z`j3wcjT;{EF|0nHFSxmvVXi;3!Ud&lpvASq`$H`4mAU(f6kkL#JS_d3cM%b=ODhdW z9;x8F4)w8`zIg9`lpwf*pTFaP5%AMWYAss9Z|YM$L;O3K2>(UcHZ}49|DhrC*Q*69 z$!@@!!1~XCVR?OwlyDRn-i9F>{_$sfR$&ZZ>2*O8S?~8&(TLtzC0xGD`yXqV`F!`G zv)T1DZp^@0?<~{K57nvV%e;SC-CI9HMeDtPc-Xz8r;jG^ef(qA`-dB;wNFlgU*|UV zTnt+BKKZ~XYFv7jnDQ?%?dNjd=jJhtD;}ps{R~>oc;DGT!|`629RS!?z$|VMr zpEaO70|t1x_jlm!ncQ;(0u3wz!dU~tu@Hn_?{C)f76ANx8?-|R{AdOU^!^eP!ywR9 z=Dc?@J+1J5a-HD;8@#_NyXbs{_g7BuGcTeNTKF)Ct6>Z80ONioO>nOFDMK8+L=E0E z_-Dnl^v{dbMh(Byw`}iI^l$Dl{+C!g(DOC-1zN8zY%iG1@APMTug+eD_S_Qv^9;d?2Tb2@Vo~Gw3&v{>lT+apBEdTXhj_IbSjoHgh0d{4Vd(C*Cc(jgbr`3}2 zZmIj7f6Tn;T@}3ea(>bOiUF90?DqxJ0BFMizhJmrj^TJZ=nD%yduuN9>Pv}--kMw2 zJ4D0Hd0%n>gBhmh57Fb{83Ci0hlIvK;4~Brg9HmAq-(srG?ZJt(l|zOxzEXN^*;Hi z{XU+(;$E(JD=`361Xim^xr=P9YQceTNsBpDQ5X23QvG_Cah zgl6<_A9LxrTJ!XH&pIMvOdD|aWr%bnEdRz^35)9pqMruQ zP|-J7ROKSb%v5rR!E~?ps~!k{UG{qKUmou5Cn5((e~SKT9(ui>bKNt%&+p55|Ks7O zXr1lLt$Pu_q1vwJ+FND&yg9R~{*dK`ecorW)6%N@LkFwuF|*3fVDX@$S!G+ELchsX z_A6$U5x)d#KWkRm#)!PJd~0mHnKgDMxyH^e%OZPv&iuN2cz0nb8GBI=C&J}r2}TQqu{&md8FQe@6ym(W4nSRUNkHDVfUzE zcPiUuW~8&-XPaTWZ=(rG%XXKIA_BI%3>48O+r25mcK=O7w)>*Sb~m~8{(hdUKU?#{ z=(%9Kv}LaMzP1Y6)j47EXNHK=LN0&gMW4+-XW0BE5UIy9V{5|HK4|#N)}M8VNAL5# z=(G7}1)D!%*!;Civ-vOj!W8Tvp<=mwjJ_#hO04R$&z>1NOG9Z%qFP*%Npksdqf{-i zta~?EaVq7yP9@es$$JSg{2fNThViROifESQwY$N_iiFtZb>maC0#5| zoJ0`I$?w~f0CpOJINouBXoXuq?fSR}Lyh;bp66Hr_|20|3jsVCG;tC8hi`&`&XeF2 zZyRUP?2`-7wumy`b^4i9gaO-6oBEeA2c_T?XHx55?GeVVh#c@#b8^6Lm&_aMy|1q6 z?LQ|Q^SKoR&TVhwWZHty$c0tHfwd}TkkKj*O+ZTjyvgh@#mpc%j*=P^b)iaN$dd-K%BICfY|6t@0Dn4oM#WND)`j-@t0vSy&Hq}U*4D<$hpsrPoaq`y?;Ox<7S`< zBKfC_X`t)Bp3UAtVE)Sj^^o;`2)uj!>)|E%iQL(2{}W^zGd{L&pCaY~6DxU_-J|r+ zxY1tzSCxQF7=zh^47?xK_RJN&nxvUw&In)F3h&GsBK-C61yo1b4Euhv_=5d^*l;LfB|wCHoMe-Wyl(@A>=}43P#EhYn3P4P-WNs5fPRtpT{|1U_~4o7 zY-F$UzOoiBfb52+{H68x4?gXiS)bxJ{~DOyv^CpPB7FbSgHwcW#=+kr_@o!_KRG)J z%AsHXhEOhar6tZ$^kTq?@n6hf0vH^!^|8_o}z|_5e2SI`W1b#z-Uke3=!@~`@)P@YxdKHDxFhrrkv)9-B+lTyZ@sn74_HN}fE~T` zXaF5$hf@U9xVx7??e+e`BK7$P4T-%yv9CCK~6r>N)bne1!nkM{#8+)3mw*Qbfv5`NqaEc;cw{|PU* zDHtDT-#FrffOofNEjcbe|FGF2KaVY>$NLPn$aM&gc`qbXH2erfJ!JP%C=Z@z$r0Q*XRk{1LX?e>COP-dA~&_?NH3wZ4@Do;Wyz zoJCsrRVKTM_HSOyw}in`LpE6In;B+C?|tMfu?vp5z$TLO-Ub&W=JI2YjGApF<9*xI z{QokeRP!|(X((0-kp8*C$cL(i*2$(8_<7UOLpf?Q`u`d423z$_vRD35jK>K`$wk; zo^QStNDMbYpWYXVlh~8pdZW)?!MSqYd*L=tDXUR{9EHWLqzP?ZR%^bAMj{%qUf|#Z zBv=vVvajSFZpG#O{SbWMvHnKoX~;apsZs65=Q69Xu4gOd>3;qPL6}Zu-oyqE^$$_N z?T!72mc039dh{bwxpP2*;27SP^*uO?V_S>v!z;Xgnuq@(eUlthL4->o9%I1?L=XI_{i9{ymO#3 zeGm;7rb|wKq&(usQMcCYz_$Fse6=(`TPT+Dg@u#Db8~Y=)6~HBd_ES;Jg_zPbvNED zOioryQy9|&n6|Bhb2C8hftm6H9AfR{57(=hi}}Ljb_Cs4>y?FBXS!53LDW3i3uT&+ z(quo)I#0`11dg{hBbbN;#uIZiJbe40MZZ6LEloY9yD&C%B9*u@faTR z6IEcb=1f(pCkoZcAtqW5OCQ=pL`hWF?6mL9kL8P%`BTG(i--3Y=V-#`7wW;B*XQP^ zW)NA9ws)Ar0=w)niou!6&co(R0H8gxe{3-CSdvGRvz4kt0na|N0!{rjevKz46clYjm9>*+rHri34_4N zd|{fR%Mq4O#~kv78WEnMhW!yZw#LpyECUQXd5P3&cGPbu%r0QQ?kW`!H;*$6LtA_< z=5wH%Z;o=Hme}95*WTDaRhX@nTBNywtytN$QawLgDo@vs4bM5XV<03f>PmiUrtX}^ z5~b-Q8rhLNy8!OEt%j2fKy9Ip11N=RJztr^v4(O9bDl3$r)$@2u@3|GVbH9Ofq*Gv zIZc)rLBv<{U@S9p3vZ8HOdn88U9J)?2>FeYkiu$T$6 zyc_vAPi$~Ifs=d*7&@|l#?%NVr8T~s;KC_)%0VJRY!>;Ma;*d!Dm}PRz!{?o7ShTsIIJr}+8<}GHR^75M<9=)!^uHDP(i3GqgVim35cq^+%y&4YyrXs%FS zTG4?ZyBH-XPpWv$kQE65)LOfG0+hL7L+YdlL+W)F$`CtP2aXUI*1$|HUtXB?*Gmbi zKkNV#hmRV0G+s5a0gXV|Y>8}`QGspwat)5!77O!*BAo#SJmoqGo4(%M6`pG7@%B!l zVCLlTY^yZ5!{_*cSO~U13-$={1E!iOLyc{&o7=WQkRTJ!C|iXF2j*u=#nOoxoM~r9 zYz`rZLdWg%M@ci?mme9$;}$$)Drb+?2$&^^s5KgzpC9g~9KQ{c(WDh;xDjL{Hymh*Y9grugP_By0aIW| z(GCX^c9i1qZDe|b5wLg+CPCT-+LXerJ=EU@)af*!Za+>Y7dxb8g_!|G3nDw*L9&iG z#|zb&!h|uvv0@w8bw&tHEom4BCV*eVSuwbzj$zc;fOrBk$@P%yAOMj)wpOc58B;i6 zx|Pja88hS#-oS6e7JQWXr!jS(muj_-myX(+cNDGqU7yR(O%`~CkjZQbv%0@&S(e!> zz3u{K!g&HE8|E!Awm`8#(u|UCqhO6jT1eR3cD=P@SoRcB*d8)0n%4p?0S~^}`&tkn z8I-pULL>=P;;6|PMwfui5i0=qfnAW?7qc}^KI2T)N~H%3duVptgM~T_l?_&laqcXG zY1NwXySI@Qp$x%}%|^UYEXw+l5(i5s!(*e6I3S`7H?juaJ`W|u0j)lSO@PG98YIl) zNL&NOSnPNsM>NZ8eq?_u z%D~uOZ0$$TFv}=pggONA(JYpZGBRvM7^F1x6F?xqeLf7ZuW$+|9{^hvREchGm5@K_Ux)+yBS<0DW-!n-`Q~1q%t?`}(Sq^TYT}GE~L15a(W@+P6@;wR$)Kp9& zx~4$}19@j+W^$$q`HD@F!Je6~7p7a=9N_>4aB;_U0}+x$^MP$_6U2Hm8NtYYF+8v( zD6D`F5$nmDBzi2)WBDJY3~c$Cx%pWZep|J#L!%~rnm8N@Fc2Cd(!^p)1^^GWD&8R5 zb0LG^hKF|tTKotYUfLa(ULCv3?zqQcC8F&WIGe)uJ$Vk8b{J@~l)MS{&L+Vry~iO+ zK%PFRTpd?GNXHL?A)E$kT*p?ARsN)ANN^!!1QBXP7M+pDz^8n9tShofWNYCa4k8;1 z;%wJq5^Ppuoj;(<)x}|Wy5MtGsi0R}u@JZcsWisLg95=;gp z!$cOk+5Zhi1y=Mh%#z$PhBp8MEyzs+2`>>D)>`rqQM^mIQIohbeEeu0QJBty3p2$B zVA@3764_zMYeqe^YxN(rR)4mJj zuNen`(aq`GAW0ks!0r$^;gMMx$AZGR5DHXA6tntR5J1!|b!A{6q7j;ypyEQ6!Z1$d zYp3QW{Oy>cb+JStRzvn8?Eq0}754nJK(6pbVR6(eGxSf(UMY%0Kp@OpD6KJzr? z4nKlXRn5UdmS;f{JK!}L;ps}KW^tJG18hwQuk_=T2l8WEu~{#ak;r%w;eGI~Rw|_H zQvhLpFD0YSAH#gW8-S2V-b6|Lx@UN{GzS^9hDxD1fkv}51Svv2?ZRK&JaLF)Wm{oH z*4t%+OZtsmxW7aW+Xu+X@qi!d*inIHyRiTtp*Y)^AKoX6&US9?-lwgK>5$*t1ZT}7 zCUK%re84%)0SyN##Rm=+PEC{`nAeJh@|0t&<`J#j%6KiT*KK48fYcB{fsGuA9T1pj z+k6WVa+-q~vBq#J&iTeuP6S>q%#|F3#DM$MkIf`qz0y@ik`4f+$W%~F@nj)Cy?}sn z=)q*CKvP7TUD+TYg~XyV7s@jaE|kKs%tb z?Cd3^kPCe&^Zy>w1Q0DX0B&s}t7j|I$SjXE=9MZo6Oc1$Eo>vEF>tq*O$3InW$=N| z*8y<@1&MoK%+JLZXg(pqXznPtG&72$7Hml;C!K$G<{*0$fUvT^V>Bz*x1eid;-sA) z!UQSYQPT~h1sncydAlj>^%x9eMvi-MfdvH|6Phq|o;3Jwi=BuO>L`4RkSicqbdOEi zSkt@d6hojm5oc*--G(}5<24$Ia)?MuorsB~O%Izn4+h&1MA>?Qf}ct2BIEIPt0P$J zF#?_jU?!XLqokR>hanxZfJpdQ(n@ZFJ;3-#iK~>!d{?i)SY;5}(G|MAh+WqVmxi}& zc5WEuvFIs&#ZXAhTknSGL3IuoRa&Ft`g36D6EEVQD>j!VqL3!h>6k?3|_0 zSh~iCklav)+#Rg7Kzg)1n=N_fz`*q;dM7^xM<@aUF_690X(+7tcMx{%2|7E+8yR{e z13WuRQ5(k$jlcrNe5|rSyDsn_&>UQZh*%+wz9H&js(nHkvU@{o5fgL#*j9!SSd~x&qHXPKx6IKv& zCL8B|jrDaYMaJJ5BWM4O)!Q!*L^^8=w}D~JPK6NyaH!vq(h}M!i1{$fkP#8DkvR^> z;jv&(6zFm(Iy-5%gXI%o01f*Leanp*!HxhmR{Y~58j<-~2G2Y#>|t0OCrf^BI8=^6 zq{FbcWAC(@C!bz6swWC-WPPhamm14YAlm^}6F9X&d$W^pTgZ|Zi3v_ z&Mds~W=^{@D-kMBa-nX5Md~%H%$Sj3%W66!B9ZCRL=Dg}Skl%`QRp-N!_mBB*gUXg zBFw83`YDZ;;^2wl9mE=s93P*poIp?$F(5-Eoz*%_*I*TUeVli+J6h4k;1B16&)B-M z2#5noG_wC7 z2@w3d({x=iKx$!cjz;1}Mzrjz(XK#vLf8lIPu-Gc_=sNApWn!f(}<-o0cgj@{VC`Q zBczDLZ)2wV4 z*GtJ9QaltGahK5@0L9`6RBg;%vSwhS2vgVR{wBwczd;(>E&GvKKWqx&WG26Z^1rv&~m(&Y0%TuuBesIl_xL0FBYEz(d7v|ZwkMjGcMJ;w3Ji=+jn6j2o8O5)%aYxl7- zpgBW9i1W#&+3rHcJBaaNCk+JI_+j!Pk>K#g{w;fMzB!^D8S4`1NzuF;Y*K30{)GL5 zGMhR1+bp*rk!)GXFg%rk0K4GEazbO0Q$$h^vhfnQ$s;hV1jdEnJS4C%MsdKWhaBJx ze$lsAwIDu0Km$RLos^Dfa{@aGYt;Y^(yPR5XchVO^dooZKvA;*OF63q^LC}b-7BZ{EeE?BHbWF~*Y5@sR zq&C%Tn0d1l?bmO7rlZ*gO)fQTqI3i&PsbbP7i!0NOU3FTbGnh*2aukyYx<0_2g67M zEfzc--MLMq-PI zrhvh`vQR6OCu_u{yErGI>8KG8qcfgWZ05XvL2cMg5sTs^qD!3oo%tz{7cB<_v}36o z&Z{TqF_ggjW$X-dYfeYF2rUs9EMqAn_3@mEWuka=-V+(1W`z$@jC`Z|NN~QD0PiRr z+31_wtm*h1`gpePjBcdmdI5Q4tGuP+ADj)P^h!7-OK1sB#i`)oL`Z1wpyR7-^FT)1 zPza+O);qRgBjBUNNFZnU)S^*@L9~mNs)PNO6S6Qb?&#zUY%u~QX^FJlO&}eg!gZ|2 zHb}BzT=(qWCs(e|fV-t6lcAmt1rXTDvrRTV(GWkhXctb{E8sjWf==jI0@e(#MBW2< zk`@s~O-QiMAHofztwYYN>6_d|5rHyc;wwf-)|lw5YcmY0HJojr5zQxjq+9ZbZFJGH z>IQVWX?y7T#re=Y@-`+ERv*-53!sZfjWR>+jwYMPP_2vKL4xU#yYDy@Jz_`t9|OOv zo_U;lsFtiJh*W~u^#pAPT|qxPLdWZ{gd<6s!{Y${4;-n&4jxqWv;X3Zag}ms?Fa?d z_AK+XKurpWP9^$n$J4ZHUpI2%x{)GMlv9x*2DV%hmf;RLpO2tCb8Ps4P3 zLU8^P&c@?582~T8C9SiR&?m^%fsJGU8F(l`n{fpNcVh&Zh5KQqWKm+SPjYN60=-t0Uh1O+`H|1c*&N*8E7_(HTLJ)ZK4?_XDSGMtyWdKoPvz3C0$R-iKD-z-$pR0$zg>G3oM&@uMDUGDf zCq(&>!VG>iAIc_zQ;v%=Rs3$kmZ93>EDozd4b53mC*Le`ZW{wSNTJzvGO&Y>-}1dH z=JYMy-_Sj2o$e@Lm3a|M`Qk1OUum>bSA)QIhzAHhKPM>wIq<|p`E-ZAIex>Bv?BvZ zqjM67#3pQoNhPSVpGv}nC_P)JTgdSS>(FcvQANV!4Q6AjIer+?52ex5dhO&ddy)xRWhyN`Jl<(*wv}oY-74F* zk06K!R!xfq3bio)($3`2jYySIGXYldG95LWo1vp-FwSl{6Ob;~(9zxTP)Ry!1um$dE~bZEyxYX@?Yv`XbW+-y+(Iy@R>dAvV+T zPSzFKH)>jf)E8z8w>rzJzI*R9Ygw}@UN(Wa|`mVF5tFZvpAX+>8zbDvSOiiDjSNCIyGY#tRMz9 zKXWhu8LQ9M8(*tDv6x-=XdVf4k8&zKd!Q!1&n%*du}9us)`2t0vomufZ>Cp)jY~gt z{t-@FP=AlEt)BVha zqS;C3Oj{6tX?HexhfRV66A=(OB97Reoz^@HnFD#c=A5Yl?&qFlM$-bn2rrSLlUyw_ zoiIDS-#|w_AKQz#qrpFl=sRLU8aB!N;@8TjcUwV1;v{dp2~v`O!`6a*n|DOkImp{> z6ReS)5BR_1#N>!?Vqgm~#rJSz*ghPlU~9!`Qdw}c_APBbp00|CmYC z4BBn=?PudTP9h$%wfaXLI!gM;4@;Nr5P1e?f2ey7|Ffq7yE4tRRobJeCyMpT1n0(M z)OYAyC<{!Xsnxh*^t>~`P;m}nr^H{Gvr<8A9#QwO##+0sp%OLBNwFxmML8zB#7_fm>G)K z!N^%Xchv(TFc#Lth$7U*= zvUy|j$n;1jpg0UJ6l{}sNVc~X(V~t8LmtLqZe;T|7baTIb)|YINy{7# zjaV#NWD7P?c92T!AZ72h!42RzcZ?i>v4cH$ZDhJ?LF>X*Bi6h?t}E%Ku&XQbBShHX z8ieN8jg2HBpIB>5)+R)SkCFCH#DwS;pFh)9gaGjMilMp*E6X1d*V=Rv5soD7+jTmj< z+G}7QW9So_twcx6+Y^d)m5I0Dnlci2>3Ad^`=WVVjE4*7e_Oj9us>{qe`DN(HS>;% zO~jA*`X?9&SV)_krL1g0O8JE{g)oq5Y5{rQr>16c%+QdxyjU%HuNrXxh16P*ilf)&=tkbqn*^_jvfF08BK=IvUYuCxrY z`zO*f@BulVHS)B>HZxVBiy;xVRbqE#a4F}|l74h>EnLxR)?8P%h=GAfDgz_0!79PG zvUJREG|$kpuBauYQ+|YPP3`O($u<>%O`2u0MXq01F73OfJ zw~6z?HnuT9#JRMyvyjf~#=o~~X-9u+<~ADxc>;$6I9oI4!bE^&Wh#>CgAX9Un%5bp zM(II{C531Vem_;8At9K(U_@usDM*vEqYMxSYD@knYZo0w+|NNy_RN1=(xYA*Ya}Fq zhi3=CpW*K-)j8z2#Myj2+a*APj9W_UrOW5{p=gT_iG??b%qWu@Eq+VI@9aL>{P!q=Ohh{{0 z{!DqvH2i=NIhDx{a;!8vk9$SwYRi@w`RMTQ5ya}?KFoN?30cNR5jO&xIEC?;IcQd- z!fD*1!@exY)RTO~GME}-6`20oB>ce7 z3<5^T8?Gnt)&FHX!|aD^HqH>_SBM0JnA-vT@*q8eDebrMpPdQ`XRSHxl)rN9enehh z_Q5P)gOsid_707J{N_X270F_7u?x~7!dk~nm~ick z;SgD6zA#-tHYs~=Ed>(7EsRWR2pEy^q7K+48+oA2MlMPwOh$m#cAOT2582(uVi(WW zA~dtZh}b3+vSYy5sMThvF$jzEZx{#iqj{a+up$pcGzQ6L*L>wIH1g)1YOO5xT@(a? z`QJv08ge~QiXfJN1`uBuH+qaflrh1noB?@i-sW1$ABC!eozwaaTZ2BZX}2_Xvlr6c z8-Z#LwW})&J%|Q`ND4W(TBKlm_Udvdpm9Qy6F44N86jYi>!br7q%hV8^7!!a!-(@q zn##^ge*sWU&Z^SM`AQk)M#^kyHMh8qe149OZegD_x4fP&G7Uv)7@|)rQ$PlyWAkJ{ zoq}v@a<+}tcL(X6!K6U2l+uoPO=RVCZ1d#kTDxT)fem@grUqd@2n(cf z%5o@yNJv2-fdD$HTPHmM`IO8X`za|8D{U}VEs-L@ z=0PP!dmAMm%^yG>c|VH;)B%~_Wog%#kAY74xns@y8H_tjMqq`9{QV%Z7cHYsWTacL zG{}=2CEk*wWMD8%OH-K&QqnZL)WKhwtMX+ENhQIMe`tas%g`QUB8Z^oTnM=4_#%fz zE!)xj<4$d10wMC)l9+tyenoy@Uw)?4q5z>a(0pt~)owWKc zw#ibNWgkp|>ZNTDcs{AngqIf^I=tFAaRct)P)w8Aga^%^t+c@>(z2=dbeR3RD=PC2 z2u$z*(6Ke$YafyPT0WL#z{hc^Q%_Ek_T$4_HUk4to!ay?=LPv;~_E zVm+e=D-OX1Gfd`L23JNLu}p6DU2|l(i_>b3B*LsPw=mZzKNdJ>tq!fjfZ6O`1jC5A z{f~2+BWGJNstqbTFwUx(!~2xTml+MG%fL-#fkDRP%`zKD#IXULb8r@iJo%6-y$f1x z9$emmr)H{_6VG2r}kc>#*t!~z`&Hl@}x*+#Y)6G#D?U~(|c zVw*UEIObVDMrcWWlQP}~IdTcnlqMHIwty-l=ONN^^RdcYY4ckaYBR;nHC!=YEZu}m zV#sE@xqfV>Iyqmc)=vd-m^Te>+OcV1Gc1j!*RHT|1Nv?DlzU6dV|$gB2Zgq9Iv0PM z;k7{?f|}XDTfu5PA~BQ;n_a!F+1J?s0TahOV&Wa*C*eu@mI1IX1)N^w%VmP=KALS2 z$9Lx(Ejjgp8SIPIQ$b?q>t2iFYLtf|xL(+3&J+#P4y|wFl@j4P3DtnPv%jK}K@E}M zuIqiRZ~4?@%1s0!jzHFli<{}jZ=4e*;~U3T8&tL%7vQHVQ3P6(1sh_m^)>Y)F$~06 z2RradL`8;KYnIqYv2(S+->?->VtE@t-WuVU#P>%KyUURx30;#Y6dKx0c{*k_Y<6Mn zny=8ElYF?7GYV1YItU^{4}wx{M*h_HBk;`F#cQ;&L1v;`1L}oxvBWp~0nG#3ZA`td zoRBMSV0+>QpkajQ)Bo#(JC;f_*`{hmF{^aye|VJL`=i5%enN z4}8KP2BVppMn=bL^9YzC`F0f5=o_vvH4#$LRhPgr+DWETZA&`h(^OH#`gA}~elk%K zP=hQEK>`O(t2(_L%+_b%w6F7h9>;?N-7N2P@_>5~U<|UNO&2D1I$M)J!Wm`vazfdWAlXa9 zyMTM@JZ2=bUKzEs;2TjP$iLwMlc75=&eQ8*OWulSzdGOXg#lltFPV zXmNhR0CD!t=qQMNz4>MlfZ1VL#Yih1#N2V`0n(8DyTV$L!tIf7>)2U}sjxA{9$*lb z4(uk86Zu%x$o-4}Uh-t#bW`|vOZd2l<83Ibm=(Y=^&RClQG;gFrUDa6JscG{Aj62T zURWcxfwtKs#K~j^cLj-@z))jO^ZmZp+-j%0;bcEn#a)$k;Mz|b1fAPB?>Iu6<$Wld z2&6FFxhq@Kz`(*h<~AR{Ho1j`8-!$0NUlkG1)4_S>`4=z%l3$v%%6}xknGHlK_EMj zwy{S;8iT8QsJnrIWH%kAKAYBrE-uCeg4WgCl^KkNcjKtZ@gM@aT|sov3ZiT$9n>$o zObVt*NW*d|NuM-_El?7I{GkZfOrCzMoz_~}UL--nyxyf?HA^K32tXbr1b^`HmPlxk zYPLJ)X@YB{(Kvou4PYBqNS}Evu?US>3Z7GQya@yI9XHJ?g!WA79QLodk=RY7U0G7t z5re=Mo-{VFCv_vJH-sPv1~DIKgS;4Yf5%He72(ANrF)5CnJdQNxtT(`$#Nyw>H9hC zAB;WW^fGr5@g-sLJLw}?E={t=mRLf2@v9USW>(E_#U4F4zW+<>fVhn7n_{ta$r4Ae=ZxfJ0t~N{&&;+*oA@VUJ!;!{~38xdxVX z4&OF5;YEx}v?7HSV z&1_$B~tOQpJF8pStI?DQWqX+hy3ZxHn zEW$$ZD|_#{JMWui7u23F6Oj}qC-RG@No2G25tTwohcAA z$zm9u&E=g;pC`3({U8~-(D8)zi91up*$VEG@MVW)GaJ~fOpS$6la~miTuL)F`Gm#uuJu}e#TkoH7>g_%6IVYqo? zMnyR_DGkH5;(&#)``L_MF|sqaHgK<83_s_wx`^}@XUB_!gdaf5-X(h zWkmPp*l0s+Cr{0X9%evToh!`dtv1HeYez!)*+q=x$5`;ig(@PPW*6o-!yktQ_$eql zZx6KoqEN^~toQT`vM!i(5WErl+S5|;acmz)d>kd4eF(X39JV#K%6j5Q!wuVEDa0PY z@S*Ccni&b0gDl=jy`Wqo!u8Klc23knA9S%!7%F6VfQV*f{TdZLgA%Wd-Y!ZZ#}vmVV$zuDGh2A$?Zf;++OC>S`H0A%Q( z=;~7?bAF`-B~&>@W3TOv6R)|X-bz+_`yj}4rSV6e&_ICSTM;WrE)$lrd)-lKaD zm|LDPm@>`^T+k8MT&DojeA!KwuZmLr;=FpE2g{anu` zK2b~W2G(@~ert17g_Xn>fY@R3hmouw%@#l#GrNzf3q@o?TR53#m8T(Z+Z|-74@FoK z>6en!*sfp2Im<$g%snQ{SwAh67Nxb=t&`2}T7hjAA@$XYFKIN}Nc>1O2=Q={lY;t( zk{Bzh@X}uBA7@61*%|3L*I}IAXIo>3y&yJLx)n9fvLbVTppEcUuBY+SQGhgQIk2P3 znV{4z&YgGP(|_9yHwAAu?t%ryDb(}D!hE4PQ$J+{+GabX zs91Y>2upA*4${TR2|Gw6!5#z*b5hBi=IAg@D9QC~Xdf zCTL6%r@F-|(_$d+H)|GcR;2OkFQ<$YB+L&8{-QTnL!Yx5EXXNNWzFjhvto+ zAGY!$$BP=jQV@;m@46ioJ$DuZPuvve4`_n{;_w@?qOgvk5V=)1&QtOZl2Jmg>xxWn zW6og3q(d^uq(R7>aasM`7fE7N zeooAVti9UkuVg%tja_CV4qFPk!W<$KMCndP5CnB#V!*$D*&aB*KG2_U@aMJJt&KvU z*(*s#Hrwn?hVmM@l_Q|h0&Fv3rhgE~%C2NsK&Tfk1pyy&exRl!B^n91+$0Z zr6wWbT&T)mf6zOj^eUIHg0zs|!-Nu=Th{}g6evVYS<8_G*66#4)5EQ4Ax}5F&ya6d z_{t!yc-jnnhwd@*2nH9<19yu^2(S+_WyA%ObHuXAiw!$@EL~-QLEhTip?Yz`EJ{gpzLtQ8TaIGkR!%3nmKCf-O2bxTJB>G&ChC`Ixnw#%a>IpQ=& zO_S#?zfgXlTscwBvy~+xJ8HU0YXLKcs$tP3?--dw8s_`4seYJKH@hvt%&D&8;;?ha z$bn&W8#teZ=gWk*+sQbul@utfv^)_wP|ep)%}rF=3|69JPGG`prh;W9o{^^6Ibv}? zjA9@g_hO=4(WJ#jSR>9#Gw~X+FjzJrQCoY4ox|`KKeSkvOvpX$GjurF;s2wdPSz^< zV~ARr?Pfe7%j9%CJFo=!V{dq0B3~bHPx%CnLUK-6TzwPIZycLL{IR5ogs8HFB_r2<7;O&?134EO}6=j!k$ zc5x;n+E+|5G&?h$mb{0!3_%!0#kr8u!rU0)ah+x-(grrLkOht5_=#GvQ1%g?)YZuc z5`=9)bDSANz8&U&qUIn1JcwJd$VOG^D0?WE2SKP-ace>A31WWy)0{@%NxChT*98Gd z)IY}tfEN+n+t!RZlRBfe*%_sPO}c3dp4x;i#F83|x9nV4?nnVLLay79%Fmf`$NP$W7DQKtB$#G-%*;}2a5MTe!nrL)~iA#drmakOorsy#i z928!@G(hsq0VZ;(;44^!I9GS+WU(~QL7xVItuYP!l?QBDgTXN#GyfuIA$Jtv40hiFCR9GS{p?b^~j=) zMiBrenM{Y(@a;(32lqU1fPmu3QgMb(wD56kgNR>*HgkKq{#h_|a z9k`)kGUMFAtRAqbYZrbAE~coUp}E2Xly$V8r)yCSqyhb$%k7$Ub9hb{N)5Sk7lHG$ zK{NliX@y&xRl9^Z*Aj9$Rj05aab6X~o)w&GY1&*V!{4ILaa^Pw&SIE+O$}jgThD#-sORnEC#GG%m;-PI2+M_U?&d|^QL~^=DvRo&xbmHF zw}^D-Cs+a}YQu<$!x&aB-fiS!OBjgS#s87CnbodV0&0QT2EGYn%$zzgk4s?cQ=n+h zWEb~GkbHYyS~6LqflLxO;K<;hr@d~%2iFyb+ekz)$5qYoQuxzOhmsqjTAb5?4L3=> ziQ~NkTlUsS;J>RhOS?06BOG+Lfvn`u;qAztcFs@X8c2H>6H6oFwi8St0yxo8n~@hJ zaz#8Q_ISU|e@yEXbKI;Hk+|#E*zuqO#r^TVtv8a9mhcpbSTGz`cl2QSB~=%@yjzx< z5x~SoC_0fb0uC`s45$HphuM%0vBW)g7t*=|m&3!yk3ju6d^CUi{2^R1gapymQVB=H zSvoSiSh#=LJBwPpI2Rfh_0GZ$-H%OxGggC}whZT=WYcE+_7Td=k24q~vpJSq@&3^4 zWHS(OhEv8U3Mr?a@6O1zF3+$eB7tRklDq9@Z0476txLqhW+-<^Lby|gOh{R zPy=dLwsRkn!{CNvcYqf~!W&5E%ilLSd-yocceljhY&a;#)Pkdihqk*i*5s)ltVo-W zlI6?}=IzG8>6ro!tq;%WFDW`jykR>=%9Bvp zEj_*zRFyH4QokKd1bdFvM0^Xq6;*tjKFsxrTZZf<+bJ?YlEKEfJlj&2QUDnor|sn4 zh|$A}91QY_bb+)|)`x!bV`6w|Qiu3n&xGk8yu-{aE1OH7o%e{JE4Zqj5<{ zPe+Ng0%@~ZZ7@~Rtk~iCm&Q#x%zjhQG~a0r0grcaQYDQjJu-Qc<}jGPW<^!(bdWni zVH9uV`xuvs!fMt*?AJf9T-w&{8n_jkrNp08+cN$zBAC)gu!`rSb+ zC_F4(l(WG>4?!YY%z?*4?TTQ`mI#PzCLbPQDPl;&UZHsETCo)k&y7&V$RI|g4CQBz z9ZlBMLm3V4DI+c#S6D(O-U?UM$Q%Tgqj^YbB&=}&(UHOlGm|7U2NBUD`&)sDLO(Ek zBRnO;;Z0u1<=*JPOeShb>{L8PM-2U29)qyMPRq+%W1)Lc7*2<`)i}ZD&f9Lgx&OM` zVT3P~P2!51cD&X+P@Ro_Mfag2j(c*g`|^uc^qzGcXD!OF^ncsx|Fz%UhYla$+ADsN zetEflrypNlO(pp3#eY5g(6{!n%>AqSdPi1|_w{nSbt=ba2mSMwzO}pX=S}pC&nf(8 z-+Lmnx9_sYyxaTc-?Xalvb}w4_xAPPzB+S9@MZ66r=MQJM~A6z{xR=~42|(Ru4Tr> z?c@6-m0_&(`5ygqpl|JaGW+^2d$+f*um4>=d;6|?B70lkmdA3p_uZN~*|!A+d;9uP zVPD_ceSN)mefhV3@Av=UuD)9z%RP~OSI@h>_hjx}C2HNdns9l{?`JjjgAc*;uwS;5 z3SQs0_KD2xG~Us^{*k`RM!t;k{uVIiI5*>XdX@ z_Z0gfMA`4vJENN5{0ngU%?v$F8@%Io<}LcJnCZK3$G!HuU03FZ5Tl%5IP=I^0_{F6 z{zHgL-)&V%Z)=_TLN6$5mcIb!-&?e+`*-@p+b(BhgF~0nKAHC2(K{<+(06}P=7);T zI5J^|U2(?Y{qdjszEY%MAK$J%PT=1c9%pHk^}u;>TYiFl{$cqs%Zx5RrfrAuq>IaP zUDnJSZy$J0W@!htS_&3^i?VsA_Pi<=+$^mCc?>th!l{M=eEjQk_RSfyv zwv{w(i{t#8?ff%CHRqr9gBM)>GmAw?&$BPz`?asfY?b~#_-WWU&;G}uP5cVfM>p6r{>#V`+CxT3t#Kgxp)Q_&-gc= zX}0gqa?4A~uW)|BBDh&M?P0ms|Gu2BL45_g*!g)Q+`BJj{cfArxiucoPOp3av#RAs zUr+kKnE_wjNuuBSI!na&24CkD-y3{gwmiNbZ1CtszMjw|^3>N8=5L(W5_Z4(`GpDQXkjp`tRk}aPh$|zSqT{ySR@tYfV2?bhbBUcqI>>432-VJ=wJ$ zi=4irOn?W#z5CKmRHV zM1=RDvP*pf$CFy`U*3Ih=N0c<>eDzgG^zEz=G|X*>hC%Jy>`ZN-r$p3?|0t)Sf@UT zv+MA^`cy97!g13-W_dA#*;h5gA(#57&ZgNrznuAI2DATYh8}P~?9!NhH}BxR3$97W z42`@uL;u5tznsp;H{{A+2IuSX8)wMjy#wPPUhqG7iy&H***RHLqWZsiZ%Z-x0CB*?(bZ#G3Sc@b%*?)+*gAM^?q^Ze|JoB?+(UiE*$@tr_8=%2xHCW$xyaP zX7gVr^IsP8Usm&9PV-+5^Ivw;u>bOjtfJZFV)sAv_rLzE(?51!k<9<Z)b#JG3ZJiJ1cka=ktFxY#C|jX$p|TAs6fa(-Sk(qq3l%Qw zy<~3gxcC=ywrJ*mIq`Hyz<+wh&-)#&)>jyM|3ZNCp&YpZOfCzX+u+)D#J#}(FdzQf zM#*yVpSC53a~GiVg)!zl{&yDmuQ!m|--GJRyYGF8{oiNUcVF%N)oz!m`l~#%b^E0` zfowihXSd+Hw`%|Oa_bBCWoFX%Rs6lB*4-Yt^fb6>W()7v$vEFv_np46U!xyDaL#rA z@0=+Ax8qIE{dKR;|D*fe%ojCzKg8+&XNUg#TPX7dME?UDLTn5E^SjW#y-a4lfz`PQ z*SXZ=XNj*S}xHtNu&h54(u-pkTr_|AIA z?Cl@Vm`Vt=fb~I<%_}Vh_!92M{==!lDvlf4?|DXKene*pz zzL^s5cfnbcABueKWZ&^or>Jhm)JdY*C#r(+q6Xq=7Z9rT*P}{hjNq z#j2Fnd;OiscD_xpp>wZ7lO|uk>KmWQ|L1-)pAIm$qdI?_&H3Ny<^Q8UTlCNGnSZTx z&VKO!{%ZZ7Z<)P&U-lQ~{ny(mJNp0PP5%Evf7k~U9?vQq?wV5s$((;5zsRuN^5mB9 zf;*?Byywid{(HO} zAmq&ob>X zeWd+Ulw9xWs6wvwHQ^@1T=P+HMD@v?-tk-qD_Zr%EiY|(cev?KbB#);x4%_i&+;VB zd1f>4^k%l)p5D=x+td5l#Zx)wjWyq%-aMAu(_6#xQqBvt{Y@>m+q2DbyFGDmp}|a- z?G-Jz+tbK$yFHyPxBGvf<)y85ZiI9H@3iXe{=e%||IDR+G0s!-{Mux>-9O1An%s zbuG8sv(a+9J+W{xf|s8PmfP)VXt~{*fNhj0Rq)*87vY7-cf(7OKZTqA zHG_Gy_Xo6}j2CtOX@6>eaD95G#tg>o`KA5JIc8to44hL!*y}}|pLM+2-<;pvs<)SC z?LQu`&IisJ?~&Nt3~Y}MQOzF5vVKeknG=ex}pyZ`Nc z^I9`-K6V?uZs)g>a<7+ne%ARl*z)3*{{lDbMH7-Z3?`?p^H2LHm*sZOCo9LaS?d!zKbyhi)OY@= z_c!Pa#?3mSzQmw27;oVGQ-5L58I0TGO>2$UULJC}xW9{I^Xa{_&%Wy{qIawwuP1hX z&h$|r8u^-W0=k_E?>sg23ATxArg76JW0H!elm~CVeRr9e7BgthK|k+P?=hq8Urc8> z10KHC_iQWPL>~U;t;zk&%yEWc^6<%t!TB-KAd7pQy*j`$s&gFNVVOKl<~ z2oi5eo;!{}fASM%Wp##Os< z?zs3!^6P=(wXjuZ{Bd6LF-GJgCu8&Mt&3XBOQ4` zY*4e3PmU-#Wyv3w6|YL}_e#7Cd1ov?UC1MEmip1;aj-s4BiEc?$-`s0-9}z+s^lLa z*PP?zpU+GE19Gi@PJS21nLl6$PWyj-8p(-H{uDdZ>B!S!yPcK%G2X|^kk|H;{3_(d zG2Wi!*LF*NfASb{#b=QZttP&ZJlYT9TgkP4H~AI3!CoTQ`dj1&cS!yxa;*=A9U$%J zzSzM`O|JEs$e-c;OV6)rj@H+q`Zx=vJp;(Kegt{@aZ z!xwU`4}-UmR9)wvzAmm-=($T7Qi^O%kd9M6UIr%t--f(Ec2-MxG}n*ZQ>NF@KbHmLS*q z3gm4fNquYbj5B4toyjjO5Fbgd^%KaaVE(n|+@_#-)tnV$0g?1rk$&Mir=UDGe3zxBae;cIXvDcH7CJ*sn_>U^}_GPQ&N3J z98hK;KT}%j&1Y%NpgFOV%JVAZ9V3X>A#aEM#_r@tu|F_~TysW|SHS!AYVtfqWW1-z zBg7MbPTn%1EN}10Be$3OXqXP2UagNu9&L)$XCYsOcIF}fd5F|kCfEAfaUY){eAKssii(N_UpC%esjemk%uiQ zo{n7WvywN9CG)X1xz;x%AC2RMf#h00l6?PgY0qMEtzS*P<#(w+Nv`#JT}=C-Pjjh% zOZ8pM#cDG|k_W9niuoRw{ANw5OF|w3=W_~>YkhI@H`vZMBG>v>&){i3ZK0@kOl54$QXVi9X`XKc;UF!cN-xgWcmuOMsb(*93@yH7$m->9< zT3?jB$5F{`MXvRF9aG2q*-!E(QvER;*UTXg#(u?O@+eqt50PvAN%C9;rJYa7wf-&n z{R2`T59dv_{r578CnaybQ#=QGDs1-(ke|Vc-X`Q)--dhw-tT6TYyAT9PdMH`L9X=| z$g5qG_WMMWN1a}+4@cfAsm#ahA47hxp5~!E&rY5IIRWHraU9*8{0S~x3?sjd^9f_g z!(uzRiM;v-X-_aYn&~-D-Ujcx*U1kbk(_trbrMNO_{99S9};Jh=W)qH$Cmme`f=o1Kb1TsjxV;6YyBSb$#|c=Lq0F0Oz&gzOWUM9 zQE(wpmmjT7ddp?bPD&9x8lWYB6@=EEY zJrBvX{w4YL%~BsLwmfS8Xni8`;51U_PrmA$cuDe9xFFn;Tn;)_)+si2Q^&p4R@+`V{2zT1h)gkgs1WUV*&h zOYsimzYQ1fL7pDlw@Kt$Ka;%5Wy#q~uJuRAlVH30nOy5bSd%Pe!iw>B!6B z0|b@HwZ1m_Vw`UoOkS|IjQ1DvBk5%R&LR(0S?ZUO2L_2BByU+w{5bg~>>pks&nctz zd?eTQ_{Nt!?YD4g<#`lx%}GPP2{lo z+rNqYAohFjlP}sW?R-Igqo4Rk@}oGu2%k`Xul=tcjl3WB8&i;%xGb+vPhRt}crkL# zFGt?^qtrJg*XuZK$qQq@bSU|gEs`_Q#ix@8)Ry|SkGd$@6*SdcJ5GdD#n6A58uV z%ku?tKO7goC!euda-yMKI$iqy5|4asU#ZVYuGdWplGmyw^_9tWf4(;PrW;b)Ndr8+gp4G`Dh>Uvnzwd0lMZ z7LjZHO7eI(E;~$~3ilJ9B%i-W`uQQbo>zH6{?jU{kC;Lpwf~P|`HVr{FpJcsCvVbL zJR7-xVp)I!$hS0>`ex+ee-`gbekG%LfAZ-Q#Yd8N3oSmy#b=ZEJ}C7Y$)jc#-$9<| zsQ7;JA8_OCN%An+rT!{;iJjsv$P?oJiudIG@V*lX@7p@Rv_2;JY%D(+$S3WV@n$D) zTVLEiwLEJ6D4ee-Pd*`7>gtg1!~Sz4@@=@Ewio%+0Ld9euJqQ>?b!M58f|1 zO~~uj6YoU+EUx$%@}}s|x#W$iN&O=7mW9PvlIOwx-Zt{l*`)pedCws6)8z9Hir*lg zRaN{6c@(^ld?ZhkO6q;n$zyouA+huC6!r&Vkq51px}@ZqlZM=UpQ#!0kw3-zT@muB zr=-3Hxz^Vw&k-c`oyco$5)UFzi1+tV|A{Zw+znM0l*`RmBFek=K_XOe%CeEBf( z3*@N|h(9OqA4U8fc_Qp*hQoDxosYfoz7UK2URKFTNPg(NcxLiw*l)>2p1G&gS0dN^ zn&jJY9NUpx_tSciH$Nu%%gIM~5Z_83XO{Q@@@iPWE|W*XcIp9nZmchF$U6*>{4eBl z%@>M0LmXV+(EitYKk~-t&)nqN4~59HESK@tBiH&S1P`3l@ubB%oNR;dq->DK<4hW(020k0saT zWEOec<&v|^#n+N2yDIeu$>(AJ@*MeKT(`YW{wwY$c}(7>vgCgt*ZCd-`|sMHiLpPH zkoBy^`+D+ZSl*73kAdGOj|}(CB;(QPiVIIj9txh5+;6+Qz7lzE)VCrZHc#qDkXM{7 z{tJ2jo#OMz_h7$q6M5KDoeTcjX*7uv_y8o~HS=yhP^OowH zWBrMP{RpkE@Ij_47x~9S;uXpD^9%LJ^>YVJ$gf0|e$eYqI^G)S&*4HLcIged?niwg&r?U*69@a< z+MoLQ6hHFZxzL~Fg+_}PBA1$U|X1o+Q7F<@`2z$tsfnm|V|uej?Ai zMCzmBeO3EYkFOJv>+y9uay?$oN`~bOLuQ^7ZJ&M%dBG>vq z+3~#=A@j=Xv_JLw&JW~q)=OPV@?Y}E`$9JI3Bgidh+MC~lp>FX_tQY~rvZ}FiCp)) zg2*+0DEXoLk~5!NukWlO*Xui5$S=H?oRj3b|8|kQ+-RwPOs>~=UXur-pTpsJSLcgf zmx)EL+bcivH{)cy*~oQy$V(pYp43+$*ZS(@gPuu!J91rqx{`OrdBt($E2c@#Lh{+O z#MhH&uPwffd^bK{aFSf>FOYx2d8%jRA8=mJ`{mTmsI>nFoRRUy$S;rTdVg91@*-QM zt}OX}yf4=xABX1+$$!D~R^(HW--Uckd>OCiX*+WzlJ)dgs`vdY^{dD|!^O9gN2(yc zhuja_|Fh&;e}z0B?zeeOuJxbDBVaodtALDOr%US-l7H$fb=k=~Vf`vf?t>d!tB{}W zC^?%J84O$2E{uOze9^#+K_Z$_EB!NV1n-|KwIdQP54B_CN!JO#PdrzfveLh1{V-^TaJlp^>3;dJLE z^~klp33-p`GQB;>wSW4NKW!!LnMkhvGlP8W2B}|7uJW`3X{b};T0aAaT zT+f?7BR@My>O&QgN1b0l(RU*LX}m4(so0@}g~|JqfUXq5Zsmhj?=G z1SiCckypog(Q@Q-A4+`-avvPOcObus=cCB=``;##k4P-}%gOUS5MNKe6a9aYTP4X9! zYyB$n8YiXx0J+v5C(jpE>K~A6{d4lReWX4LmKW_$t&cDQ56O4_EcGGr z{-gb=^%2NF1xfvnyNX^HD?j|dc02r zlk4@w-^m+9m+@XB*ZO-D=F&uht`Jd|K4Z28uTXH>*+LiomGpYZXeDyr>$>b5ziLWHr`io^<9ci{Oca;?8a9s&EA@5uGKk56eCzxHRnh3HRmy^fQTygQETi;!!58S>b7 zCBHejUdL%qzVe{dk0RIliR2rwe6Ata>o{A;Z%vf^v*cQTmE1qGEYBawH^h{jka*t? z?>se|fLdk66OilsLUQuj`6Ry(x!%`Wiaa0wpj=aOt#3>IQ+H|42=Y>o#mAFh$98fR zxz=wYZ~BYmoF;GBRs1sfvi9PCk}t)1ibUu??az^TKT1iyB%b8tBG;UzFgf$*D`O$0KdYbK^W!SMpcbj*TMM?{%C?z7wD8 zoJ;;7hO}oh`GjEcedJ9Ki2p%;BDVDBZSr=}r2Y;0vEAZd$S>p-k5yhCb-rkQBJyT= zq%IG6MYOXpdAp8MUyEGp1IbGallng7Bi@P+B0s!Wd=7ck1>%dz<2@7KOCB}5_(^g- zU;2c6PBp3jL|z5^4WV$|K>M>bjyK|vYrP-&PTW77i(HrgV&u9URwmcwur~Rv#?t-{ zUH_1VdFIm}PqVT#n(BG=_GkbIP{)b}CR0qHjr2NBK2Fz$1V~NCeIc^wm*BxpJIRD1i5~GRIa=KBye(qopdC1&SKb~Cc=a6^9^}ZG4 z`nkm|l;l@%eKs%oI(&Yo7yh2&oX#J7-Z{Vwt%I4^OLT?2fOOb1RCGvjw-m|vkU(bV)KZ+^&KeOZgXfpY($x=U`JWK}h-^jI}kCB(a zaqAUw-JZW9k9bD%eR2L+`&sMbkq^WBPHJ+kFG&9JC&@2IuJv`u$E=t7=HwHC#XFO~ z$M+QVBELRb>h-+1PS{N094vhhNAwe>S;K zc3JVZlk5Gf2g&vR)f42q3rTzaB-iT~FUXVPzRJ+G?gu!u}_UAYphejsvhxgf(lh)~GH--vx?^#Mko_?w17a=c(?NVv-aPOqPDS4A5;%&$`Mv&{g!LtC zJ$aojSErxL^9bbW9*f5$KhsV;E_oT;SCEXn>qV*0On%T$yeN6@{Ni27+v0wn0pzh? zNd0i~N14QDl572Z^02>2{SNZ8?3yG&C&o@&%Gx-VpJJ@b&Xk z`Eb7X9l6%~1b$n8Gomcd@yN9wQj_a-y-egw?@De-a-Cn*$@RKkee$teB&RF6UXSZb zJ}QRPPa@a)ndBj&OZ`@Iy&kuld>5|gT_o4~o8(zh?`bIG(e+Nh=OHZl>IYJnf?Su+ ztmOK40P~U;#q*lvhj2eY0QtpyGTuJqbqecP@Dx9JekZFWyOV_LKYIee)=} z-k))oT+gdKC6D%8^1qO0`b|7yBYD*R*Yzj?xvm$<$q(RsbuMzP_a{HGTE(7wp%TA^!>I ze`}EIepe&%m^csLj=aWVX=g8T-5(o7UIzCYj3d|f%p}+LEFstSY#`V6>>}6p944=W z^DXDewLQ1VwLQXBe$5Rc-f5PWsdy(sQY$&-N@BB=D>4da%8M$s(HQRkQLf2JqbSbxqT5>&3*+M>I zpVa?BuE!~-$%`+Q`upU1obr^sBaX}7k?V1ar@7>5zdiSr=i$ipI3)^sxOq|^mt2oi z{K$*{EcI!~^*ALHx!&iUo4i>nS?`LI>;8XTa^3%LN}i~*w5Jofu8%#*{c(PBG`ZGK zBp-$2))nNs{;nr~v_{(V2f41l7s++~x-rl3$16JDb^VP?uK9lCw_{5G z=O@?ow=}t~zm>?R;`^LCk?Z;!M6T=a5c2wWq~GR~>-xKlJoav>-$Sm~aSoBEN-Fg? z$n`o-%$D+d?N7aqlYl(JBB?7+z5wSv>XGaBgtQ`mI7@OmlBdG{=U{TJA4Q%W=VRxS zC;TY+%g8I<7vD{;^#{rC6_fhwos4Sc?+B`>PG(do#gZ-|LKtU zIPz3DA2o$ssy&|BKl zB7eDE{3Uq7JmC`Z4?|?U8_1*P5Z_IH9n14E^7bR7{waBB zY_Hyv@2DvCq1(u#&X>`+-!(RQWP;p z_s8=(rZ|G+wGspZ)B4E>EvhAi!UMHj^pT^8#a(*YjkA6E% z{xDGLKawBzlNTgyFTdC6>N;7T7bGvcLA(`tjUM7d$QSPvpGn>v?_a^>KAEKcGWo5t z;_t{06We>dLO3Xw0waZ@w$?z80eL&>`|7N1AH41cFDm|X7*c}RW~`>$a- ze%sEE1LS#9@-ijG^OKjt`dgDc;y|hIM1E$9_%iZx=*P|Ejnhi~KJs1p#ZQu7iX(oF zJWVd~N8~MEioYjMf&H#9IFGLL@oX`vk3k+`zjzYz+&DhUKt43S)E6SpcT2nm`OAdj z-N@VF{d6+<9GsWmNPeNeeyZ6_v*XO%ky01m9Tu)B9DmukPhVA3Q5i| z^6uTm$GG?+7hmb(`^oQ&m;66m{Emx1a`8}IB~Sb3)nrUeVBL$@}}4i>_fgUuG9}BKNl!I zk^EC1@j2u_jS^o@{`Rc+X7b)RzqgmXr=QdxC;x=y^D=o9?2p|iAH7*}UXi~-fBN*0 z-|Kwua6q0%B#(j5*T*IQ`JvROAdiRs$xJ>lztra^zw(oKDe@fXw`$}muzd+6FJvaf z8QPE!T_N6sJOhruMv^~1B=wWX$J`TNK;9F+k$f0(_K{~m`*ZY^JnjD$(d2m%@=g)O zE0Wj4e62^G3H{KLd>OVU-N=jLcxNE_u_Utn8B5-?mb7Okd709*rKSEVd6)g-56K7M_~IRTI&Aks_mbCX|JT9xF*^C(WK!ox-Vg70>B*nq z{UQ%}?}?IAf_%>@@v7vPtB41Z&&)2~mfQ#D(|VJSoGSH`$=e8PL{5 zJ}Ew#yd1Vazp`U}*-Gw%?d^W@riVS=;UxKTyf0iOpFd6NpOcq)ARZR)SK7~4@qUz; zyh9dQaC4Af7%e$v$pe>*HzH55RD2NmSnQ82ATLuw>UWagODcYsyh@;W7#v^fbcK#5 zo|?QvJ@L}y+wr~-NWK95)15r;ImsDF9`s&(GI`v&;>*c9OcMW{JRJ5^6MJ_Y$~To=nrJ|c?L*C0QbNxTtxd%WLG8zjHi@kR=k=ZnbS!&i}4 z@{{^)o1h;GkT1b@ ztPZ)>HzM!SO7erqwSFl1p|esypIqyglZVD~dyrh~Pmr(uEcs8!wf+rx5#+}hBCpf_ z)cOSE?NOhbTZlV5{3B_C5k+R=mj`X})rry=?4vf?et^P`=8$urlH`T^uyu%9-TT>EVbdC16;vxZ#f%NFwc zyQTgVd5f#!H(dMyc_ZvU_~N{j&X;l69{oTbr-tNbCD-xhB`=s?>Z_9Lbk!xF_)hA( zl1IS)!$21wNq%OhH185__5T-87_}H z-Uqqmc?$CU_}qO~^67Y=ElOUcyW~_O5B3pnO1>8FFWt!p)|L8E^N`s2*Do}llQ-xi9){1_Ur2Jm%@8W$eHM!@ZCwADm3uF^9Z6jtkb4 zXTf%O8~HX&=P~kJxE^tqJPeNGo|0?*8}eO;q@7VlecNw+@qQGW{K;IY%T9iEig-Tq zr1QnAk~hYFU?6$bc2eJ#yiF_dUgQy&pi65}03q zkn48!GVwGBV>|OR zd5kntKb^ePL-B>=m12soCD-f3hsi6JlKP9}`gcg5kn7(AeMzo=hx8NqJsf9+9w+0` z{@k`!o<}F&3(rX2Dy`J#BiHtqA=madAlLRcCfD{)BiHM-hspK(YEF~u_tm^6*LH>) z|7|~Ld%}}zzr`WX9$8+Wg8cm_@tove4vQBh*Y;E)*Y@-x*Y+$T*Zbjjl572Y7f*)m zfi4ePU(LmPyZ9jTPS}qfPyQiL`r$LVjyFEei)edvy2g|5C@nd&$>U}hKR~Yeg>YU( z^VJ)Y-^d_2?a1%Khmh;{8jT^>KUmR!HrXdAia{7$Ypx5)Lr`bXrEUdeb% zPL@aRhX5Dv?&6zW{J4wXckvH!vvrRuP4oUA?U(PjGoIz~oszJ4O(JrzClh&R{3089 zb9gawe5~A4iX5xEr#5+Sd7JXoC+`YxWVzYzoqSM6+|F_{U8hmsiTnV3AbG10k~5S% z5Iz=eUT*q1wv>COS@j7W%k+c%VwvTpJ$I0^iu@LQ3+3Z&&9ld+H^@uD?~s?!{R;B-@E7E5;UD4JKidA#*pD;oi{1X{mYeoZLQZV*32;C1?eOH} zTjA;9+@73Pz1^OomYeq6L{3Ta>u|mQ&Phq$$3wdt%K)B}M?Z7kI#g|e}0CHB6*N1N+9|YeW_BUh>@VqU1f`CCR(NE5W%v zbzHnN<;+D+ck-F=e&ko+gUBzzhr_u&v#35)80q(4$$jC=$kW4Dk*9(0Aa4WTMcxX2 z2+r+1?c#4JX999QkdJ|foc`@{bqpSs{113UxVC2l){89UJK*_TypD^vhwF0w8sqIu z{t`ZbaxP%Jqg;F?<;2I1<682#@SQF>hg|#?#RDj3H*y-2?}WE?$?5LmV=3nmawd}h37<_l5zK@* z!x9(YPdTx}N&O-6nDA3BIagf#4doO-&Ij^*@E>N%__hCW+SL=&#k0V5eQA!I9OO;m zc_{~9TjHroUJ?CP-^II8{y60KA|C@ENWKj|lza<(5?uR1+cVq6w^Pm?ub7rAo(`j@6?uj*gcPT=tVvYK9qdMAgRAeuI>5Y;(6xC>$v|b zyLdMjpYG!8Ts;0<8LyA?5K(^g{+|V|?FkH$U*;v(=_+D*e5bUyd7(3uAkPIaYk6X) z?h5Y1uVJ~#d5HQt zR2Sc1<(Tn4MgA7@$MD_cF(Y{6J^RU{!;itaJr`X3IpyR*&TH~q@Gs;I;J&{~yG*y6 z>8b~h1lRVYmoiTrt3IJ)QE=Rs+H#XK6gfYV_lIXEzXs1uegR&XJR=tB;^b-I72w?d zT2{T?{-&0j_76l(OY-jUPULYSNe6W!j|LASZw4Po9ta-=*Y@Xkh6(= z6?`Z8S@>S^)9|BkZBI?K=e$*K`m-XIhdY*={`BBF#RKy9$bUgz1@&*pE5JSTqyf6z zj)I3I9|n&I=k~|8>P`EDLP~CO%T4J9!*<0rKkb!sM0VCE(ir z;S%p@L0$yj$;E%B{L#oCPd*YpoqQd9Hu)O(Vz{0_2V1 zCCEp>^?N*S*TP(+>-}{@i3#7nIuX!KW{gbTZdOgmcT(8HqAlIDUUF&1EI0Ej8eTMs{4M%_n&qb7CeD(PEVSI@*r0i|36D}JYg2e4<_G?cMQfG$8wYZ7C8yXU&E8YH6LFG=*dHl+qFDJ ztsFDnV2rnt$mhLp5?gczyB)@P_2|;H}7q!rPJehj)kTbZPthTlIGPf41DT z{}OV>lV5;OCl7@SgtN)Npnfr&+q2fHx7!nJxoJ-=%{(AD!@Ezpq;k(G!!uP|qo!XvD zRDS{W*T~PoA6jmflQDSHdu6%Vezx*+{&NPOCGx2A(KoI<4@Le7`H|q-&LidrXNcqC z`nfvIuZsNKlwTQM)+ML9i?^ekUdZW0-UHs3aw3J0_7An{O}`yOzfG~+Ea!8PGlP6K zd@kk3LjG3rgz&vqjv23>TsdL68Si1_pCLa8ze@fBev|wO{2_V9cxL3zc7;4W{2g59 zySCqVsk|<{^I*3>ish#L)sYi}yfQo?`8aqI@-gtVaBfdFtKM!;AlT6iH1gdY3`d`S~!WU5v4s$(gta`J2j`>0Q zWw+&Kx+WrLKlyn0amxQuVmueEdXpcF{D+pC{C&uIO1=sHj=YI?CH8nekq5#X(yy;2X$O!MBj7fd3BnabnFW5^c{3 z7ypxT$|C0pd1?43mz*#wWjc7gesEoWIv^)Gc{_Lpmz*M0KMD0E$S1%nl5d4qCEpBh zNPZ38l>7?39o&cdxrd8SqnuDlrN3s8`@$EIr-d&gPYquU*Y-@4c+Ye4S@4f89&?ox z==`dH{J7-h;7Q3l!&8!Xgr|dRJGDLjR6hmvMad__t5D7^OjkV@|A}&TAZGyiHuzYV zoM|q;j&k&SEjE$gLH=&a8DToa8IHL41Ime!OzIz#M}fZ~FAx7fUK$>9wdCo1*Ut%t zB_D|TsBoQ++Wz=1o{e%=A}1I5Qg|V9{hqF3EazICrWae{x0MZ;C;zU z!uyjKhYx{sd!|!;JJio6Zv$UUJ^{X*d>ni$xqgq0& z7391izXbo}k{@P`jED2nz;!wFO(AvZ$$j8C$kV{{kf(wdgzI=$V0wF!uYnJA@fnm~ z0r_*t%fXkBcZRPZ?+9ND*LG@qey92=s6R|T8Gey+qDXgoZo7DhwNjw{zXLg;$+y8H z!?m57AJ@gRP|iK%t$MSos@I8TlArLC`dj2$A7P#R-b}B_soGwi zS0>l`p5%QSOZ_Qwz3=N0x#mP!FR#<_UP~YgTxxRtd+wRZ_3ydoA=kh6RD}FvG#Ot- z@;5KVTa#-$2fFxl7hmV%=UqI*hHv{p$D5D5{&T6TN3Qi4-&Zek%~|5&mt6cdx!xb>v+4WO8=t%?PCyhQ*Y=bq z*ZT|`z)iPAmr;5D?@IN$zWhwC`I9X-$7QioO4u~=AKWKn3 z+Y>Wh|EThdB$k`}#;L_qkT-;9aLLbQ)!X@{EjRhYkW-#~2)q{MPn70(8d>!wzdhRD z*>aP=4msV)m%;my$4et47(^ZgKALr{O_%!nHX(fLac?kGC%guD@eI{$*Iv?@& zyHT=L)G3&^*^*O9-0Zz6vM z-wD@#yDGEYbI8T-QBH#N@`8ut@!+pray(n*bv)jr@bJ#BP5%@@PD=7Z@Qmaw;91F= z!E?cNylTc6_@%Sq~3Keia^({4zWidHBqd8;?9JJQk}UW2?EJb=7EyfJwYyaim_pTYd#41HaEsEf~`{DsJ$Pd*>M z!X;;uiyxz$lgK$meguBmCFib-f1#WdS)?C)f0IYuJ|u%jfpfpbbMY*cQw}*f$jiVB zy5y8{@urm1896Pq}IWx$oz!y@Eoa7jlk}2gA>h--BNu zzXQJs*ZHOGdF0}ug1?>bk+aJ4aO4r;(a3YaW07ZrCngVoCnK*9{}ImZ&*9<~C}$9I zs*n$W*Ck&D4VOa_&m4|wSR?+@28wj z$T>vb4t|P!1^gWOGWd1!Q}Em5C*Tj@K4^bY^Mf;l-X)LhQCvJdT$jUl$j?mv2A+>{ z2FvI?^{o2Dj@=0*zi453e24sUh_@k60PkqI$$5gDzLuMu2B_~(UJE|Na+C8GIpZxi zIV({=nS3dHHeCBNobwtpEV1enI?w$gdD*kka+CiOIa|r^!S|2{<&>P?$$P_(lW&Kg zCf^LdLjD%yOSZ>-=200zb z3&Q)6pN0=2KM5ZW*Y+fl=6mLo<1)TyrIlmash?}!X1QsnZ(a!sCVz+V9w6_D`Xl7s z;b+L_!Y`1|hTkOr1AdqMclcBCWcj51FUb?aKf$%%w12|vk=N;R8zr(lk70Ryhq@vs z4tZ;M67omz6y$%xGmyv3FXPQZ9vz;Syb!z~d0u!)@=5Tr)oU2=B2_(jTz>o4=;DtT=9LzkS_R=ruj z{ILCrx=-?S{`w;)CV4)1BDl_9?f=wPy`5jsa-|onXK;9J|3(om|E}n~W79%Gg`80Sj@~TCoeWl1N!YjkMJ#}5Y zGv$m#PIvO*@P6d0;e*Im!pFk3JvjaEndah~DCZn0ENMyLe^F(Z3s8oxB+G8<4k!HzIEh zZv)rqDv9as=He45XFPI#As-8$L%sz*pL`R1C0yH65$)OR;%6x5DsnE6Uxwdu$$4zm zoA;w*ct84Lx!L|lDJBi_Jt&Vl-$TG7kZ*)XAzu%V2iNJXFR`BFE?$UoE+MBF`2~0d zmz-KI-j#BEic5ofl7B(|0P>WmA3~lSJ{GRi8;I$hX4RYi_e7CjEVJD7e;MSgA}lt|__y@SQr;U_*LLHJH z*ptG;JHIyVsfnDF7f<8j#o@aA6h=Esll#M~kT-+ZAa4Q>ARh^DOg!?PKMOxb9#Bf=(<$=$@XK(X-n%ZYf0s$;*C6Eh9+B~= z4}eD?UjmOpz6hQGuI=d}v7VGJUW9VaAg2WRF?dCnoZ2ql!^H=<_;k4TL+a8p0kg?d z!WWa5hc72D3*P|e{t0&ROO(?WIoHTL!|#)SfT?3C)~3%0VSmz*QyzPH6+kZVqgqw;&x9y>q3i&t~;o-RJl#W%Y6 z0l4Wm(n=*+@ASXz1^NQmYeo8L(T^BM)2Rr=fZcB&xRj{b9>HM z^>%x1T5j5N2swAj_rsr(hb}Mu`I0;&{1cqp6Xv+Q&Mdcfd!k!z+LInRvB}fH{otIR z)~Yx86|p?zvE1ZWMNR?o%J32{`IW4ClOKfqhL)TB-pFZ6-V@%=CBKJNZ}L|mf0*Sa ze;#s1k<`<)tmfl$X{l;$v=#oRpbZZTPgoX=QU>7>*ALw=OuEklRt+)Adg=` z@*k7Og};I8@}TYUIU%oOj|k_Zw2L>Q zoUO=dM!p%|p8O`fGx>FRAM!{Qr62o|M}QB8Yx^@xxo4V-&v)@1l%Ey(yT~)c54q%= zcJW7)(*QZo$ZNshyX1sC`R#J0)0+UU%hhV+_>r%Kr+3N8>EabA=R9(%ke`Lub;)V! z;sYqhQ%REB^k8#PF>f#$HCl&Iykf(s}rX1V`|!yA#`g|{Y; zURkEUJ$Y1k4>-4ffQwJ3oLtD6O`Ze3n7jdeIe9(!2J&I>E#yPszrnTrMPzb4r(FDs zi@%}#70CZUz6>7nw2X+y8_C5}!gV=3i=4FNC*fILa`L-)HOh%zMcP-3JSx1UOHOAO zA4NI&kTaG%7knyt5BN;-F7SnL?$6aOevoq3BIghCmGHCVkKq@|AHr{u$Eqs*d5=6A z{283v|G~v$oRK_T9x5Uy4tZI467mu76y(F;8OYbdvyiWZ=Y(tfv0LXUNpAKv&CuG) zv5)J!kn7*w9zcF@l;q4K*YgHz$SdHB#ZQuJ{dICZ{}$q`jK}n|-OhL}p2fu*yLfMM z{d~kAa&6~ma{a!GspR^77wgG2X9xL&$TFQ5$>&ZG4}I?Y{ScX4=T}1VH9O_?1<18M zWyyENl=?R0T0hpsr;?{xE;;MTHD?F;&5u%lo?Pocxp>U;@;Y8l5|L{^=Ou5CA{xO$~uQ|E?J@-N6+7D~VD|M5c zOXOPrggj=j)W^IikAItAby?b_^Q9%` zZ)I|=uS2fepBCiN@qJLk$u(y@x#r9vzurRHw~JhJj*+KIE%ndHwLaXHZ>Lv1iHjF^ z@%k=4z{RJz_+s`P(!PW2nZ&=4SBNIdXU41FpRQcw+Rw$wZ`GF9HzU{n=|cYVM5&)d zuJtQie4mRSCD-lSb#lEQEX*|-zb>~r-YDccy@|+u@%~ttTyx5hYfdfla|Jx!p%1y{ z3?{FWNaoi#@~tVoF`hZ(@9=)Q1#Vt#E(rwSy1;R&*YTdWJib%^4Ev3j$?wB&Sf1Fa z*LFU#+~m}(=KSXj&#rkNzTSsf5&jyk?Hq`9M!GKb>XYF)$ScCj!Fm2xv)r_2E5=)k zd?UQR<@R*7u-xRlMSUCcm+-D|AE(wdQQH~h;?pT7Yjx*E&M=!iGkgK%)ImS&x9Sr* zuYc;}jq#kY+)S6w_Y0Pr>1v4lE9BMTci}!xtr_Jp=bss#S@mYTerS)+4ezhN&i7}? z2}S+{9vQCrSe-p_t$LHM{h7vc)BbohWPIt#W5IKf*M#RGuMGExYkM9`yeEJ>mML(C z-j;`Up2zX3^ZnSChj1(f>K9rb2DRp4wdJNh3+fM&=Ye0bJgif1{+Z!9c@$w!w43sS zdAZ3S15X3z^(eFDrk~fKf3lM=f){YfFKN}A`51)uSGVd-zr{p*8e8>dyjg3?FPf95 zfp@TS?CI)d)!XA8Zq?i4{l%&`Ex^6b1XOcV=!H-t$e#ZTd6)6^@lAt5s{}Has)jnyyC*m#n!MN#X9pYGS z`e!qKk;QU*zEp&p<7k8UVY$i4RLA+x8Ga^D4xeDT$vN}LTke@hG`;q5_mm;qXFGpSzUX8pjyasu1 zcwIR6--bLC`!$wa?(fqT-=X*c#qX2Lb)UoK`F%egPrh1i?qAEXuAk)d;nANt`z7=D zZ07tv7I`FiT+7Ylm|Qoh<>tDp^{5knb_-pdH@K5B0TRQ!JBhLko z^4xj9%qOOo^ZVFvxnBgL{|uI!{?{TW3;AkzZt@H8{N(50#o^q~pH{tTMf#~_x#{OK za_W(Pgf}Hm*~(dOOY-FKU^w^F+p4$w8E(1hrwnpNlb3=|A#VepLEZ{J*K+&1%Pcq7 zorwBXlG;iFumzJCUJz9seD~$XX z^1mwiQC>J7$JfmS_jJG8NDg5(w9Md5PYELiW~Z^J>|^Ec+dP4R1#QwKS>$ZNqLk@tr` zCGQ7+3zzdO{d`kA;VWl;vR_M(<4wK@o|gP1JR|vWcn&!CQ%G_7cSWS1H^`|)`LE!O z$rHDA*3*S{otd>o5RPEH-^t4-vnPkz5%`xE^`~><*aM7;^!#m zDsnE7UxwdNa-Jw26W=KDbhlw1hkqc)i~JirF?srSPXEcs)5253Wxb2MochM(tKqE` zA4K_oB7YcpIrw<;4)Dq3?cg)u(x>#Zmg*;?ek1ur_&&;6if`ncu+SG%T4}mgaKZ5gmUn?Fh%*m5;RT(*+dxxk+@EO?JW0pDE#dx%Oknvf|v8oDR8qcGyee0e~IO0 z{&R5M738zv8_AEtx03IN?}5vFq@QC}z1`1c%S}H?I=bJuZ`a8a!T%vI1^<`4DEv8G z`nl)jz?3@w{+3CsUALkbDx{U&*Pccq_`;iJW%i+u_}moc@Z>rkp#-nNNNT zzJhWdVQ!lgKS4Q>f}Q!EA$P&AQ_d^oKT!ND+qN4zu;lyKj2@;GjwzI_Xl}8c%+Zc`*~dn z$Wvp#3MlRmH|NmYA2;Iu7+|@%KUTwaYm%3THzMB(4E}DD|r~a zA6(`j>m6>@oBS}WYlh_}KVNtE8~1Gvc@Fqe@*(h*;5#*dE z-v_@!p0G!F`>q@0ap4c(+|NtJV}5e-z>~lwKQqo-TC3iyH%)3MH?QSp zz5S6>kh~Y%pZp5E4EYIo74jB6o$FR7Zv?Lom;Qs$e{-we^dEr!`&e%JKa8CIygit$MqkHI|!x;`egayMa6|d?&ddJe0g3{0N-;IcL?|{oJUy%=kzq8!F?l;TLb=RZ*7x`LvjL*)TfTO&<;YXQ1C;#wiua?Oa>yA-UIspjyd!)Zd3*R|xU6>| z)_aM3DEyA%-za}7@_&&}hDZ70%t@{*`AOljzq?SMl6(i;7cMz_&}RX~t5MEfRX`xDtR;bJ@V1;hvXySZ^<{nKaj73 z|Ab4Q*Kw|5e2aMA#52O>TwO*^R`QGRyl~Dhrg#&|`G%Zk`{eE5kI37=pTVV1>E|caPegsB@6NhqU&h1Z!6oN% zT&FI%Rd1eWH{yBL*Yf0U--euANp9nt>=k?xH z{1fGzL(VtyGw`TCoOyG89Jo1eDc!%~rg7?0SZ>z)>2Jr=kbi(@B~RPmsn1TH5?%n# z{rD?hmvR~+ry+TLcw5Q|!~Lb3;*%(6C~~He4~8$KoDay~W4X68g7CMuEH~c=Oc2L; z=f75dN;mnZar}ejX8!AO-7n;8;gNniA199+H{j98FTvx$W&YAnQmfwXCzIu-AD;ov z^?b;)!1I#Vf)^yO1}_Sie$rw-O%!jV_%O;}j{H&NOW~81oVkkcqMWnH*+YIBepJah zulP&K`G}k_^7rsBl#>Z_i~P&kADO3ka=4t6R0Ey5)Z{7PK9rLa`S}#DOgZI{6F^=D zUXQ#3yb*ajcuTmfOZw@g_(;l`hMckFQ{dCc_rPb7hrkz;KZP$Re+=IM=l*voevxv# z2D!p-SIJ|+?~&(+KP1l!e@Pw)49Vc>K?OOs{x$#VadbTk)Q7IS(DMuD;~$;6uqL!$*=&ginH-)kSjul5;yp z@tu^j8#$rmJK;x_oby(_c|Prw#{I^9du+LRK7D|k=j8X{|B-tR36F7oB98%gMf%_S z=&5)*xXiy0ax#(Ug6C6miYwlLauy?}3Hd^JJIbkm$C>VmPo|uc$eB)l96pC~sw00Z zc`f)}#jjER8|2?2e+7R;o^YtMk59?t!{3to!9S1}gnxz0IhX$9M2>hK#FHwX8!qP| z2>JQRo4|{c4~Lf`9}2HTz6M^6d=y8 zPJRKtfjrSLCua+JJorw_?du+}++4R7>W`3Dho6PZ9Av%Mt$LFmmd5GlndK&b3UXeN zPk?_UzXbnEehwZvO2l&|{dmF6`LX*+X1VDn!EmR~ROE5snaOLwvyoSW=Y#WniYwlL zawZ|C3Hbzg8_H>o^VZd>H|x!n)>+pu%guU2kTZ&W2YfQQ#|S59I{7EmFCg!a`X%H& z;A`PBpV{btyH#)c?}YwOTWRs1aFG(*ls@*wyv^3m{n?eN&KSAy_#@XL9^6w-@=C}ITIA$L^;XEI{Utj+#9}^+#i0Byg2+AT-KWm>x~rC*X)C8^|+_bNbvuo(>)gm$}J$k1GC;b}Vg{W^0La{eG60Z&A}1)h|A13Vp^*Xyfz1oDiN~AOyIft!6Tq{02= zsNxSPX9;qikS~J2qnwP$j}yx|C+4mFeZcINM{>Wf6dsof!p-B4nSUVWU*2*v|1-F5 zCGu17n&hA0b;;ktgWxiM>8G7lZ}-#7a?{VB6Wnjyw|?a1;KRtfz(8crsC}>rwDR7k^8~>Qce)^hbcafa+)D$5qS`NHTh`xdh(I*9dMba^m9P*8Lh2sK9NU;yYTPcaQ~i)r-#dV^FdB#@+|ONj^UFbc&ZG?}>e>qIBa!MiR9JxRI2IY*vd>$(9isQ^*=F=8AQOH}vz2I`cko+Wy=c1g+ z$jL`O5nfEmDX(}F%Gr&aX5>5J?UbBhmd9{!;Z|oGT@w^vL-`Mozk&Qde5aCgQ1N?| z<2l7?=plIw_)8_{qvG-7M%?#2$Vp6|3!WNoKFZ8z7v_^y@sgBNA30^o>%s#l=OFUy zE8c~21|z2j`9Syp@>TF5}4uFAt9zFXH*>439}343AGf7oM1WHat08`ag#AkW2Bxir1k0 z1IVvKz7HO#S&Y)kC$AN!P za(*f99Y5kZ@k34u@`CV;aNhTvidUwbAmjv)H-XouoNG8&%@rR+Iirv>jC=%qypl6h z@lBMo2|3%yH^BEQImZ>hPdPV`^N9Q!{H2l;ErGL-vM={Ax44S?!sT^E-s4d%}=Mm+i^P|hpl z-%|WP$~lCbPvi&Su7nZqr_bS0$e+T!;Bp?MpCpRsq?~v&oCV}1j{`4CUI^|_UI1Q! zycxU-c@Vrdocj+{yf@{HM9$yj!{NipH^4`euY*q^zX_i~ejPp+F8#m5dDx_Qh~k$i z{}=MFlmCGKqvX6$JTm^>NO>H{G}CD`I(Y_oTsW^Qnc{gUrwVckkXM42rkwYfTNTCI zP);}GbRh2n@1f)jRD2%g%tg*3^4aj!O3qfr&r{A}KhEd!Ry-HwB%I}JSU&Rj@M7de;3diZ;1%KAPff+!Q%*DFbRrLe z_a+|$|C@Xid^q`b_-OL2@F{Taf1cvoDd!e)c9Y+LA0m%D+nN6{au4`<@*MEXCKXZgS+`7yD_s$ytv2NZt|meKtJ0dn4~Vc$DjZmyeXzNvP(x|7F)_gC^qTJ?7RRLf2N zU&xtBUKPGb$zNmD+xa^!H~ABg6G}b?eniPXr}#_CIf1dY&iUkhNe-9i z$9Kp{O&$jKQF8JrUY&B1Eik+5{`qTiZ+H_Wr;Sx_=I@_4JjT_-ax?!j$mv7w4%n^kY}?<4=DJlb42%QgWs!zL9d;B4;akYxrKuNs04wT=9P?X99Abk&lDF zrksq(kDlBkeBtJ;dEEAa$5Y$~F6U$`@^g@Hh8HBi0WU&+4PJ))C;U(H@9-*c59+_E z;_Ve5O8My*hmXZIk~}SZ68WF-Y2@YL^T|8F7n8SxuYmKqc9Q4Ee%&IM`}@C&M@wOn ze}CUo>fVakBD^;FS$KW&lkg^%+t+Pvxw&qP zCGI!wTYK^-@a}M#v#e`?Rd4baVqFt0H~Hm|GnKp)d>;8g_#*Ot@YQhcXRB3j_jAB< z)6Z_?93kHhKTG}|evv#3ehbe1{Hu7Rl+L-5#|Ph~?xx(gXyiWdxNylYhVz`vsyFLB zkNNvrZq{1^Il0KI!Trdmz>ATOf|nzYyUcX&{&#fAW58>`rT;eQzmZjM`j;P4>uR~_ zKNvYZ$veOYl23&XC7%o*2j_lfSoL;4OD#A3gdk@n`7Zb-^84^@P`Q-yu;gY6|vm(ABLO~8cscc+|0E1c{0CQkq# zOkM;&oZJsS1}^KJjP+h5UkJag_*cpgLjF(kCh*9qoqd$+O1?K-9><2GJ_Y$ucs9y8 ziazrzUX^mzAm=agRq*CYPDjPZP|kVeOdvlCpQ+?5Ry>4qJ|Jfw`G4@^O3p>aUrzu{4RMV z_yh6^@G$aD@b}~$;XmNg=RYx>bwy8W=Q@r#rneYKNwl{_l^9=R|4A-NCyDO~!LetuAW zb<}&LbN0*A-G+I7tOkz@mz<@soIaCT_2zjt5YMyOEH^nlkdu?V8@!N`U&^Yt^Q&2I z^5-C@2Kg*_L-K?0K=QrtHgH~VSH&k%&JW~FCI1GWujH(>>dks5VxHS9H|tHe#{I^9 z+eMxRevrHZ{3v-@_&GSQ_lDvhDQ75hzLF1yM@jFTE6$G%_jIqttam@wo7{4<-c`s+ zO}+x2h5S6+m;5w5Kb-q1p?Dq2iM7_63zJSMyil&Q$Uo@CB4} z1o@$sW0c_+zG->2A4>Uu;kqNq z1K^XCoH>f`q@13}2_^3iKceKEQ~U+x%tg){^4ajul#>f{iC{jWN=e3<@g~#ui}*`=P`1skw1dhCHGqIoRfy+vEVJ>vM%W-Sn&~*lLt9t$aBG`lGlOH zB(DWuL_Qe4jC>$`J)HaBsrUuTS%I7@ko3d^F`uMb3Eg$?!Q! z&N9UhP)-PPj*#zwpH*_MEB;AwkIesjAJZxBt9T{FYbo9XF6ZGB*42mn1AGX1ijB_s z89|;5J`v96cDCX>D5oTHLdZ+Nk0?3kta|f&nkK2!=f9Sl=hK$Rc}CtG{*HV+{3H2T z_%ArGH)fXqy}xPUGXH(Z$w$2!rg(kIX|&0iLu2v=@V1mw1CKM^6rV&ngOM|h zd?0)_D`xgWeDc_6$hd1H7DIIpWYd0Xt)2*oE^`R4u@fcxVj z%gz091g^V`ddku3WBx-eH|s5joRQ?E;FHLQ!>5t=gU=_A zyv=m)axEtRhWa&dna^zWzs;&Q{kxKxH!jyH%T51Hk$;Xn5PqF}1pGGnF!;Z4?&pnF zZ};=va?{Ux z2f1&>$y35hTW(*svgPKw6;U5RUIt!|dDX$$jAu;j-TSSZ@|z=NyWk zfag&>050dYCh}{N{{^q7CH(7{!-T&V1yoB%cf4t>he5{2$6W zgq(lL55Qk5IiD4em)+SHne$WRBqDzdPX(8Kl=);)yd>p#?R3stS@Kx$+LZGH^AA*f zFy-V&&T#U)@CoD%;Zw-#!{@?fz0%Ke#rILpAmkh(9{@j1z7l?(d^!9EocnpG_;<=V zgB(|mi2HsD9+Uh%+>87jJU*QJ$xQW0cRBl>jXViFA9-@` zEPP$Mk>Y(QXC!j^lMjcFRB|ROzLjz|AZI7}I`{$dEAS)am*6MivfdO}Z>*fozKf@U zCsI5ITpl03B0mrLXLu3v)VrO1FF~FXUIxzn)T8<`sBc7G3f`V_E@NFita|f28<@=L zXN2YEdA1F5#*nvyPgU~gTlIGS8p}=oc;sv#9}C|}z6~Bqz6pK=E_0Lho>TlK<%A(8 zjQlnHtCABXmves1c`)mpn9TjgeT!$gS#P3{aCRjkPXJFvUKE~=ybwGaoY$LQ@xLgi zCvs|&cZUZmIc=?av)=t!Z%@mUyL~Ql`jXFv4<$bYA4$FsJ_*k2oul{`%K3?$9pvBP zM<^!@_m^{uzoeY>q0at>k*9@!qnr=O_s;E{AM@7Ri3opNz;g3_z;dYfhs${j!~6p* zPwuX-g6q~KuLN&I-U}W?-UZ$kF7uaux>@z+JV-x-EI0j}K+Z7oWAO3h@8OflU&Cj> zrJtIZ&u+yJD}JBy%kObF>%KiAFAaaCH^u5mf*N{hrZzazG-%0KZKLD3` zNyKd5zomoxF?+ZPpEiy$~ldk+~gQ2P;03@=GIsEO|-zG$m(&;yWm(EpkH0Tf+}4 zIcF7rOgWPOoLurhDLEeboO8nSOsBZ7;+4pIVP9$~-We{BW0Nq4?&K5T{gs@NiZ7y^ z?Z{b1z7@V+$=Rv+70S7ToEzjf;14NhBRu> zK^_XfNd63dmHY|(9^8Zaf2Me(f~NBKpQDL=F#NZ!Xykvud7IMxH?^imwJkESZPA2k?@SIAHpW?MCC*>jMpwuT%4sT95 zGjOgtDn5pCN+D+gxj%fSlCxOx5XxzVoPFdi;K!Ami;6#|oUzDxO+Fg_QOSwx7jb_V zU~b72F94T)--7(YG`w@o8F94rN-UL3Cyb*jJ z`Dpke@{#c6aOodEKH~~e{D|UrDSrdEWE8 z-Kw|q{VX^6Z;?}s{1v>Mk{@8z+xd+wH~Be^yWhBPLF7L0wn~0C#V1it8{|wQZv~&P z1QMQS!KEDXA*MOkxzhcC*K9%O}+zu2+sYSQT$)Z zd5xTBw<4G7EPhMMY<{AC8`;Ghdjyy8_8+l3iFY;pWDE`j= z@^!r|H`ncp`gr6$;mP1KXIWPUtKO{3KcVT~<;ril$=`(>Kk{wxQsn=^%aOlE2+OX3U$ES)_b76%kROEKC69L2OvmMVK>i)|FUW_W{tbCw_-DAxrw#g#RMLp^byw5> zLiF!#x#|A_a#E1rhi4>@e$J%2Tv^GZ!t=nnpQ2X1-A@I}O+Pu1Q-$0YUYooIygqq# zcr!Tn)4{5@`{`r3>8B5J`jhv9k04(FA45J5KGAafy0a`d*FA~)dE|%T%gK|RcYl!k zwwgQX2^L&9t3}_5Zs z)b}Ev0Ut!Z7e0(U6h4LgA$$h;Kk$Wc>GL|y)oR6$QBI6Y&OV+Zj|RV@_lh=aBC$9ld0+;nZ!+PtIzk)Yayf5YVLH+>pUht9R3*ckP=fNkzrBCT+ zIn^IV{c7@q@LiPCB8IbHhpc+@JnKs2_+`t@^WZb&Tql15|3}GxVb$CDpDj1}u`fH< z{Z9S|JZia!=OI5lCV6gne7MX_)|*0cKg#KZoMPl1;pLT_>Q=p3Z!XNUvE^pH(~#4Y zd1IXkR+v)(|g_ps$=y(zA^-?(qb$&H3+MGdRoqoR;`!;1oG9e|;PK&-KM41i6pH&%&JyGlBVPpnlX8Y5zlG)Y z&!rEs+@E+Rh#UrqiQzMlLYdg|5c zT5kHOaMg6_a$O`Z55Gm;4StWjBm5Cu`bmoUME}#-clLOSXNSw{lVixwO@0VoSjj1) zco5}8zUIuK1^F-JcT{qEDL$2QiXnd{c@g*`%1MQ}tx^0C{#dA^473Ab2zXUHv{vBSD{42a7dFJcR zd8kUB5ncz*{Rb)DhjJ<-r$2c`_z3c@@G<0_;Zw=y!)KDuh0lXa|Gqd6n-vdL{0ikC zLjDc%1Mmk*&P&CkRE&78o+Bp)`BQj2IIkX+S<5-dxG)sQ3uV*@K)hO3r-6w^Pmo@VT#prxR5{}PF6K?=1EP^fg~x%LkFxWVDqetc$|9#Qc}aL_C8vtwZ762|aypRz z4evoY)iIxeiqE8+rO25}z8JoOa_S?0lj0{R=LB-jkRO9zB@ct&B!3Nm2$%h;kA7Y$ z9<@ru^N{40^8qo*6T#z?7l$V%FA7gh-UgnYycOIR&ixlqyc*?HxexrYk`tzQ zjH(gOmE`|HF8N8}Jh$|Um!O;)=(99=b$DeZr?%q3l+z12UCDdE`zblY6<S#CbBm)9o)EjQ0=-7wFEmYe!C`1!*faPxY`{Jf(4Jm)^kle^sy{Tw3C z2|sSR$&sJuykxn_*@60N zQ@VYjS)ltC*K*TO@w?&dN=RN5o)T`-?EK7Dy`7)ea+BX4IR(kv!u^%}idMayU&nHj zKN~p>$Y;WvEBPH2A456Eku!n(D14@pvsm%nl=Bfed&%F!PbfK;6c3}E4ELPX1O`f4N*VJa#Jt2DVCf1MW|nCxm~~6a#J6I`a_n>Yk6~x^OoCvzJl}P z(ns>Hm_yXRe(zUmcWxAOarey&Zr+O#hkF*Q-pqL;a(v0x!t*ORB^0kqIj@k@ko+0E zg_0Aj_*lyExgWkP*F^G6@adEj(B|ihVGc7kcA(`B7+_xo`o1C@}!r8TgyfJ(yx$B`* zA4>iX^#?3BbN0uaFI#S|I}bV6$!EatSZ;DQBIljuCMOK_AIYD?zguqR&_0249-`ND z{%al|OitNH?lM#w%qjj=VNCM=gG^#Z&H3*?8_so-t==H z`ClzJ`JIvTle_~wdaa1(a~nJs`6_rq^72od{=LbI!PCNJK0)X|n^kZ6m!ESkYPsn@ z1UdfXJKz<_zrd@Ie}LB}&;Qivzdm_xcr!Tn-@&T4`|o49>Ax#-`jZF4N04uTk0D$YxqaP}mYeIgLj76tX7Fp|i{Q7& z=fNM5-+(_QzXpFx{uBOz{5$+7T;|*n=Qc)dBfozhxKs4--@1}oZq}Rrx#KCx)50^u zCBFsob6fRho*R*0%5sxm2|4A+%fqXYPk`4T9|La$mwsfutrQw!^bK)(-q%9 zISF1m=V1$ZJoq8XIga_9vFgqJ>pt#ZH!U~!FMs6RB`*qpLf#+#g1is>J$WenGx<)q zM_uPU$o@+IvEZKW9_{|UEjRstMotRy_wbD51zx#7$bHL7o(G->&ixd%>g|3iSZ@01 zf}ASk9pSafH^S?auZ1_U+`evW%guFPqrN@)Q+Rjs60gk^T&~{a1>u9q7r=*;&x21O zKMbEjeh@wvE^|JObGuyeLzMFjImgJKz|WH>c;l@1GI>1sUAXk~G^$ho)T%f0j~m1B zFP5A6%Y1&2%Y35MGs(Xn_e$Wpp5#T~3CRD3Cn4_%PXU+yUtpdE$=}0EDqf%RPb0rE z`AK*y^0)AIcnP)-8u*D|Z#?3X|GYn$a}zltGe7r7t& zppt*us<-oRSZ?zBBIgcyPxxacKg_DP^M6=w@^>M}qkhD5wGAF0E_0Uoq)@yN<@`WS zQSxu_Qk0V(^RG|d0N%^;Xzu>K-M`Fjq~+%G@nF<1vE0;GGsW)PI?GLcU(_EZ9|^xt zJ`w)Ga&ttInQ-^*j|R>>Wp3vqJDynaJaF?oW%ecGTc^GNd3v}%``WZ#O6F$YtF?}vXpDQgleeOp7TJp{CZREw@ zxj)E#+eKa&evrHe{3v-h_&K<&OZvZI)tmlZG0hv7>y726|GCKdk9;=#JNaR_tD$p# zXn37Xo@#d7%`oHioxLT99gm#Wrn=QBd41vqO$hwXw^%pER>k35v74rJ< zyX2?g56F+hUyw)n;OxsA@<{OamYa1=#QeX&WnJ<(mb;O2KE>sJQAF{Ya5>LDxNcqY zEbwMZP6x%uD?U^49ptjE1B%~)OaFhN&wt3P!k;TS?-ftbIO05i;(n15Zmw(gWk2>M zyXEHmjKy_xlaGcMR`SbO^(NnCF66$|vfSivMovBQjqs*QetWClfIVs44;Tg$iz_XH1gXbYX2rodsA6^2^{Z~-DDdjvtPD}EC;lboy zpPc!3C65K~M_vd%kh}nV7+m^~f%7n1@uiCIq5MY3KS169ep1P~toTdH8G@WJ@1d!i04Yyn;b6ZY87%)ldpjLS~>RX;R1^PMLFk?Q=9w@yor+2M)Bd4^8q=d$^U~- zQF7*4_2zM`6CTIbS#BQ3l7Dv2;U@B=@ZFT3-YIt-R{S>Qltj*b@)GbDl;ey14~lyQ zIr}dA+X^}H$XmdZk&lO`A|DIS3^!LX=Rx|(t#}2>*@~PhjY_#0|dc}UrP5u$o-?H4)7r=h~Yq_bvfcl^0H{c1HMVxbKryTj*;)K;RKzt@=c5W z4!fRP_2zLn#aHJYugT-WKT%F~kURk1g7Rx2C)lbt`Ei|b zx%yge@+Tr^0Qq?MXv%Ml{Ha#G$;Xdzx>hUoTb25gmYaTd;JRnYx52L|`Ttn;c0b=O zH~F`b<7)By{20Fpj}Djf(A@n#bMvw4?fXSu@-&5S9 zr85tigRD1};y#M!Q@l1@p1-Q0&-&z5;LXUp!&{Meg?EB;|9upntN3!o_rj(Bxw!5@ z^4ak7O3qEiKT*yhV0RuOAIrW>!zoI_GaW>;8bt+;%zJ=Stkx`5*C%@a*K#kW-mFAH25WUEp&6%HeV@(1Y9;-j8zpkUz<) zPwie;nb=OwH1ev>m|e5U^S5!{F`qm*m*Y#wL&iJ4f?V!*8^{Nycj~v0%l$5t+%LD& z|9-_!kgtg6)Sn?gh(0fpOa4{z%}1O*Z;^-Mb=p0}ACV`;C*)5Re?|Vw&*}fI;vdQ7 zarG;C%%@KO=5sf5GpX^y|Ic|77ymDgHp9O+ZQjL>ZTmlu;;rDYCUqUYHm5-Bt#CK7>toN|ur^)f-=&tLE z-zS&(M8{mEpCqV@LtYY|O!0K&6;PjD@%-eIQSYz#pX3Wrk3S~z|D7Lv+x-7r=Gl*O zWW7Vl`xkE1fJR>iOIlLv8`F~ej{+yh7cRcs6k;sXQ z=K*$a^0BD*A(ws3LoV|vMlSOyOD^+iM?M4B?MnU-F3>gDGtWDZjQP^o`GF7=*KBF_>Hc-9XUv`koyb--Z*s{WL@xD<$)$cZx%9JL@xA1d zf0tbHACpUcRQx#xo~IZ2HfQXv?BtT4pIrJcqj+U<$?rhE9oOwnz85}~T>6#;sy~1}f0E1mlgDrhB&iB)@N_`c@>nb_HR4=b9 zdMZAca;o5QW0q3CNb$9lQwTYSl=@SOUsZBmDfJ%|m!D&mIm^0|#EiIK@;WLtd2_R& z?ptwksV}E^Yw{$>=|nECyZXYVPkG#)tklm|d>Q4)dP9}^!-}7y9NEXmO8slazbH9z z%|hKbxxdI9ycJImm-)!L%31YZPGtDos^q2dzIuuWkyl53d&Rqv*F^nb#YdC3Mg26z z=aElC{Yu3*lFvnbh~kIH7oq+oIoS1{T;};p@#wLfk2L#h_66VWcEwjb8M(|ei{iP+ zTcOb+ikBvrc~(`tHu*y22Pxi$T;@5J95Jq`7aq-=_doZ^plfZ`YA{* z`L)RMg3^SCzCHn{XE5& zk>5uBM#XoM|AYFYik~I_jQSgj|3e=BL%8nwyj1)>xd*-<6DdLXSi?W>HYMVo7>sMC;tR<;W53pr%Q@Ua zz6$kw$v4Y6A(!)WLGc^p{~_lQx$N&ta@pUs37tWi566)ShpglkFwcC77bU-f`tpib zBbUdMMvAu}m-8V1p0M;U-izw{U_L_>A44wtI7{(GE|}N z^z(>Z>Z9TZA>{rd^kxT!16faCJ{nR6ueuBuQelWSzk0zJ?XDGgaT>9Uj z_zrUE=PJ4MbC#>a#1JpIn|tYLcJ9 zel=9Qui`@#UrZhweXb^#^=^a9UWV#{Q+|6=d9va$tC{-x#a&Km-=M* z#*NHh>eG>z$NWo^OMNAB>A$w(jmgU(zpdh3$ff@Yp3qKe@}iD*NtTUaESXR=ULp7TwZS{QamNOyl%{*crJ2z-B_Glo_ETT%j0JY za+zlba{2tC54o&&FuAOE8M)-IBbU#YcPhT0e5f;a*C}%8=MuT}^Nw8l`ARP9jh@Q6 z5btjsa>>s_F8PJYWxZt;uR<>CtxGQJ4J4O-29QfXBgkdFQ^_TNF1h6IBbWSR=hsF8TGyB|nH<^81rF!Z{yK z-Wk4xycm3q;%61VO5PAT|0w>9T>AV#F6;e4F6&K^#<`H(zoh>RO;t-{t&s;-zT4gIXoqo z`l#vt_dLDGCC7(c`pH8+8`rHyF4wI?z8m%3$fdp?`C`=1QhX7)43`cs6p$|C3z$ z2_TpHVDc%Lb5HVZ@TufdKbKtccag70&H-}yzSUjwd8mJ^c;t)`=PC8E$k!n!E4kF? zCYSnZLn*k@g$jk z&l%tP3y0L?_%f->NAW!5q3FMu;$_K?puUFU4alot-&-o)k-RqQ`zbz@ycg=1k)uu5 zI`TAl$4eG?ufcuaaffpt(3NJ-o8s40I5Z2XR@llFT zQhY13$qyoz z{5IsW-X4ngCzpQ4kV`*P$fcjHm2cT zT>7a-F8K|~CBHej9CncqqB_bDLc9ACb%J-pDy4&R^dPb+e%4`Y1k_T>4o|F8Qm;rJobzQh$M5>chyT{xf+FoCoh*|9k#v$fe$& zT=M@U&w%{a6;QvZZp`ti&iaXwNXpIqv5l1qI- za_OfIxzslym;AxxQa_qp>Q|7Xn7*eS-!rJkzD%E zu6Py2YmrO;-N+@sAGy@eA(#3k1Qpu)Ndu1{Hx?rf0tb9zmdyzBj<}aH}MRL`;yCf z_EWqhxt!-fa=C76#YZVViM$HV+g!z$lFReaVRGr`G`YNfctI}p|B*{SKNXLbKjQqQ zpG@SEpMzZLE0aroO>*hKE4kG7C71q(D?XlF`dLpd`P<2*{xZ4L-zJy-zbNieAmTiw zJ`K53<^Fr|$?(acpq|n`r{g=_&9RuX9KzPvx8jvIjHza za>;*B9upV%PA=cyiC)ktFn7-c?qA|@$mQ!-$rMjVE?>XOrFbE7InSjPuS72Av!3EX z+lh_;qs0|4AY%RWkeJjIie%X!YA zxG(u2%%?E9>`N)~j(GfUPmXT~ySkC%%jvEGijN=?A zQeS~w&Rb2z8AM$9*Xl8 zskrk$GJkPTayf6_il-r$^OjBVyyUX3l8RR#m-En)T-Mu>TLvoqJ3v$`tI3*(Pm-Lf_T+Ukt#eK=8A3t*GrzE-b6G$%ov?iB+hLKDC zIC809O)mAD$)*0B;@1>^ulRSxlln)Tzg#!1;{J;NNiOrRMK1GiL@x91M=t#gC71I& z0q*H?{vL@RxMQ!Rddb;HE`9DHmp+e>OP`O(CI6-3u}ZqaZyxTq=6ONt6Oeay%3P_) zrJqdX(ob1($*)2#`Sr;qzbU!o4ZB8y}smf-F)QuHkqqBxzyJqm-=4hQa@1fRf=ySm;K$V_)+o@%;&P=x5?#s z^SR>h$mQ!8uF?_bFCK$jzK)TIT=pv^x$KvZ;(5sBaib==%)cSIoS#L(f@75A1Urp&iO#uFUg5X zJ`DMp$fZ69x$JKx#cPnu<8x~il^$W?RekHk_pDl`qkjwcwq4)*zBbd)U#h;MN z`T3yu4{|v_p5-I%mzbrlaJm-+W6m&gC%C# zrT!AR)W0K_KEIL=!g`b80no$!d-M87>eDG+O7V*1a(`(>F8RUaaz4kBOZ`-GsozR2 z^`VOYqxds&Iscy&|3xn6->ZT%Sed7IB62zZ=@rjLF6X}xx$L_?xt#w%a+yzSa@nt8 zDgLN4d+4!NASALO#$sFfn_%iox1 zdd0Jm%RH-E?uiWZpW5Vc@V+3$+mP2meK*DXk=I52XvHU!2cdo!IoNf8T>3w)_+@h3 z9bESme?ndb7k)=x75~B>3kL;J^dyz~3-ioIo zm;U|9CI3%ye46QMMK1NhJ)EbBbK*FOf?>cNKq3F8xHq9g624 zn_T+IPA>iACztw~|JU8wy{m7+$D7n-xC71fOil0{evf}T_ebMK4a``$&@@h_j z%v0*qlS}`l$)&y$xzx8Km-?>c($92qsh>|S^&#X^e~4WAc}OnxFUTc7cEJChPhxVZ z&r2@XEuwf6#aoff`RuOv-{kW6Hd^t? zlS_Rea;f(xmwuX%OMNSH$sa{7^^?e@em%Kdce~=(6u(C<=l`YR@5$x-C%_9Kc|4SU zk}F)-Nm;R3`ewJMNe@!m=AIYUY zFU|W?Lp}rbb;+gwK=L7|Z>M-y z^2w<0ulR6s>3@>qv&g0Y5b^+A_Yiq~_*uoTk~cv8XL8AR)i%5A{Jp-Wv^MHvDV~5_ z^7E2Qei6l+lAjOn!sTj9{si7#@xRGmp?)-Qm;LIXcz1Hi zAE@|9a@nuV+Py|UvgR3NW~|T%X)W{%X$xz%X-f#evN!5*84#5=j5{9 zuZl;i=LGUT#!);8xvaMcxvaM|xvaOU<dx%`}PmxRhHS%4^zeg_l9`&69*%!%=NiO+`$t6D(xt!;0isvPl zej1Ud`NQe21^G&NC&hb_%fIV6RPnLov*J3}ou&99@+$G1`gNAaaMMZN7j3fd@a`dT=940($6o;?S7&+2)}&zU&CTt`pIRv-A^I%9O$RC;+4p6p}w}_ zjmc&H?G^7vz7+d4K=BdeGM{Od+w+-6F7r8Oxjmn23xi)*~% z)5&Fj4_a>T?@4mm-z$pWArHg(f2w#G`CKn&0Y4Ov+US4pdjiFilgs@jlj1qZWxtAA zZtqtaa+zmq%k6n~BA0pgReT7!^fS?NyPuil($6l-?S2lBKgE8XA(#8t6>^#92lC>` z`9WS99;e5bR?ca;YDw_(bwhE_sTpaCpFEI~zLkAfN%6|C4O)*y(8fT*BRQDXaxJz|RmdGB(an|n`lKi~U2?{|FP zyN8?E{mnVoTyxLt>}Gd~L*zJre($(@{`{5vP{>|lv+PvAeARh)Kz`W9 zLd`thnjFv9ojiUzInL+f9M|V_9B-36p6~GjkKaxHpd7akl0Po~D*035yU1S<|B4*> zAIb6ftvAIEY*@c6Cd=>J}F^#3q9`rk>8 z{`Zk%JU{aI=j7<8f*k!+lB1ud+12mgRvu3w-!6~qRC0{}IFC;v$M{e8_*`;q?_zRn z?=o_1?>chyzk&Q8*{+v8zJq*-oHyR~_y^>pB>#oSzaz)?{_gQ(9l`%$dP}Eyo1y^NZwKW z3-Zq5;hgAkJ6^nw$J=|n3px53NsjvC$&p_`jy{)=V|?x)?=Jn{OOE`D)#JTAejfQ{vb`DPZ-`$`j{G&`$Ui`i{G;T^?;=P39dhJNodzTXNJtlN|MjczmkIFCs_%>&Q|6W^(jj;_-Fl zsQ(%{>hJORHy%Gij{1$}R6qXB$3x7kPXkIr_Q9_#J@1;&x z@}I;1HsM?$U$^nl+a5neURyu#)#WR4 zysut+zMYTr1IDMJ$Gekbd;5Akl^olf=J5+1cei)C$MeXsy_b?>d)GJ~qc$DeyOz97 z13NBT$&r799Qpr{BmaZPg9X)(e`E3(>F0EE)bB@*{B&~U=aS=dw8b7@Mvl+XZuI!= z+uxN1qpv zV|%BOWBiwsqo3=^QU6YI)W44$^+zq- z?~(jJ90|w z+j}oL`hS=l{ck7Fl5yTmei!yHIr2Y~BY#|e^nOIX1v&D4$dMmFj(jFL@;T(lUrUbs zDstqXAkUU@*hr52yX44!M1Fn@`1-YdHi&bkMsB>k1r+PCEL54Jdodu z?afa^x$>k*_32{`jTQM}7!7^4a9b&ml+tI`X|To;Q;t z|0Ma>lHWxBz4(6eGVy~R|I6dCmqw4!TWOCFWNRIl$JwD6h3&>Ib zR&vx|LyrC*@%Yo^sQ(r@>c8*t-#vbe9QE5?Uj6u=LXQ4>d;BbN)W3in{ZI4wRph91 zgU9a>$LAEYezV*21m*Gj+D7uWavuJG9QjYlTT1>%kN-}dDEXKxqQ@CtmmK|^N{)WI zlOsQY9Qn!Q=>H;*FC<5wmwWsga`f|%$Dbg_`=xuyQRh8!&_*|`|8uk@&5U2k1uiDeP8`ba=fp8zvD5^{(8jYyU2&hxV=Mu zj`)w{6U2Wf&k%2NRrL5H-;x~1LmzVF2aqG5MUMPTa`bZzIr2A>qyD4h$Uj4l`~i=D zOg>Ovmwro*)`gxli{d_=KJO$Ul($ zsUGi6{;A~qdweiCwl|F&+nY{~?Y*2F+j|W;`oGEJcao$32R;5cIr`sBj{Zx@(f`Nf zcgeVYNq#`QW?}UHMZP{c@}0?%??I0Icyi<~AV+>FIr7WNk$-?3`A5l--$j0}jKe$R z$p1)={O{z?OPyvbqQ~GM-P7qyAp<7Eh#pVmPb6W)c?)n&2EeyXXIOxqkalG@~PzL|6Gq>NRIkT$x(l~#~&a^oku;sQM|6& z?B?qFVrl$VW@Q{;KG4hBqZ2EBQo^cO*wYspRMKVQ3Y+cX|AIkH6~i&m50aoBpib{LnY#uZ!2crD}ZK{Bh*ScPB^vzT{h^{zQ*Y@%WYG zuS%Wk$ajdZCrAD%a`gW;Ir1NnBmW0E^5I*f#|{0oBS*e7Ir78Ekw1qV{mdsvela=f zuOUZ%EjjXA$+6xyJpQ%EfAV;v+oHz}^_!EwFZ;I-Ir0O@kviGM?m{1NhBB;V)`dqck()#pRxo0B7-OpbgCIr^DOj{HUB$QP0$ zUqp_6o+L+p6FKUCNRIqxu*lmB5iKlGi)fAM&eJEO-f#{L=l6s$P?>W|BuIiAYT>O{GT3=S#9U*!%VODF3C6a`0?aT>)GW`a$L8b zXF1e~{8{l)j=S4CfxMk;Z>Gm{$kERt$K8G|BS$|EIqvrJ1o;NpFIzmmm3+MPzuV*c z$ua()dHfslwX(l{_4rY8j8Cw}?g%{JVShCy$M_6z+#R1`*Uwk%?<7M_(5`vf8D$7f_R+b z{BRsO#=n)vPbOa=0-y`FHzQ?o3G5+&BehGQJ?5`_5ejPdXSFz*n z{wg8I_-}XIJ^pu-WBlLu_#txi^PS^vKfjQppQiUj9}h3fd8rloHt|j#Kb^d>oUg`` zqy9v4)X(vFE;;J2B1io@$Wi}6k3UY1`n$+c{~eDX@%Wz}Z*gz+_CHs8^Ir8f~zJa`_91nZQQRe_T@<+&#|C2mH>bEF~9#7;?Bu9Q6Ir5Xp zC(HR~y2s~|7fF7p$Cs1ie0Y<`?<7Ae_1Aj*G4h&netX{Iuae_@vd3|KDCDWDz8okq zlgR&9n19gZyOiXUR_$f04Y0_y^?3e@c$W*FWUQ*Sf!Iob@;$e-b(JoygHo zDmn6Lc2{k z`g_Px{{T7a|3Z%Xf0Ltr?X}VS3-ue4qkd;{)bHW(ape8wc$h?vex{S7pSk4d=N59* zUrm0ltarV~pCW%=@-KRPJNZ`0zvc1w$+5kkkz;$mA;H^-cOpms zy*+*wIr<+?j{e7zqyKs2GiBT^A>Sx|D>?FO$dP}69QkeJ$d{8Nf0!Kk+7CsKKk^O9 zk?%~7d=GNu&m*5BmJ{&#%$hRU#KmEv&Kbsu+EOPWYlN{r74f#XT|Bd9xKT3|r(K8<3=kYR+|LXCh z9&aHpEW>J8W7HM>oapg^+oyn2!L5}=6X&)EoE-I!lB0gjN2A9Xexk=uB}e^Xij_7U%dVk(c_PNQ*!j* zogDeT+m%3$`hCdJ{{V8VcO*IbA5V_&fh;6P{iWone+@b6-$;)7kCUVRbL6OB zN{;$F$x;6+a@7Bk9QFSsNBtN%A>eU=`fbQjzk|nzkmLI#qsh_F`Q+#)iyZx2Lyr14 zl3y>!;Tn&xCI1}fC68|+|5oy^dVCi-w)X%zw)bOlY;Wvy(T^i+Z$OUzn|Zu7Ir=}< z*wy&ygel68Q&G|4om- zOOE;# zA9(yza@7Ba9QA9xSp7JkM2kFsoSLC74D9YpasR`uc<+#cxN4|i3 z432Y;-%dVG^7nasJvsV$gB<<5O^*C8iu~ zsK>{UPnPkS=Hjm2f8+7mFGr966sgmY ze7blSa^!oFqyGuy$WJCm{!((}uOdf350fMRBsucC$&uerj(&b7NB%Ez)NlPt_2b!| z9Qm`!vEC6LpXKod9>0k^U-sjj@^-=OMb0gJoFkl>hB@HO!8$OFDFO+ zW8|n`d#f#|pSARMEw*<+yFz{t@{d zvVSYd(NAbw^td74iX8cq$?ui=1IbZmxW{LBe4fW|@c6ABe})`=zCe!8eRgLi)==mw@;vc}9Cx?(3G!~Ty<0rKl^p%-b=>XeJ#zH(m*Z|fv9H^P_4Atc z{k81<1|DxlK1BL&>+w^_(SL8p-Tu!aNB>hDcl*DH9OHSh$1f*GKi50%_Hzq4`gzuI z-OoodZZDFTi|_LIJLHMA?fCyhj{1L)qkiq3b~)@vctdj3??R6Hy~t5#kjF=oqy9{C z)SvJ1n>>D}$G3QVtH(e0__yTP-akAZej|FEvAv1p4P-xdBu9Rz$H$NlkUF!;Q74Za z`J2d*zmxoAslSCB`K{#0|3HrXZ{#P&$$0IG9yfR$@^O-H=JD3#IG=a+cn|U$rT$qS zA4-0^bg8CP%*Z?&$G^HzW___-sLr$Hj@{IQ|Eaqy8{*)E`fd`WKL+{!;Q6Wj`(_NBtu5 z6|!B$lgY8Y%gM35*OR0F+dX~{Ir@LZ<4=>L|Ch+o z|7+yv|1h~0e=j-m50fLm zi+qlZ!#m_Rh=1(yFUfD0{1K1;NsfMw-xodp=%)=i`Z<$)rL1=dIr^DOeu?BS@_3=g zi^$Q>6XdABksSH`l`-$kER*a`bZ!Ir4er$X`m1{;%`+&E)9+ZjV1mj(%SE_*>+7zw1Mf ze@5O}#xwT)=>3BA2IQ#U%;T-eQNKSq>JKJwE&WXK_$-fKOWr~1tRn9u{scMl8_CiC z0dnL&CP)5na^!22MUON3=|GNrS90V>k|RH!9Q`aLM}8?e>fb|-{6pl(ZzIQg-}Lx5 z9zWvoMju3vTYuS)&B=$0_aaCBOmgHWlOvx^K0)f|dOV*Tzn>P9W4$FFf63#odHgev zf8+5wA6AX0-lUQCZm1FY1o4(0Z%2;zjR%vX{wQ+PPxp8xIqF|Qj{4Vl*7ta4kN5ESIFC;vpKaR+<&&eI0&?WACyyL;u5jF~bC=_8o%_jA=W)l~Iy)VA z>+JLRM~=I7eskQd^N+{t9I^wV&;M?nc8v1m8Kh))tax;nizWjvvl^(y2yjHAT{x*-_P5wts zn}5{f&ydH-@$j<8caY<}y5Dg<_VMbfF9*xb#B8tj5%zAV)~8kOj!y&f9Wp-6J>Hfa zBFFyf=eWDS z&L+qHn&o(m>i;eMLtPe-9~8gL<5!d8crNmIF*%Os2R;5cIgaPe9xo-w`0R1q9iIc_ z7@yGRc090uF+OqR*xn`{Z%KY;tgYLDe7Ja5^6}z*JwA~90?Cge$KzrG`3;iKB>zV| zhrFpA{|m{nAD5D2f89-v@qCaRQ@M?YyEpHJSlhV5@L`Bw3($TDxNoqgmu{>#X5{Qp6o zCH2FHqxa)I;`Pa~-lpW}zb85B_a{gF;pC`4mK^mLlB51oa@4<;9Q9X`qyCfRsK1FE z^|zCw{%&&A|DGK6eaQn9|Id=6{)^GMYJ}p>NGFMc(g1zP`tsl4HMjCrAChwb?vLXP^clW&zi-}3l(9{9;M~?bsyx8?Q*zYrMUMJs zlB51`a?~G7j`|D8QGW?J>R(Ha`m4xMe*-z{Zzf0m?c}Jxn;i9jAV>Y*$WcH1L-c+@ z{W|2o$nn<1<1NY2&spTV%QrcL_PR_eyf~e=j-m50fLm zo%~zrb2mBq|C$`*^AmZQ)cISyuG($-`7}4(KA$%JF?v6u&I#nG(_S2Prb?Z&DE}W> z?@)5=uW{rUpGo8xpUcQm|7vp7FY77ijAv_dg%i;(XPB9OtVR?abIEc1-{81D{_%O`t>jqm)8xoMPmX*U zIr8Nm|HtFCev2Mw)M-Z^E929dyteoVa^%O6qyPEj$S)>G{tj~F?hkVkRv~t9P7>Y_;Qb5PmbexJvr(>@Ol^pq_ysmYDmn7q$pZ^0<9o^b$o~3{ z9QA+kc*{Sl##5i4Q>0Ei@(JQyJ>HxAe8~^=_;B)Rl27+|CV8&pFY@?8@+%}?;PFE8 zWs-l4{2cLT$uT}#J^ltc#^*hce?oqttT+6Zy@BsLp`SYB=%<;-Ta%-oP98s<9Q}+Z zM?V*kqo0``pYQP^j~9D<6FK^Pg?y@v=RtDhzaU3G{CD*DpD1W+Pa*XGCa*W$kjHQG|ln) zj%PaF$Z@=W)OC(?yg+ViZ|pd3YL_7}gr4E@Ho(8O7vqv3g^g_dAl~c_)Qj z?uJsy(T_Vmx_|VOPI>f`NsfMUJYGPK*MWuP7s~x2@(j6OOpf)Hkk6L;>&UTRH;`W} z_cxPYA@}!@qyI8;yiP7BM?Z(j(N6_A`l%#eBKPC<0irHAPVo9UfgJrLlB1uFJ-Kg!3Vkv`#>R0sPvhaCI2fV@a=yt)*6yvXClnhZ|{Z@9oIKezoW{E!;$`IMzrt~S4n9G~p^_Z$`-Ng{K$q3|4w8=}A1$6pj`|(R zPm+8RIqD~qpDp<`a@0>JKS}bL$xjlmAV>X5kH^asz3x-L{y9zRB#@sio=Bc9-jO_0Jc;~L@nrJb z#M8)8Kb;))Gs#guhaB|_$WgzL9QBLHQNNfR^*4~ulkM8<@lx_U$?qi37cVDA{lny_ zQ$db8mE_p2c=J|6Tbq(sgm3FP=(JJE6d{DS8Zd{0x?(LO?5^(Dp0>(cmlf~n-6 z$a>SrzYtF+kC)>+)8jehtt6l8@qBXpyUPM{oL>sbF+N3(yW>+#j`7*xxZYH3?`Cpr zZz(zY*-0KR`+FaGf_ND@Ug(!Q?)HC}9Q|WC96#tE-=~11e|(<;j(+fc3OL3K;|fO~ z9px7jIQmF(-0eS^yoEkE)g{ewcl^`Izn9}MlN|l$kmGw(x#USQj``#%;sxZ`-a>M0 zZwWcZe;qmc-$0K3H+#I4ysI2PJIRNNmy@>@KTM7~738Q>NsjN6hicpXhW(E5j3dW* zCX$~j{d6QpKS|{1Cz(85>ZFioiKmj|d-!SO=s%qt{pXUS|9o=vUqFuj3(3)c5jp-{ zL$Sv<=2sKko9gL z$LrwD9xo+-Uh3>5e_4DVIbKhfk>mSL<>YvseVBZo)DP8(J|3{WapaFnKAs%go8a+8 za%^u$a%^uBIkq>M9NU{ljy}`LvA;6OQ76aax#al1Ts}F*vxpr16qBQ$5^~gEM~?cX z5TIR`iYY_Na5%wo*exokfWbOa`e-Y zJPyxCz7=a@;YE0`3&(5 z|SY&m?bWVshDyp%QZZ zzPZlhrQ~g8y*tUT65mH&E?!1nAznd_`jzDPepjfTT~LpM-d=bdIr@nwFSm<_63Ed{ z5_xCICzB_Mr;zs-PxW{v`CQ58kfZ-x@^Z=NlcWD4@;!Q>)TP+tCFE~QejWLH;v2~0 z@@C@YXFm_ThLyojCb05{^3YD?;v$j$x%O(T>d#mD2IHejDIfq9PxbeT=63Ef6URKjtBBuk}n~zE544rzIZ7) z>g*&(oqgn}Q${{U>Q|7XekD2ThZ@)o)Qju$!|_rljvVz99oL^b%gd5bM~^3w>viZ$ zGC7_{Qpj7{cqo+|&kJcDPbcpvbuvAkL!Ku2T=H?^`Q+z`7m!aBFC@IrdjMIri6Ka_p~AL%SimZGHT}<2)Yk@dR@0-$ajh zB**?uBFFwsCdd9wA;69CeaC zoKBuvehE41uk&~*d77+uCpp%;j~weQ zBgcL(C&&07CdW8ekYgMw$)Axv%`Xq?c352-tLskjxJLE{e2~7OF7f24;tAv<#1qNq zigzT>7f&J2va1cHl4E<*$d^ez-Q&6B_?$7H9OF|!j`1lZPn7kG-tWxYk@UyB!$ z{~%sM{i~NB=40=s%Sl{il&Pka12YNB_Cx=rf=EOWD5##W zi^q}U|N9nCo+x}i8_4nhFWyX!|G(`%^6^rqj2!jL$?^Z^J?!yN)9B*?+ZE^W zc=AheJdor6!hbxOpeD<2{|4|>&Wr{ z2P`Eok@4I~-c;Vd+vm8B=GomBDkFbZyuxw)_hw3;{32%JdPZngT|8| zkbDC9m*R=!KZ|!HZ!B+2q>!WkRC4s6Mvnf|$YpgqX(zF{$X;|4<$tJ_aRb0jyzL5o_wZw z0{KSqB=QmB$>gY?LVk(lQ$3zZj_u0vcrN)1GS2zr_#Cl_9QBJmUP6xg>&Q{RlpOVU zdVC)_>X(tDeg!!m7nS6AT$n$Gs16C7AMm({YaV@^bdtwQBKeu(9mxlZCy@^mPbMEN zo<=@PJe_=q?8i*<5#l-IW5jdG@wm<>$LoOt$Mq={uLlY}UgEfZJ%Ik#kypreZ6HTK zo5}Y}|NF=nNS!ir)GsGT{lny_k1u%Ocvvd+<61-?4@Khf`MwsRCsbHoeCmx>pXuNE&MNB`@{(fi|UoQ1KlB53=a`c%>j_=2$ zkz>8-tTA7D^X5kB8(7r8u9UejGXKCz7LnM~^3wqkb|u>Zg(8agk1r$3-SN9v3;}hh)DLkRK5* zB>xS^1Nl+$V)7XIzQ_jhHsYJf8_VbYrQ`|XJIPy$?<2?Kx{N#|uLml~(N87$OVVdZ z{=qDc2h@)v-!I2oB6$a?(~%tYlgLp&nH=@g$djagIyt^Cl}Vl@`5f}Q#0$uKiWicj zei8XR$rpQk139*9v&T!xzm;*`NnRmdPLBGAJzhbM`jzCUAD^0UMX$p?v-kmLJL>&OSn{@Or3TzoV6 zXz@~VJg#?=~o zGkKQLP^i>#d5gi!*-2hU^7|Z@mp*1r8ToyZFLxY=h@N$re46xM;kbN-#8j#z$G|{-*pMfPA8Sf8$B# zdDGory-SIrFLzTPZHu}^mcgM%7J#Y8H9W_mq z+j=u)Q;nSEcrUrFC*vL0`4qW7*>M?iBl(W&e39J0fqb9bzs+%7r-s~r*KxO>?;Ll> z|5wL#9eFs0YUqJi7u}1#rpf);?0TlU6p&|%Kjyf*fAM#Qbj;nq_&ZeE-Tm86>gkET zmdJhl9ZG#y_b(qegszbJdg6}5TF3P`V0#~TT-WKVuKMz#$J?}6vzY18 zJ>LFy+&$hhWyk4q`dTWFmzj?1eg@jIp;sJtx9bbX^>&Sv{P&LQIynCRc3iI)-%qHi zL+YYU-^|u`)Mb+6?s^Lx*XzaS6e}FpH*e8J)CGTUL)X_=yia={)m>ESvS{w?nHOcxUhG=N#L?sOk~79m$;exf zojpw5>79`=H9x;ww{G31WG$RIHA9u1Id{gespImxb(@-#wLk^4X67v%Hg)j0EcIjX z;Bk39at-mtV0YH%(dpP{yYTweF2>GKv`lC@x3#>_mm(RuUKFlNoLyDVxS{eQIP ze~s<`FNZ+)9%{s9WankfoVzf4L0-n9xijZ4%Ff80w{Y;-alJGCFKMz*bdxzV=SFp^ zc5cHA)){jYj0<$!G-qfi3Sqrk}&d63LMJH1Y&7L_|ohEGw_2@)g zpET8iT~yVq*j&4d0A60l1kY*8PgYJ%~9)^v0&b!Tzg{wKl`~?JxRFF)2NmrH{@lj`TqwE zS0+!7k*RNaJkPqz>z9`QyUV9nv;I;4jpe6Rv;6u0jpZ@8ZvT`18_Qo>&HD9gjQ`#3 zFRW&H{rZBJPgJH~O3KS4b<18#WQyMl;Y_D$X^~=jRJ8l>1zk&n8Fzn2z-3{IL9VHB;Z_{Wn)$4CD87)Zp#R zQZuUCf2nD9|Kac8>T%L<^!;=8$J+I0N>Hy~ z9}>L&wrb_ot-qp)T@ddhNSS{fzb)0m)vZ5Q){pJf>(@id>%URf&-*_l-xro&hq3y| z^15ezsjIfTy8e@7`TJ}v@{`A}rdqzb{tK%azhVdF^&gh? zr^(^h2;q`y#SwFs) zh4*o!%)gGGuRQCokoB)~)~`Pj=k@=k+SJ>xhB4}rs!y!yqUX66z8|Naf7x_?m@I#6 zR`lHHd+NNYmN(<)u0-7~9&g7lcdG47kDq?4iTiKjS%2y^c1?fC=Tj)p>+j%Me!y)u zIgYlDmp{?df1Lb5#LVS(3ElsR)%4%nv;JFev)f&Q#%0Ru@9tTDPCq+RWwM-Je>-*M z@f+b;e~;Vk`V&u*0y5$C5Am!&Nc8)<1rWU4NS{|MmLM_pHCD z(5?x8uSl=IV>RoaCF@U$UQKA>S9bj$pBcTyxQFQySw7arBURGc+v6A8iy3@>5&Ea) zi&xmBd;afKP5%#h`cIej%hw*T`pD6Y{-2cPBLTUwNS0^Ea`5f4JhdOn$MW>TfVck@ zY(EOhbc1aFI(2^27rp_ z%YXI%aQ?a!)W79BZ@{?&CJbBg z>wxjYR{T9-T5slwM#gx1F6?v&@N%r)!*mU7`9?^sGwh$yoRaEx93lqJm7)> zlLuTlAY> zkEIqDTv{WsXTz)eX;^-&R>M{LX)kr<;P{a%zS=RUT}mi*#h`Xcsjm-em#j;fI>V;E zpSt2l)nEKkdw)e)>h*c;l1HxiwA(wQPAOM2ZQq-Z*~=9JR-X4yYA01Ab?Q5*eO_&N z?el6a!&Y7#jzpJlQ@0P<#kOFv)J`MSB7Jr?y!LY4)rwbBS9}s#LJdmN$Q8dumb!jW zyTsH}%2HQsOI0@$MyfvgY`eU(9=8r^V~#XzG^kyiS;6(Hsv077_mr)vQ@5s`vTa!S z;HVYZYM?Jw+q(R<_|!f>HoU6%pJT_IrR)+k@D1A(=waD%ruvb((!6pqe-AR!rQHKn zcQ0*seCmoFb~|O5%(&lJsMfYcfA;Y|E%WsdRRR6<|34_?9vD}Bb@bS=uUn}dlDbmY zvl`?FHD&M0(ToQJqICb*vGBkx;U(|Z4DFAt z`FYLI=dm?Esu`+?t+~8bXmyR6+iHd$sZsNVnxRcKYQ9-B^hJ%Df7J~AT%+dCHA4k8 zYksTd)@-DfRaI&PDRv_wKP%6=W1fADr_R1}G}|+4Bv5suiTx{->Yd?f>c!qu>iJIp zdK!wa5gxEdy?E}e?28y{L={@xd zB|JVp=DylB_32B8WA5*HR28zfA84%IzTps)-u(w14>aYPXm;!4)a|f&nv7Z9WP(O} zXU%as6*vELCGocJht0nxPFFltU1RExQA?UG?d(U*>`Td5En`n8UlLbi+7&D^6(^&iW#O`0z3 z>^IHqmTH#%TXD{8Tl*a|yO}zbouy{${~em!-h|0&&YVbrlk`Y9EBVmmmZ|yI zA|t#0Q!{6^(uXj|UGR4^`*}5MSJdqAqrKEhPf^!UOnlgc4ynM8)r9PUao$N`^|~M& z=!AJ1j7dvq(^dY588MA*iBnYD?NzL^x|)%&|38hG3fvPN(#zVUEqP{D$xSNx`oGiC+7KJmJE&ZRzKsOU zYR%gXF=K3|o_e5%OVqfT71>d?fpi-<%^S$FfzgqG>DTN7TOrQ|=0yVLmi{3J?1h8Q zQllNV>3o~MJCZiH^bbjA#$B#nVM_Wkn|?ErHrt?oglxHGHt<~}pts$Qrg`#>xyAwpCkP4aCQ!$Uryr-4Fgn9Oa*-$kVig``~>LeffBoZ(k+rX<5 z_(jdEqt0Jdn`B!yCtn+VTcT}LtVcCbGfp=8sYHjX*fdYnZS!ZzFHzZ5k-XVE<^XcK zh>0-|;_!ni_FQz-Ni~wxn<`NrNktAucipWd`kRXBHtY!W8>5ELZcMTSj#o1~L;{5! zRNPtP8ItO+5~Ct1J<@I}MN(5$VqqkuSLUXQB(*{%ZbiyIed$9#6jN*i1N3rFsK6G4 z!e-an&?`>pT^0Bw5;6~Y8`|ZB^xw{pjl&3-2dxbqbV99EpkpLthRKFbh*gWLCr{ne zKouAj3F)D-FCJq0+K_qB&rpFm2+90`cD{L-U#sTn-^T12bfA7E7Bk#g{$Vxm@yPOa z{#a-E*VVi|k>%~#eM(Y6N7bM0c#;k4O!yb|<4+yd&&_gj$?AD^Rd|{W>rA+99d#tA ztL@Ado8uH4pymzL^Gz{3|6*tPEH!TiEq{fbZ?=4yns+VDzt)+5pPKhD%`bB5Z&mYN zr}=j}^FLMdzM}c}+xg}p60REx)mB$``_?)0+p2jTX#V5Q`~hm-(8&CT`ml(3!Ojm) zRz641GcST7k4Sl}?UdAVmAEk~C4s#XSgU3}f`A-6pE@mUSMzr1`R3`@w(y56tN*t5 zw^-Jmk8R+X1j6dWr`qc3?!VeK%;Bw{Kf`U+ybgN4DQ=IfNxf@zRkQ5QZf3(e6CSO8 zoR6?wn_XgJ_doSZGrL3wyMzvg3)GM6^%9XG3JuK43&ot_RMr1p{7IeBE!e6ibBrN+hvkKfD2|1^)`<>7x6?ioga!y}QI-!Fq@Kq$_oS9y8LgD)A z`Cnb_4scGX?>V9ND$p+~WS=qhAuZ$hnG>I&qS=vntIn`% zRp8l3sOn*4cW_-NxmTq=h$PJx+oOH34TXPHGyjYPoN*iPRB6&cy^pW1{~D5MPN%p{3)v8@}+^Smg-Vn^M z8hrO`HrI(~s^}G-c-7Lfo@<>2?^FvtQ_X_^+JDY6dsO~2&oZ)#%})Gp6>WB0)b5T9 zvfV$jC!J-IRDN(|8M7zN59gr$#EEC9=;CVPycNGV%iN;!`cF;Tqp)ff&Y@T*uIeax zRYeb06X)Y`ptH;yW zbK38AkvFOq>7e2Rs#&CJKiWn1R4p=5#b-qpsS4VW{lo^%daqKcJ9W~$zA^hC(vQ3p zJZ$6PCspkENKw7*G8#v0z^rD!3VeuqGXEcE{x53YpESQw9dktKcY?xA)WEh-SNCO5 zTRY$M)kDo2hWShS2@X`nR@3|UF~j&tlceqw-fKHqQn0km(6;@NlsI#yhxIpebGtY zs8aVtlHBYeC#nAy+nz|W+Gf9Z;$Nxg@BfZVv*EgC=bN3|NWE#@R$c8VaI^7FvY$$g zh$Ok$)173tN-c>bt8I3G6TekO*Zw;$%}#KVFRRqvNRpeK>Lm5w2CIxDx!G%+I2t~>RSC_5EqyOCRLq&!UI)mY$REA;f;fcGakybU;8xr#N(RC_+m%6IgBI<>es%xK>%&s)6F*EehGC?Oc zsxKIs8|KrbK<@$bBC^i#w)%GPf+`j2qd$%6r*6d7of3SJtfy0hb5!lvy4k@_Go2oM zWTrEMpUgBTi0iB8&kWj_>8zlqnO+o(G}GC^Tr-^$tTNO2!6Rn6AlPT7c|nDlE(#i{ z701@SI5^!*^Mm1Lx;V%()60W7X1Y8mFw?7o+s*Xq;3+e`HrQ^ag~35Hy*`LJL)Tjw zG%(XuK|4JSMg%D`oo%LLgCaAX5Ikz8lY&>x^n&0MGo2j#Bhyyu)7jYI!r%;8iX6);oahiUsq=WG@&Hn1G za+B0GOI>45R5NAn+3LRfkWl?xtgcr?=C;TfpBvIe&dbQS*xXS2vbCBWS#$kX|9fkG zN-cCiT|d&bJMxT zvXh>K2P%j;SFbD-v{Sbi=v(#2^why{XrjK?pnLt;hABaj3dJ_OKDf$ER|fZ)>5ai= zGhG!NFw>&oZ!^6qNKha2$2Pn<=xe681m~LRt-(Swy)7s*)7yiG&Ge4oSu-sTJ~Gog zgK&yo{;r_4nXV3oo9UWhx|!Y+TxO;v!M$dBU+|)t-XD~i>Du6!nLZpO4$yTT35J;I zW5EnFeIi(HrW=BL&Gf0D)J&faJ~Gp1g5S*a*`U!tz5H`QXEWUx3^mhDLDRFfZw@+{ z>6T!GnLZy}WTr0!*PH2!!6q|(DR{?BUkQFO)2%`LAieynL6Vtn3(hgq?ZE;weJ!}z zOm_t9&GhwPmznMizBSV~f_j7X^1Fi5%=FD*u$k@-Cd>3vGu;!cmg)0mx;OYhrj=&; zR&e|fUFWT!mznMhCdhQLnl^737jAa9xlt$FY>T;3H{9$)b0Z<#KyOR)h9`s@=)rE@ zuyweB9_8i@+lCwH;cedV8bzyLg9i1HHI9<){O!R?~33``gL~U$t7>&sX#x z-3b4sGU4!06;cPZ`po+Ha9e#Q4fM=O+4DoSPPAeD$ZM1+S-Zfb*?FN_?W<-dMbB2R zC{?{KcD{ago1o{{R;#id_RX4{aKHagT;txkq7A>3APYM|Zrw!nrpjMQN> z)^^s#c9tI6*{EZSEzF)bJydH+)uMKR%d4Om3)rVcz0d5aHvWee-Bky%jgo@qs;}5a z-GY^M&gM&F{Iy9(ba;ZU6GaVM_=i}H$!-LbzbY!sJ zuxkchxoKakY5Z%vSeQkqPPzVD&bzy7N6|+iw{hcdnTeK1sd*udZgn zPzSS2x_XB+6w*c7s5vL=xzDJwp+wEc**^;(?yEQ@vY?$crM6ClCn(OutnikqMYHYv zMQUC_WWM=l^>+E0cK&T@UP)yBD|-1Zy6|xqoB6NlP28g9Z;xcmI&5Z1Rpw(g|8OK@ z>e%%xv+Fsk=EbQ|HQR1KbF}lXvh!Q1c^xr7tXCUaq^_akiu5~d=4m=SK+PYjGiHP? zHnZUvW@9(OGwke2tTQ?XA9#psU^{vK}Tj+@n*VH%Se{6YF?bF`+ zb~tu+aNf!4Wk^hCeJ@e{2*ob9o83ft3w4b-rVH9xSKC=#75Bv~`!Vhkv*`79{s_#I zFCYc_Wom4boD@uhD7}11(9TRB z2$Ie8!CBGTdGhG+lX{PIgEoS;?u+K~%3w|=wie`&VU%xi{;WSuF`PQ_S>_W(8*YXR{PD{i|7~nf~2uwVK*zuegG6y}}N1ij6A_pP=6WYN`h{?iqVV zyt2Le{7YTKd(}eWt?HINAIB{Zch=(@=$YmTF7A$SJAFR4i*K!3{O72}!}_i)aZ~uT zX=liDXWSmUL|fI4U723BU861eqYdaD&d{O#sv}ujrJbdFIWIEHc6D{Ql|F^rJJ*Lh z=-+GXorl6F>n$*^nayuB=HQHP)-_n#Q9hb()~kj2WvG@~Q>a8ao=JxAY=Iit;-I0fNT)K%Y*Im6AIh6+y5bMy_FGsMhM80x9#=o>Pp zznK$O(J^|Cz9Dmx%^ZEsnW^XK8=+3qW?md>`jnZYAM}NoV`s-EBnQQ*IMp?OsotAv zeoeiy=36@*!kMi3tDW>QVSQVtKhy$d|CwKy?OC$<)AeedipWN1(M_H71I#YExzo>B zRHHm1>pfMoUMIDzIYjF{U9+h^GR^NvAL_&1K5Xl4tX*$tB($k^g4vgL-7S{Zy9(=W zad{J6TD|40YOFK|!+14siMob+ou|+=Zq{ykYB6+pA2qLPC6B3lwiC6Ir*)T+m3*yc z*@Z4|qBq@L$rd&5kh+G?h^)kn4pwrHnrHGguQQ})CUlbR)T;^WQI$y7NTi=HVyo!w zxDXLNB4ItiQB`zgnJ+TctVn%#KeQGRJ?3FE@Jj8aZ)$AlQhhVNRyb&{jwxve^xdBTsuEQ&6|b!_Bk=Zls>D4 z9*3|wh159Tgmo@lq<*Z{3mjIp!upmyTh$oQLXTwFE}ddeU3TfoX6bc$>AmX52a%=q zEm?YC3%xgGbyKTWcT7bZs_iwK7S^}I`q@C1>fgegUlSFCYUJ51>ZURSB1@Q_^ISJ|I z>#LD8CoX&TvfZ`nURQrTGgeLaswXu)T_w{{2YX*XQI5+~Xpit#`tvUJeH(Q&P1F_5 zSLQC$)GEs~y+~`-0o~8cnr605|DI&;&!GFW=>8nKpBuSv9z3o3_SDb6!E0(=7W(zn zPviFX89k?|nf7-7p89#*-cIRRJ{q?N^!$&yErXEPpr;xH8(K7AzFOFv3C*rF+hm@$ zyXh^7tNnLOuvp!^P~WS4ET)k;t;IAncZ1j#dKzA!%H^wT%#m}|-DESbVQg(P??&Z! zVqW;D4stGZp)yuO$pHpie1B{@aLtH4Br?Aye(dpkw))VwP& z-z{>64Vmq_Qw7%QklwDaz9mCZJ2ttjYU5Iz_3l=o_w^!rWbGohxk1j#e^P$9$5jR7@cHa? z=kPI4SakS2rLvoJ!6tftM;|_Wl$T*%xJ}gop$?zts>VzXADs;AL9L~(F(+50)#0C$x8>pdgrmm)WyGYdGV^*G| z0{wKTs&3TbV=7Hhfz0YE$>C!vEm481tE(i3kKTRZdsW~;gzRVGwVTA&(T7WTyYjcx zwUNH3&os92=K87Mm_B^W4SS&JwH~jt;g-|tb?JfUlo{qZ#hgQ1&T^h>E^>T!)$@*d zNgOG&=zm&9?EoHS`k$%Wo&JL=_wNx1A3R@eyZ#ZnTqkQkZ#DzVo^#Hf zJ7;DD#`W|1{qen!nftu&xlb?Wd7g9c9EDyD9A<3>G#k(9)P0`B{74Y-xz4k!zGMn` zwC(F_`|#$zWPNQ?k~^y3MHmh}cSLCPfTID?`Ite!!pk1xBDDXIlbp+A`(pQejGdGW zFL|=k&_P1u`eR(_d_oSUzAwHZKv3RbOdVY=>2rp2UYdQSb6%Fc+c_`q`y1!HBKv9Q zd{Wvxq`zAs5lK*r2VDNN4&lT=@CR)VLAB-}oJ{)n=uw*zx(hyYphG*Is zce?_5o}}Tuy?+Nf1Ih3{*_ci`&+dZ)w0tGIK)3ggHk$0XwzNRCS5$R)>Q;}}bhDaKJqjw<7rM2@M(F`XRK zjbk1;W*Em(a?CW2HRPDx|9gn%dUDL^n*`m+26D_Zv2G_vjd665W4_6ct>jqL2dm-H zE^Avmre$2t?8 z>&bCQPi#`Rk;9*gGogFQvEIb(H{__FUk)BTN<}idhbfX{O|2Op?vGf!0l}t z!=kqwjd{t4;$}Bdqi~M-&SNm{eY^1wgmEj}?Z>M|7&pexHC=4(W1eXa#J$nPP0wy(8|FC zL9rXRgfJRCgdb~U-_9~s2JIlimniKNqgPFgu#%yT1chiu3cCEFxr{lArW4^BOY6Vm z_P3qe(WJr^;eIA>hSPPtA5AU7QJ}f=xc@k}qXkA(=$|;DqhUr==rhBiqrpa0=vCp+ zzj5w2?TPgm)&crv8FjXA5`EbojC&eR&QpD8{E_NILyW#zrV#ql%Om<~Dn?cB*IeFm0z^uNxW(k4=HNK4RJHSy-CZzPkfz=pI zm;m#p**02EptXdn)bn2P^g{dx#Q1^T4BSZfeD3M}1u*=x&4;OFEQWC=v3JQ2G`O&l zl1FsyTdMP=c+Gt9-Lss#r;-GkXP6t^v71fT&}4(Ip%-NwY%5(vJC5j!f1)^{aR)_b zJ*3UbdxJ2=t;RNW_$8FV0;Nt6osbJ?ZbD*XZBzU0=^$ZpLCKQTDC#5zq7;6B7ne9* zEF&*wJ6@PG)A4d}=qGvfcZy;o%Ie(wkggpm*Z7vjloOXb-W#9Yd9{Tk9zY4FEF>en zUQ-ADgcq?gP=--#R?&@L<26%B%-!gO1Xe}>)J#rfZyOX>_;ePP2QUxJFm{vbhN#p=wULc z^UK?4x>7X93CD>q9cM0~g-+C^)y6|K+KKY;ep8>&j>mNuWxy=2xz_637S1MQkmp&@ z9h_iywOW%V_ArhVz}Cc`F0FWCs&ORIl{Dk*RHAU%H|IkL=^ zA>`<79J%D^n~nqcSaS61g>|^lO6!D(Ql`FP5;Fl}Y!b>eXmVx&Qq!DFjly*D^;VOq zo8&IaBiHqV&HbmwxS#THHI?=4C}7IkoSBT|#)ctM3?DKvMAN9KqS$8l!m0Mh&NV!P z0>C&^K-=xiUf@7OD!SW9kjH;Ekwn`nS0c@Iy7y+=C_iX)6~5Qq_1$h8dlj_C(gGC1 zNha!OrR562WD|uj+cw^z`Ic$b9BB{rQ)tZu{};B0kr>$EzpYu z&@hYyOgH9=+5&2+XfbBuARSQ`akL;~ZuEz|D{;iLu+-3~jG~Qx()gcu`2f6(<$|_m z;UM|)W6s@Zf)-9RUw*{78!gkqDdNjFId`MMT2$CKICrBRTU6Ne18*2}G;fOv8!gZ& z=4ka6753Lo*k}wF4%?-A<$dXRftyv~2)K*%XuB^i_uwWLdE%;wzq0$|zU!+I*W4BH zH}){pdyGMxX{vZL31s=u)+@{R5qzfdCy~72JdevC7+wg;&j~MnCSn6&Kl>uC})UsUOcGO zIWHNs&^a$1)Zm;??vImj^1mt@`#UN=n1I-fhxS!XJ&2`|hP&Uc+JaGkGq-MiMs zgZv!4SW)RLg z**H^uXe5;CLyNF1^Eua$Eaq1LPxYZ4P^u4i+tP63GRub>n=l7~&otbV%Q8z!S!T+f z>cefEG&K0h@}XUjsgLW6N_=RrlY((5qJIn@&MYD~AMxCN+4f5$3o*+MvleCv78)BjiZ(v%Z+0N zIaV0QN^%@z9IME2uyL#=hu=8XkfY8x4kSmwIM$LQXdDNTqs2H5CP%ArtfS$n=rA)= zLyITV;Ea|^)6JqI`yUAy^nn^!>cC;{Y;c;z6khHqzC80dK&A^RzQT;Dbbh57dFcFF zm&`3LnOlv_4pV1}2hxyH?JJq$#qvbUD-+w2s-9++x3DAFYL!eijwEUyCDW2WfY7V6 zN@kgR&|rh^nVpG^$fA3yjf2vyE*C-Lu3v(!QLAjslE%~^AwY1Xcb1YX|p?RhPaZYG|oJV*YE@G_&t1`YWFkVtn`=>7L$fX zWF%rxX^t^pL6b5n3-Yg-hFY{RbK{V0Rz=X@jIi;etgo4|qxo4lVl?$II?4$cp?b7+ zDOu*t#JoleH7b9T+Z5&&S^`3=HFub`-d>p1Xv9WKGA6U>mh-))gwe3g+~OJ{O0FWs z6OG+y3~?qoq&JjYL^q=qoE9*vCr~#s&@@i3DVgM)W-3xiizfrE=4kL(Z}R#vs$1m6 z<8}sG(b+hSr4~@qZIrN1q$Wmq2E~OH-sEP{&c%jiC|9SF}T_~zB#p;&j(p1@@rK;d=U2BD1sg-6kR z!i>UbaiF6~*Pk(iFj^wSzJ9n-MbSbbe4TS>yBYlNj=W@=fB8hyztDNUInVN;8D5s} z0rQDndzKIF0kVA0!)K~*C1igZzIAS{>G#btF22*k^gO*l0LB3;4N0mGUu2htPo`%1 z@ByeSA3h_R<@>Ms#EWx{be8!{^`S9ast>LAvV4!jRd2=q>BgwDVnU`d>a57mG{%<| zCF#cav!XN|>v}y}vz1g+d0YU&QSo~#%F~Yl7k=Lfp5iwey5TpPwc$6mX8cBzHT*^c zHT*_%G;c*ky0Iaxn3RqU-djBg3{Vt%@@C9PPHZfr>_7N&25>gTOk zl#bQgTd_DDtFgCYX}Yl`tyq?h)f2Qa*v%f3wqq5%2*|XvN&BZ6SlODE4dpct1uBp1 z^A@zKPcI(I?h_n0Y;J-Fl_z-yoxhyl=2W@EV|rlw-KFrrFZ_9K2jA`Afp1j3Oh?qq zczgHHl1Ym_8ZJ%{0ls-PUz-7ZuDW&*Ut0$} z;9Q%7aisM5lQN#gc$j>vtfP3G3Xeb-3X@yy;c&%XTGv11J1Dxafo1i~uD((Aw>{DmNx&JsFPQCK8_jlI0?8 zzZH%jU!NO!%}To$yyy6JCJp*GT&DPSbNr3~auVM3cNM=a9KTE9;`Jinj^DP3_#H;# zPl4piB5i*djvrrtFY=m|wg!MvxhmU|vN5vcXeS40fR#7*#s_O$UC?8Fhe0KV_uL-U zU~>C+#(gv#Tg{xRa(8ch1ShQ;q=H7`@xIIG4t!fN-}QuHc$YbjqFZn8Q-`-64dT?_ zJ=yOxzLf;-=!1{jq+RLw{ri5q!+!s8rfDEOl2G-i40%$p8-RHf9Ol!gpO(j*d(EeZ zQ+cVe3CO8DCaE{ps+`JWlX_#0 zKSn`td8PQV3O_dD$1eQ113prHzXh2r^O@?yK0nomQBT8q4pT#je3lRUfm9zRB+G~G zBh`m7&+=hiO!cAVRT|ogW%;fxM}W3_X=u%rWv-=~7fz<3EmM{c_hD0gXr7gZraxKc zT9yy(oU?prhz!~U^b%Nw%-JFn%GG&8*t!t&k(AErrvjJ0Cue;_pPQ^1TRBJMbk@%uZhvN*77xbs=#xQm(T&Em+#vXystbn84 zf`>~A&<+(GA#_apEjX-9e7D|-aD#Uze3(MUytFcp>J6{LK#m4WhG#o@d{U2`a2}u3 zV>~)2!%pfk4Ks{#|KuL#?Zi+&vDywrBP%c3F@euu#Qz zrLs(`7>XuUUVqfhSCmKja-Vm4*q8ggmBw-^bCC~T1qio$x4?&!94iwIC{I9srtqFv zu$gEfdnq8#FNJ@#$|SPc>e0(P-k8RY#Cz~~48EU(zYM%1<65MdPeGo%0cYO#;lq`$ z_+Zx;fIR63F;A{B)u+z#o-o2#ERV!n@YoMT#=>6)-jMMF(xL0I#vK4qYMgn9AroI= zya=c_03S~JV8s+d`s)xZAS<&As{NrTbCt-1n@yQLJY1w@c2T%U%j{Xy2JnSNx8dy{ z%kAMBvB;N;FG?~+=UL>d2s;-0`iE=8V&8c33vCLM4~Do6fe%v+up~{q2SNTrWrBPj z;2mZPZzKkYM>z=3aNm%Deq?0Ahn0Ccl<*Qb^BxEvP7YX^d64QR4d3hFF9U_F%+4N`wF%BV+u_4WhbtJA#p6u)J{SHnP};h{eh@z4{rT5{ z%X1%mm|L)dx$Z@IJf4E@=ix5{rLD~S`oaTHaOV90K8(02*$eHBtBkm1U-Cu>nkG8z zg(FS&(FI|JW|@i^lrqTGn&oKkuJ^Zt@&)b{si?upK{5xWqUz_}b@WjrbFi7`MaryW ze?HxgueqlKlnry-yB>b>8qe&Yv060{J__Wdz75`AZLjnk0bn|&K@O(lMc>2M;)CH6pYO_$n&7#bRQIy3c%0C;L@4FWjEN@1hJ zOr!Bc4$rmrs1xhB28@!<39lMWUc~U*d)#2^tgNxvn&p5x6M3MQ_kou_Y~apOBRvWd zXthvNK<=b^2pT&SA9gKr_^`8)qx?*l1GJFH!*lMCq3Fj|C^Sk&M3gag$t~JtJ}%jF7wdlq<$j4EZ6DyZ$E1mHy{=g@%%25=YzU~~ba6^uqj zPmUBhk?$S@y}22v_kqXmn1c=xd7#Iy{bcz_%rMlvz(vN6Zj+0y{zaOE=d+{Cn+x%2NN zPdUcs|0Z`Z64qGJX~JoOv%&20!0#Tc-Uu-=iVnlEsID_J-13(s-zt}Y4`+39jKZnE9MPe@J;Jxt zCE(lWcC2$bM&s&?98PVMDEOYWd-`yJMh;)5Yn1ePTn@-VI<|797%kc$VkdD<9opp? z;4|tW-!{rUq&W$4#81tPKcYF&7HJsKd}fNqe&g3LIX@oacPhjd>*#j)ToG<$J?*-* z&&RPZUmXy>2lc$G`JN+Oe&M_R?`OUljrI6=&tc%dT>>rC9msMIn3Op2!R?#$O|B*# z77Yts1M7*SNyxkFz3t(UDxEvSEa`UD zwtGS4ro$PSvX4k{B*rYZ(;W%RPPS@b420)AYqCpoARwPLIc-W>W!gZXN%{5xIo?bF z$(3oL%$n@tw5ptjY#S~m_qWUiki`2_GF;9{P~bh>x7K7=<={>5Bxq5#XTUu(2SDzf z0;@xwfxBjcnwZ+lN;BT1jWMx-pUmc}xuf{nym@F3Y@fxG-1OqWKCXG^Hd8O7|xH>WNmT=Jd z&IP_LTvG}p3t@z(Qw*obBLxa^LQw237A(*b+paO$Uh4P_qEtJ|aKclrlM7jhK2wFL2y1<=sEM_o~gkZT|P{4~KvlXiq z?3tEYq0G72mTo0hp5ynvgN3VFK2HXT{*5Xf%K-4z3zbYfIjQol14 zVzx>$1hX5PFutIBb)o43Fd}OzsfmN9@VY@K)}~CWasoN0+G!Z|wJZi4-m0pLgDT#^ zVXq*5ur`eORFxCTlmY^48IBEC3#`h1Q_H|#tYzz+tThstwRP@WPPWr9x%KV{NHYv@ z8L;2*c&0o1pk!fzE~ros%WC980ky2jT{U@p*pOzggkhq&G(2Q%gqCVyzX#)8L=sIN zwuBMv2KKf`XJ$iRJ~(sbfZlc%_!NRtG*tx)s*N%{lvxTHh56hbSzOptz-yG{AMr%vtg_CTEF2;XrI6~MgX^4QgUSqAq z!aXeVKI-`34fzIhgNbaJesUKHFyh1J!=a-*-iDP8cuWiK_DNTP0iOsYEe+}$b%E4-oFpEYItCZv$$onZG$7dK zvND;)Z;a5z-~p&y(9d0B&S2l$rtyw6#2@*z=~eh{37g&p z=SE4^zwMQmy9u8E6u}txYVRZ6wzVP>VEB&eE0-{$D`G@6alsgYNMO<5Ha&dez7PX> ztzCbD=}P3Ww{nqpq06>vqhU1ZY3(}ssB@Cqtsyb;2UaN}4`;gVV2Cx$z|=txcPkjH zV#Fx#7zjLaX64bInjJkiwk^NgiRUp;UoH?Qe$&IHZW2QX8ofG_tX(^g ziYka`xfq^7xA-GRj2pbx=Ju$dAOc56Mv*OU3Xi zdJAfAv)LWb7#_z=-Ty@n%4$|Pez7tqy3NFlaCDoF(F9`&!OBPE;c=F>gvZFV9G-U?vIhQ zm?-+*)NrQ|75Sy!(5vvvzMf;Jq9KFs)HFCg#1- z<4lY@qiZR2Upu3^FL$cxd@qCCOR*jpXv#=Cs?kTsFUA}wN+*F{B!&_dEfzP}Sa}D} zAgCj%Sobp6*kXIM>eE#i%Q>^B`8f{-oRER>0`=>{Y$rr_@B3Xx!*TCp<=Us-T!iP%H$f+|pD)3siCb zKj;6;f&V|`z^$+X?y=5=9@e(M&CGyL^A0^|igr_5TT@H0puMB5tF6Afu>c-`E9ma* zC}<7^TDlv81%U|@3MLiQH+OZ$;=!$5F>nl2&=9QeZi>9HbyB&%ymVqqbEtdk#HLVp zR9G#|^#x6VKtYt?B#GW0JdBQZlvgNH(6y~S7@0mRzaU1=M8nRm?)pwxo$u=CYHP?3 z1h7l5uj_0M_yIMCn({Yb$5GeP(iW)eYU?0pD7eM%M$n72wrvj5#lVKT4u4li9mI=3 zXIG2AxhvQazTe!dWH7MCEe-5PXIBFhB$Ri6qJgKFNWKZ3=xuvlGe^l358MnB{lFHC zg1LFZgg{%Uu^CeVOG4mR1HOP6ZVqk@1lzls+d}^Ku5hBvJ($v#pg9G3C_+4K4mEc* z*R?bs7VPl1GTV5oKnXaR2>GkB3pQ#Zx*!f93HG^u ze`9-FXV^8TW??m5fsF1Bbos*|e1`ef22!vP(YdYDAMEJBJOBV8$Tf4yH3sCiKt@X_ zDhj4}*f$EZt5u?aPM(qC-D)T2_-3z3_NE+|T$BQMO>(Z~NwQPcBo~=)Kq(87?G*2THJ8DuH?$_% z=UoeQV0Lo96x-LB?0q-6-)gutwJBwO%9B?nd6Ij0-}cx^UhkVn+DS>?g?5UaoYcW<#*>r1OOSh$d!%?rgvFBcy^q2#SJ=q|y|)}SKPe?S)BCzz1%Bpxzu3NJ z4asjt`33Clf8giY*4xQFQ?hr0IQaG%q^@T+_>EEb{$e}$1>xqdN$y<*;7RbSr}xi2 zZHVRWBkZIe-fE0i&y)cGs@TuN;_&Z!+TM@4@#0FB{K{u1k4YKu*|8MbuMUNzVj4fQ zG5lQb8QU*I0PgwV9trL>;D%UU+Ox|00_46YrSHz;opD>-vf^4LIra>)V7nN?Nu;jaD| zu=f|Rb@uxsY^*hdQnE3E8`r>H9`7)FKDa(e@_9dmgeQ5gJJL?hPVs^rcOyi=_O{!N z;EQ+JeJP%)*(sNKYO;LCrg%nWgRcWqyx-WqHTT`;>pJ!`Ul+Wt!NzF1>+3Ymjpvg- za|OQ!!tH6oT^A!<@HsQZn`vs8R2Nf7-VOG@;Jvf9?O$8lRf?lR&GOp1nm~2+lEt-M zMdk2fCt&`LU}LZ&7zzYyR`{z+vBRofQd{D;wgfuc>pM1CEzoaow)|@sFR1OR@cRQ> zw-yx@6}tzfngDoL#<7(v8BZ5^$3;o+?Y?tx_PYmBR_+gqwzpl`-bvn5#9*;QT&PZ;_en_GgRHf!OM zxeKdTRWJ0`jD;ADeGg-je-U)tFd9M1tgbdc97994 z+UjcccLoD8_y?`VEzJ!e?jHPMVC?d@gIK%2ew)9u9dgbJ`|S5`Do!l6vx~6+{n+tO zf}Cgyc5MluPp;fAg=aZYE#YCZ#uR>_x~R-w3&qm4p`&e!AL|-;RMFA`ufIZnqLjsg zu;vr#eMv+*p>mlhnG&gM4f-t_MlJRj#@V{9{)Xlz(0Ymrqq4HfsWg)(M^&0C%&_r! zxiE0yRa4g|Pj=UJBf$c$8gKA4=8ir_GQgDeEC!qnS+uQ6ry!KUU=q7A921j-@M z*1pZuw9e|Kfm$e;GCx)~Q#Me)SJkz22cd~=XzS<#-5p}fO-mJZR9O@iHUv4rLGT%x zX+k|kSqErd4b{sR)Ry{?pm#*+HuPsb4%ZrNrGfcO!0Xnk|D88kEpHP5Q z{G|!TrLMLb$3#83fFx3N(&JmHsjfIKEw3$tFdJLynxJ(r@*7Rq-%!_8XTgZk)U^Sc zQVY}r_==oNz%8H(!&IxPp{={VC1`qx#zrc_glfNu4YdG2{H9c54G{;Ymgd%GXbG*L zz@y#`DmPSie|sC$v0z7ZLJ&6vJF4It60vr1IrZ(6WFcUZxeppi<)UuT))%$~Heq2e zhKwsSq?!VPUdQwuMHR-!4ro;-S)SuFGu#emMwKS1wFL8uEm{im_do9v#1ctw4u2Zro|XnDT#^hE_aWEGmf>W0bqg? zi$v~R=j&i0V0)QM$cd0l5GWLq_KN*1Ue zsQyX)jNiPm9tAp#vV+2|+=7Lw5^uEF4%b|Ma$1e<61OgdJ3x0Wh$~)HxUj8h5sbBUO~LXxFgA5=z$Og+98TjX z2NE3b%In(OL1l^8uUMVIE;Et^O%>pbOh~f}kCch(h83{n(_YsB>Lt`A7(LA5-}1VK z=BzQ`9cd4(0hp4Qd977c6z)Wnj#vy)iK8ym z1gk;OGyP9+YkONL2#Q}JXes_c5q=a~o1o^Gmx9;eM75Bnv7(12q*=7GVpcA5tb}Sp zc_2KEX=qsrHMwSqe@h4G*Qh-wR+gqr5>@(KD-5LdW7FE_B?D*Xfch7v!qsiX>eLfc z^_~7Mu{ct5$3>CN)z!;klC{ELTj{r4`ioOj%!0?3Kv!F9eYmeF#z6~ajNL6QX5HLs zX$v*w!aa!U9c%f5W*%r! zeR8Jd5z7?SlbqQr&SYSz$@H)ZEOu4!$c5cWEv&<|1Yr#ywl#3(ZGqN+lj^R+La<~3 znMa*igC93lj3(O=gslN5zs(8UvIw%-* zXtY6XpLEJSbdBXOh{DPcCf%Hb_oUc^eN}nOJ7F`ds{nt_P42!k5w$|m}1!GZy8KZJ?e z_k1dA>}U&_x|hh^poyVg0lRU{9XL&=r801LZ0N+9Zv$*Mw!!4JsrjEB$xo-WeYhSa>=m&F+`mQ!u{Dwwuc1GH}VJRHoK&sKz9f3=fEDow$^%@io5!WsEL$BAuLl2>-kFggn=HHcxsxf zVIY8ZTy4cHBFcm~>o+jrEHnBBD60wSk3}UW#ipHNauZ%`F2R}4X3)dyAqQnP2qoDZ zvS`>bI&?{~(V_n*QKgbG!+sE|G}L2UvVmD@Q4!>)*aak-FR^PvVl|TV%u+veGq9B2 z9l}X`u)*|kiFqh9O;Jt~sp`eys?OCM5Npwr53Ph6CCyAaabkh$I1a7uHA9)GLaT%RYOfTU1T(+288iP!DvW!f zMf$^iA0=T7QpzuMG7v0e_8!z{6DBMf9|qHTlYM3m*0`lJPzP^0gv!~7Mm1LFmb!Lp zyBa%TG&CD_iReD%wAO~vTtw?*jaF-Y2i8nnKBc{gL>g=n_y-HQ8__<8)T_OkM$q~` zZ#2Z*Z-eX%4^&0})9E#AESNN7RqX)nBhe*^=YHu&8&73%xYJLFl7JoU?-TK z;Y@5H*aEch7R=_h<_2dUM)oCX#S@mN{WT#_Nov@>k8um6CDNE+&pY6}yXok<|I>YN znC5P6W=&5|WGmPJ0(zom>(K6I=qg1xfm&D^pmE;sH#T|AA%8bzE^J?7=7xezumJ}q zFgV5~)(KZ&J%_zMn0#BNU0RzKHHYTGEHl`#3QRa)<}jzNV<}q1;uOPKW5L<$cDG#t z_Y<+UZeSdfvGZrC`etYXO8}beC(!LhZsQh1UKj%++$_cdMH7R)>jq(jG7GGYT|wB2 zz|2Bj)}_ZnC5W$F25|QP`iBH+N;z#IN_V}lixmmX;$W4!)&b4?wTJ*r1m=4y@q*RS6y>U zqDuy@#T28|;IfZe;%9HTjpAr;<4^7Lx~iQtDwegBYN3lpmIf%wEbK#_t5D zH|_0U1s2{*Lo>ASe3_PpsOXA{C*{hF9*5UpliS9|ZP`L=hM=Uh)}YM~EPq;?o#_bN ziC3W4H(FByT~1MjYbA#luS}(D#bBho{F`vhp=EE*^0=l0KW$}6tYg^p05nvyxqvG) zFmXg%Te9eKG6Tob5-?;%iwRhfG}aA`W<4;m%2nCk-MImtP=WPY)Dx90vuWBthgmAk zcp91;jpvj5>vT^w5gTf+)`L(R2kmJGVCXznk4QZ-oUA z+I_bQHng<{3pRGcgJlJsZQUJ#;6$*WgH#oCZD{Uj07HweZO$`%6N~f9^NR{PI|4Y| zyLa{cU7&=vVZ~v4K`@yOG@}K+nZ8@BcsdL9%7_cs&G%fRjoox2BY@~rWX+4(WFo%6 zOnwn;S#{wb?EK2>Jgj-&yDnm7g>}kPeu(7;{KF)&th8?E8UHeL` z4TvdNW1t0$>bMszja*?ttAOgFLI<{ifq>ZbYTZ|6O5ssZJ@`>n?0%xbOyu2rt+Ht0 zUfcmQYRKpCPETF;R(~-rUyuSKyGro8EkCA5xLX(~0E;0BlVte>C(tlN8ueDiw*;)G zp>!ZLvjFVq^Rg|FP`xRI^stqWA5sIm*r2d=hZ5fkPGE*vI|&TwahRpO2H0f44A?_Q zo1g{)`3=K2E-m|Uq0%g4nyoSD;kq`ob$8Z<8anaO6nTQB4IaHTOTzpNWMtG@n-hL| z2g=b@>vRYCx4eG1hC7kX%TwKn1C z%9e|XB$F0Op+(~}K&Ir1Cz(g!%w!d+!#1!pz=Yyc9yCRwy=0yvIS=<$FJHc7xwYL{ zBEu)sjZHZjd?(mSXg&zGieNGU76VvusgFq{tx%+(i^C&z@Q?;Rv*pa|a>3ik-n1xM zEpbfVjJexS-r~g)rN##%ohehNIV7G!FuI`S+;DS=)v-fx378C3R~sv*u*zepfg!P~ zEo$eUhgq}X14;qZEDRYsuukc>sL$KOjv>@__+bw-U?ny(kXbgFP{6uyyhXo~3b!F6 zPk%sH!-omQXde1;S?NfyD${emdzous3ktdo{D(#!*2k%$VQblA z$PbAIdD!qZ)}UxPLVb2Z+5tZ6Wgelb##W0}J`ok8Onh;sNyayf8xEVk=Jkso^i(q9rQT6pn-SrUNcLBI5qw0mU`2fY(MJxwomz;_0K4rgtTu%9-@=q+ec z;I~|+@+iCowIfFd;`bZCGw^k;hhog6O(x`H#~CwWe7b7x;+46xCQK+Q&7G8Al3$oR zv9+r^6r9==gvGMv066g#FH_--NfXOUb0;?CPFw;Le3ylM+=0c^JXaw_=`!IRPUyil z%NWYD2vRA@kPnt6P%EKnC$uDp(k58RLk4e6aQcu0JHcoZJT44WJ8>t`Sy+%+L@cu^ z^O}J0n1=Hjh+oWQdSi`j_IVQMv&+C>wQC#bS7t@xe_98P`qxU&tifQF(2!DQ7R6Zo z1Lb57x=?W;zN$f2Q@9--x@f_b9r%y=NDr=yGDDp#(nf&V~~4cgOU$ zVtAz`p`6wG>}Hl1xp0f~zQ{G3gmO$&VYBiDnQ!J`3Hbzz*O1}RVgoRm1~#KU0d)fG zW}OE*Yhe9yDZYsSpTviJarGDfJ8gsB3zJZ;ml_ixQ1w=rcd?nJ1FDQrGrQUnd@5W9 zO4HF`y7%35NA@(SuQFq$TWf=Cj#?_#E5(V9(XqAwVKzc~FT8;Ot=Pbvgr~Wfy!aa~ zuE%6sI&lMS?}d#Lu(v*&CFH#o-ncK(*n9I-NTBI{;zlF9pZ*j3ilWFpFdon7sglI1 zTalS?$g~kx#{I?BI0=qiCWPX1wct2v8Fcz;;m#;%;kO1%n1D-rthiBp^=5|C8^WLk ztJmDE$DIpDyy^zGNbq$xq6|%#iWWeykZCP9)_-ADbGvJHLAn^mCV^4gF*byrg!Jh4 zmTuTV!becR$9-@9rL5EP^Rwoma$I$BHluOc17j#Ql86_-xcXaAV`!1JuA>9=M|z76 zM#oizQA(ThK#hI}Sv+Gd)QL)pW!+I!D6@$OIuOr@&8$euW8y>;=@NJ?Bt;+3a54rP z_i%pSW?a3MyS9pa1wc80j-?n%Yt>9Cnr zqh2U0$VSC8o#(#S{z;ul;(<#M-)Sc*x4OPNsZAWIVI0Lskv58Q3m@?hN}(o#I)^|NNd zgiXSuc0-su`A55_Fr9%320bJ9v!x!apEjFWoO>k*%b~oKGG$M7i(0L-;k}2+hS|Nq zH(=qeaYC7Hd>}(U)27Wt9p~N&`9_7m6d!}eCs)mjGA#4TV5d-d!;^C(RAX5fP6(rgZ?_6+gyqdQ;S@e=M=&Zvg>sy+;HaK?cu&vnv zPvgPcv^$!}xZH1Ez-%6ShDW_~{r=5$=7rP#uDYg37x)@Zi5Ld$`+yX^jqYwuu?GyZ zk7O*DWu=uL2HVplIKi<-Z0hzsb+RC^muZ4phNCCGsT{HwN|hE6Oh%j2Lpx#HlP=ND zyV(K4nKrHA!}x4=;h|58+pUpdBMksxy|N`>HV&{K_?fcL7~-MAAkVu)r7|zxbibgJ z`k_6wc++P)^JIKlVpGsO2#yblp%<=Z7_06i*5{I~@z3YE8B-IO8^w4U9wujV%saF8 zA~OxE4?7X>A4n~i8{T|Fx;Ol zk1U%#zHR~D{2OJZgrgX}gUP&zNv!&Fp`!%fYrAkwoMv1!+T&9?@E{`Wk-+o4<}DWZ zR0k-GE#0k&TJgIIa^Gt~_?5=2wfY-j-5GNx0l(;ljeF|x!VmjkFi;U7Yd;ATNf@ro(3JS-kJAF!_kb<)>gBL)Y37(PuWW<`4VYoK`kPvfxi!7C zf*L?#x#jFX(!vSYJa(h$BlI(*J4L)f+?mlCVSIg(F@}PdS%c{}?xn%d+}MV9!txA! z(z7D;jJoj;bva|72L;P-Ei~IsL42vav?2359{9>3e6={e7#E&ZF}sUfU>hIbF#{Wk zX00HB_G>l}Ofz965EASBs*2?ptWuqTp>m&IanF0rFxZ42%;)O0uU>_h84{dXI(B}0 z-xAQ62HpdgSlXSAk>;`L?TJv5>N%Fg>MN;du(1uHpk*JdM~amUDu!Ue($R$b257Yb zt;W2@H2kDWVqwanzmv(fsO5vq^G?gxdsWiN%&yQ0>cy%2<72Modv!=5HdRiEcz|I(^ zp{>Chw78z>uZHGfl;3JF<*J4^T4HZfO|$SlY2S(IuJRg?MDiE+f5nU#bPgOEpt>z? zgBPH{PZZVCd$K{sW%Zv}%}b;W#~#Sc=05KYB#`7Xvxt=FA{V@4)%8dRZt^(0wY(-m zOO9rr59fF=cHn|tbvM$pp;%-Gs;UZhJtEd#_f;Wq`U0AG;Hvvi zn8vtYlbAq%5Ppv{ExL$Ox6kj(<=3n4c|0;}TR4M~7bZg$-}ib0LyxmCZeAxUkI{qS zyz9;X(b|gXr|{Xd=w|QyqJf&<shx%bCzVM?WZS@=By}vM=MgB@54|?>h28?wUz2qLw!1_>i zD5H?uD0+4t(Jdtmr>LB8K97}-LS7cm8`}m(m-8566R7-&(177F=a;Pq~m(b&b-a8OU;}#BeQTu=2(ybNw{NXrf)`?H)O}WG7o-!(#qp- zV#fu1J+8-zDW@f$o^*!yO#CIvf$&$#_u!8@o4Bz%-WMbZ`DlI38^>oa z{t#=7!;8Pe8sqTdub9R-y!iW^F%B>O(x*BwpFA#kOt&0f{1ML>hZld)GsfYyGGkEu z4ewrYc<(qoI}Yy`hYyIuu|%T}uQfOt0`WSvH+*@9IgQSTIfh4<3*}!*R7oy1@;$7v zVXw{EO7>@j;%kjNx_tdCKV8YA(`yZiL6KuEjXWB_*~e8sTIv*xS`S4Eg ztzhi{Z%V{hti$i-`8OBBV_OTC%$%{%zhusw+G==kf5yy()w~qfV97hDU}X+X&mh!& zSC?E5&n9$#%!jiQiHI=;q95X+)w;FxyC~6F8FR)lt0>NEE_6Y}yj%7oe=M-Qc$LkM z-R?5Xo?T?Lvme`;Qtv*6IxamAj+w*Z@4r9LQ48mIKy|mU_ZCk58}a@wUJvJZpg$wv zPvmbz2nX_!@F)B}gm54q1%JZ-h!76sqv22ZcL?D?J_i1T_k?}`59DtD3tZeSe}Id- z)4S2d-TqwR;`>7w67CbsF@JCr6aJD*9>)yfue;>2mlpnxOMaY-|I5Y4yZF~GKEcI% zVMO52@xlHO56mBTd`7zDbKsi9XM#)K9iK@q?vBrN7k9^Jjmv*`{sdj}?)bF0*)EgL6EPqaVWE{<-BP9om0MhxT9MtL5inpm1n;(EwB7n#399 zpUe3rnyv86LX@&BY*Tn3M=g3O%VVF02XeQbl4oex|721ytt!QD-bkQE@ySaGtWx}; zz66@%@OH%moH3^>F8-XOcx^R-+Z7+i8To6)zn?+iVZ~qLDab2|FP}u(EFfO2`0Fc(S1W$%bm9vYAA^Gl91V(Rus@p=pV&n5 z$0;uUpQ89#9M3Bi-`IovLA@Fe$%oZb$^DSxGkC)AwBq8=3yRO0PX7Eu@wXQdm+?!& z&E$I0liPvtbk6@Q#gmH2pRtO6UrxM0@r(fRIf`G&Q_@9>AG(g@Ly8}95buK!OcekFH=&naG&Oa6bT_(W7*;P_neU5&&uaA1K$^7$C<_xdTm6_p)0@)ghI z_>?QYYaGchQT*!F#8)dmc{uTQ#b055q~hYw35s`ezj~SC=QWW3Hz_Xu+^P6eoL^5X zF7hubp2zL_BgNlaM&bTP@h3MB&q$_k$^RaxjKI-P@wM#FM8)6baLW|Wn@s*3thkpI zjRwUJ;(qWL#e4h7pB;){&+)lbago19@jE#EzgAr2f2a8EJdVGqxX8b!_$lito~eAF z+}?wVi+ro%w{iR3skq2rp!l7vC)};L$p2dLR93$Js<_C1 zp!jtx@8Njq{7F^(w4RioV-*+w3l;y0mo^tGF7m4se_%ZM-=+BZBZ(iOcq1#M=PLdp zFBx8{`0`5f=RUzU6fe)w$i|9!<*j3NH1;veP__hH7v zA^E?R>wT8uAC4lqv5J4j?n1>ocpRCh__sVkT&nn5&bN@_BEMPjSJzQ|&QyG0Gx75k ze~;_mO^UbhxN@iB>u_=p$5V>6oZwc%3 zS&F|ti{!>C{uPhQWr{zeiQf4pDQl%|5f~Xj(=ZnPm-UnP9gt?D88|Uc&XwdU!^!VFKdP3>lTnd z2P=N%e#EyaF7l#xOFY{*lKf?H9;&~kJ z%M=&+YZaf)_2Uu6MgA$pm*OHK93Lqz^8Zo%%S9yLhwqboYvKGKq<9&(>luoRe2wCv z{mK6(#YMhN@lSdFvP*H1zfkdCv!3vn;v)Zy;^VQihvRd_MgG5vAIIx9Ls{?8`7=iG z>D)grQe6CBsra&06rU}MPvU;yIK_Y9{^wN1zr~2bv0HJGzf1A88%X|-ii`ZKir>t7 z+J6-v&FeWyoUf8UZ!aeQ2P(dk^EX%Vci7*#ii`Xb#h>N{{-YHa`I8ktmZD?*QgM-g zK=I>wT>G2iBL7dtKW4pgKpzT7@Dc;EIMRODv`NfK#Q9}M6rntx-tN1It{&0ih zB7eK$d85hyzbG#9?<)S_Sd#C}>DKAZQG6ropVf+s|BDnqgu~mWxX2%)_%B)S-L1ID z-=+B00LA}x#haPGqj*&b$@k)QP)YBvxg8Bq{3y=-Faq4;y`mTyUK zh{v_h;>dra`2Eu<--dHJi$CJ;IK@*~&tIUp$k!^qKev}|#ZL-RxJN2}HS4RFD=zZa zDL!>D`SYyeBLA}D`?I3|mEt0Aj3>ZL$%nIeon!>}qr$)DdOKcmdp^Zyq2eOHLh(@Qcz>SHzM}ZSc_ja};v#SJI+^4{RV&GlRb1o? z72jP)^2-$$`L&As=aKvoivOGE3&$%yk>}CZDlYQ3D1Jo_`TvsQBL5e~Z{+&+gW@9J zgZ-2Ixn&LcKTh#H_NPek?cA@`DtR*?Ve6d#a5{2tbiB%ZTb{xQX6 zzWj{h_m`7De^vY&oA@`1XYsm3PA*-SaHs4~?jpsdeN`%+#PxZV;<9dhh~gE+mN^bp zT=bc3iXYH}~Dy}61X#ra>XcnY_7*$)^04_HUxE>iLXxt*?5{AKP3x)t}a9=l!f8*TFcM8(e? zLHt6+rQf?+@v>Z!Ka=m1_-|NG{9?s_xsmwwim%^9{4T{s{sG00ttI&v6(5yL{58eL z^8Dgs#Y0?w{-gM1i^(6~Ncxs^6>vT5rTA1Hm&JZc#(4~mQbuPAP1lmDM9{wVjeHm6(CRhmrlJry6%_}|q#S+A$^ZU}%YOZS zihsa*a+%^{?@^_AHs|v}ir=?_!aYXu?>xj$RQw07ho>t38joKWD1P%i^5=fV`!6E? zlH%i;f1#mIG=M^UrU8( zf3%7C9g3GG5r0T=c|PTN#ZUB-yf=@&CEr4XVxDED87;V`3Z`Pe6iwpr&D+f z6ffiQU9R{KyuP+cajAz}74PPKkfRiTjrFQa6qkPE2E}E3zguzf|3SqcWWC~5#l?Q< zJ;g;|`dIPLc)pOu{j`*ejPLs?F8b0a#iwz7n5nqvOErqGEuwO1SA2<&_>qbSS-;w$ z`1jLE{#?bAHxj>6@dr5lyA>bF@&7_`_$g*{WaiVi|PgZ0mOihsfF@gT*& zo=^VPE1olh_-4h2RuDf@@hKtVCo293_cNy}eq9U6pQrev+z(u;_-!1|YZX74^I^B* z6EUOUxLfg?I6e<5Ud#H@?-Un(_!Y&aJ^oE`X-A(ZF7^3a#ic#=;PqfBUuj3#iVqx2 z>B?1n)F|TRii;jTUGdwvo-I~<+IaG3o#I>96Avo>bT092ii`X)inrom1;<5-OFmq$ zcr)uKw<-QI?+ZMkxRlGwiXXLz!hJ*W%eg$hQ2b-AZ{I7vYz_I-pZi@YFOeUr_~)#j zOi}!!h2#&sbio|r&qu769;7+T2NXY+<&Rce>^x6a{02_XHHwS=d8guHe|W#*kMq3g zPl|VPdA+6hN34f@r+62aOEUMzk`G5uqkI{m_>t`Yc*Sq6C;7RGKfrp?62-4(ca!3x zKesDBkMr#)#ix`}xTh;F?dTH4rCt0&@spO2Kldsw^1o5MXDP}5S#fDc?CM{-gNEJigo9ZY2Jqr)4Pq7>_SGir>w8)M&*;e=AV@#2yr% zD#ax}^Awl(tWaFyvtDtDPmAIbpUsNz=5jesaf#2Fic5ShR$St9o#GOoI~AAsJgE4+ zTwaeU{tI^hQE{mcuPH9|;S3DE=nT z*UnUY*#`3GQpIz5e7Q>TS==6PQG7DbFCI|*)J^37Zxw%o^?_#;|1Gb-{ax{=n181D zSv#NBBGR6PQ>+>@duNhDBixmI5 z7x4oXFX45JpyKr_N&Zm9UtxXhNX3usPx3nyzn=TIa~1yw$Nv_^-&{ccJfQd`gNZ+@ z_}SBmzpD7rtPi}Wc!1ZPKUe%>9&+CmcuND3^>z@;p{153ApGk@jZ6ZEL zap^agD_+6*e~98AbN+8qJiz(9Rq;88P`D>3{!ljYvlPEZ9CiU)Xn{JrAaxSqVC_?=vi?<)Q{k2{|!zGFX%=QoP?;eK*B zk26xfkMjI6Pw|C|$sc)MT;$*4@g<<-*Kz&qR$S`MF^c!&e&lq;-{f_qYZPBMkm7T@ z;=keie^BwqN!)r;@gW@U>xw7w{6W@DCB5>Vg`Pa#3Qytq$T%$g;f)kwksdoNY|c3uZtp!nd~ zbbr0#Uj>MV6t5Uh{20YQ<#o~X6~CAJ+dC958BYE@ruZAfi2p_LKO9Kh%j2h{w{d^s zy%gWTJ^Yp8*BwIszpVJLn182u6YB#xJZ?)oSMj>{6vgE|YpWIiemsTSrTD$Wi0@Kd z-gkDr;z#hh-(8C5=aN6KE1r2UanE%6miTA#xHwGl(OixT6ko>W)ui|u&gbolU(5aS z6^cJtW|`wb#qVc*;LnQh=5n`q+>rRsVLn`O565$^;uo=dgW~_-art<~>$#m?q4>Df z6#w5UF8#>sil4~(_m_(Qb3OUfhr^e2ea`*$M8#)wxz1DkH^a!EV-$bHCVqzEU$S0w zvEt{k9(cXtS1coc?owRR^RVJavi|u8#YeIGb;VP-9)6&B7whw1DE`PgijSAWk$k(3 z^P#`u=j=!Fd5Yh~{w!2{8S6_eisz-1Kc^}F3HKNGDlYHQctP>QSx@_q;%6}L&Et=x z>s;nVieJKfx#H&xrg(NLK9cj{Y{hqvC;1x{|JN$wPbpr(`SzjWhj2fcQBC(r{GaCj zKVR`r%1LgH;<@baA&OsBK=Q#j{Kz=`_&EF$#W_0G)p7X!arnb=_^XPaSx52zYaIS{ z9B%QvP4ZLx8L0T5`;z~|;_!+%d|Dj7O7V%@|E!C{4~xT(iNh~be9A(K|9y)8mHUC$ z6ffucHi-3K$)7j4Ajc?vKKC=lioe0_dYa;2@%(7M;+uGVY?b2gBvbtB6_@mf6u*`G ztHTt3n#=J-#XEUkcb4J}Jic6}_!wSyy;1Rtc-`Y}#lKxk@qbwH_Mya|ReS;OgTAWx zHrAv5u6RC=`=2S^&H47d;=4JXsl2`@<@@ADicf#VS8+a!P`r`rPrl-txSyY_crv%c zIg0P%_$^ob3$8zhC_XKd;(4gz7xW^2nBujpx9?DVGV_ZRpTqU}2E|Y0a_L<|;Yhym zFl7x@yovXBCMdqWlnz{S1W$cDB{Z%|Ah5Jzv4rnFPvKbq&)_bD#x#g8j~<$Uu0MaBOVB>q>$595C6W5s9lxbUsw zf8hf2aX3w6;<|A^aBf#T!1omMHnAL}JGivNx09jg^D<$B(s_zu=X z&e5FLd9F}=C+pQWE53>A;k}C2vA+7K;#aZ0@topA{giKiQGE4S;$kwQ2ctX z=hrB{Dv!ebt>UjvCH}VJ8+qR6T}0O2# zrucKrFH-#DbdtYM@tr&_Jg>O?z}jbum$IIa$?ZwfYkrgsf*7y(>+GJP_?N>eKGH75 zpDEnG9i!y0=5$@6_*?AHJ&M1=?eP)CWk2;8?w=&w(h$Yx48`R+it`k2=6ZFN;u|=; zI}~r_@#SH~N3fp!Tpa!<#edJ^&bNvm#qGz-^KVI43hRwS6mM&y^o~;efM((|6c_m# z#r>Smjf#tWNbyJKk^iSEF7jt9F8ar9ii`ZciZ9@C@g>DY{x6DeW%+Lu7kSTeim&A7 zH7q|&agpC&@qcl8XDj~A8uAx@e9;`@|D_q^_AB0-*EL!df0_IF!!_SX{_Ie^gZs}5 z6ff#a^4BRY&m-TecrDMbA5*-E>-h_D_-l&4G=#$aMDY%8UtcQzUzX3}`Ih9{K|{%( zfr`Jy>B>`l(R`9GRs6*P#OEpg@Abr&Dn2@&c!T2eClYT~yo$${Es9IN9i{m9JT9EC zxRlG~ioeV2HosEb(?aoiJP!YZ;;r1@zOQ%_>qVa`e(ZSiU*4-K zC@$$bKyi7W>4A!$&H7tY9Nwn5w9k_jf0p~nor>3tqjcS)xP<$V;#cr|@D;@+U2iI0 z&w9?+innopp0bj{mwZc_LGHea2e`e6J(|duuwGrJ3UD`v8?}m zq<9|3^WTauu*siq6raNS)dFs>lK;?%|4y|HmsX{_j>?-kBn2kCTO9*1AAxWwl!#k0yOU1Fyo z{(shk_(w`!>~+NsUF5}X_6H^ZCXW~C+-^j^YykN`UU9M4Em2(Tb*mJYaH|!UaF;7C z;f55Kayc;$zbp>_mEs=^q;$zVRnjZ|f2rh!_vZE_@>BYdKZ_L?`PGUq8bk6Oii`Z= zic7hlthki>?TU*(_bEP$!+l)wdCXr_{2uOS{;GHq>zUsvF3%C9@H&CykHlxV;(zD< zEnji*XQ|@i&xSbs=s0|b;;*i!{6AlD`Q68R6_;>-r+6!m)9)!R@@c%^rSqY$;+IdN z_!KBE{>+WTmn!b(b&poX$MgE?uN4>nUyj2+j>A*9-__|F8i$w1;WBU5{#>l&<^6%b zP+a1_Tk+A{U)`tpQQS|ytho5|j^f8mrg9NG8XeC})_;Xdy&9tUP1)qnRK+FS1&WX2 zaim3Yk?&Sq!aYuL`MtgC6&HVQS6uvgNb#2&DgJLMF8+Mt;;ago8@_Sz-av|Y9+bSE z{KI_1DK4u;R!_xA3a-02`Xj%~mE+>*&pq&m$A0V0mnHt+Ku&9fi=#h>_M;2MijU@T zcB+e`{|B?aH$(B|%;&f``oDENe8914z4E)Nf%kN~4`GE3+d477ai(|N7vHazVf6n|D%*Fo@^9L25Zqe~O<`^#42Uf?d zmt7pgmERSXdMD*o&g0A9lzf2sdy21P{-KMz!~MaCTpaU9-Usrw;>WZ9|5W@I=AS5jGxM*Q+u*l5Kka%9-LfB$z%RM$NX9s z$NayF{kc)`E12J@_!G?UQT%tzf5TkzS^C>2UGf+oQxNd=hKpl-QV#RM~K1K0YnIE9|pP0{PF6H$yCEw~){6pqPxctF!q!4d}<1`n?aU_}d zDRwIU9fy0N;@vENsp5w+zgF?PnBS=Q?ac3FF6ol^Kj4zb`0wQSKjY#U|4-PT=N11a z^H&w0+7oVq;|;|tn7^m^S$?tB~DV~Hk!m&~Dnao3qPh;Nc;_h&daB&Rx z2$nxu@vY2vFvn9=g{~vd69#>Vh#*OcN z4#>fM^dN!*rjcQ4reaR0SfHo}L&Max(hw1qMDW5vZ88iLPej=~-)x@evbh{`sBZUq z8*amGo|LR?&TR1gKF_n(KAR=n>G%2l@xJH7-fOMr`L1U@>sj+!dv7%T9giH!SGp>% zy&gK{>z_*gK7;s=+CwxXL}p;j}19fl$_5E`U#5ujUlI(sAK)o2E9|60JMFol$=z9 zzD&`38T4xuy|+QXO3?=>I+Z(>m)2)k8}tH0&L${kJyc=CrsSMx&<`m3Y>yo3f7CE)ReR{vU+Le49y;OgSBzT?x?X2JW6<^YQQz{= zNxn{FkB3h3_fW?1^DhyXg6(kilc3eXLnr)?3V)PA|6S2X8+1MHoa~`{^;zhlll;MS z!*8{RPWawTwJiO88cL3!*$RKF2T!CtMSsGemnr(|9=cbbPd#*ku2lGg9y-}a{}Ri^ zr}bH*@VyOslcJCC(5W8_C_$4A`cOqLGU($Ky~aZ)(Ry54)du}qMQ;x*Rm~&SM*N=* z`VoqLry-|7mG47s&|fj+6eu}=H|P@;{hc=Ce9{K}H$%<_CC6GS2GRMtR?!m`U6+g2 zKe-M1AVbbKO3twc{cA-ZW5~Hs*(a|J`W!<}Dox7pn`h8FEBX>c&W%cbqz$_Mzg5}} zqm`WXhWso=zs8`KDEbWsy-3k-ZzJ6Y+Mw?+=wB;g`$@j^i!t_eo-6r zWo^(S2K}u5BIitleyJ+Qa}E0RGX%fJpr3NI(4%e8FE!}*9wGQE4Z5W!Y8{2`o{y-Y z)y1IqRAD8~#cR6Co=YF1@WTu_nx1XYb5wY88+7&9uPeV!)pPZD!XflhL(Y>5U)=`% zY=iFjg|OB`r*@%#7by>kCAzNX`uv&bYG`NV^L&q;L#gU)z0?N%RfDeE*L!WyKQrh# zD*SyL^j{77qsl(*l&kgE^o|By+w-tC=otoG+jFpo?zQJggRbqV&)bPj_H_F(51#0= zRDLQAy6)dr81$toe104B3k(Pt(s*_|B?Qn)Dt9UFTPy&ue^+vU84s*X>Q8&ztxq242rgmm73# zhgAk$*Pp0|?yWzU7<65K^f|xQM-4aDCJ&yxD^Es|~zvMjM*ZTCQ#XNqRuIq#TeqC=4*Y)A*Hs~7+x~>oU zIS6f^4Qxfr+Tp=_`v?781K~-ZBNbl%UjQ6Bny$|W^>YWBuJNPV z!0YD-O#JBvUdz$v@Fu>l4ZJ?bHt}~Fc&)!a$2Re=w1L;>(kA{p1F!Yh=f)pf`)&^dmOPlyB+Q92`X%qjnf!F%$b7>R* zv4Pk6>+@ud|5DkZgW90ebnaNd>(&N6-Jt7p&!GlgpIePF=ufHse_|W-sRmv5C;EI_ z>#6lW*T8Fi8V$PE=Q4w?ahm5VP? zJcOq%Do28r`A4Z1Ghk~Zi|47%1+ zpXZzUTx;O9KDQfmtT`RI*Yr;ed>^IH*B-jJp8xEjlPX%zg9csOp}oV|<8II^ zM?V)}>ND7bC;3_*{k`7JZ>T7Hc|*YeLb=sI8exdT)FZ3bS; zf6$<7`A-;hEnhz`K=Nq_()0NbJb0q(`P&z5(7!Y2dfug<7ck}b2tp`+ny%#^)dqc# zLD%y2^8#9q)_eg3cUy%hZ{1K(TG_4&VvzsbOBee`+0iQm}!Z)}O?+AhQCQP8UZ2lvy3X(M243s0&*x42LIbbm>+^XNe@Pp7eXg$YI^B&1UeonC zxru+zzzRMUJ{j^5|=%J<4qufw_H+6hWf zrgF9X92L$o=(_*We2w2k9{j@M9HLL5hwjy9wn5kWEc4K*f4f+P^**#t_cBGVRj#IA zslw|F`duo#!JupTcN%mp|3QO(oeDo;&^M^?E`zT1dCQ<{IUgGI4Jy3Hplkivz~Gtr z4XAR^bS*#0pldnZ+Ms6|biLl!H|4`|-f7TvejhaGI=@dCbiGd8WYBef zcN%n^-(4QMH@|PSLI1`>r~JmN@P31?+dEG_fFm~H^}Ibm0sJ&w>zQuQ^}3^OD=T>9?T+5%KB5S;+YnSK)bpUQ> z<)`Ei_t5)!=t?!F=<|P~1w8m0J$SF27d&)tzFzUrNzOzSwgy$7xinHdA8w>d+{M~g zRa#y=C{nsIVhvhQ94WR2&9APu231v3fZ#(04QUz7LQuyUR8vu2wxqQDOl#1hl9Hm* zl_jOiB1K4{ywr_UQXSDz7L?AfSyWV3v9J<}vA=l!{HoIBN}`a;D@$60i>rz&7L}4t zl&WA_A(fX^AWdOIZ4IYfAmSiMEiNCFHw%G zH@h*{vW|jFNWThe=QNX`7$Q}pEbAC}sh*nf|1>_e8ne3jaZT*`Ah(wP^i)9x zE|GYYe`*UlU7dfLrLarNEA-VTOIBkb|3B*rsI;_ADJy$Oug^zV1O zAal|rCg~r-W$M2XG*c$U`1K;XAKETW>_fn`mj2>Rf()}1c|M5x88iKtKr>}hlrd^z zTx(P;6T1!A*3y4arN4|eJ@KRb)0k+cPtR?cGC{JQR^_hGv4}=L6HD{z*3wVkF33!d zCF#>%o0&e%(+H_?3T{c`T@K3ag*>RAHuld>?sN(Cec6EFm9RXvAK9!I6 zr}fvg;}E~K@>{I(zg__;|A*ny@pb-5A2V%=5=azH7n5-OXzU~zW_;=%%&`X~Ynht3 zK4u6Psf3UpwW-$P?^pWIFd`U1D^j_nw4&^+(yBp~gVXWLq?`JQU+yD@4P)xa5yP@Z zjUey5_UBC~nCP=(5^d|aL)r&vx#7=_D2saz`*QH_rH3(=wkt_O3NC6N+`1*85}JukE|p?*_jX=D4`rw-z` zcW~%%E3YZ%#@yQd-Iq_T+ml=O^~mhB=r_5c@muW8;kq4mw0-`lUm|@a;xJ%$ZT=`O z^xQXyk+|Z8rir@N?J1O#-gOSv5 zN!^3+H(o|5kJ=Tw@DAea$jji0TF`V0Yt&Sp5eV<7TL&KfcGQu2^xNA3={437Xw9aY zsnBOxLG&Y;6$5Q=V8&J*4mU!L zaFmk`ZM4>LyjZmL{kMeu%nV1jhf7`!KS3pn-+AEylLFyUTUMm7k#=wnDaqy|!3{T! zB|oz~rGtEgHnIZQ?IWd)S8V_$J25h*Zi^k|fRstyCOgW7Gp2zueeU#d<5gsq@YSJ> zalUmd02!zS$%^jUy#MgcdwMnneRUrt^xxT(=L1fR9{ zI<7y>nJrKVl1?3pvEO5nxQ36{Jsb9G> znVCDIplMOz%y3g>H&p{*)Jl}+q$Emo`=oAGL3B|L!eI#)q6)597LLwZ8Q#%AnWG=P zlwta9Z{T_b3h7Tjc<&USwWHxd_^24RH#|zT9Su(?*1~ARGw>pze$1GZ$xZ^@_t1^9 zK~*Am?$-S1Hfb52_A@ga{n5?Anx7(_rAWfjM=0?qCmhero9-TRPR zpOqeaqb=&7+d)ikWK*G)qAexYK3|JO20!7)J#q}%^!mE}c1@y?kBqcu#%ZjNk~?G* z1#`rf+7N>yA7&pN$=l(l6+*aidQ!OQ?7)zpa;4rhQU5Cu8tbSuqvQKE)@^{NsqkQQ zd?r7p8=a2iDc>p`j(XbG^|`ZhPtK42lshx`Svq~@9%l8IWSVf};BfSujHJ-U35Yc# zqhEGrsD3W`==x2e`r&ZHO_2=rW#?oZKVitH;pngoA`}*YFpna33r8av>3fS*e_D8B z?Sby0wLd^Idg|=%p@v+@sM|X-Z`9uEDdCcT7L58n)bK3W1<`NvOI{iBYPkPf;h(=P z81-T3e41ewgdX@PT(`|8ee&&hNeg-*04*!@+*@c|E3U8Gn+ai6k34w>>>X~Rp~!lU z#@>SHK`zE{({Q4>!Ny1iI@0Wna1@=CAR3X4#&g^dXJfl!orCO-IVU4sb=(jGwV6k{ zugyaRTR&t|c=Zc+A`xi=xu@qAae3D5oz|Sj&9}F)|R{XYpPc$Xf=qe z{&F2jMk%A%P+0p^F7qCFu_hC0285f!b~sv)(Ji#G&~B=FWA*31BW_Ix z(0!Wj12`PrS$kk&O=1{bEE%<1xc{E;nDK#{^xAW+fswTDLP-z|3sKUlmyr5V(6k^U z=gCGC9G93Xy@Kd&(MlJb4wh%6hokSKgK_naeqErmfEw5p!->id3Jm5;3Xj_7mYYav zuK16v)^dEI_L4g@Kl;0v@%!-VFR3F9H?9bT*ZdT!r*~t+{^~$M)7eP{W5$H)mrz}7 z9FO$3hZ;J9o8LGAqts%%plP0+Q~#B2OL-ZEQ=-32iS8r2p@HXROk)e~oy+B%-FD$x=aMbs*g6pVD-)oj+=`(5QFFAN6Xe;TC8$Zrw4N02D;02gYsB z%e1ZB(8lr%drI_6PMA9KDVP@6IkmsfsktFH^juzsP3`I`FnGjD2sJznKR5*$zPde` z(Uwtt)NVc#)?c_@`miA{4tcd8`V%^* z0@SiVK{O>pm7c$#kqC_`8O?(bVLj|nn>8o2hDImUBeK1xr7c|l6fKaO51@HSy~nRp}AFdKoqb;J4r zKv^z`E(vVUgHTxWn2hF!C@r`DZ_3-ei_PWFN3-&gdHt@{8s5iBmJkpV*Swk9v+j?Z zKl`0pG`g+wj6!Y#PX@5;K=oEl!P^epO5ZdmBeNj-b$;{(EeEY4)@aVjKo=fs2bq{= zq8@&rC!VUkG(XCniOk=msG~chFEy>))wJx!oZ5qlp|u-fqMX`4;zMiig%2|r%wIxl zOQ|-)AVXfI9z8zP&zYSSiGJ4nGU#eP723EdECUvqJTJ6ynC-Fq znsrd6IRkR_c>7<}kIP}f^-pm5U;LXcf6Rh;hLZa<)UmQ_BJFaY4!}2sN+;YjBO^19 zEEdcti2l6i;_nY0ENBd7P#d6!!!ZzKp3rnmucij8-@$`p527A~8jc17z1f^l{T5`a zU=&*L9Uw*b7c`bq`7D*T_SmBz~ci2qrM59e?8HxhP0aZ0paP%D72a}2uxfz3(p-nEs7z3;dI?gSroGra0_|V&dI|ti)d z$X(d9-pV+5aPJ9wUSth72x z!d$74s}0n*3Yr%Cn|Gro7exQzwavfk7_WrxVu70=L1tHLSCieMpFIgX9c-Qqg!G51 zqni-gI3oi?P^lCgZB)p}@p`CX7lh=kOQG(rAX*Zb68(XDyXMQFm6-f6h+BQ|ASV4Q zCN#xyJx3+yJfJ05eP}hGxPvpd`fs(H&^VAq@$sv7W7Ac)u-b2; zJE%c5Ujw0DQ%W_%sDezk9A?lRVVt3%Me_L-@)M%J6Ea{z7CT+&D6{v14>6)`wDl zS8lESr6_dyroh%nWq$P2u>D=QZo8e2X+aYD_i!{$YaYRTil(qwOAQN0_lNC2LK_1Z zaX$V)HHB2Pc}$N{>me~GbosWNz#EZ%JVP6`z2;Rk<)r9)1*3LH5;#}Uy;vlrN8h4R z73&pZgIV(lQHT6f)7|k-=0lha#nyFMjl8CW?SqXC8>kd%&iAj^dil@V)ZXebpgd#Y zv*6Se@}EaR(C<8qi`j#hr|2=xT^6nQYJGm_mTlFaXSWa4e}^d9M~CXEpUNH_s!v8$ z#NNgB0`&A~)w~+WZ<+{i6&lmeJk8=9W5Z)*<7FEVy&(E+<0G_!lARA)2qbY7ceAFT zv1Fw?H~kr+n)4guG71_O3l2F=VwvbkFpK#X3ydI&tL_V5?!h-iT-|oq^JhH-ufgas z6ABy4*U*{)(7vrDY?f!nqisTq;OT~x$bi;Yxdo^uvbz#$_z8)N6D z=zvDwZC9#u?K^vwvRH4tU8uAQ-`&7C-~7VL%yQ=6zk98vWsdu)ILp%7i^1O zjzZ5K6so6p;)iUaWz7|vsH-}yZj+ySFeF<4YGfJ`UeSZ(w3c4t@@BO>m=KwZG2j;3 z^NMbnQ2%LU9j_WDhU)2E;pmp;8gxfok4RveXFtWOKjdW(iY!&6Azx|XHMbm+`Wvf1 z{+;qs{{oDH1y;7QkGmgmNDSUbY4xQ-aKTec^!>ey3a+Y2)S>z9JgY9Zd>9*^#f4h zrNSNoAKSei1Llng@RWwvOWd)O?53)>|0mT^vRd_)`)+E}wpi zm7%eHq+d3z1`!3@(x>NS?FrSdMRPWqF1D-Rs(t!dpsX5fmwu+2N4RMMwT{`?Uu~ujqoI z{msz%)TgLDqP4WKsXDpYk)_!+q55sWXJfOa5&cxGcPZda;;MiA`(}zMQmFnqxA|WJ zpR8Yy_#2_~Z$fx)Q)~5r&sjoiX@68V+tAu7gbvZ-t$(crcl8V1{TWr*s!M3EWv^Ir zh{3pnjsYhBJ3#+d0im_eqUGphLTex35nK0l%8{1B^b z{Wl_u4wX{#lukn#iN-N|#jTo3?vI}yJc!1@=4=*!J<;D|f2cl!8bsk&RCs|3KP%xi z>(RqBpUA|2y~}O3Z`$uJXj&AQSrGl4rzuV6 zx)E@7*5#nhScXK7{SPPEp@w%Li)|P?c~mBdEwbof4lt|vJWq>KB^ceM8h-cXpEZr! zm7Ta8J#SIu?H&AtP;-fD9EfcVdG$GxqBW2DnxwwR8qbD<3r+UrW4FGb@eB-*yVO!b zme&}}Fy_m6#_M5hTgaFcs$UI3Qa4w4?D1T0mMD7d@MBlaYA*Hi`yR@l;8lq`Othqf_me6dtOGCwJ;B~Fuap(+DPdbZfqCcA)hNi^O}N( zK*r!;WJ)8R2mlbf#(N@1hojqQe%yF2dYKlzMcuaa{83-kd=_p5G(S2iFoi_sH@3@< zi3~rhcVQaGtT`B3gMCell1CrIlb#rVZ&#TY(msq#&@_a)%H?v@#(iTkY7g~|N5JL2 zk#>3N_WNu8D#KBGRN_#5XUv?~*3oSkFnZv~0xNt~v!otC#+t_v6(?a~bgJ{=jrC8o z$=Udtr8TPm8%ujurm*`qF2YNZ+?b-^dK;8d~!!YJgYYC8(52-!Qg& z()ko{IVz0wucBmqDG2#Em+U6h=wz4A(`y~E=I_nf;LyB=<3$`e`Btd@bg1%_4L#^k z3AN;dg{UoIk<|o+V)<7_nE)$t_Y#YM3d9jwoj+qxYdC@GHq27>3AWSLjHOWYgXaEl zQI8-Ogqlxn?*%!iY2)r?b;bFiBI*OCv(rEc%fQ7Lf& zMKZ!{d^Qay6RLj>(-@V;uO*8 ztA6V?U;ImcLd5kJWbYnuAF|`u`>aiN{DVI0H9LNT&wAgEztd;!wd1e$F}jzayEXf+ zK=-vSzS})X*6s1hk0e>qgsT!c%{YbWTRFqB-nRXF6Rb;ph<2yX|IY-g&i@%A{t@s0 zB*D6+9gR?=L>Cb|Y5W!F(!cimA563!jsxwLIRB!Nsg?~3<7k!bCTAB)!q+xhQI zv|gkCg1jxke|4huQ^GXMdN1JLkZAoH5K-}|^zj17o-}o&WnE|cpGZKz0^aMke-qU3 zEkc)rgc7Vr{1CY|&c7kSx-4!3BE1;z-&9)GN5U5}I!tUKD3vnW?)-y^OD?r*k# zcfi_h-w3H!C-^@ISWhNE>SF=_zJT?P(jzXF^trC5ol5^yb)6mmew_V%TzoX%x}0(a zF;adBU)yhX{96)RV+a`Yi>u2@itqwjS;eB!ql=d6<3#9 z>FML;#j|w0ZdMg3U68)Gw5oKFHM630<+9QeB0xrZLBY}Yp&Iw+V9yp`J;Z* zlO=i@dDQPJr0aSZGkWS4v2@;oh3A_tTiT=UeAW{tz4fQ9T436E5(TRRZpthtDZj;` ziYNXd8_@3f_5U8Hr7^V;TG`I~k8IGEG?}+XI`K3m(mpm*r2;jl(<&vdy4Iq~%0=a+ zgO^oRMk?pmEF4@`IXLz@LP?30K108pFnV-haaDC`enq5oQE64b{^`q#tE*8f>7~*1 z$l~HidP!wX`GR!3HkrP-czJ31{L<2jbS-Q_dU17naYcHWL?4|l$sa0zVtHk8!4_rJ z1COi53mr(OB^UpbWAM?vVT9_k1uziaMqL7{@%yHO($mLz!`0~}#T8`B`K9RzO<&A<1ef%FRxsIvYLM;dX<&w3(6LiMXFie z)S9L9@dB)LI_Or?SCmB-r6KOKTKE{UO>*-#U7Cmge1`a)8vx}ZHB}y? zbEG*n|2|%6*`meBp<7z%HOtVL(uZUPHmG^HTv{EFpxl^J72OTAE6)VQIutTfg5 zlFEumRb_d4$zr@{jnM{G0{MXn;6(`{I<@mbt(9l25ZUrAO3k$gbsJU7s!AhNttu)j z&>fVNm7(%4D3#*vBlWxGz*#h<2#TTI)s#d~nC0c%yKoMbopWd8M}NS>E5A?2u5c2b z$BD$#4$HX({qY724rTBhN4V}lXvIi=vY_sOUDF58u%%?I!@6w_J$ggW8_W%CkLzY( zKT}?Y;d2Q{`h0KC^>~aOOLlC_==mWDj8deTSfjmzUFmRihnl}Cd3*2o?l37mwex?S zzO(Y9Khx&dAGG;JwkAX4HK-!k4o|1PmEV6KJtV$)e|)GO^H{7Thru{_3Lj5CuKg>r z?LH8h5Zhj--A&X~15=R+$z>Odqv+yo#+34aqFwYg^V_n}HF)M;GO-pyK` ze!(e$9tdB{&(p-R)ttfGKiKaGZ~i@*#SE7dfI8y#t|6lRbLlMLDufzK!SFz6_6gFLDI$ z`{m==GkKuEJ&wTc8)=L~PCU%xsrhjkQ=)^WL{|mEn?Hn{ZBwEZNoX_OJUeqZZ`%>a z|K5OSI7qKK8EYx*KcS$SzlC?gkgs@$tpogf-_dOcyAqKOda}yZBERwY@F={;5&4#b zd%wWJkkpqJ(-*7v@%Z(n+kg9;LlF`JxCK?z_Ha8KpLl%iO-YPjBV>k@rDsUTmQ@ZJ zHleDjvT8g=RZPq)t0qtt`v3Sl^%dKqXE5+~s{C673A7^h9=kfS02BX{QOi~lKP}GA zeXECs*E#V^_fK&)BhZHe0e@r1zr!u;N5Q^C^2@>Le*4!>X$^cCo{EQlb~W5&bUBB(DSTmBu)?G9=N zaac*#Lf9`eI}5DwE!iUbRc2oXW1j|gF+n^^zR6rt@=S2(A4Z7$OUM$QMC4P@H-LYO z#wZ(o#1d%tbBpG9BmT_ne}F~*;4uG&0qu5=AeFNC^PZ<^wo2?+R2MC+;TMO2D&E|~w z>P|)qqUmq}-Uh%^EkP7lkRtN9n8??F{NzxyQf;CDsepb1i2jEHt0uyZ=iHqrn10~- z?mtB(Bvux{YysrA2`Co887_eJcEj4XpjQg|Nf*sNx+(O$ zz)_Q3^tpoG?V>pkbfXt2kl)n;pgk5({@CtEGhnR%s3+-1Al9C4s$4D;{#fwBxTFT% zLTypX?MmU#1#gARcZIO2#he1aR^S%`di|kr`M#|GRsq=$1M!4LS$VAQeTw&2(BIZP z=~3y$dCUKp0_+3xfD2%a1+YZ{lG>r~#udwwWS)Cxf&N`V#{gE?3Y6_6(2o>!Az-y_ zK)q^yukcp_dyk8!f;mJBpN|`{y&15-w}g6h?W9n=K*oCi=xE5sPzhU8xYuP6qRIr z!)7VMR}0_)#Is)l;0+D(anTCsc@JnG00&$U*LVTF7w@PG*}u>dz(0ln)1jRGLg z1+kd~)WZ+?_=r2{bUFZKE{IHJ323x{sJ+{D07NxN@y7|DTDW}+cy|$>d(g?Wlj)!A ziN6)R7v1>6KgkpS6Y!ed`29&a|NP9W;IT!S(*#TyI|-yNxH#{sb15EveGI%nz=W~s zgY)AF%$mUi?^2JjxgeDgpTRn; zdX#wX{6dCkLG4ti8-cjH1xhu>zbe2cFt=-fGVwE7~7h~w%_(7U;J-{5QbD9LW|~LNr{M1+OiYfbSL^{L z;>%X_kIKDyE%zkUAH2cD_te!Dp7{CTooK{A-xI$Kyh;b(7!22%9(|tYQ0qrLMK71fH@$^jFJfNNc^m9R;F7+QC&^Q2QwE)Rj z#lxW3`C||KPk^p=;qK6;s_s4y@;abyZ-G=GD?Zl4ZUSJJ3vvfGg>3IZegV{vE|POB z&0&IoY^Ni-K3rlFkKJZ?q+|jx#szsyvcLnH3BWuT`4b(sv>8UBd3y8%RR{LKz(>9@(_bIdEy)Z zK7=PMJr*#ny1@hQ4=8>3+JGz5KH))52WoLkWXu*~-0e*0mdy$WU|JjY>B7NNH$mYSeSQ1GomUT3) zw#!|jycmlz9`L!XM2VH7M0q6^WjWw$-6%1jSoVDZQX$zJfO?FOJipw?QW&FPfLHHvnE>`d@R82lrI&-xaE zSE~83g+4cDmE2$t{5(J}cH!D67HqV264X96CBrkJGH6?SY2l+ct z9lB`anyFvxLG}eI+eNymd$VM0j#D*J&4 z`8rU|F0xf+zw*HSUGZ5^TvEkcxKh?`&xOy0I}oU`F49ys$%C8))FKyYDm&DJTn*Hf zF49fiYuQ{6{6RoB9ST><&h#MP0qP4EX)0UdLE`MuO2H)tFqK{FK@I|Hyo+pA*~>lf zxqvP`6t0xL-GgiZ>M9p$D*KoR`4CW>U8Je(TOQ;;f%?WpwyNys9(a3<^=Y_TuLk=) z$YDU`xkyvlfWsALJX)N6I#3lZGS+cPKi5N$w99C(1L`stN!e0XTIm7Z2f!8=jL%-}J!C0Ih2SE|tA6 z;#rA*W$SGK@-bXkrCApB`Z6AI|IfEcJ;CtCcopc~ItJ+=F}T?I7K`EE!}gEEF;#b5 zZKm-Nn39HyF#?1Wbd1*0@WhahJ}(A(rH;``K9qO?Ujg848r+I_(Uj`j>13Ao4_6*O zT}z<~$8+Y+laC;O%65pdis*E11U##02(aufliT-UPs*s^{KK#kVRFitf!CrIa`cq! zfwZ~7r#UIdVaA9PA^`j28jQ<-BbbUi9%125f^Uk;J-lefGK+-N*+oUm*#~|0LLWEn z_W}No(q0YVZMg0s>9?6_6L%}F7hP^EY1>xHBJd@5QwNeB^^)z26FVs1dx;%Hx7336 z{ZY5pFd(&H0Oio`4T}FYO595E!~cMAPaIBATidqlDay88i`t(CM&Vf8be_AGw67!@ zS3_lou8Z2&5sko@5V6p1$94#G&v9NuDF?bYIy2a9axOxR4s^fBxsBb6oh|IHcbeI~ z#EG9p{7ap_>|W-KXZLbv9=lgK=dydHb2+^|;vJdNm2I2r6d>EyBdl(T@{r=5CspK%^! z_gUvgdMZg*~GcZai;-JQ;-?7ry4&!zY; zIY+VkvU41}e{oJ$ZVkJyIF~E;5qAITysF%9+5MZ7gr*zl{x@eZyStpJ%B_MsuzSGn zawU5b?Jf_qr@h_fHTHC~J5pW-cJBcXj6JY>FS{dId0_V=?2csKf!+Jq9VPlvc1MZc z*X~HsCs6&e1F3fKl_S(4SfH1jwFJ_!;Qj#^-vQkC`^i?It9=A@GbzMuuuK1B1$qmb z8ue(3L12l|V3$X%z)>;&sV(_OL#h=RBzzj{&Lh56q;I5=C7^5p5#?G9QY>|BNztCy zEFS?y35h>L;cTgb&S~PAU$2$*J)!R zG0-E^@y#Q5h|`hXW1Td1hdM{GJKWjA?g;0v?2dHaVK>Y9oZZpRe0Ik;73^j^XR$lh zSFiWs#5* zz?nweKSQkibM?dK@odIk2y(d_5gw>KUs$UVx=^!xx5lED3jZeX?sfUkA!AB(neaD* z_ZOFcH^m>!@|QFJK@jZE!2ia@a2kR+D~3sg^rRdFtY@QB?Y1ibh!BWP^oa1UVF4RS(F7~8I?wa zMXXy6qYT5Y;gT9JO26Pj&Slz$Q|h{Ah*|fPTT@= zYn?21*E$>6jXKY>d!h3VyG_nF>|W#~loI}8rx&}IIAL}#cS_m4(m99SYn-duz1De@ z-Rqn;*uBB|iQNrOH?+DyuUnjB*uBje&F<~a6n5`$D%ic#xrp7nocr0m$Jxg2z0T+C ze$%C#_4={Pl@m$cPhEVA$lc$i7rVc7sbTj(m*MRG+GQrYzjawp?&0&D6*T)fyu=y4 znA}q5UUnBc&$GM8d4t`>&X??#IsP)jo#Aw6cZrk9Zn<+3yGxyFcK_sD#BP=ID7z8o zb#`l zDa4fMSJ@dfc1iTjvFM3NAQs(6K^5Z?d*Bw--{U#KS0u(r7fne^iXw8K07!?E2sDnC zufp0dEYfAE%Mz{D*ga{IA%RA_FRgeaaJ$`yauB4{d2z$7E-8Jmb7_C|#83K&G{W25 z%cqY{zK3)N6ARbj-6*q)Gp6%4Z~{mk99hkL4}u?1|6^o0^7#m(VviKL+;G#!v3R== zFavZ9>0Z+(C6GvpXy<`7nb=QLzPV>jKY`gK+%Cbb%w=C-(*q3YC&u`7;6+{j;YAZH zGK-Z$#m}7?-&Rp_{=sP}TL7ic;vh66Ev1NV_k&~=5%VVaCKk`HwvJfnC&;hpzCHuZ zM;^tQ!JLOdI7l4wD9%*otOB7sO3z0g#hJ{U3qcr49P%j6MCPmkVG41`qc~%kvjT)g z#37I3WHE=j*44xzk2P^Y*>bDbL(HM>Y=hqI=lfC0 z({;4+e5NT^W+}=_?b!xT)r}(|#Mhlf1skM-+KB_u(c|*pS_^U>E-QGc;`ISNQ}cYM ztOjoo16JB;JE4Z1LR^V+ql$A1C}nOO@_8dJx6`#-q_`K z*YQZ-P9dDceo4jN1Z zh_H(yFK}Dl0By2 z3=zVhR{(g+1##XINkXv91Nsht-(3*tq%3rfQm6AkjN7=x09a3(7OdqAbSLE*@R}@ zB&Xkaq@4`j9OAQX!vDn+e>r&P81en`&<*GPO7N~X_(2bUBY4jk{8Ztye*XaPU4!4t z!~Y4q-wb{q;Zu3rT~PlH!{yE2(H{N?@UmULw2Um_+b4lOmw1$SABj^nr$7O!!K`Zm z@OkQ2xk6n7#ElxI>Uxbwg(ty#p7@?3SS5U(YQGKM2QL3eXkj_yxINiFfP9cxx7KP6 zVGA^qO8eOUv8t<{1S6!~HxtLfxDJW3%pN&B7UfYCy$#o$#K@sAWfoow3cz`MweFE#2|;oG-@ z{(z3_tt;acU>lgbT)_FU&T6&-d=BQ98Xz+iXE|2}?wIIZ^;BG9Wom(vikR_w5yHs9 zKpo!_$;k=wJ`eH~pvqbzxsw#+b`P=+sH9KHCDWiX+DZdJ}-% zEkHiXmTHN!1Zn>cL|~}SHw_^QP^JLAz|7D9#oH!4-)PV$YaZ8cZ_)fsq2>Xxqys>zYFvU6p2j5SCPL}U>Af9$nWCk-qCyzdo0Q%nnd)I|>_ro@HRtbPQ z2j5Qs{H8%-K4+4o#lpJ`!+%x9<*5*!VxBKg?=Uh4sKPdpiv`KWc?M8t5z_4s*{GH-+CafbLEjw4U|jm{-ZvFPGr1nPB-1>lIjj%(0=inVk_kXgOVB6S7LdB(+#s_fUnvkZxK1GX6e!>m zJ(0|I<1n99&`b`Ssd%shI4k8&%zG(S%kKJckVqj4blo^02~_bvK7ba3;(ubm=f%hZ zVTc&ppBO#@la19=Kx(-^@hwFDjLW~T7Caso+O6S!&JH3s2Z%31EpzO3MQIbK3`o zH3tz6FPgc`BA8^8te`;e2eM1kfc&FQX{$rrv;Z`zRK03TX1$q zY7m9Y??lMpY3+$3JDlBMGc;u*t1akXQWPrKV=bsyonn8iX#pId_8Ei zYV(hzxWfIGxunPa;5oxbVKDOmIJQe+Kn;;&3v; z`IR}HMq%oQi#fh2l#a0fV0I>0V_Y`%*Q$T;Nz*R`Z(a+&$dFDXK|nPC)Vd(HpzzxZ z{|fLnxcup)gYY{F|1t2kwcvXb=^>zZ0HB31XG9w800^>zz3r5HsqByAP#-~4#R;Nr z(HdH^?#bIRf;k4fY?n_l_yk6ci|So9|4Bg1bx|zE?dM_@I)yq5s@WE8>y%-c(Vqg? z*5T<8*II1roDV^*Z|htSPK#}wmq2)j(p?98`N-!ZjJvJFa=E|L+d97y1}Srl7TY=$ z(e44(5yZZT3SclUOKt0raCn5mm>V@=$#6EyU$+Ddpk#RN63OgNLc_QSu)ScFxvv zS`H=DLy7z+2GBEeET6kAiP~jha44eU1u}kvw#(umCQZn`oBqax;E4c8`j01cLi2B!f? zFW{o1EtBaf`N?EH_ogO=J_u9*o;?7tOg(?j`(QNX0It;_#UJJo@+f%EYra>AdNGDmdK-XG2}D-#kx!Z8SO3V*&|Z`&ay;n0dX;M`S~;pNCl#tlo&>=9{&Y{-XT_ z%)S;Q*JLe}`Yg}W;hcE;`7Uln>o^}h4b(#D8q~@gHJG{|d3=~VBCk-w{iSuBM`(g* zO0o9=%$cDM(MN-bq?<69l_W^=xI-Xp?WDtP#*h_f0mIgAQK@29YFWE{39H>A+ag6q zfO?$}mH+9uERM$Yku%xhpPb;{1{`~9EIr5IBMRSIC{Gdprg0?G#}9t9C}jdFpYJq; zMkgOFnOaC82-S7YObj9>7!otVsld1uuBC@2p|Sp7d~5=#R_Af9R(a#c&`KAn{4}E7 zq;;Wy@67w4u84V=#k}Sf6Dt6+g(qRLK?%p0`7jp1S}08nd^|hg4EncpWehdwA$cl; zWCYG2J!Qxqnpg0$M3(K7pcDTxj`zp>VUHiDN&E?6E3KXF(APKQ)G94t=N8dz0n%D) zlZ-w`I)U!{9eH-iwjFtP$!9zC>{1~9n2t1y48#xYNNZr8G}`f_o#csX{TeTaY4%?r z@Ks#?m#BP?B+2p963DT4gZ!Ol`QC`}PZoZ{1hfHM991UE{W<>eX;e4t!5pA>x&>!v z0X&`}{1dW#H z|EV*a!=E`b+1>5bu)D{hGk!S~e8W!(Q~bxE1s^2JX`*NsI=21pNstNm)4t-~rra)A zHW8hUt_v>!QCeE)^v)!aYcyiYqZr)4LdCrD=tqoN52q9Hl%+^Z2xErR!Mgafho1$e_{R=^)1~JOpNiHi^xWYy;8#Y7bbQYh zRFm6)$ZlsAYrj?wWg(FKo6k97vYwS5^mU>-t`0<#9e)~u?6fe}JGlH$*CL3zfSMnY z9dmmG=((Eb+e`qNX9oPoK8yycCRc|EoRD@IZj}^eM+}|lKlb(*I$h8NvaiDJ1{W<8 ztPJ75g8261;5|!xR!;Z>gim$BeiOWpHQzf$%=8HP4FF$$OCcjYLJkA3ujYG&WDAJ% zl?y-tfhb=-@+ng!__Ju5piGhDNjCz}c@%||mneydW+mr&62At3TL~1CE1={qWrI4%~@^ST z3powEg_`dbqN)$)s}_Jp0#Uwva6qCrw?s8R&U@=|?BmULA|EePHV zsEibgc%%^j8J-bjiHBYu8%_AZ6Iaal|Em~&O2rj38oT8GlQ#T-j1n_4NSo~DoWW<8Nb#bZ-W*4zTQcj5BCRtsw$Nha0Pn&&`%QL}vS$M`2F5X^ob zyk^aBIjy0|qCJ>U@iMI;oE@5qm!NR@KdnXGBA?YCmxXB!zf3BD9NDCk*fOo@3#dH> zx7luN@~PP4(r6;9k}F}|IJs4TTtpElYd-S*yJ^jXz-)43kPwd6Vp>CT?6-0IfPkMu zw6fZTK6owrcaQ_Hvb$F=$@3aS%-bNq;Q&qW0?}SD0R=^!=djv5?dE+bcPehBP-T#s zf$0Z54?@$B%SVViQ@PufOD7eDqj767J)srFO-M^lV!YFnXNXFR3t421Bdz{_n4Zu9 zNJ>!e+K0vrr*o7LCzdn31Ckei?(oj=tIS3^E^s5%K72r!5wCu17&d#v+R;|L+`Z*cpGqU?>KF^+s2 zL#uIwKz1+e(PrQhv~-|q9Qg_H?c>19BR(r9d^L{nGeD<c)vPfOP~5RGxXe&-o&2Jt+Q{Tjj>Av|m0e->gTZ}+ntvKz~2k*M$HOJGyF;W0qj zz{|7)9Fk|6GUWyG6xydy{!F`_09fu*c3eEZA#J75YABPwJBOT5x3Bz}NpXx0h!ZD{ z92llh=28RnvR-O{UYpBI;tn)3iN$2f-b%`oB+Zw^V&d3I4bZD?6>Qq2bfrjTfdL&^-aSCp+HnIq`Pai&N{|7`oe3iT&dG$3Gt2>@1YSONVpK}} zQgGs|*;K%E%_CL)mNIn;kvPc#ss4G|e@wg79q^~n`*h447~lOH`1_E^w+0Of&?Dq5 zf6!1*VuMB`QVo*R(?KISkR-4y4s?^iC=R4cU^EB%Nni{IG9{4Bfh-A(6l34~eeWfI8eKtuwQoiB>;_NfG>B#(fxY9%l= zREWU&5;(E*FOXIzfoY*cl;S!GoYLVZ2v{$H)4HaBbF~EKbUz${4HB5k>f9-T(-WyG zJSc&p_Ee9akib0FZIcA%PwoQ&FG!ILPT(R*4N$Y>vzabbI+@4WHog8xuRKb(C*(JM zAtFCRWV)eQe2TCzfADqs1T?yQe4`4aVbn$h_L<0_w79^#v)?5ya!0N@SB8 zd#oVn9ZQbr)hmymoX1zz9l-*8=9gH{bMAU;eDZta{0DRHr+}f z>cD&y@=*|Gph_;Ves+i$^j4>s!N3YC!{(f}n++7*AmRg8#556cEHT-V?DHl^GDXnm zq9VO4dWbo{6dt`m$~+Zis+fY_Cl&E5*=wv7f}l4|r5wCWzn?1sy?*MW+8`DaZBCYm zyNSoOgiDcv$Y5tTgEtARBigwM6FDUUpqDHS6@4sBQ1=OnUUZGA=>?oF0D47J0G`Nq z36I{2J%l$<3V`|{IbPt3s*0LAJ3df73c0c}i@Da*%e0~?<=7I|8C=Hner-%W#j0Z# zy>fd9YZeQnw{Q;;_%v57dNJ1%OKdUT&%A|hG`CQFM1%PgPs7HI9a(B+4N2et_Xk4~ zJ$>(x_8f>4j>Ca~1cDq0N}vM=k|fZP11S=aVWXP_l9+Rt1UhjbT>>dV8iM;tAT>nQ zInzohhoWM+_c=54#xZA9QA^n}^!{T4-b;>|$IG9?@#%eKGrrhxmK6Kl z1mLn~pSRsn;fjXOvxfApb1W^@zRt8mw94J>^2mn*pr$Mdt+G4Pa+=*c7T4PiK4kOTr}TQY36K;TSao{s+LHq1QfZfG+tdrw``FyT z71<|U7QLPw%d(hPG;3$G>h#`r>w+Bt&!!;_wEs) z(<|YM&J)ngn|dNwJf6^7;-WUmlqqcHja`XNpfg8=Ky4kEJceCHnpB zilEbe4CIUd`m>tNS^RN5@p-}f+@TM4EgPw~ayzY9%k#Xq1s zwHNUp(}O0i;vbrvj5(J0hjs4d`iFNu+Vzh}8R7azb{^;Yvr?wI{!yJzb^W7L7P|gP z$+2|9o^-GD=yO#M7c;b5OrN3MV>%2?i={iXM=Y&j-C{Zq>mJi{SXxZCVLf8{3?I;~ zO6xZKnC=(2{(;?ZcKw68Kjr#|bYJEAk4?MM^$$(E-}Mhm+wS^DcX7*Wcy?zuU&F_G z{Kt9xle)QOIy^sSpW%}|{u4a@S)RD3dg!I8uev%c?D9VR&)Mlo{qDATDOOjEH=KAj z*Y6(tM5?d>9lqC|PL(?;$$DM@kJr)z)!ET^JcK@2=m~c zRVX9u>-ZeSGdgD7EOTypMPG(bn#Xzp*GlA{S^=Q;!E9sv z9q5IA{t||npBK0$WtICn(7XOJZpykeYn#+Ak+H+>KrjFMc!P+|l~uzN(8WY$mB@zz zqbe_e2f41&Hv(b+NkRCJ@)VN39bodsDjg(a^icr@$P_W_HZcf&V?ZX*JnYBjZ&`nq zc=RAbY+01ko?JSKydqy%Tl0tOuo3f)F zPl7*{x7LJm0aL`^81s)!<7z!S3S+KAld+ zCi}>ToRcjimC@4J>BACI*QjE6b^eLXK_8ru(&vgLaWC}o8i_taVYW?Arhj7r^o5F; z0I!Y@i;nc^3MNbE66=q$KNmnJ6tn=yhfL(UnRwjCEtS4@;g$TQ7==E5A>?YrvyL0g z{kIfS2Y(0p7KW#}WM9e#rY~c7sh2aAzLOElg(Whc@pYi@W=Il3%CtMsCp1J|>QI!m zhlxh?S&bM^I$&=9tYG$iY%wYBr@1c<;EaKbN6A?uCdnXjtiZVb9zT#{h<_0KF&FDg zv#MA5PP3}C06o={7C004)BsK_tQ7i3S5tV(#jS`A7`PRM02ogIqNE1s!S)n-RUr)@ z;i5Zzbv7-~jqk*q!ss-fVwBQ!aALH-C$&V(R;geGTFkOs0qPB_RPpUIgV2$8OtR37p=AP^baj8@PC%m)CfOC`SIks=E z>!reL+;9%@vvM1JY3(Z2+kd%HAJ2a58A~x2!sQ=R3%ib~!i@(&Zgbr!V(tYBdLCdG zXs8^}Co%wSpWRvFzXs$kZi9)*ZO#aFCe_@e6o2cq3eC2?PxsRtQ?AH z=icN?8;VlhDHY=uNy6?6l7CVyN;4NX{V-JS32|w?m+2}nHBPF)EMVsnehNXQ%%>?{ zHR!7}Ps&^XGvYWe_T^w+s{tzVEX8{e^o<7ZG{yT1=&!oGGe}3tUr}6#*`$YHu7YA zvC4Qkm@70uGJdJOw5G_)JtHn@IwC0rmk9nkKyTM@-x2+bL}x#(-ESv@K;l1mWKdo_Cp4$n8w1#cyQ@Xve8Q1WDo`~&bySlWxJ7Mcx36u`sDCleqQ zL?!*D)FTvvP*-r0@_JZqg|8iT2FH>lx!dgb@!cbOo+w+7~(AJ>Vj zGBCF;u2UKG8JJri*J(L>*2Hxp>lNj0i|d5(!g|pztF-Jv&dukkC&D+`)6?EM3onm) zw6RYM*a3|B|5BSc=F%q+@Hm9^5=YOnYuej)BW5R}+RH;PR>76PiXinBvJGON%S&h3 z->_G4;243O$AQe3SsqF0Jl3`QiPsZ3!fc1)I z`~Hmde7Dk#eAaSYmc4}wg2oDa50El&Ud86NcW~9V;OGBa z-P6-OQ#EgAb~g}UC!f5XsjjN7uCA`GKBmW{FGAXxN&2m*p*a0@lfDvZHzesE{a;M_ zeMoyWoo6x)*<|$OV8(wanBBi_G&zq-;dAi6vRaFxe`BL-L zWYSier+((?D)Tf*wNSO+XrAzOPl{P?GfzVempjbUFjXTp-({X!P1=3tX}Ed1|1o1B z9cmcGeobqlynz~P_WP`Vd=N~>f2}vuTd4^qX*R&SWRliUx*`q%_(+>%EX{D8WYSMZ z+SxWe=DM~?x)R{)GD+*3qR&Uh}_nxNMCMo z%uDHNp(!F|cr}u~Vw266XFf`#;ihT;rT-9VKgE9?gY34*)(ujC^Id$02QzP5;x$Ox8<~w$i2#lJmF+ z=?_>OC#%V0cQxSGNPESmC;Bi$?L?6O0ik+QzS71ZZ4H}#v@FQBNS|$Sl8k~xkarH5lr`Ysm4;XbO)!x zTBs4{0_hlwXr>bMe1aat#Uwjel1P(W0Q4L3NQ{@>Njvd-f%Hg%IE#vLjuFD7Kb=ks zh7tRpsS}sP5t9l}R%B!!qB7&2T9Yy@EPlx@T&&2_4Z>mxVVRLe-}3E(Xn}YJ=ERursnDYnWq`%>96K#v*1Zn$g2lX-*PB4XUvK| zOpg06>bbty(#}=kC)8^&)x&k#Bat3`1iv(okH(MBn#b>_AAb-(zJOf7clV0!5q^XG zv?nLCFuk8ie>KvZ3;#p%=n0wap8}aldoCJE4RbIeZX=ihKNSt4fzf&drW^eelRO^j zt-0ITv>5y&1Ku|SzBAIoEh2C-8x(2@o-%5=FdA^NB{GJzBNdCTZPsmykEq^un>7eP zp$T>3!FJ1(o|77Do?cEpy<(o)zoauD^jQ~GMkZXh-F&P|*=}v+rED~wzV?Tiq8Vf9 z=VBCn#&z`befoKheyVV+GbZ7uwP`AFI`nUA6HSM;Hqm%)*v`x7mS!Y6nrMoowTVV| z9ZfWKfYoY!PownKCUVll7HRb7;G|lc$W;v^@7vKt!?4ySvcT3R+5$f8T8&3BcSjSA z_*$Fj)wGVLJ3dbL^j>3!hO{=(OBlnR)LiJTn${-z9rm)Or}q##nl{>)e(AKQj;2%f zuYuEB514huZ)+1BmebL+a8sIlr6Y?vVhG*0HqkjY!{`*D)+RceX&9YM)Y0^S#-_B6 zrY+GpI-0(zf0rZIopmuf^lxhuL53X6j0frGas0IE zZ=82D(P~L+6TN`fp&_kJBRsn)zg2tUT)n``JUWKfmKytJIKTg&fouaaY;L9z1pqA%a;`c4UGSVO6 zOF!RA|7{dFs+?{kIpmd)jSFzqJ~D~wGrr%_-S6B%<+)tzwzi8dTu`GItA>DC)QKN0 z>+8$Fq`k2M*hc|_?(p<~r&bx!_?TJ*-Xc3=i|^VFs;Q1nrM)4T_bZ(Be?G8Mzit zcCswo%H1C`(vxf15PGFNsL|m#H-lODAbzx5q$^~3Sb&3aCg@Xfrc-Wo{S1Gf!~ZH# zRKG#c+My`eA8;2nd^TqAt7VwwAepQ4I^26_H9C517;vJ|7V$%;fI&OGp%rZm7&1L5 zsQg(?(r3oCN3#Im3-IJEr*S|J1|Kw(iV@T?zonL6obiI7dQ69VeXaeG3Xr~T zGFT8qi`6Jn@n~X(hqe8OP4$9T`*_OwIZ$ZL5=>{^e72^H?>92IbXG|;@C=4~@FYif z@b+|XP7rCo9UdZD-x5$St{G0gbhKgkDv5g_(xDHCdx|gaDQYTNgpvIewH-YK?Q{%E zbdKdnuvo-V-u*@fmrg;6?&r7%Pja{iZ%_BJxb*H%^qeL5t|zWx_+w)DHqv!9Q9A1W z=%DfJVShY`grgHuqETnE^eMx2dW~KroQ~vZCyf&y@uw}()#o{bbe*@;St`*=AadJJ ztVAmZhpVhZmTw=nbq`}zJ25lw_qEf>E72oXylo-z0r;;^PBD$(yOniJ-t=Z+^ao%X zJNZd}Frvr(!MLAD_d$)$ zN?r%3(MI^u#a?_0!Rd_TZ3(_}8cqjK>`U-NE&N5&bM0Zk7ZUtD3;!wL$V)c|cSuG1 zCTjxedLSk3Z5wJ&?Ngwx=x2bZ-O1p?CQ|vw0R@M0ZE18t$Hzo}18$;qWQ0neGF%@K z(@t++MibAnc|4}Z$GTb&R31}P=w(Ob4#hpDw$zF{g1%q(5fIqx>i9;jeCiypZOtMu z^|bbyPdEJ@AFJC=42)qL`mlrP<6z;6;6#o8bbs=t;flS7kYBJDK=IWO|LynmjE=L> z&;HcMdf0oYke9GmXm2ptZLa2XN2#|w4D}c90Y}1+>q=k!UTiq_bI9=;FGXGAKb++~ zv{7$jFC%`mMAg*RK6pd_VUqXI_{0xfku4XT02|*%yQ{WmsPwOSXzCg7A&~OlMKu=8 zzwJzqmr-6cN42V3Jg~aLe^}u?473tIhI#%5H78tz-`&E620UcHuiJE#Ah~Ud@A|zK zt_!y!Q}HyViR$S@nCi;SwUc-A}pKdkD}R%yke-cQGN9YrhZ-dNUSI0MM^bK_miK3aeU8-Jg9dv8(Z4edb_kk4=?1$a5fyB(p9XHZ2HXBO z3`C>LL8rUw3Fl7J2XeO432)K;0PC)t!co(epFK<;<nX^hMxU_x9Kq=&a}D1Da2?R{6E}9|HO~Z;pSxo-*q|$Nf!XVF@7|h zB0H1wry54n$?bSp81(;C!xZv-vq2Q}KcZpC@kj}3bTY$spbYo5J*RPh@NbyX4it0*LJ#&;f zCp)P949@?@zz?6nk4C4!(j4?QomkWLNBsRK{#OaJ`V>Li>4dOotqXN2F|b1rNT1U} zkxdYI>Eu`$6a+qvhoH7?Gq&i1Aex0Aoz*#@2-@jvz~~6Tl8PAzFlH3TxX^Uz3>})* z=#=G?iN}?eM_k_vg8u8OQFOGjse*OYT8|N%8hzUMTSW1k&4B_(ojrA2I;-e4H=K)J zn?VTSi!>M0PG9AU-TCYcugtQIuqvfVLW?Tsv=P-lr4cFSMiY636 z{bBrgn)nno;)4OxjTDXety3Vx5nH3#d>&AHeKGFY)XMg+#z*B-vZ?Y}gr!Y1Mn?-q z)OUp%uMh5zfxpJeuiEGlP#HtmSR-Ap+O&1XNCtSL8l=A_kOJP625RGOx!I5#vRl#^ z2KbdU(2BN^J_IJtpqUz)y`U&uEfB2n68O)NWP0(X2Ko=w6zxSd7tCDKgEZ4{Eq(R> zbi?3hE(T8;p4lt)5VZZ3#&GdvbdCnRj;eVS)rxs&CdXv2Mt#!)6*S0Aq&gKX5nH;=F;NnXcxk zFp%`sa);_{zYJ3C?j@HR)?+Yl$P99p&ILCW3)!-9?Xx1k#1T7^7= zy_)Pz@^{eOZPlwDM$5lE_4G^7>`mq02>2SlW*?E)An&1KT`Hx+A7-wGGsY|JUSqg+ zxOCrq;q4Ap`jM1V;7q4Hi-ncQM-gLL9sDt#b#(ADWyTV!wD(p#A z*rPnO${Su~@FF#QZge&JI&o-x$Sb>0p1ag0w-WOwJhY(khhA0W`Y-N*|iRhOe zTF~O>#9Ig%SUMN*+moV3x>~-Y8qT^3mGChDsyoro7W6X}KS$EEAYHXhR9L-){M}jf zvxt6<#Ltm5d9D%0sWqyn;-PvR{d^if+RPT5hr25j&HHP#GX_;($9?rT_)$NLp_HPr zXTIq{#?n%Uy^Nx3dkj(QcqociGwe0?B~K^D1_pn)QT^M4s=s&-srum+8BGowc3H{l z$Dbmo*sNXi0MQB}%AYT2^ydo_28s8L)(jh-Bo6swk(7-%4)!iuKMb2L2Zxl6H1jDH zLfn!N^M_@PzF!j>$doW#NE}i=uF=;~WW{nN1kpE%sE&^0`J-CQE1DXHhh6~=Wyhn& zGsEvZ7H&fH`2{aHfmAgUa*Zc@ZCGfvqr)j*qWsSC(1J$aHwvv5M2{1Zc8*qysS4p8 zR5UuAUAYoO=?d|Ey43+3lvO8))KwtrhEE@01xx17q+0}a__ks`p{isjvKKK zg^=F@ay>WVyIPlBV)t;hTYecF3c6ayArTlJ^fTa4)vh+>VvU&OVy~tw@;yy6_m&Yn zgs7h{76$@!a_qUjs@Q}7^ zw^ya1NNNZox;r_P?b^+?lB>~fuB>~j(mIgx*MDpa2)6y7H+)(v2DkiN4V!c$a@+7$ z(kK0l#LrPQvt%!eJNPGqss{pIor9mvv#CeXTB*GflCxT>-veCT?Il)d7lXZAQym(E z1|L3D&Gs-V6YjRim}E(A6ZC@{)ie*I@fNS^ju?8hBJ6km4J46=HpH(I+n(GwJ9@U^ z*6Tr%>Ub)fdg^pynHGM za)Mh%m7icdL95;NQp^2^Mc#u|XQ0g62SLleo>E;cSx(Snn>yS>srVx_r;h~xa|81S zXHEqc9fLDv24@x$|81oCO?$a)Z1Zk;N(~!v6Ks^`Hq{CbSDo%XB-WeI(JH;YoFbcI zQ2(iFX!R|isNrW>EIjn{9$IJ*j=gLJU_WaNqN=FUJ{)zTho_G49tK)!ssgiWp&^Yl z*KRK-n}uMuaKqD4WJQzf_G+;+-UM*c*yR5AhEtTD{*EDfLL9RrzIIKexBOHM-s9$2 zqgB$VtVvtY7GIODf^2f4$tr0wUxUshEM=m>DrvC3<`$b`HPV6%zpQ_6`LXJJ_AB7^ z7Y|Ln?LD;6jvRZrMqn9KUd03+?aHy2+QNItaa@+Tdd~17j?1ExK2gnIWAj4aLn(9;~Hx7AAqKvJPh|A#^53G0Bgn`U?J#gSFMM=sb7WUGzYC6*3HWR zZ>NvFM)YN-^r96_N1GK4EZ|^4>DQ{$tuX#tO``Q5Og#TuZ4fVAbu?X%<&t*#GE{V> zW;bU+Knn?2Jki@oDUYB=Urzoi?xH90GXN01I5L`U`XARYhL$$=*^727^*^DZroZ|e z)P|!(FA@#S7-||?D$+F3oa%VJT2cGh8WrrR0E z^?*VhZ@KZG^L zx5g7t>m+*1Y%i^S2wBnkMMTRMNmfDoYdZk;8Ngu62L*!;*if5O?F8g=DxqJCADs{7 zuj$-c=3CWrcl>l(Wy{&c;9zcd|PCF1J6 z^z$fwg4*An-kskK3y=KQ0UqV ze`zFIC8VG>5p9G9oDmH;lX5~WpYGp5U0W-7?bPRKbS^;Sr66 zGdPcqGB^i<4~>T-imDSF>72Sv@8)$w{WN5i#+{a zH2F~IJ(zCi%eDtPePOOj#8ny+>cJsiX?PH^UORoRE~2SF-K6NVS`Y`mZC*`(gs!$0 z%!kId5e=FXk%QWOC<={CBN|kA@UtL3^}`X(=X>xgfKO8*(K8lqR_4FG1if(MH)30( zw}Lts(%V9l9)u|S>~&ZW?orXNB%vB^Xu*pQK#kVLPof&rHfL6b86EEmq|FFvHy_Eg z=HZpNBHjS?TtYg{B9U=})4U+szS>TkSWF||u{vZTBoAtjV4`vbQCwyzjQsTBzUUdi zbXy@peUth!pUM2YZCg0M@=#lwX*TCg!&hL4Z*WIkrkj^(Nlpm*Z%~;q_Y}%Jg17^b z9<5=KoV)s7CGISmHpFLb2x$w8M4W;ey`VdX;0NGG3rDX7YW1C}5$FxwV+moYMWAZ% z5a<=%O9Fcp zPB_L?%@s9#5|fZ_^pQ+uHZ-=8xf$DQXk6FW9=$*O9isRFezdCT9Zs(l^aAk$%ZN@dDA#6! z?k1x9hEEqvCltCK#$Q?wt`bsEn}BlBL~}$7onE=#LaoxmX4rVQS1u#}sBnUQt82Pl z9Bl^l={PF|XpGHqeUiU%d zVy{N(0_}w^G``UJ>MJ~;GH#7~;2K7IXo~v6Jj;=B6!v28XtNh{GN}S|b^$ zy=-RjDhj~ift7Vfd>ceBduZxu|AEZfUM)5dCV-ocK}4yqsJUgjqFC5oilSqCDTI8QSM;QsIOkrZkcCxjlt)NO1tb&=r;RjWUyz!8w-YG|9)@yi;#pvt zo_%k&K@}lV3q|Dvai9B;dx;r$wBgK!1;;;A5%`R|Hp3KlcA=5axDQO>(*qV5#TobC z=urt_eEa@*bka;?0(-?}d|HKnqB4GgqVvz;N6`?$Ub=qA(hf#@nF3-rPj%cyplHR9 z>W?3LX^KQjdOwFI^^P~msXYzOiY#sP3sso_Vbi-o8fn~RFJA9NbTkpY;i0M5{0AD2 zC07d#hV3O-$J1)8y3RvUm--JhQg&C1^_&EvSTcQ)0p-vCI#*z++~yp_^%P9gg@!uz zUNqF|p8&X0{W}Iz(l+#iYvzAEU^7L~_A)Ysb1LJOQ(NEGPohXVxmu?Cz9RuoitmVn z+A@vOX5B8~7zaa6B{jX*?5|6h3a2T(4Ih9o{*>M{e=WlJ0ZilV@g1P~(|BWPzpTBC zDMU|pDB29`uGAWZs}$>9imy?)3QB0Zw?^T-uVvJeHHtRdXHk(&`PlT{Sl=*BInWcP zY;mj|V-p)Ap}78VvOcUUGF_fpNhc?4LL^~SndWzM7P!?F%P84g8`Gb#p;8+-Cx+mU z0S-?QK!Ay{3Z}r>u;mBl>K8`A^W8rI*YyLKZvA*1K>3-5$M@%;@{2??N>O&UdcTTtj zzj*(wLG4aIdn=5wgGRspU6Bwr>MNXBnS2rzDP;>SK9NO@Dexy;vobkN5NIPD_=q*a zDH$U?z&9F`@zl!bzf;Da@{^imEBo6-WlLBUZE77caGmefA8n_)B z3mf&LAh=4`Vz_yw_K%}bm=!N9S#;?9LxON-rBzR07;6ZcxBo?am;4E5Ra%dI6ouH& zOH#Xd586dttqubyTCr^D%;UVYW*S7>E4HNDqmOP6hSk%MR6PzqiU!p7YNllad&S=1 zl}b2~MEI+hRDBr_>S+(6XxYGC1MSTg+v(QszfPK@?LW--1dGWNz#n)oEdr4|f@4le~xKFL)0|hVb=h?B7Ta zS9?i8bH&p)TpO~a_(Ay3XuNvF1FO5e2f~p2;8vARMcui*y4S5Y z{tyDL5`Q?GIG6T^XfgUCfB0A8P|_cMhiF#4KMd*R@@%&rG}4TWy-ZV~r%DV$kT`L7 zI7>w{HObZZcXP131~@CS>ERBQwa+A?w>`8V730NzZ-+|9w8wzhbED||G1&CbC|pTw z@hR3jfH;>niixo@$S4}9h$W5U=alQaWE80o-n4frjlB!UR7QV-ij)rF{V}o8A2y z+wPFcxW}j*zK&b`0hZ95vV*OPKiOdI%XuF@@enlnGa|7{@n>j!8#Y&FwEPTGB%=>*7W%b+XnX(>dZ`KmX zdS?H;p7q#{!C4$x&z(=!vmR?R2<>BAfb~30M%rgRwsAOpuEzU>M_Flq*Nl^JVJBwj z6YOH)=fyC6jE~v?;g%Z{VKyadZmPI*f9SI}-|z_>u0#4K23SudInfYgao|$v^E!Wy zQ|a`jIdu9`BIU3nu}c_HIi!qMJio+=*=c|X2pw#ygC%1hyIF7%%GcUNqvUovfL75k ztW!@RzKY`|_lh@rg|9|i(aa^jlM=ob>7(%XI{eW20fuM;XbsftF9`n;^(Ri?MTgZ! zG_>ga%%LX+;d9X>+W!%>(?PY0#wmKDA$%&DNCfs_b4}e&$JRzP1~c%-qje3Oj;xJn z_-EihiqMP~HfBXEd1v@6-a`8BL|BPD62Lv;~!7pS|>Cz&++%T}VZz+p5zO z#ur9ooKzP^8`6yIUdJ4PvR@Q6Q;I43#gRU-KRB5_=n$R|>BSJWa=&Nn4DSh1Y9VuD z(oA@wQ6JsY^}N!uoD}J=hej)2TVl{oj+*u7f(%yB?1%EE%L1oygP(@r>F~XaKJ?sZ z-FtosBEJu9@mCq-KD1>2`74sE&jZGlhd)E@t$kA>*w(Kon;fEgKK|=^)x$eB>ZJ0k z$8~C62X(@)`l?6OeUZg^S~}bM1XKz22io^j8+E?*x;RO@XsKKHT;zCBx9~%sAg^0^ z&Cf99_^DfHfQKP*Xa;W%dHPhhFvg@tD_-@)+%P7AyH9$w9UY8y3kzYdCyzfC{%Vg% z&wHtr3tzB)ZI85H+k|Wzcr#j$raN;P;GAgEt;;OPu1)Qe_JGFU?HfDO7})?n88!Pn z^#a01FW3cy!y^5yBFnznZ%_sp9v)3w`CO(swQ+A(zX^#WgnOUu)h6Vcb<#`=zY8Wb z@$Rj&+N@nL+mm(HAhoO#SIA+}$nQ~wq}E?jk-ME`#Vli7vs8-*KcA_^RG-yoZ6Kjx zHJVx>H`^8vsh{$jzFO?U5hm{9d{hB>ou%Y;Bv1G0jHkQ9C&=@3PZ=b$pfjhk;X!LCjsCrLe>0;ReRjlNjkNokUxQ*$xMeizh!-L3V;-7%zqo9KKX1{K+A)LSJpE~o_`M7>DI$q#^{Uwm(PXgu~SzdSl{&V}3@H<2WB{p)_9C>_)jhuHOXJI4f5CJ!R8W`WmnYf6AHg6+m zfm6Uvpu*9n?e3lam57ks&_P~b1=GwjFXx~vgos`uBH9I>TwU$?#OYsc)G|}& zjJ5ga&^2gY`k1ipo6Y*BWW8qZk74@WVqvJg(44}Skw{THANK+lB>jrEy2)BwxT~A{4pyNzs;Yylh zv2`@6ANuv4WRa9`$Qou-!$K6T`8Kb+Gg=D&6K)v(6?whrC8?kL50Cl}-}WAw?K>P! z;o+CVam{}OJN-6C3{UL^kFD=|HF5syTP~-A^(M*1Q)_RaCR?v$%7!pJ>jYC z_NHgFqS4<7g?xw#$+p|OI=A>a+wGnGSwv#`FEGt`Y=48QEXkgK08zJ&HcSONP9ke! z(G7G!NTEQ-Hvb^76@)H0Shfg$}O?cX*WyH8-Mj-o(<>kLXhS zIE|K2xZ5a?(uK2m=N69MZnT$0cIWAY*M>9K{0lOsmmKZYMz7_kul}E|_EYpazP;49 zyoWEVhvKK14}0K~{3C!y#+3a}Y8YDY_#cZWAOB-hQ^)^U;NUKg|8cczBZs=j|2Tam z==F~OaRzVEX)@uwKSRB_i^$eEz2)s^8@~1@koc3}L26OhmBLaN-&*gAl+bo>%EuMf zGU~~c&+4}*Yz;j%)^pmkEj_$0+%DfUI3-#95}v{66`tXT)IfXPGX#6mE4XxpDq3e3 z^z2o7&9?b=f6KH<|A-nli+cY1{G=o>`^uf@MjB}*!(Prn?GQJ7I~;X7u^8;3c@j*D z)_K56(B?~En1+xboqN#yk8ipRjh@2|qM^~>kjWtP=~^w0YVaP?GN)LWstq@Z+IA?z zLYUZ?5p{I_8&Z^<*tnmv?astTtRhToy!H1?wyB8?XS{>simE@cVcT{5$}nicx)U2F zUL)4F*6SO4YGT8MY+ir=5S6F*4ZqhWHZJ}ba*b%*dh#M;YWJe{dcw%F>e?qR_p4d18Ow-d1sUxdhw_%G-6C3vu zQQ3)&zp$L%dlMVZUt4w1#700}OYX#m3pf&*q7xhDtqwD>A$R81D8tR73A>RPsm{E4 zp4YX<9rD`I$gT0Fq&mt=Y7@H5JHq~DyURb40Nv>>jbdmWV9bBP!tbTq_&PxSF4C#n zc6s%?NZzHE=ptSJ>UEL7`wz;n8h4R*{SWfJ54y-%Z=oDzyT}o5gXn$IMQ%f7DcePk z`M+N1BJV)Xt78{=3>B`oyU3fsv~(Bw8zL&(MGmEw`M#X{pFmwsZWk$ZtKH}#@hYR& zry0KtZ^SnPh{k_oA@#imSNE2N7Hp2}2b$ak z8(05!Fo)fs=Qn}GU$E)fTYoM@N%DBF@9ACr7I+fV`zE#ulIhXZhqNTn8MS|$%&6$9 zfiPp1ukjeeQBG-wUS-I7H9^_9gD8njnqP?{T z^7}Q&_dW>AXAeL*%7*1@4Fu79BrMNQ3Qf zW9_Z(9c3GpXEp99e~+`e-wz$-(Zf)VvK{44tsr`jbd+7aEU=KuQnrKKb$Bmykgp); z)v<%TjtbY?9ptaUG~I0#n7ox>Uwf}J-a|*DN3x`c)gyt#d|O?Xl}h;U(~W_EN#31Wu<8VVNaKJrFFul$%Pl zcjcxM?JsguNuEC?sqSoYdwShMw2a!5i-UmnutqfFq^EWtJcZ!*0#1Q%M2^OTUjsNf zn27fNcr5_J|7~r(z6Hznv;2!~;nryhzhie4=U9f8u5!{Ub^crqex9-{+ zAfk6_!$0FEVK$mtc=)BTlg7poH>#<3sz}rAcUstu4qVKKRt75+* zOaNVBHbwu9E|{R`v%>b`8~T$XS(MyQPNhD)<@yOrM*@c^YC14YeU!?0ho}VCb@7oZGq9!C{pllB_EPk*Dti_9Xq7%K&7B{UIx$nTX}KE*@Y~DXSqO@; znR>`W!B?H=BbjuC8-?R%u8GQ{FJm@8>c7!u(y>oreWa@={G`MKnwQ=DkEih|1+uIa zlm&a6n@=TpZ*xEEW$4N@LQ4g?!SuHz*WZ1#*S&{LV@#O+?sT?W`c!1cG1Agt6qWMNWhXi zMyntauvJ<#5=iiiMFJLGiUd-ppSZ$W60*nRU_E?j#~XzEyjtT`aWf<~&Lpj;3wH_E ze3ne|P7kf+a?i+Z_IM#Gz71!n(dvd2N~8a7sG~?u&Db?uYxKIvC3jsaX!eH=M$T|~ zIQ-8<)qa;_nHoNr=2Cz7kb3FS76B*n#w;mI|6{#XuY~(4k6u?o+mT-B;#!@oTGZJ-_!RE}K9s)SY%k{z$Ht&=?{Mt7 zq&NDMv%Om6uZAX`oD4Sg#nANPscCEBzG3In#5vbUZKFx=o%2mU4s`YpJI75a&xt;H zZ7&nPg!98m7ZNA>^tHVjmwRn5ktx+Ymk`Yb9-52CQwzVo?51sm3&PIlx*@yIDIWPR z3_B-JEw6=_TvRC)M`;8E{-m#*+iP-s6Mj5g^HOA9rO%u< z%3ra>jyiqO=Fihe(A1YK6Jzm>pwTxw=OB}__znuk4c`Eqa!t^6@HPM zm(X@EWOCJM8Lfhl$+9jQG9~!MLMDqYg-oeYX6yt$8BX4FW3-YIqf8S((V%U^jX+sq zl*z{zU5_$t=;5qA?>xMm0pp(_@QZbm7G3HlM_FlU1>r*2Np{hI;=x-4I8FI~KY`O>;#1vP0<9Ljl9xyv z-%b)8(HeWJV9ZP_0dbtBKZlscn3cl7*N^eR#5Be{jxo()RF?(8@)#pCw;5no-(2`8 z!*wwZeG)=X;U${-^*Jhd$j>8e8t?d1>Wk^r$tlMFmt~xU-u`+>M^h7)MOyXmuo2Mp zzI)>t)ATfvA5mrLVc;0tgqNa7!TyJxfQiWw;pn{pQdBz{;Z#bSH=EL4RSm}jOqW_o zH8hKEH3Hq>+Jt_9w;nBE*h?>PhOa5}nVcAEfWJ=z8~q`@3se(N^anMz-Yi+R=s8{)jaDB>U)s6^LuSuEiA$&s(J(F_o z`Fuqfc0AETPVxIx&0)vLtxL<4isI~9Y1TAhthI2^0&wL~obAgTu8ZPQV}oHDgBTsP z4H(rQ8>C{_R>wQOquBL%Dr9QcQEJ($O`{Ux>9desi2;Qjz`I<#9#GhME=N;xK(Q5c z@-7c3^oN~$cLl1ki}f8C!$VZ?V(U9gpxxADg&RTG*&8x1wLLiI4h)>Xv@|qXapZQO z$sHK*F+9Ehx-Ce0FA5X#D7@3d#)fWLrf+>GkfN}hfq`wcWIYFv_0Yh;Ua1WwF7CI< zZh(;TcJWNe;Bee$cI?vI(YTcUPsm^a&|P?d;HMhy3qyDn`mtH~RYvoJ#HX zJ0hAvS}WnS-QX(8y34%=HeR&QYd{lD2zcCPc| z4wIbU;Y5?`{G7wIV`4bJb3O!;-gACVt|X7b&QFkUHJ+)pwpMfqn&1~3f?D+MI6qj= z9y`G#>&%LH?5ok&>8aU|`px1)I5b>q>W5(;e$?N>*MW%K4)#i{2{k_8uk{cUec47p z>qFxx_il^^+=nO4B2X&ikB2n>QLQHt`*IX*;(f$5f5?_v-*+}| z!dwLCVYuFqkCc`xRef;@t61|VPVZXvy+FD5M)e)%ZLTw#4jaRDW_%RvzvLyUbNz?Y zy@%!}ZjEaQe~gogni|8EJA=a;e$s3H!}H!lGU+gTJH18EkFV#rhakxLjD+1o7d1Cl z@;@Vy+MsP*D0Wp0q=M#eC>Z;Mw_7YOT+Vl~Qlmp>d{#H%fN;=x$c*=9E~>S-IitgP zKn+Ic?+QjGMu#qbuvt+2@HUk_6?CLVho`DY0uJI<>bs1>bMOjOcA86!6 zg8M@!t9vBajTotm(IJfCMJjmjjSj(a%pTyF8z4E`PWlrBNayYjn%n@%*?1DXJlpWq z-9XY8AUTV-`dp2_YM(PYv_lK>a>u}W>IFy^*Bcf3+j8Pj;eS=zx5*4k#t{Ajl+DQ7 zr-AtGtv%}*w;S)+%An}~(?pYN+|J#3#(nmjKI5+cA=sQXQCkB=qyGfISoCkvrRd*A z+Ir{QFsw?%3sC-A%=R%@f1bO#V&&3{Dp>bvTyZIGHt3}F8BDS> zTq-&?EiQantx-c^Qql1$+2p1umu^JCN&Re*jX1rvdo#XCQ2otl^8%{L>(ua>5P&YV zlGfUCYVSHV-T$txS=qWi4K#~bH>f5bGgV6_qwpp*`Ee?BZY^2ArHwd94T;R)h2*uR z0=vxyf4m;MpmCpX5rw&&OSL_E_*J#x@x5h@KHHPpbQf$p!y_LX z=N8_o#y<_-)m@R;ywKYy8k;P(4}O>OUhE|$WlQaUZTx{ZWN}Sqkj?2Qs(p)n!081K zEwx|QmNy6z8Y)G4zwWl}QYr3MV=f2p>J%!4ubH??QHtf1cS<9+hEk#=Sf1uXAye^d}bxOZuY~9_f#=H$) zT)(k9f_`74yt=2~`&H|X`_&EgDw&cOK+=;U1Rd!4}guZPq#Oy}Nx!<AXI}e6J09#qcE+ zXeFV>chtCj5H#pOD;459+qb?%f0;8Ca0RKg|F}#3nHu!DPj=ZQr>3P{?>gfXt5ffq zTIF}G!>WeDf%yH*2`{W)Lqw^U)>}T~y?Adc#|>QRW&MKv`Q|n& zJ7}!DaiIm_yo==4CKrE!pK(si?5T6~B2U<5pC6=FRIFhoG6f-w=LIqzwm-miN*3D% zhF!%4V7kGlpz+>|3&3%~r@^sgT=1L2K$Gi!ojPn`5f}U)3EmeM*h+Uz;=MPaZp%PM z{ykVvy$N-T>n7AwEyvAvSj6yg1izn=T8=X-i|blW%74ehNH7|C1Q?YVQn_HmWb@5Fdk9(31?yKx$NFy9H0a{4R&yxtUVDEn62@=@jG^bQ zb9ihSWT&?r362F^r=_7G)d->~=Q?N12T7mnv`zB8>^kiv3RzFEpuX$0xH+zq&#i<{ zsX==ZQxrCw($9EJ4-wc84gu!-?mowa63xnOe4z@tW zeRHpb!ChgmMnvc1O-0$X8znancSx6&t(52X{KYoKqJj9J+Ms zNuZg?nCH}UmK&;a(*D<9qj2ll{%XaQG1^#GzNXV>d30!g1;yNW9seApd5MeRDlFJ{*kU9#(> z`|-D9rKY=F9AFC;eq9afw?yjF?cAxw%pJ4E%N1bMysTW8Zd;tog1Yn*AWoew-K}wq zT3W747b1u*yL3LvE!n025<-6Px^x)BelUg-U3xQjePo;GoeC}m+?^eW(pc-QQ$SPB z-E|Vls&IGKeu|$Q=h|ID+r9S@UC(A2t%8%|Y|}03?h^cB?#`l1?ylM2P#BLZZdYT1 z(@>SPozPx68?UT-Xf^f^WM!!pS=pD$frHJ6>~&A%UT$=kvvnrv^TG7O&qBNcjliF9 zP()L%5sW(>B&(tkSXFnY5hS!dZ3LFlDrf|@Q!d&F68vI~z@kfypeyUa64?`Hmbad* zh^CzN%sr#edfsdMTe`9yOjiv$yS()*KC86#T)w=|dfso=gEgj|@#aU_p6lMvmA0N| z$VmHoE*prrg`Tda%5B&3F7#Z<3uW{k*rBkK?1_d1Uz`KKI0ydK9QgMfJc;c5_s{0N zfL+YtfvVxJK%`5pr1vgo(e0_r=+|84{iFlc#Czvh5Z+t)gBNWY@^GOVf9Sa|%J5Ey z*EYtVYu9jn%=TI-aB3@wS?>!kQbRv+ewSnG)XcXT5Yc#gyYtEolkF0L6TIu?OdG8_ zn!I6hYAfJyhacaOz$ZfB%mjeHtIteg&=Tf!=;VDkw)Wrouu-d1RCt&gdM_CRTV>}9 zHaUwhrqvUp`&M*mRjCRy!z?EZmby`4Yk!_qn14c(8GaJt<3KF4L5c4h=-L$d!cCqj z<}AXT4V}CXtx8@g*BhizpJWUJFF?UdEW-G9>SishafFAc!Sle8+bOr{96L4hgT&~N zi^|!l?boa@#!i1m18N;`z z;3e#o&n!|s*~t>J{C`{mjwL5p4kns%L*!F021#F->RL(BMHNd?G)ztKi%qatba8^E zi#b17&+IS2Ta-HWtnr6l#OPe7bqV3IYQ0;*RK4h-wJh|)MCU^7l8%lfQ}24G-$*ui z;fZSWzln3XH=pE~tR(w9PNA$2BdBp$nI&(VwkLm4xd4f>!G7VS^EVR*inV zJg3ysm~{u%7SJUk>Yn&TsRK*QHbHhBSXb{*fa!5y+Kc`R9PhXc983DI@kCS3e{J(6 zko5Vlq}JcVn;mS#LPp+iWqto;ap4~0QyUv^@*II(9^0^t~&Li{BV%M64PPnhJ_^+1U4h%OmmUI?9hU;@ms)^=eGZC9e;B?3&pHQ4?*2olR) zswQ7d9R1di+8*R0fF#UCYgk4!sTPq~f!`md+M=0#qM{_ZFH@6;UR5u5*M9xn|F3s) zKSfPm(T&^}5lzp_eyW=M&us1~Kjg}u=&K7q8)%uaEB|pS{R*oNvSFgcn z=WELOAsd2OVa!1HUWil254l~j2Y$JnAL5fMUHhTLY7-et`k|4~$p^*{>F?1)Q)E?F zQo)P+p;TlX$NS4w$M1e4{-|O5~-g>@xYiaAb`)j>wJ#LI_XVHuAOLhJ< zq3zzjROe(ZqYu`;R4n5ic6)j2dHU<6t>>R)q`epS^jS|(@t4G0i?D%AwCdv?jE!%& zqrCOB5>2_DYol-Us`c<@U)=ZDXzaaloMd7RE5bH)_}wn-UiH?K>@1{d((jx9mWYjD*py6Bipz%oj=(&_rm*MME^C)3Wy%lo*>u3Yz+G@ahgtm!~7VLjErHxku zW>Xq{@GD^v?0+Ps4Oau`Yf;gW>9k!aZLk_}3Z-4@r|DTTB&~G?#?shnjVf zD2U`2#YRFp9EulV>8MMpKMDR*I3`U z%w${EpxSP^-R5FX2_PfNHy~>^L16DN|F-nro*K|t-++t})HRy1|GdD-Z6c52-}P-i zbh#roMolA>Db$`9dP!=z|FFn=2%I~yXFaNo99XlpYR704*CulM30(h zq8YowbLK|5WCvGz(A0h*7s(MdUD5Sw;+*@XRT1kG3?BV@>wp(}#%1h}7%c{)%z8$} zLo{*|;zz%Y948}5jr7xpcn?GN^&Xt_u+l^qcm9^do=;ene|^=$-Rad15?#E$YVh1x zbr2pZ-@d?MSeN7=d8>V?V>nzzSVAh?Eht?6F&w-oZih5L?v++MrUvsMmU+ ztWh`mwrbVpl^<2x@L)N+72Z6!xbrfSjN7fSMA)U>TFZ#*7=LuvPAUf13&I(5VMJcKL?#BxdFd$!@%)S&!WE*+b> zd~DmV+s#&ZH%ms8&~`62v*J2Nt6+lA8vDBuo23QD;Yq&x9ne7a%dnGpYR1-WV5czX^Mw1J zh?o<`L8cTwgC8Apj@cr<(c{?Z)`9&I=@cLmlWPsgd5p4Qfq1solP;Hj1G$H};a- z$fVL&cwe-(8j=RzsQkUP_V7Hl@@JH{zn`|*-(7Av(;G1l6JBZ`=}?;~%?bvusqNqf z{Oi{EL9Kl3$DrNIOHS>ti}UCRH{Iq(z{}lXl+G`;VaavzHnlJa!*U|}GacKqE2Gr3 zp}VWQwy6$QLmKyP`FP96FvzJA1c?6XaGIKe&002ZnbFdY zhkom;twuxx0jSPsnLlv$&<$E(5(NBA`J2fA{1)MBn9ThyMYfKC*t$tZ~O8fA+` zd5oswy0kG+LlYs5P3NtvXk3g7%@fM_m~H$xArS`vUz~~Q1Y5c_hN@^_ON&t|i89H@ zvsjaT;QWEMYS&D_y4EdtEx(#JKvk@r#ClL{RXV{K?beChz@`$M`pD;$APT5?n&CQK7hFG z1(CfL{jo$JQX!m4+ouJ+*1qIQj4G@v+m9RuWw3vo1`3;Yfbo!{ zA^P0S$N?jbn#Y0TP_ii~*+EWlr?P{|>xU@nJfGv9ZCkg0VH@q_4smr91c&;KA_zV) zBdIJB>XYeKOHJ`pmcS_Yu%XI&l=-@vK0P$n_GkQ7FmpsFdiKNpdIt#O_9IBhL$o0# z0?zlnUTnih`V|rc3#b_d!BL(OYlnHXsdN%_p>Oq6uR(AOWRFeONPnzfQO4I{T_FL+ zrcJsfZ5*EwADNsmJ(xdm$D!n2PV~!5`aj7NPWN~xy9)8DV-e^Q%Zf|8*qHH!+q6@@ zOX5mF^`E7*BukBm^9N2xV><*W%T!xZ4@7bbew?qz+BH7d;#wg!(ZivS)6`VtJzI-^ zx|(4ykV_DJR;86dp5Su|mKg+RSVU+i2+lN!aRDeAFuGcLH2?y^;~*PK?Gb%EI93FIE+_r7c@1+%RpI_+65QLfj3s&;CNDP}b%y&A>m> zvUB?=FXH+l(p@;=yug>V0uoP*5(U9!kWyPK+TBXE9G=zqq9C|DC4UfHp_1mNo7I)7 zCGIVP;3|u&wM2$~H6VyRarb47M-k99kZT$mHkJ8W+&jNVeNNKUuT!veL}(XpGlJUl z^_q%0OF_l`|9hsCf71}Nd{>@Bbg5X;jRPuOtQVU1(BL{UCDI<wZ+n~@23cDP#gq5NG!qB`wzXM z**5s2n3hyw94i&=#|hNI9J+6}I4DyZA?ct}InyhO&>@5hM za54jD{=km_&$Z;AL2{DgNy{BL*314p0}FzuECiAnL-~cSG&9tC8Vc7Q06y!N_8uMc zuk1Z6|JT+tfCJ_GjQ1P_&*~N)1kWKK-KK$+YL35&T>z0jPxYHPPimwucx0JI{vwi0 zFmCu=VxpCo60p~2{#N@Z!ZU+e%IsxwCGY{UD|rPzBaVWR@9)6HZOkFD2FZGNEl5&n9Wf9t9 zIb?IR&nno>-rBz;%x;1(1rYI@{o{tVT*850utk7iP z%)l~8|5d@RX#nPF3xW(C(-6Qyov2`sY(9--3daPUMXVu@e33|wIkRkLkV#OI0AkID z<|id~J=B{MP>{?e+B>0AFePYHy}u=NFDXxADhMdr7Z*p6S_HY-ZY7DOdGYU-}ka)voMlNvb>%UEf3N6tr zyGdPJU;mx7f;xIjaHPn>CE7cIlhoCg(tTh5P3jT?w!Z$`nw|NpgbtO35@`~85^VOJ z>c36)!Wf)3p`vF4OT%rrk!BVK)0iz6g~=R=f3XJJZLD+=(oa>4 zpoI2WukAJmS2X?4T$ry-U%kvOUu8DiZYxCv%x|uGpZh^5PuT|OcF)(TQ$D*;&qDLn zEY!LH$}l(y9`tDg?ev9QS62tv5l1c2}-N5eI6fS=qP8>|aMxr$!|8?MaHLgL9O5e} zuiJ*xZ9-E*|5q4N`^n~BusGAJTaRM@W=RD?!NlJok5Sa4G1C=FA^CAeN8K>*iiNRt z6fBZlD`Ut*skFic-FDklx=q-F^0DDYT)f^aS699~tpue=*%0mu(-F5tRzeF z7N{qfz*lUjMe*|TsUzAd(*HpAsfju=aAcvtp4#HuIvhE27;Mezo@2EnEp!4m6^{-TsDPxHDF{g1(gY-_eF+;`veqfJiYyM5n6WA(6i1>Bp$!uh^Wsv=XY2cg%E*!O z^5oJ9i@GuOq?c)x@Q8-!ID}7c5gI|9m$j_RiI$9S+pLr=-A>z09>t?cY!^K!(IL z44=S|7$XUZs~`-P)~qo3e}()c9WbFdQUmhqRUgFioIK0MS+(Ig%WX(T?nZG`Sof{#fr`2o4h=w zBCuYp`=$}`F-dHaOlCoK#ob<1>8?3Q4JHpJbnxQ1g~hnC`x0W#qB*cCDkg`>o=Ge6 zVq>^GC0V$z3rU#rCCy03Bd}K^dWa~KTUqn|3S|g`W7*CD8Mc_=6=ugtr7UErg-nWp zz)oeHBRywf;sUHJ3PFYGFcHM;OT=PRYl5x9Yw$TU0GG1pRUj5r6$Qs|egbI}EG~#A z$S3d4bNgd8DqU>EDm!(b7EF)9rZTyrr{9y>n2#@|s9 zcH>LziU}gUZO(cTuE@OM5f_Bw@+HECX^yFaeK;@+5lY3wHUWuOsE{2;Dp$^vgmUr; zQpvn+8bw78Uik{@>-}FqMyncM%?p|n;ML~{9`c7!TQE;5p zsWZP42FIs);Ynb}a5S3W9yy5FnONFv20eE-S&mdLzU0NQ1nIi%R#|pT7rAfZGP!`c zfZnTNK`50=zJ&7jCP>bdpn?v26O^B^NfAe>!iblFFh%{sk}P+DTaWN)K&0%zC_6aP znalmkhOFjgJn5b6sRHc=0!+f2UICuwsm_j+j(FIh`cNwYOy)R1FY znF=aoPE3Ab1C;=hX^|7lMHsmVplU*2(E&ah}OX#U`~dkg@M%YY) zcTmv-OZb*N7JnDT6TPC%Ec;i8F$B=6k5003;aRY10VEI>?e|z^i;gmzLAi)Xjuf&y zsjzHHEDRR1nMa9`g?g+#ND5(vmqo~CSiJPK&2#}qP&`s<1RP%y;t9+rLMCB8F)Nci ziz2x!PH7;*1V*<(`FXI4678)Bmf)dvwnF>pHb^c?p+iAmk^Y<>IEP0;hdJq?}`J%i$s1YBOO@tf&C3E9N@kC<6I2XeP+H${9cFx-+2%hOJ4iP;z?LMl#sA^EFod> z`jwZ1vU1T(G2dCj``}_&O?s)S7lR2YTOLc~XUhvB^bTAn4k9dKibhvtx2Ql^2^KsU zFn8dxw|9~rc-bT@KAe`Y`i#tKI{w@1M#gKaq$Oqq#G}AKFfq(hoWLwh9$O03?_ES$ za;`;!2;q<%aLG`asbS259bxfH z*G3SF?IS@%z;|77ESVdBQC!Aj`&qyHjBi$v@%WqjG9Eu4MG&r;Vad$+vGp=ui*WV; zn?_(bFoP&KwkEh)7B_NQp;SYdT}enovseNWHy63wJRXwqiuwtT7X(c>4S&T|OT~>p ztQ+MFgic&SVztFxR!LDf13?rCiHX8DRtmm{?~_4@*TifqTlu}valRugsmEi776|bO z7ltUAofHh2gc>Uz>!B$ullptsCv%xgw4xh%7TmsNe$6`LT40Z$3))3L@77h4VON0J3e~Z;H9H~k< zmcU91YT1Xcxp7GOWsQJ(pk1>-UcRCoRre{gGSIUi8b(w95*BDUbw9j@zCb=$vjs`u z($M`=H>G_>%qj4-)CU*7doGAgSdO6Ji5(}J2=^Q zaXi6yWwb5J#S0(^&t0V~7B@+$m*iM7H*Qrj9`Ea=T)8&-`evpRp+$02lWT$F2_{+8 zkT{;etgmm*)?Z)W>}f>1ltV87ft)wWNfgp;6#6;=MzM1bKHI*Xt zE8Pb1UW@YRHaqUS`UYfPOQKu3HF3oWewsUTnHk3unDsgROvMC!PT$jrY+2kLm-Mup zf#7K+B<5+kJ1!{-XCR0oAu&;U)9HIv5Z?;UxX`GLYf-M#Vo^WGlDVxW^MJB&g}f}U z0qPKir9TFeDT_=c^YsT!uH(y>OLSI`{FMJg&M=!iSuuLy3l}IpwR#+<$K-{Q`M~bW>3&)sQ zN?9YkP*OEyc}YS@70Q}0v!k4_j{9I~MulU^h2)))jK_Volq*vPwdvm7fL&+>mmzV% zq0Xi1WI1x{k#ppDLXJgkgX0Oz-mNITS=c+6rxO+r^=-`dOjD>-Zbq_dc{e2E z74;t+uVl!~83-Y>gv3mQyRwp^a0Y@X5)ufl|`pL7>Z`|1P{lJ zSICi@TG4_FIr83AX2$UZX75(7%lGRG!u9p8o(T&2DQZ@Iy=$yT;msPU<7E4&B_!Te zFf|LFK-#Pz^seuV1rgaTaibM1+q3(m>e$d!a=i?RdqG(&9?MB1Nsc9R;|3$+t>W=( zUe6{A!)r$DJ_W1hlmZg3Q&|j-Cm4uS_d;QXWa-r7h5P{LP+CBu3Fho73(cHmdtHcuU`oYf^TH* zQ5e+Y12}v0H^CXDTrBR)Wjr2Y$#|%+%q8P7w48;b470p0ns;z=wj3{a0f$Q{^i14f z<$O6_ZoXVZAzyA7Mf1(UD`+mPI&uMm(86REy>GuKGhP7^M*dEmXeDMNh$G7_LwSYf zDXmXuRx`zQhBH?9=gRP!8V5Fztxe!?5gCTS4@4@(p%k*1ohVoy+dR0{sQW8)AuiFs zs|3eBzz-@EjIzyCQv4!Cn4-+t#yEXG%98KWG4?8M4 za_nag^&l0+m%yHnmINeTXp(`Qq*6|A<*)^*STBT9mXwOKs3#T27Np|axazUAHIx1; zgm>b*v?4Ig$~*~j3LuG+R4N=b#z10U$QcT`a_=o5@m(VV5=6~h0usZ)%H4{sGjzhE zz^ahs9H{~Mb${~_6HO3|x7WNpxpacZ=JBJHCuB9_;8O%j)P?g+R}G$uQS$S_1Px1q zp#=O3up&^RE+(8ri7X~d>f}I)x>&xv@F`TcXVIDQx{$m=4cl z$EL)ESOra%`(;5Tbq|TI7qLsc1eJ&&UNFf!OE4){(r~v`!bK4z=JAAJNfkDX72PH> zWZkzIA$}|?npE~;lzbjqpyPg8K;kkK9W}7xz$s)d6%;_qi{QCrf>lTr$@1h#d3j1j zV3sIVcY!J+e=*aVWm zomV}ngSq~C8s#j?VHedub0Sb#Nl`hAdZKdd!lE)G5L91!zKF>qRJzbUxSyb6F!L5D z`@CrEuepf}+Tuv>fEN{Pg82p%LO?5I0CD;KKgCREb(pqeir~Iqs78*ISB<=339X!4 zg^(vl%FB~WC*&zrH&X`BQxZ%t9LCAFj;`(nX{E@r=z6cbl=@!aC`;az`p9z&11Z*) ziTfNjR27Nl%3zjf-GzG_Ar7o&$&?%(g zO~#TbOlrBRtVH&&&>(D*|5s3z2=Zy@UT6wg6hdMFA4eiIVK$9fBc~LK$dy$u5aZZ_ z#2l&Ea9Wm*ag$!el3*ZYv_d5aAh>o$Ny@~m)7s2JdkD6O%GGc=Y(aV!EkUl5QgIgbq~h3uRHX-+Otk`2 z0mR7SS}EdCWLF^tvg`zPDI{h{(s+a+asMlnlKW^xBDXD-3-3b(UWG*GNZ1s5TMte# z@r8=3h^d0RzuZi@d_tF6s3xNdKiNgln&@7nsX|sN&R*ojOH{87a%@p%ruDL(fmcaA zsW`SE6?Y%2gTJZ>vuCU-8BR{u$?*g|jA?LZ2zHl%{G~zNOtbt6d>y zu`t}l6<35bXUL1fau7sgI8Z<#M=O?zx6*=Wxqgq!C-^-OAZA z6A{sPNy(WBQMcTS3y6iBAxEN2KOkdJR5Me1@j;(NEmVUD%Bo$M&|#8E#-JFMILhN_ zg`^VgPoT_}hUofcJGfTTkSOT)KQ`DCfoVGPBxqOw$&_p=vyl1K|AJ|~IEfi4#1e!R zLA(T_u&hWDT>+aEnDc%^K$3cl0@*bN#{~^X1=3EdYys*in2T6q?&3W$ks`-_LPV3( zxw7!6ZxSSHV0AZbu^_r+-!M4glu`;%h@s$kg5pN6XEYODJSp)P~bK!jmjrF;i#EVt^o@V6d_) z77+8ZVJo9TXhzu-TBnz)SI8hMjab+$6287I9rP@~xD@11ip=jzl*MUT4!j7&j0Lp< zNTMX#BGU@O-ithTtmz3g(YIrrX-QOxtmCesg31MBE!@)k5S_{k>rqykV^r@>Xl{A_ zlDWdw4pA1UUh%t56Wm))AF~^q%z5`{*>ni0rjUSz5ld*Hurvh`^JFYY?!{A~ci*)w z#2E6PCzg3{qfKM>RWJvkrV3I@Xkoww5p&>ZMcGMsg|jG@t-y}I8IJ)PKk10034LHa zvjW$>SyjGczcVb8_z8=Uk zuvN|f3e_r0-4n!~(DuGGGDjIIt5Vc@aUklJ@fE2By9g_a%_YE_94fgO4wR^c$`L>n zKHHlZ6Y}3)%Kx1K)|0FU<6%(;lG~CEM~1R$hYq2=9VG2>phPW*DS#wa=(zUzv zoxr%;pfqRyshFdb8*3RTU#bxb!<~|VBrPBFS4Y{pfWV32z^$xc^Yy;A%)P*>kmMW* zZ{zOTs|WWnMeuf;mnWA_7%dj6MxLjjF=<~tlfICTY+&cu3)vMCoEwC|N!p0a1cw*O zTmmPC(`SDvrM>(1_in`*4eX#@IfP(nf|cck5Y$sLyTzfa{AE1k&5s%uhy_rg*rHHW z)jS|&8+fSKsWN0uT#uq;*uXQW$DCsex*C`*U~kLJGpHvs#};H3MV1UppcOzeyP_kK zzIY_jpVXPN#?F!QVgue&3BI{lx1We;Z}Rfw(g}GM>edT|8eIB%je}zg)?CQ1@eoIL z^;TWUUm-);)eDHlK!uz)*F@BeJfRufc&n6(R~rJ^tG5$Q^POwqObwZyP@fh{ZrMyS@lHPcH^8=(bS*!;$hl>IX7HCgs*^Al*&lYPZ$MHf#&g zOPOIH?=r>pCXQCGXdGLxzrMkNsnf1(h%2+ls^_tK-{8PiM(R#zUIM60i|ZR4&}%W- z>wVg-WQ!@r%B(pG-jdIfNJxbif&`iPnqLu_cr6Mt^^IU-eRDr9X^T}(Uc-=-&))he zU9}PTk;$V+#r?w6@929`j7Xh7*n^WXOiXx<&-VVxZ=hY>f(Zyar15$DBo9 zl#tbY@+?$AF;K!Gb0dTV0;p7!kjX)uWs!V9-xQ+OoUl~Fn}|^99O)f!z|0d0f&~Ge zfD>#?05MBK5YpG-3o7Q#>Ho9$C4g;KNB*Dm`IGHjgd{*X3g!++oXAd`qb6+*1?)IS z;{b*pLY8G)#IlSeI|)Yu2}hR&8g{!ay+XU)(o#Z8k8QWKyQM7)lwS1MEL(bSx;?i2 zcbm4`d-?xn-g}>(zVFGBz9_WpTHr_;z3(0K=FQBTnK!T8+`q_;9X^UMAfqauVO9Et zAFZb5d?+;(0^xdIhC;qFQ$a-~NHcK8s;1G;84bvvq8iiY)_^GgqL|_}8krg}Ruz%@ z(Q2q^YD+3HUEPw_rbT=#N2w;{|Eag6zRp(w7`UTBr7~;s|2GSoaZv%y@@GRL3d0#~ zYN4uJKJ_nnG`;aFBGq~+O~^Co>;{l;Cvo%^7{Ap7X&DVyY52<-Snr?0x>A)1$ zOfXD_hDod~ip!7Lqqa;1bRC-MwkpfIfA1~Ur~x|$mSF_>3^h~HhNXOOGBWY=Im1lU zMyI8X7rz-QHqNIn6^!A*Vy&g044Q)hWR|pMsQ-3`$gQoo(t*)tn2G<(tM0|IM}>3DaIKP0#2Mx`TvZ|O zg0jjcIrXc^hW(daO{4x5TDH+TZc}|?$b>T=It;Acf9&6&+?y_0GUTfA7c(^I>$%%Y zB)WKEGF6rDLbdxO!7(njC zmwYe~a&@4RTC^{QmJJ}YGGm6mn3=7H81d17Toa%2Z5sTA%JMxQU4l}5<~ctfHT2A1 zsBEMD{uvsrY9_04Ets0~h0OZ9Z;W~M^QXyFXn$z~;;J%5_zfv$7203U(4yJkVpMVs zPge(;ig77j&PPoq$54g#F_7w}xO9N}HvfX^KRRl%{Bz-6)sd{B)D)vCrTn9&hdYMcB{@XB(E7)Jmz&refg4b2m-p9v%z)^gf z+_B8dWi}alF>mZuutH@wlqOWXn0B$%prfj-ZdHWiS7Hr>b1dVbrU=I~;epK`o_dU1 z_$k5xma3w8f1xRkQ$k?|K7rqT8mZCm>K9EVRf{jxJ!#@iK2N(zzxEaK3yvw?kCYY&J!f;@e_`71P z&P9MVGKR5B85il0>kHcW-@fR}I*ocY<1L8J1|t{KhtQ3@#E zw#eK}gRh)H7mN4`8HJ*sBN~hOPbC_Q`RNRMkSaDC#>)ItQ)Mw|;`8gcH!!y9=Z)oB z^$(*e3aheJbFu2?-p4!uF!YTyX#ZiGkZ)XuN2_e1>L-1M(Q3C0A?qqrU&_I%Gt}Bv zVVO@!Ha=R7+1K0`18U05hspBkuM@i1&AwG?1p1%#LJWN~Frw;8l^c}LR(g~LF$Tl% zn-=-z5rJ!dpy}!A#^=Qy8629<_O3%@)aGk(QYVGKG@;YTAq|seEazi#lXk#g`lvf_BWe)UmWtq$E~2W7ujQV$y|{Qs zu_%A?et(nac~9}FuTvP9!oU;;rZ6ytfhi13VPFaaQy7@Sz!V0iFffIIDGW?uUO6%4UZ~Qj5lN*+RB| zd~i`ZYZ*X`#`C#F>CxoK_&{n=@}i3tEnn21F61o(Jhii602@Gy22%awL#03LT;37y zSh8>=JvzQ~;n3)~udR`E|DvH}a*?m#a@D;G6;ihs6?ToKN;_Z0Qr=VbVag0t{F+Qs;+6hHKAnu`3%T^@5K17YPGV#vn~WE733Nt4MpHZD3{4cW zR1LCk>0j|oCOeT5Ws}2+T*<>F4HVEQisuU>@pK`Tqx#|~kctnEk0xbn6R9LMqZO49 z?j1dv7#YgaQ*Q4pkdLR^=pz*!A5D*@3+coNFfbs>6F8Y2#gNC7g(67xM?nZ7gFECi zG$(RY)D~4SmPivWFq-7pSX?WhD)0`G=T-d3#D$MYEScOv7^6x-x#-qlnx+9+>yr7x zKzg)5zod31Q)7j6b~HX#P;Fw45+f;o4h2DZ>Lb<&9x0AG7avLIxf+yB{N2IQ4np4?vCYBD4HHk4aBo!iYCT0sT?TBr4t~$6bU>7)CMX+ZlBKn@$^Vx zVS02G@wpusTAZ-oY+3Pmraxau6o6p?@O+KO*LU^A#7|<@G(hnuMkGq%;&WN5kP#0l z%ulCZ2&w2rVHCd=0pnhXs7PR0d@iIjL~&d_Azc5waBw7>px%ob@$16=d@7Mk4hvX3 zJ~)=mtMO4Mvhwj=`FJXqqbYKq=HE~e;G?P-Pccdmon$kaEcG5qTrto>mS_|!8=pb4 zWB8{)C>Otu7t$l*i{;F=n%yKw_CH%8XJuqA(qn}}4Pj@d{@X_yLymodb9yA?%IXGX;S=B`f1p6i@D=q!nZ@R6TBy~ml^il_UWX(u}8QlUrD&roNd ztUc5gv46emkaG@N3Pp~D@ODn<06yvicnSAE6gkdmJlhE+ofBW?*n{ZL24^l>Z*6tv zb~c2ZX%YLtp3Vl_X|&(c5VD`XF=X!yIj2PCI*k$g+HPk>C&iTrHbnTbO9VMfy&&>e6!v!wdZ0>dHu^SeVKqRNkjnoyDb zbZ{Sr2RqyZlX^hr*Oo6O{k&KaqP|X6v!uHpXF9UMDQcjVmqz&EBAJbpC{;N zCNQ+|D=TDQ6T*U=ySJf<9zKErG|vS!hPnj-9@;%=4}lHzAyK{$)b`^RYU93D-*_0K zelJZ{B>d`mbLTq8M`k-G-HNZ{_(%G`Fv%wbNM|vHvpM#7tmm3G?bfi0C|1C<-rwTtv zpp$?qkUQ!rfP&_5e;%fOfqU3bghG8SL?a*F-R-Q76r3%JZl5sF?Eyi!-vr?b(%Khk zW%4bAn0(ii(ARg-4Gd=uhS+$fvnJ(SbO|1_-;I_42Fd*h>(;j4xEqME|1;F;Ov4&( zh{SkFH=v&={3iTp&yDPNW}r04^=j_y8&HMp0GQab_yIJ4N{(-pKNG1F>0cEIMeKjY z?=$TO1aie<>ZazOWBA`mw1Mq&$;MOU(jRKD?YD(O_BTM*ArKr$=iNJqzEJR+O+@Y| z+52{N6Ttpsq`RpT5D?|9U{Hd0-0Pf-PMkUDoO+3K<}LW`65=hPlf6R#5YK(x9mR2& zkybPoZguSWsJ_v@Z#p#x*!K$5f%*3R)0_5FdmxP;7D99BC(Ox=Ye2s{f!%8&_Vm4T znejz$cbqHwfIf69YBv+x58MBBeK#Ir>xO6+kEQdO{4kXYT+tV+!o%ZY+Wb zeI=glMD~%m{J`~K{Pvf?mN7?05EcxPi`{f9lZ$;=eBCd;^>M!% zt|071F!fCbykf2o4TkMA2=%*6LJsIb^-cCq9dwR9y-WaB(C5f2L2z#en>%^`APMVt zU0)y!?FEzkJj!E8GxtjQu#Xoh`aOKaIf+Kk;^u0igc)7V^dX=j?M$~Hz5YmFU#I-9 z)oCkPNY7E7b7?I0Z>JF@Ko_`uTu{RAryY@maK|_Z;Y{j9}mU*cHkTz8IPMo_Rn{P?Cl}acDk{W-x&$<60jGABKL8TXPd!ABXen`Tx`F4 zB18&dwA*R6Z`-rK=?D?$d!ZT8q--Px5q3_n+rgo!&tUb9k$(jL_$?OooX9-q6#K3n zU|IIB!1Y0pZ@Q_Qnn!<5vhR(A_LFAxeMnW7YKM00ccmJW@4-DJ_m~IGvVX}Uve~|S zPiMDR3JwkuDUd=GwtvsdB)lK1YOYX@A_tulsc(bm!L9SaEf4PuQ5PERw>EZyI{pd^ z@;Bfj;LYcTobw{~YoQJ=0cenZ8yat%WE4H19tY>o0>(94@|3K6-W@n@f8VvXp`#gLdqe4JZKE-W%N;#SyK6mZ`%+sMr=&*C*JWRkX zb1~IxcnYUOOR*#S@Nc`_NvqAi8d7(zvyhbUb{lLKtk^jY+ae;2xtKZPsx95ldG{)w7~+rxv$bQ(JQsGBF*k2{QB7$-i0 zMTH$MQTYkuPV-8qsFo?(J zyc8dFWvhO4{Ur z2-hA2JnWoluj1kS1BMg9^6y5GC&{Y8h5ixdBwV5+z8%F`xra& zZ3Q~>YEaL1@B>&`u*9KrLm)lI`_4}?#F+tU*wjbD2;LqLSbDz*Q zpvOAl`50KU{isF>A*V?&9E|S_$k=6voijQmbN&{DhsSWJ?Wq37w4*YK{7A%JTAZ+m z{c)R^5%}6QCvmUY9-ZQvC|Ic%5#q5URwps$5YxAwu^BnEkR%rs_y5S>1a ztUGV_RD#kQ%Gz)`pDNlONrXX$Yb`$NoMkWMMg4)@1=6Rm+W!c7FcbDbNw|P~l3J$j z?`NRLP<0sH{xN=-X+IMh+{+p!HciE@&%|yFvQHRb(ARz1Z>XGBMe|j7`d-hlpbu(2 zWmV{hC`ep z$+tm+t!QcNgOTeiJ7HCHPO~RqnHHuI)V#iAqyHP)=tKWr5865zCK~8O_wCtFoR%mL zrd8Pb!9QVMv@o;$>2_!rZ0@kXw42}gp9qv`{`nzLJp|;ToAwh^J=6XyA>m#EePs9E zP=vSyfiS?s7TGPo0>22pybq5x**gwm36sh`)BZlt7P9{Z#`VZyhb>_C6DTt+@-#Gn z=Dlp03GH*{Ug?A`X<`4utKmbiKX+5NX!mK+?pe2prm-lgH&4s$+OIM0nfCvPsZm2k z=g^Zo@F4lDV0_q3uBkhqXag<35r$N^Y!k#879I6ZRE%HtIi}{Yo_@~F-O8IC5(?k9 z4pLL6k*mPe324Bmm6mv;eRBx=fSL9mxUaPO3vy)Hc zO(#0%?W0bcQpR|Zg@3RGiOCk@!|{H7(*AG_!vbnZNnpL8Q_~Up#AnGf>!TxR1OGx09YH!EzDx6GpMC@r_`VuO z`eK;CA7Pyes=mtp0WZ6E^V)zbClqPo*^L}uHOc;o<~Ar%H`!kf7h16)eq_&Kx%dy# z;txmXuon2gcHpz^{}(3L9=O_Jp8nb3+tB;K!$~$=6=~{*G*i;~2rRfy4es@TNCoKxz|K<#wgB+%7Eu2WD$u#Ew#zxIg#* zY5P-t*QiN^pj-pn#n*#AKou+4@nUamYT?Pm9`)9c1Cs;eeh8^Ac3aw30!Ov=1 zozv~Npg*)pKQP&p?|-4Sje}ShA^WAFBgCL+_o=k5>2?R90@fq^PH`j=_{E@W{u+KU z8vbi*BD$j+zSInkcYBBRj+uBVbr7rH?I7$dHf%O~VX{+wt`5W_dtQ!={7Tg?@1q+T zu_cTIu`#@9m=5lPaI8H_O@OVFen!}e94UuOU>0Dl=UMp03rK|2R}e|bEXaL7Y|~19 z(HyZY!1-4VcE0^2#<27j=lmY$LigWW`7^d=VSJ*uTj-ys=pXX5hRN$x<0qJM^`N$PjqNpA@z1jF+x--AviE~Y(Ng*fIv29v zx4UyM;tYXVbPPKgh@L)#;5F@k8b5yQMm!g>pTsYXk>%oKrhP3{ zO+Uf>gZBQJHLdRy(fcJ9mvi=#n)X%9!A$!$Wd(F!{iT{iAW5J#RUQmp+gi+HWRj(1JWS!7~_E5>|X>5s8d*rKf39l#=g+= z`|v2a@J=G4`_@f}#{}^26_7ki_SZm_MK*|^-^SzrS1-B_z#7A<#Dn;qLtG<+&Z2$b z^pA1q=gEhO=^s}>MC=A<{b!w1Z-F=LN+P|8eNt1m*LtnAEHV*Rt7b_%-cO4HA45Zr zA4ZShG{MKuDolLYiwXFaOUht9<_@BFFv2`^BYCO5ZqX80ZT~^p_uo>xeP2d_ma$BP zo%8MABc_H?a)CcQDF{j$^nD4f{`vOzLNHRg*2&c+lI1a57}wsrrximzWKpnN(_9!o zVVH#Dbq~pwR>ardz!AY`+IKflcU$dWu(zJRQyZAky}J*9ulpiyF$q;U3HwM7h`^2t zoy8waE8Qf;U|O2^GugW2z#nk|_rb;vOtKiXdWL;A=HGrzr<{V~voxz9^V_gW&gpBI z0Z#bO2wnpVL=4A0a8x$iN8qJIXYLC3k-5I%cwR|)B92D;{SDw5Za6wcMIi>OdWuD5 z4fY98le($th<)#j5JfcL(}Qq#ED!_vdi4XrBz+SD0e`sV1~47_`3ADE-jDqz*gCd| z2=62l@clOwn&yzr7w&>bsq~{@dnAIezs1jw?1orEA07fCgy^R6&uThE+r^pooezd^$<;g918gqi2e?*fKU%dLn)J3BIuf`U%6e|rVB^ICN1PN=w0 z51XXAvPQ=vHFs?g?;NT9zjQ)}TI~;APYx&eb!d2x>_&hJ506};YIwJm4DVz$ymy(0 z_jL@9mOE3O@|CM&anQ?Vmv3?vElh%xHWy;m{AnJrmjKXt35x={D=!z-g9Q$`y z5DTHuRd9w|FWBpx%^&B{zeF?V&qjBPSe6uKlt5~8Jv^nQivn}7`JmD7j_ zj7bNDk=%hAj&3OMP>XQ>Ci|VDU92s14`@AC&hx{?d8XqTP4>y6e+Y$|w10I(x;=`Z zYC&JnB0*mt+(XtmL0_K-!2p|&-3SjQD@siwkOe4w_=W2t(FI~mF=(hXOp1istC$m$ z5p5n=Nw^z<1@;3s3_=_{OtAwEvuKUsCz$5|Y z6px4{_hV%sazwHm{LhC772?%P#!uGBsviM;E-Up&` zdC32^g+tO1V|;7nF}`^Dq-l)*+hhTa5sc?f#DRiV50ocrUV*QJ0P|8inU1~G{=W`O zLS*^|4<#Es;QuOC1XBEZ#DQ>=1wl4VHxrA4H{K)D?jE)3cve)4aBiV%l^(yYy)KGH ze$pZzDkc#IQnh)8?mvwp>T%`>KUCcNVF6(~FrCi2iK=j5ZjP!;oeNhRNUG8}SXi=A z%S<}Xg>Ky!LdZGy>!)r&uzSY5VqK<6w#@Q*xr0wogd9^0cSP>&yN z*zZM&G9dvY)f&|>SJYXmu41pdxg->99^M(G_14e~H}RtC@e72Q7owTsEbryXgHem$ zVTSS^n>xB#ejx_)!qIHt(a?is8IysT9LT__9%*4z* zdc%HF^XJ%iPY*eZ_cgU*P95h0`<6mq-`A#fApR2wi4D)2hbcc9o`7jha}GF*j~v>MnQpMZ2E5LuHh+d_zLO&MI}m1m zLiqgS1irpwJ*s2NU7sA*_Z?ww1cC^2jG_nFCD#mBUH9G-$sI0{M3tPQj+8*th9OFD zlRpp4M4)OPk2A=Bx%(iWB$(jTL*=|_@2ocPy2P6X+axqfA2I&m-WItxiA0TAqU#1|m)ziF*SKQ*$CG z96~LP_B+r{!>yv+cX#)pyMTBb!_=!qeggI60c`9+arUhxE<}h0;X*X#_%J92)R{vh zYg)mS-WKW%Q)b3^ypYNlvV()xNOp9nh5tdeF>C$Ecz)R0zA>?L8?pwD^p59p*&*a} zD`p9lY2rGO`E2D%H+P`;8jmM;?u23$T+YbWCEk@z*jz1h>xU3hYG{7jFle-0d0>Lvhl$*BVq$4zr&kq5tF|pk93nj za{TJvLi>_aUedD$QR<-L0T!9j5V4q4Ck^t;svW`^QAqpD`GwI zD_3vb)V1l-fUPXgBz9umF{Y4IRZf$4H7!HC@f3QobwfH}L(7u6{?t%Ov_@CMg1;LX3&iq@s7D*<2=3OzvvAY$+&p()=X~2}PZ?E>>{E2`f7$ zvgy9^)fQ*-wFXkjG<9<#wZmHbvP%6 zmRxGWDso%F4nSq#jc5w&U@)88k;n}MVpg%u+u~cnQ=%QY6fYgf{uG9hOm$&Qu_crk zmoerQx645^soZE{Wa-9nqylyYF8W0p1Mw-WVyyoiCkW+3@l-5eX5WgzI-&D%nqcs zF!vfCg+9tkZYdW?=i{T}kX6j%Qn{`TP`mrLY~wY$p|q%v-)%?+khQVcfRwSI|Mn7L z6pVukW~uK^Eb(Ra*jQ?GU_FUrIeSRHolJ}+lIg-O5GU3rX-`56JvKv4?-YDI$eQXv zzcFX3@7Wwg)Cd;Pgq2I>$49u^UY=8;;zw7kMT&Oh7+-@F+}q_6j|Ebbfvu5Y<_;C` z6pSLq#$su!YjiD?Wo~5BVJ#u11zePn4l%A{)iv6Km^M?=!`_M)RDDdOXtA{~le*FY@V!2%Au)v@d-SbKCaOCb#j?Im{(U`w^O z4QLC<;SKsWX}a~6Vzj>|qTe=FLid0|*##A*MpBu4ygvnruJ$?|E^C$sjxNZ=AlQ$^ zmMcC1n?pw&sx{Chw)^>fc93_-Y#a%)oDB$sR>Wd*EtvN`p ztG9-Ly$!5W>#^I*52te0+AUk+Yd3G)7~2GM!nUh=Vl=bYV~x5Sj7u&FWSS#E#tIZ& zx}nT9uojNyM_?$7Qv z2;yL(hfR#?Vi9399mtON!_tL?qH#OZhAg0h0&&EAvOZRhL@!y|pp-GQtjB(?xTY#0 zK;O}UX&DS{ff!}cHiyUSF``;`sJ&|?I=z;zcCvC|^13$1ccceWY!s--QJ1p$VI4_F zwPz#J&WzKAD%Kzyaw}F6ZR^T+4L}g52h*t>raTB{MPqs9jgWY-9WIypY3-bM37eyY z-H~jWu+Jwlsd_U%wfU;wh6pxjS((+J9!Te)TjAOs%~}*MB!Ij;QMHjokER>7IRqd~WP*8C_>h`2e8v78#ZUC4T zmvmKBI@+XWQH#>S!U~QSX)h6TR!QH0>0%w3M@DyKEQ5kW0&eGEj*JWBL}Q*>D;dC& z!zOb$eU=WSC$Pf$v)K`gu1w0JdQoXT*xHIQIQ3xLNp2?*urv-;WOP8^k5W^H%}#X5 zrfd&iP6Yvq%ZZ3;w`@sTaH#FD;8V{GO(uNWMmeMlT}OX$gWJ}aDN#y4BejL*&GE~ zYO!VP3C!ntw_t6{?UE~O^JuD5xKCHERQ}VIE7RGPD;Fe2v!lB*+3|eKD41~`wusaP zD_5>d52XvMEFwzWSOr_H1;a$A&u<7klV^eS%rb;i+$BUiytci7>X*h)mb0&HxtI#- z!Ld=lgz++n9|vZ0qmq;KY>nICPxS1pN$?NB{*{hl*A49R6SdPc?O%o70H-p^-irQv zvfPo+UDA%wm@T&JWyT=23C}_Hn;w&_+N{^gD}}pBUG>*RvMe@%jm`47b=`OxPN>vQ z_;ELFR$Ct4#=^cWZ2iey@%*k#KbR{qYVzsB1_4$Ww+2Z)vv7GK^Y8!zglP@PEo9lD ziCOmq5EQkat=JG#LGD9ZgziFzZ+h z%g49~=trO)ewePjC&olfPLM{aH6hySL#DK3*sP?n7A#hlM@pY!IwF+{iv;&M${3Mo zyth4$Rm6UdUKWnY#ArNGATJTc8{h`U35baC(eZq0pp6N#E_)XQFXU6XLS-q231IhH z+1asn$5->kp~F}kITi;(`>%|QHu8=^){G@6Xo%3l=21y=ayMJ++FwHI3N}T`G1|gv zQarw$i~!r)gv(91;IWL!jUfEHW7#oQdaT{-`GO{cxTanGDGSa93Q}-&7%RU6R*TU= z>&jv5@L3ve%5F;S;7Eof#~Wx{A(rUD$ZUyn4ofpwrCm^!E^W>0obSG zl{!@x7xlcD3>vF-T}8=&!-WC%PXtcLn#<~a$prTA-w9wVx)4wTUHoe7yxP7VMu=_MHRFTW#r2Ycx?A{J!2&!E!Ftbz zGA+EQ{kjOQ%N5{v+yO6p95+a3E!>%mTY3>SKo}%WI@*SyN!Q3!yUrP4A7vCl(2{BQ zG{$k9a0ur|q2gtQd$c~Pi5^52M{s1niC>f~H#W+txDgH!rAN?xuezs4M#4jn1wor7 z$S;@)a5Z-}$C0D-XgxOe9i_o=<(KTz2@0Mhh7B>GLM>T~ra>%Kc5S8Fz>XA!NrKiI zMVK&|#Gu!ZYC~g5W=F;|qpV|RN68dY$iiwNYCk$5BPEQrHI)GJTt+RhT@REkVKc}C zd_3BM7;wp}Rvs#&?RbmD6j5sh(e{#1REQSPOCpye58TH17}lklF6C+=F{No@Xwbs| zVVMY|LywJ6lmOiePUtQxKUcW3;!4hvF1D~pf%%k;AcNrBkoW~Q8j=3IBR&{U48pS} zyvWp)HX4JH9cV1rUx0+6j3!2QB&6o!KyEJ8PvNkv$YZS3MKWz~yJ|};-h0)? zHJf_?Wyhr8jqsTbXU8e1TG#!Bh+znJbh&ydq`^#CK8V6HT0)wlb3#GdFr7~nrN-or>(uK zL9lfGiTum3$kGLOK#0V@W1JECcAHP*9n@k(_bGw9;;2y$G~GW9`fG=q6%b^c7J<*ha%gEX|uB3yss5)U+VIC{9<2W3@{JczWmEHF}8P?~cny zDF&02OmT<{G*(DwQXCef7-)8!j0l06qt*vU5|EOE zxkM7`Eu2n9jk9D2*1nj$jydRYaK*>jMkm!sED|iF7;oY*-*vG$WF$TVu+ycf%vfO; z1_?6EkMU|mEp^$tNINKLwQR(Gk<~-Y7V$%d?pg;t&;u8nxEs(QP z*!sK-0-N9KNz=j+xQT3fK*jJ|(k(3`R>ih(l?6YRRw(7au2o3|g?jD4xRygZ| z(}8R$fF}?mzGWXWKn-p z8?v&(zQjVqk=R1~$6)muP=~(iL9R9X95X`gD`9E|lMnCl$d#z;TR3tK{f2yTLF|V#!=?97+jN-z8+Ml14VZQVLrv#;w?zsPSBB`U+SzWS`&yN#X1=v zBeLZNauIvRp&_9>MHjQOfwTY0C*sGDD`$$t!E{8sBcXPC$*DyBiZ0uNlU*r2kQ%cQ zfV;-FP|OAmDxbjFd6vbaF!Gyb)$Ow&UqScr>GQzj;AZ;W2Ej%ZH=Xo*JIEj`G@qHO*)9ScG7`~HatdDD8Cu(NeVDk<`bg>dE$d2 z_&5hS#gwyKDmd;jAq$5=3rM?AV&tb;&~Rf|nn6%Q=?!B3&;Z^zm4*hiMaR;qWNJq` zPu_XCrHU8W$R{{;ee`=_>gLltVBT0g2ye{D9Yn3NKy2*UywN3(+7cRz^biDPN>1{~ zdr}41%SEN;{VbxP^g~07#i1cYn-o<6L49q?Jwv>)i`}`H?*VZtCsNB@0tqh;ZfDBn& z^!31n69d^)>zQM17bqKOwsaN5WYA_!nl|> zrEAmr&8XU+=RzHC)67rgY{%nlq{DfFY)%TYIK|n<*%CHiQM_wx-DHajwyWg?5xe=cX;HAiZi(m^A)@8Vt&_8-T?B%W zb69Qt@|KL@Q)pS5v1ry(SH28XEA9FGPIB0|LTa^G4H1s&o;ID)Wh5pg-OV~q1=!3`?5 z@@`Tou@Y)!53t<`ldBt=hnZ*Aok`@jLu8R1mJcP9eP96Tx#$FqSQ*lTNvIx3A%ZP6 za53lVQg(tQ>AOPlrKlnx#eXCh3s0VBvDBewDyI3%=qp8Lx+kz|w+A4u1y(kANi#GE z7&)-KKvT&3r1;g=6jn8Y;oW3P>sN1E4M%by>jR~#f{_+sS1MSrL?x?-$Et*{Z2@6; zLR}|`OCNFL(u=W@G|&p%CHM(Q8CP8^Wh##V)~=uTh&X)XPeF7w3O(FH=V~&1ZVz#c z#gMs9idDV1g@UaDdeJz(7`}4~!bdPaA-hh(Q5~OjLqsdhVlWxODy)&7-C)Ro&}W`xjU za2-BxwEsz;FRMZ|le zul3W9GVl}$&74t=!88^SLdFR!?%2ih3dXCC|@rJ^Z<5NgiS6}ps^G-Lr+RBx_*t)6IQCiMd zGA?kY)?)G~O%JH6@rVxDl$?AiAnOCUP_gNh$0f8NHIkq8w%ZgVEmQ_08S3vB>*%yM;*X^- zB46{Vq_uivY&ap~kVq@g7Px0ClGIF)oU^ECtoChjsipvAz&S@<#SS(y6)sNdrPj0h z88|p&0T~ngM-_|hWzxYEilP}&cNxI&7l(V)7uCHjPG_$CarxMRBX;?+xJ+AAI!Tiy z?@E zXek1t9x4w&wz_Se7Y6N35NsLL@whozNQ@}&Bc%^K+T<*3!$DSPpZmP_B?^lWaEJ=s zcpf9Fm#QSrY*FDvQk8uCuny76Z>dnOR(XBiDx^AqeMx0ehwH)PMpNb(?6(B*)MLBn zA^;1wG)vbg+;XI^z)?R0eTL5w!^nx4#$mRMPbzdoXeTCN0QY4@u z%Z-Ba-3FU;aDi=owp+M)n2A7!rwox)iKj{zI&i-*s|aeZw&Mq4iMrs}*Aoa=@R z@w8GZF^3?!fmsI>xruonDP1-2lI|GjQXU5~eL@~_WJi7&IS^Y)F7|*VM~)A1c9u_P zB0$))0N5)s#wVBfOfVhON+Z|h3pz|b+ATUbBE4ZHhXXm5pF=b9)(D^Da2-~0VTd)K zJS1tEp|g`1G_Q9V;84xJke=nZZJ=106Wkaq4p%CslRyj7BO8EEEJgSu=e5AP!)aO` z>mWtri_?f*o3_O+jcw%#Aui%IT)_D*-J#6PYUNVu9IW7kW-BvdB-O!T5+F#HBhqBV z>CiNJ*4+CaEJlnB_$3>gG`=9yhPZ~u(vNc!jn&RqRT>a=W|I@C6zG3gMX7yO9 zjq&*UE@V{|7AA7wvox)JTmghSQjg*Ej1*TyA+@)v9AspD2sj_|tUD}DY~&-_rhT9_ zILNnd1)4|Yf>(CGdJMwV$S@RS3uHY2RO$&CAl;_IHC0$0lUa-ckZmlsg4Z)`8R_DS zZpJpQD$#s(+eMVBxFSr1~w+pslq;&x8VQX9T_SBqYuXOh=Hc85EDSB3q zDdhNiI4s%dEY?#O;fmavu?gLZ2f^XXAAn+#<#ctYOfL2D5ZCT+$jureg3!k!-25iW_kM%kj3Fm{d0nDo*E#@s|b2v+6d6Cqjx59aM6I#a{p zQ{iTrl=P*ch|d6TO%=v-qb$A!k=LqAy50so^)&n7u)b&&k;%iox09j|WW-NqR!Q-cWvID+FK`Y$m;R|F!C4i=*vnu1zszCk@6g5UHB9L@Ga6zBo*=7lKddG-9_>qN}67hdRE&FD~b1`_x3ZR?{Q)PlC8Fe~1hqQDx}MNzfyf&%Ql=xR>bs@O!v zx>0?`pXe>0F4d0&pT-tMl`eK%cR#Xj#yp@_F@UH$_dZ*dcDM+k11A^=j_KmW8L~5g zjAbw~5mD(JAH(4(OFSQE>k`?PtH5tSy@yYIGqA8)TIw3m}fv z@h;7?P<%)XJ_ZV32x78vE$T7}weLiyz)F3TY9?ILF?H)_-LS4ww<@hdCKEXZ%Ej8F z^A48^3m$*13pof^Tn>MU^j4B(8kqxy;a~}gjV{U<3r4*ebZ@x866prT{gs>sVsOmO zr4___JeCj#M96frclKdqEc$DOJ}3o33+HvoHv{@SNgR5_CRNV*$>Gn4AIgs- zQBDpi!IASmjhqJL@v69@m(#r{6n{dYI&?KI1SUDN3VD_16($qPbIl7@9!ti`OyS~H z7|!4n#oif->l1KuUK*F?2o`zu*p0Dt5qHITjSpr@6xr-z{r$A1A0-zMd*-yY9+~Fdn>l_Aqr^>j$(`CPBDrta0k?$T&3cn^VWfgi?i*S4&3*o z`*VpLUnPt+QJ0W05Hc+Sb>4iz1&BPMV8-B!LgdYzRLVgs00|2&q*1FUGMujB&lWf~ptD&b+60CHzNSp&EWi<)bbbJ-?n=2JR&>2=cbuO?v2*wK?Mhgo zK~i=o7CS;yL$)n#2TC2Dbj2)_DG@{v?4(7D*VPBxRj5X!o-u(rM1J6JpUbI|YR>kH9IzPz1D%@*bK&TzZ@`LMphT>yDoN(VTH${h`|L&ub z{D7p#l;$DAMSEnltL2K2Y7!CEW0L|=suFYb7P4boIj{@!ZtZs0zlB_-9LlVPyQ)Z6 zB||Q{h^4E0*(jV_rTIN3KM-8!^C(I@ym*gTGmpd~6gP-YMvcPy=So+1LM{<&s8V!U za3xH;5I2bpD^?bE0N$XP)f78Lv8?(PB9pJcAbZN#GL?M|ij9b4vnJd~+q(HzRjjZ` zEeWPhv474FX&PTSI(~)(#!Ry|<_8bO$PyKo`r-*U~}i2^n(?vIxgKZ=aK?(IO(hO^^zQAdzYE3sGmuCBJb zURb*GnS!?E?tzP=vB9V$W>AVbXPUCh*KO4ob3#)}HgQ&=#OVX^&R!ppRu@01kQkA3 zljCz>{-C%$u^`1>E8qxJ69>I83^Dg9o)slV;n;mphHWOv_n8o_}Z`7rgc`H z5-{NICKCCag0i<~HBRPkLin>hoy%mqOs)>Wrs^S*biH4M0wSc4ouRekSsmNWfO%)S zv{ba-{g=BP5DHjyF@;=-dn9Omirjs00m4?B8qK;qyMEgsu(K?~?Y6aUcWu z!v2GZrR)quqqy~9J-cI}FT>8X3HBpB!B&hmC#*`#Xdgbv=Sh3R%d$QOHsye_C?-f{2Meh_ z#T$?6!An>H*L-Z1Q~9WK9-E~LraYNymy;mSI9WVR$_u;bhMJt%OKYkAJ`^;0Egx5q zHjrxj$$N)t3umzLr^_J~mGa?Q_8)OBIRwtAd$$DpuhsAl_QH-3{3DWMXr^R?QHt(B zsF*XI7_4HgMdxIYZ7AG-Ac7d>vZT-_*w{6D-)g>IE7-7+O;_AC#kt6lE-*<{2bUk8 z<`Z>#9e*kiWGl|Jkivso(V$}ugO#omnaV4!VhYj^vXy|rloUJ)S`%%!rX)cYaQ6q3 zVtm*3a0-`i@kJq2i8lXrH2Lz`A~%JdI5thnX)oPc#_<9yN7wgkUcC+J|8efV#SjeBr74)hjT+gBcD_T{XkT&iEg5PKF({&8#4k@hi}#EeqJ-V zi>L-1Z1%?3YE~1utm`rTv?5utswgLkVIfsTjB<9@ZS%4zyD7DU(tfYPW!H2hd0SSX zx;}aw_LaoM1Cav<@=L2ES@GZ@7TF5Y-vSy4a=3Xg^-zn4HZW1Q5etIcr?i_L=3wgM8Y~1ZuA?$g;I2ap(3qNGz$|8 z>r}>MPRwz{Ho;0=$9p6`9u#PiP!cu}0D1*t7EJyhqqn>bf6LFKP ze+O79QrcMAqCNW%uCff~2+eHaj77D}A!RqHl0%be7@^*DUe6-_#Y{%iWemD(5aC$n z(jX>HxxeG>VE~oFkRqBjbH-nN>f@~^(BvMJGo-JjHBiLcWSJTVjhPyY`9;=0Jv; z5#BSx3)0>O9)RJD?#PIH#cN*~!o#>xB$_R+9=i54Z)~~i+5{z(UUmqx1cY27L#qdh z7UkYT4j^7w?%fYWANA36ODtRNW{Rjq2p)9_uRORz%o6?5FF`qma)C!#$S*ySRz(5t!a$*vMso}+c6mkf91tbWLcEX&kv2hd_W}u;l9Vz_ zIi-w9lfoJH+$$jHhP|O&c6^LNOyZm_ft+ftfq)Yp$RwQsh|=BXvM2&GM%;?4gYo{E z4n?c`q-!-kMcZ+9px9TK`D=GvtI(8snno$oEEC^_bN~U@a)&s5K{um-pLHyuYP@2v z$e%R>B&dB8$agvH?>z|k86mq57F#?woVS*7vN^Jvh%|FA;F8C_4FmwI1TOC@GUyk^F1>`6KIJ3EnvD+|vMf*MCB$c=`}o<#1hxXLb5y98G8 z2+X66RwXek+H^|xSg)bsoQ=p(B!odVp%5-Z^ip7nw!b_!ip@TD%H(V-AuZpYO;7`z z^X}DB>%`qs@Ly8m3>dg6F*%*rTT4+)%#7Sr?*X__@yH{N9I<XSfV==hR5z{y`MP16bT9Z`fmoy# zqpg0Nbm8*6qSC_ya57lH{}F%-m}2q}u8Gx*QI)`Uny6N(kwHI9!UDC3=wY_z5%fd`yd^B~*Pzr$<=_I};a>?OKb}sK& z*s-K#;ZV!M%}iUhj~gS+$UI;A)!0%$1pSWfDiSgHF9evnHiM?W_6EtLEqB{OFF`F> zbM>)Ns$3j&TMOrF^=y*03xa7k!txzLSsjS7Mo4ZmcQ)`_@1+**Diz_L#iN$sBiN@W zMu%|aFga*UtG<+fD|>A~tG|+%XI6EwJrM34ol&2Gj}(S3@Gu&K7W(dexMV2N_L9hH zFbolkPzDEHoUU7pCzLd^kW5Jl;aZoV>wu`Vx58;aKKr;L4vj{*C6Om+IiFb!ekO{k zoPC_)h@b)IC1`7FD|)<(p^iDa>${K{gSJEX(>6s0lNh^q%iU^}6N#$W-^~A%WOs(x zD!B?tGl?NDs+$X2>_>1CHzz_Mf-HaVo6SJDMJtiURJWziR$7Fr6;g~V1Cjb@jV?71 zU8sj)-;FAQ9>Ym8<>7178E;%Y0p*JMgyssM&X6Lc@e?RQ%5}{uw_52Jx{46a8U#{W z$XUfESK8>PY8S$PI{}8s4&B~uTe~)0>i&ipdT?&xw^tVeTZ4rZR7UmqCG}>E58g1MiK}R3bqkKY|&|4e=C7p}yBzFLKc0E=AAA07@nZ*N$mb)V^vWEJ! z=4RxEBo>Z>Akti&0RqD+V#a8~4wx;5gGXTk7|Il2J|JY1!ce~mUB4AG(BfA{C3nBK zEtj4^a?&djBjYJD?B;P(y1eSZB;%t|&20}-Pxp$m;eKr(+6FV8P!Lcp6$Mgy3(M8D z6%;l_N<@{%E8F7KQmLFIBO&?xSTYwQXDHvOz<;eA#x+FCfGa2*MPA2sRv?}L+e|QH zwJ1ycA0x3k9{=K44lUA)107ZFk(#jtj>)`o3*6yMB=sY6Xx$)9IAX4(J3@1Ae%_;> zPzVhzy^E3E;MX$9>un9@;McQ?*8#wPL8mYTHPxdF(f0f>&cWk;^eh4#X>-cQ zyGty$L53(!jDb9f{v}P;qrVkLdpfa+aO)3=hJc`6d$#f=x z(`A&BELgh;p>|D$e*CwkuEWnFrxOGtlr`F=Amw)p-5JAIGLy5j^jolwxJIQ6ornUZ zWHV#%kqpvVy`uf5<_kQ8h6@%VNDtSzh$Ib^(JW`FOl;sU*u$g*61{3Nwh~_R1`c5j z3|yJWjl#PeOQ$EJ&$3jFvqJ1MbnoMH6U!mAR0Q-;4$z5g8kWNP?OKalhT84RibzFJ z`~(g)wt5cBAQUl&1LAPB=Z5f?O2BhH6wfCRp~&B~A+x_q<<%23W8O=YU;E{88`BQz zQ+U9Hj1CA!n_w4YSi?dQXF;$~>Z(7;GaT$DL;$3Cm%3DaTjDIVo3cF=wv_4>H#i2; z%7GGK!7nV6#7=;vK{sDGxD*DI-BsDCxXS9vUxvF>i}r-wCCAq-ahDsZ19TM(;wy%5 zEvSlo689Ah`0p7{RBpNAF|t)EoI-ADk-w%wDiPuIBz>P3xV+9D+CT0vRS{grKou2d zB=pTR6zLM9X%~cQpe037P7ti67cmGq8pMjxrk~alLWrV5RIb4sOBcB{-@Y-ivy?JG z0235M34Eqf$d19Kt+l{)ZVe~2u0Kc74H_L}&>;3L4h3rZDfd`rjSy)QO7mCHiEsE) zN77Ygk_r}8Ew&^GL~s{j5Ca6PZtPB=69rY7*~B$9!gU80u$}E~+p=OldPPik;d&8X z;!T<*RQihRP!`av_<}+tytq24gd2CDZGjDoft))gx`ucgNDmHjU=bg^%10ODc!ir7 zrDTyo-}9vb3$n_JyE}br%{LPa>8aMWAszFkSylFGMXp;@97|sUk+NMW)wL?WGO-72 z7kta6Si1Gl%%MUTZ>SOe6*?lL*~!H@uiQJ-+Ih8i6l;Z2a+U1aw45DCv(GUU z5MTOMuYSW-`dP(IM9HxiA%#3UuV_>YX`?-W`+dAb$Z<01$!N+{UUeomqr<^}0X zV1pGOOsGhN!DJg>(Bw*eQUNX>MJ|r*I36X#r!ZpdI!d#`N$OqV?y-0R$euDYH4A|1>yshoF|KiuHR~fcFqo+I-{{^f5@_C1AdzNO}-OsvHZMGgRPUF@fg3T zT%Y_rO}@KzUB9J=TWWj@{c@^muLWPuAqZaG_-mjKt7pyL7v3{%R?}tESI=s)E(7Qh zg5z}-HMV)y?7PCNXU)IeUOlU2U&E!d7KiVg)dBz>Tr;bw`!i2`e#@-I`xVt3f?YFf_9nF3iI0!bcf20QANOs|tl4*mFP%02E;}}> z<@ScytOffV>cCs3&02uopc5#8POP5pjw@swJ38px-f)+FcbMklVrm30!Uea3_XYTS zkL=eWd?viy9$q(V{yzKCSuNp-X*^(HXx((4pRdWX@0Vrwg4ZCamFdSLA%%RDp*}38!g!sHKh+1q z&ttL=F9p6l_`%rkruo?2%kbR>WKWnSN&oh(ZNADZ;_i-El;Pnpr2Xk;2(Z=oe zI$9I!K$5F<(#Px&PJbhxdBT0BxQ^D(dU^P5cxJ6yNNcBWoYfLj->jSQ%ro-&U*O$@ zk2Nkn)(LtUvlC`?te$SSn15M6J^Xnig<(xqnAb6#y!3fJ6@6Fpx(%Q2lV6^~yBde& zDQg8!d3pFR1^(8_^=uEJyDjS#Ixd?Yey{#LHvJsbORq9C_j19I1ih(s@>Z0WU9o!b zd9gz^2t2EPy)N8C>yhcLxE|LE{9Y4&+K8*JinzL_9Io^}(HeMM_Gt$?r1~V+A@jg> zv<^4S+F~CM1bLWXIO_vd;)`3<(xmxQcsd226`qLpAB*50ysD*r!tGu1nKxlgt8u(8 z4EmP5j%gPQNAkLL7}1Qd5xHxp6JEX{>$|dqH(XX)pUyk?hwKcI{MtagbHA52%ts%V z;E!G%_*3{{K$(BQN>T3T&zpX>t!5M0vMu6V{+Dgd@B;y{t(iXfEI`6q{rj{Mwne}C zU$%9e54aW(sz>oKy2%xGH}JU zN`JPkMWq1w&33hq;?E>sEd%`v`F)&qLa``+`XiV3({q@a!W^r`Q@&BcZ}z}vNcgiJ z`0)%s&N|5hKT(!{MADV|`7~L+O#$TlS+e|?r~Cq0-aGTHvix#S`6Uv*U(%s!W~GE* zBv1;P>$Nk!~) zhKu}4jpRs~dcIi({@XJ3pAJ;gc-2(${vGXh0dDI5J!RkrWj%}K`cixMXI1@j>L2G( zS=K^Km8t$tz_~x3^7l%(T93TnMqPi9@JE<_EsOWofG-20O!eOkIMsg*@If!ySJUf9 zWy+rq)R^kIq73}OGVtjj3{ySbW#Bsir+#k1_~=D@Yw>9rGZ zQ@fum1Ao2@{4}VNrh0Y(ewL;ey+br>eYZ^cbD?^g>bbZKybEv|*E8~=CuIHam+-eA zF91RwL;r%RYN~$~;8f4srC_FgCB3eb@G+@yDf)V+guh%0Jlb2)>vLu5KOU;Esoj?W zewL=cDf~RZ@S^@kdmehd6qT6jSzQL+TLzve1HTS%!oy={iS}r3M6X|zDc=G7;wRs0 z0`N06z41I*g688)O>b1sK3%4s|KjpRtzxmP=M<<)>e-UUOH-T~PYLuy+qWX-KqWLo z%1dMx*m7+vf{zNVQL-C*Jzu3q3))M9li*oLM&P#ir9GS1tnP`&H^rmNRn7Nz!Pm~Kr85-pR zQGOuGPqgvpwkVZsV@Q-AZR47wTtgc_+s5^@ix!u0c~O$fzzv2P+PVIAuBV-!YUh&e zTryg2hL2Imp>g4O+fr9_7&xD=XjC};t0_w7j}>R!yncOe46(bb*Yw25@lGE2a)(P- zaQ+QS8p0i0cV%lXHQ0)*xjT2pk(VH!9YvPF!mjuPF$SurB0a7v-|J#yrPrd>9xdrV zr%cIqS7K@U6~vXw29Y7&^H~+!h}JHrDh@JQzihpg`aj93 za6DT3Y|B(0oO=|Orzvy3dX0Aw4e;7*5M?fmw}Y) zK`=2sIfkmZ)}cxiRmE89bR5--F^*F&jqRoR+9J+88A=yfU9_(H5+S?x1w`yJGfsgp z+VZKr8k{3g_Y4|XKnL>DXGceHL4n~%%CAvW7}p0>Q8py64~Br!;GHf^ok-FSMQ4&E z?X_cw5Ut&NLg`#MUj$;X5LGCpQ+6nwtX?=p+q&{y12{jC9!v*LiEEmYQhl|4>NVN| zQV|R)hKq||;@Lr&S7tC%0PcAbCtoy5eRehP$|F#Z2tvcv90oEh8MD;1sa&v`_T~ff z4k_9u`XZ9du34JgxibpUUNZXA@1z1tEXX%l|u5Lu9iTse2;?Y!0xT zXb~yuz1&qmaw(=8`8)37R;P;mVxnX=kNG}`=p;ZezI%!o^B#=Ume6GtIO&h{Gx4jp z^_q+(-mL=;KwZ79tLld5Tzet1kY2}AB_;w9Gtig9_ z@U#ZMU4vh%!QZICbvpT54Zd9~KO*h&)c=eI|DA+;#~YS*R_}P5C7jA%tkrY8R$d?P zIU0OeE5AsC>*MXz;QDwsYjAzM${tMp)W`cf_%-N7@GSn+d>w{Af?fn4!=HjX@FUR6 zi-&0v?#09LTKR=|PSta=R$j-$#Ts14!!ix7;{hR<{GxVsJY1>4bv(p1_;#&7ha{ZF zMJ@x?&r{&-^+Y*zM^>{mJ7`)t}MeIzDI1&<857^M`H;r+zNN-%IdE zueerTum3MKxL*Gow0aifdF9FekXBx==j$3=ujd^3ptqkX4X)4Er!}}fuCJAW|7RKa zHVUT0%iC^N!U;c7{4J+Kc-^X%&*Qto|05b)AJ^j=T<>S2^oLQq`ncw4aJ~F1G`L>= z)e=tq)aj>RE3eZ}S}WhC^?yu*w`=enT0Ofo_+bsM_j8*JneyWE@5;cxQU=~218ThW zTwDe|Ea8NQCHPy3KYA6k^7?$;ufg^C`X{ZPrFi~auEnyxs+HI43C|Y=sGoX0XG=Ks zrvrayi(=Lyt-M~()f!x{=Q<6p+d*O zR7mwN$DiU48zh{@tJgoF!S(vzsKNF6KU@a>MG2>NSKyC$3cdbaE3daZOZtz!_&-g9 z>+OEB4E&oCPVKJ5-v!htUO(5$>+PN>0}iSDOYtX{gLR>Vd+~F*2G{XZ(BOJMpOA2> zzY~Aw;g4R2wDNj?LZ^w}y?8iBgX{J8NI2Dh3I5Izk6W+O%Io#ts=@Vo-c<(vL>c%G z%D|741V;T?g+J2C=yisKd+{05;Cg?ymVx(c^}h`D5^d2drod!Gi^>wmBe{F7zi z{ilm|sQ)+NPp!KLGZazkBC>fd+pKil}y9Q3gJt z!FOuq-=M+!HTZQc_<|R;tJnW%3qb|^Rd`qJ{}tX@*~caf4&CS%fDR0!>D5o{?s~pl~!J-pF1_U-p@Bkco=o)dc|9`@~_tVxk(B*FCD&L zgX{hOv4t-zFwul_5Qp^gX`<)s}fFlSf|zhoK{}P!;iJ{F|GWO zGUc14prQWj{aK>H_5R#b2L2fhuH)f|2G{H9Iv)+Fl-Tf|qZqYQkN2Tr;*z1Dl+FB4#EphJ0QrZDj{e(MuJ?Vju2(YzBDx#|VehI&$4E%Lv;GI(M zRrMT{^{n&2pOEk#5Bxh4zRd&worJ&21D_WXKMZ)_tr9-(bn(0D&t(#Rng>qjk?3`f z2Y#c3U+jUuLBf}K;Og8)rw9JDEdS24L_4ZKhb8=>GVl+TfzOrnuj=_9Sr5??y}Wcj zUx0n^77cz4J}dfH^y{rh(J#TbYvnJ+XL=F*8vLnx6rFnOQS|Puhw7x4w;n~m-g@p3 z#ksuRpVw*dYw%h1=bai{=K~LEaJ~FLX>h%~qF--6pDk1VI~x2Nd{+HAqQUk06}@}w zpCRYjiwCt1yyed;Q(mnPZ~2#(DX-RzxBS&*%B%I{Eng^8Uad24`FqNgSL@GPUY+kJ zxQegc0Aeyr=KJp#R`-COXd+WiXx z;ze-c2@3wRGI(}0{OEY=*Wi1#da@c^FJI8$`?T`=G`L>=ZVi5`R{n1^_%#|FANfVY zxD$U;OuHwc2>x0wA^wqKpN|14oX{^V;%A26B|p>K0u8=JgGc0Nk{f4eaOu`y-Q*m= zH+@|ED9!LLeC>M#T$*ED_-`a*mSUOVXQAlqwW9oa;*H^F%g^+tLg0byo_&KpD8ATUE~yDYz7F6to{0 z?axbS5P1Egcyr-@kPUvt1Hb8R0r-C&_;0rf!1EsXg>eCxF6m$OCod;(z6buD&xrCD zdEj@i5pc!-RXvYL;@apb|J*&Ie8L02FeTu_9{7yU3HZ$(cmr)N@w&qUf5~nEzuyB_ z^*`W&w=|0K|LB3g@%;k+xCcJ4QNW+`z?0Vq_zyjBRgdB`3O~>OvnU^t>srCTApJKp zJ@8$`B=9=d13&Ix1YGfXRnNy{xpkiMtsfBOH+bM3Zx(RH-&8%j9~AJkr~H|c!QbhD zKiDP8-|K;^b9jH}f!|8Z7_Wys@E^Wgz(3=G&y@@1X%GBM=Zo?`@W7p$1^j0o_%FXH z;4^ITuEu+xe9(eQ1MEQ?<;HxA<`iuvD{ij6v!yfqON%-US6A%2xGX=b@lJn;E5MEPb% zyes^l-y*&r?}3kR7Vrx^@ZD0rL_P3dNIBl+fxqV@QO_$p@b{h};5$9=YyL{WZ}z}H zE)|5gdEmc(xhVfG4?H3H_QyPMRsK^R_@j4-dcN*~tMcFTz`t~-DF1s8T$Q&Y;&+AT zyT-)#^E_}>zSRRiF(%5t!UI?3ukyhEos5Wh-Qt0(@_*rh|8Yc=r}NtMQvForKkR|; zl>G239=Iz1bq{>6q=!Fx;HtbM=SQ`B`4LtiU&U9Zv_0u9(dcg1^m|@_yI|8&wJpnm-@^}Ql2P$ zc1XSM91mR8bFl~hwo632>pbxPIaR=WJn$Xo2>5^puF8*i;5QA6^0#{67oIENcX{CF z{(rje0z8WAYXkTOcXwTaySoJ~gaE?N*>}#|k)4@r(pKWj$d?3&uOokm^OtR>e!g|d~rc2223Nq*U1{37|D=Hk!DZ?+bHOa2k-Jz7lpzWZ%=6YSJap2s84 zhwIY}2YkgkwQ>Uc9KDpL6C-1RC>W7nS{dn?o?WKMtxz@XXx5S-vxgO#D>k_%v z-y~mKOgwch=EHSVPI-EdK!PbVMUS$q+Bx-{bY`F71&i}RDymikNNPxDC5 z8*GS?whSMdC4115idYq8ppj7h<>mbiP`@ zkm}20d5@E8{dw|+2PFS9xz_vOJVNJN7w-!>$+f;9`5pY+p#{0twZV`ikqH0Mq5I?jxQ(kvyumSufA?lcz;aQ}RcLrM@lsO^p8- z^4y1{ehPW)4&pn=PvSiP0Qn~=_gp7mf%DZ+@{@Dr1!3eBE{Ojm_rvvC(!}z89iM%t z<#}52JzK>KlfT4qpfq`bWK!RjT>yMD98!Gks`x?5u zuW&v7it6)>mHIeIkk8v7btTC)zXExJoKpWQxz=|jUlv*Fr;(q-@q7;XBDY~@ z+DoqWN6BycO8rZ6t^bRB(`czrg!`;IK3boOJfBzUOOa<;EMAd(;WcsneHP8v`fgOe zHKNo9k!!vFo{Q$3+$8mfE%m3#=MI8CeuP}>&ybfrBK7adwf-}CQXGd02hJp~ zT1oQPk!zn@$sd=J`p4vXcZt6ze>+wDD|z@IEpWaSDYblG$N4MXmlIe#Ir;D9<@I^U zXY~*-O}-e%$x7tgcSwC>@|-x{bt9kBKo_MMFMn9-bCW-*AYPcfCf*1A$s=u&`o`o- zwu`qWZ+b_(5Bb>D;zP)@V7|fR{y1-2P5$>F$=OWaJd(KHhtu)V@GMM;8)LN4{;h zcmeV`mBovb>)%bNNv{1jAkT48aypZ1eNXaSc)y!OuJtp>^}Jy{xz=wZPd`igIZv)X zr@l&FrM}d^C)fH<*e!R$w@`N=y&mgY8OOgki6faL67wc%}$>-sI)CqE3FIULjzsv7V_sJJW5PwGgrLlOV ztn#SKrJp~HPp&!1$WvpS_4i3NM?b%jpX%e__)vvhKmSvcymeFQuRHmgU&UvWN5FlC z1>}`yO8pY@w7-aNB2S%A{0e#QG2*YutHYyalke*|q=cs<&j>G09v@zZyysZS?Mhw& z_2bC<^p*P63OJA<{rYeJ{fu3j*^p?T#qy5$u%c{JY=!t zbRgI5e-OFmj3QrHMRHb=>;Ar%Tyu_+Pv{~!cgVH=G5NI-QvaP?>m%oo@5gW+-0@r< zO`fMG*ZS<_%Qs4WWpb^rL7p7vqg~05;JDC-{AeV}pGvOhOF`tTald{Wxz_I^-@8om zZ<1^M1M*6Jr2YrFUI#_N@lwaL1dj6=$hAHPd9w48Ux8eY&$Y<)c-4r!a5Ks2L9WNu zVdR=Kj(q1K$yrTa7w6%p$yee&(gSk++~Zqv{k&orx$akS@&2acsh@jHO|Cf^$rl7k z|0T)wbBqjsUJkHpL-ld{!4GEUqG&(dt6R_d$82+C)dwC9w*<5 zBdE1jx-;`YI z+mc`HDD@-B^>d69$>*Jy`e1VX9OEkT1(l@!5V?NN@D%w(oX^}R*UvpZBOieCaQ#DG zI?f64z8@!#%wJtUPnd-K6V9uh|3OIjr1kpw#xmrZQ<;25F?oGk^4R;uyO2kpAwHSB z8t$iUA^+u=)L$gm&m~?b&rw9`-;!&682O_)QXe<3JnA^;=Ms~WZ^CgrH@VgqCa;3y zLv?cfd3rta=l!LRuH;(Zhur6~)K4MbiSwc$@@2TszKLAxcabkSBKeod_47YB$xGup z_cghG4(f06sJJhb1oxSA{Ixy}dFXBF$B$g=E0K>&FZCVBwZ1#~_tH{7hg?4&wU|6R z&VLS&YyAoG^GPKCIl10%c}HIS7pae)UmkUQ^mESf$=6~3%1Hh=vb;Vgd3M|%s6sxc zr_|RXPYLft9&5SO_aI+;MtmCitpM>k?1FESL%dUngZ$KV~^)i5b?E50q$c&EG)0nan}2IG07j} z^=ZiUx;{I(-mfb{{&d?- z5I;oz5ZnKG@=|G}{uX&h+>dxhuK91sqq!@>nS5|QsOv@Rqml2}EcIS;tV2(ADZ`VyA<^5m1QNPP=( z&2LX0hWcUTT0f5b#vhWum|W{ulOLNe^(V+5;X3OAdAmeX|CBt{2=TwkBc>AnM(&U6 zg=CnIj%S={Qtu_Nj+~O@U2#58fjmzs$@!IBk0-s!Ki8G|5#)MbYbv?^++hK^zK^US zFNF7to#guSf&=89>eA0`a=kzHoLqC>k`Ki7XT;)?r{k>mPhybwNg{Q=lZwtxwd}$52o-b`9&w%au2zj?& z(&tU`q65UAl53xTk!znn$hFTHB_vPRm-d;6Tt6?HgS=S>d3^!$pRL8qlIwB>l25`o zG$Ggi+mk=NB>COQ%i%g`1o<@|sh>pt9yxQ!Z{fOTCAs#0fc!VSf1M-O`dj4XCP_cf z$aQ%?kn8e(A-|hka$=X1M_rG)yh+J*dDD~k!TC&H@_kn&w+Q)P_&HQb@`;tCz9#v- z?&8hKn`8XDlKaP%`aa}i`-@K?*ZS$?oySZ4I`ZqM#rKd0V!aZ>r2;r67s&Yq&^M#`32&I$RpyoSBm_P9a3MHTXf7vee1IPo> z&j|9+J5oQ7TGFdhH>n6H;S zUstIwN!}UbP=Wj^&i`7H>wV@98uaNuWa|?IKb$|az9vl0YkDuh}IQK{>&*PG7|Cz{jyU9iV3Fq6z$#vYSlfPZ) z37_hc-wG6ON3Pe2!^uw%lKOGv-J**xCm*<9d_DO{9Jlw7YyTI>qpXpfKgcuSefA-_ zuCG7Ib$vxD;|ZU1z5IjsqnPA@`K2yBx&EEFY~=m1-V2j!KUK)}=czTxr{Ml@GxD}G zq@TXz)$nt>A>?7WzMe>~{RESr!2O4ne7BKnKj+C?<9+%n`R5?Xc}Lz6?~h^R zYi>(@!m{$H>#J=Pd7hGdz-;j>z5 zg7H~T-fET9ZzKPBUOa@n?n&|Mo^x6*KsaMo_L<*G$P-*M7$+=ogCsF$u)lnd6c74Kbk!6aPcMNgENY+CVvOtLay_@ zN}hJ9RTz{`84Y^*A=OZtR_uoR~A1Xv?z$@>b2I zzA3rpw;`WAN9u=@>*oiikn4T>S>%NpO3p5Fy>D}zT<_bTBd^;-a$b__ef#(1196^{ ztfIV5$2oohd7hCxf?MEBdC5EAe5NFM8?2Yg#b1#3 z#&zF2@;5=_yj63_2_o0+c`3Q>j~mH# zKiW&47~_13y!HW^?>%xooF6Xg5jNd6;o zz25(md=>6LMyxEa)A85(nB>V(pM_knqw|o*Tr0U%$@Ts~BXYez(2D#mo)0D0`x0Zx z_vV!OE+^Of1MA5XVn01YuJ<1nN9DQ2#5r?nhn8XT+BLiR8K;%_Z0UXbJh`Ns@DrT=%1sHsOuKg4zUsh21s6?*k$+gM#Jh?f!_SuPC&y)L-Yd^!u{W42GQ^@tY zY!-QrE>gdSTv1)VT(7f!koQY1eWt|mPuII1=d+Nv zYA*E!$u++Od08AE8j$PxXIpZ;j_XXGs)@{Z3b~&5&L`LFxTWN4vHXY0^*Zhpd7a%d z-}~hH`KV{)MRC0ly}GAD>I=zmw~A zStMLf=z7U>P3mKl>vdTga^1hOk?a0ah+MbxvgE!KWxmzP^*XB!xn5^=B|nozat4v> z`Qb!zJ>Q!_zM+rgtRmO?P2~4SO8sea9f#}WdVUy6p0ADMgpunwN3J2?*Y&06hq1}O z;y!Xlay{S6NnT}(0E`rpZC;=E!bxt<^HBv0N} z@~@KX`QbxyJwJR&z6aOcQEN(`j-k{;@>YeVz6QCTA2uM5o-#Az$5F{3N*_?(1G7U$RQ-?~)IR zCH|6JbH0%Oil2`}s3ot{_2t({p2sBDaY#h2!AQ2OoJs z0Qqv_?rG5i> zQT#k{JNa8F_v|B&IbFVSihSQV@r&dIj);en7ab!WM*b2%clbeG68nF|+VVQxezLn4 z!OoPJd_stLI`SwuzU3sJH&E(}lCQZeUV(fcybgJBoHw>1?~k8r^d&Ee`!FNPqh*)* zP9vX+&y6f3*U!-%AisA)a!!%^qMxhep?9VJ33<8p;_t}^<9_K6_99ZRpO@72l?UrF zSsnSl`Wjr%W+cz`tJLKq&w=AoY4XAKq&|TBQ91Djyfo{Ib$o@XTw87%dM$WvYyFGn69$N50=+c<7FAzzhAaypO?O)uV; zJmqomDdd&*imxEwl2rUCdD>*+FUdP#|B8a`RL65SJPUcWbdpn^eCt*57UTtSJkk9? z^RxGs`dL)}663a%d>ifypCMmyQF7jqkL)HMyS_Z?eD`BJEK2^cnbg%G-!MhI6L|>o zCzHp?DD`W}lVlS=N&d$j@i*iPr;EpJAdlMr@V@fAAo<>2;&sVC;yz<{a_?!WpG+R7 zg7_Zt{ej|tkl(}k^E>i8g`_@aLwVHx>vxdnnaES%xLSsM2E0GHFP@Jff8dq;8RS`V zi!UZmkwAO{d4(L}d&wtk6F)^>f0y_lc_OK=Kz<1ObsO@AxDFjfz6$GiGkL3`l7Ego8^+-cdFI(tAEPlIod@?+sQ^41 zd2{4cAs^FIUf+qlOiFS6I}JKM(L0JSrTR(x#E+3b#(DJ<@=zQ%qcoA%X@0Bj@;ozn z(Hr8W$1yN z={Sd!k>|-Qp2y;aEnc0x_EyQSYw;cy?{D!S@|QS&+e$tG``1Nk=%NiDvY{0y#}PLe;z{(gmgTx`h+CHKem$e-lL@V*>I z?#1yfVspvU_43?#rari@{j|b@Tm%U47~5uBM-*; zSS#|%SYKVq|HAe^fZQ+G6F!Y0-}8s~bn;Be#21l&JuAMJJa0zvo#d%TiytMgi}Acj zK4O;C-zGnU^QdR!*Vaq@2lBTq#D9{v#{Kq~_`Yrr4_ZroQu0BI#M6_9HWtrK{w0cd zaq6h4Z)5^`pcKS%$OupQ|*l!_zsjZeNVs(2dm zRM_9Llh?sG6d~`~O>!!bKlh5)Bu^9~-i-VbuIoFI=g0d?Kk_RQ;~7m}3)d;r$xmUw z2qqs@M1t0n|G@jm9`c0KrT!%ODIE8%k|)CZ(*yF~a6EZKeh>TmSMoi0zlhdK=CAAb zR#$nRn0)U7abNOFrNncSFU%%hg8W8*aewmBJ;d9P&zL7ZhWzvm@#*C2mWVGR*S}w| zmb`FnsozQdb))!E@?D$6L&%#A7JooK1?R&r$v0qpBICHCPFegmd7N}o|DL=WJQ}uZ z9k)L4wB(&aC8sUH~D}ySYGmBBgL7M`|yR+W#cnXGlRl zc!<>HCI5!)uoijBp;F(I{8~ZrDdfc}i*G0I2mgaSUqY$>NS^-}@njw3QJ3rEVR@dL zJQBvIBKg)}sjo>sVvl$m^1Qvp2av}>{w(r-wWNME`9+*>A0|(T?dKVJg9wuIf&HMk z-ZzTjJk8+z)BlfkMyzM`shOlcFL|9E;_o`iqt=(e`_y;xSMbQ4|68yBAG`SEHO5O_ zI`aGe;(5u7;CNfw;=hpJ+9o+2$e&<8?N0t%bE%&|?vHVpPQC`mu}$P!zl+>kQ}X{H z*ZRBU34^8n3%S-u!2K{?FAY$imR##IlaEGyd2+1}Am5An_T*as8~Jn8PbSy;S>$W> zd%~x!Jw0@qOZV$cN#)^d!kh@c}Bc%M#Xu(j`KAff0B^v-{nq2 z-U;s`1;{I&l=+smxIcMEoF_LWkA~~1w&cH;mHZ*(7xIXYAs=>2d>(lk>@Q2nuNId2 zo#guWqz;n5#Cg{h^12ly=LY$G)ITNHaeG64J-XyX!EsmDm#!B*9;>(iUFx$?{pjW5 zg)Cl*{BUWhuSZ@2=O@j`@0F4IG2}YmDdcH$N&QN4U9OGfnRZM4Y4TV&f4FY(Q1aVT zBoqm%C9nX71<#`rzoo^oUP`vL{BG=^#Brmp6@;i_R=Me8hzT&L-DDp%b z#AlHwXePdr{2bnQc9CDj`^y>fpo)?cN`Cc(_&?<9?ukd~E|33?C;Ci6-U9FYS;%k9 zl-HLe|CU!gklYXFS9QswMUwi)OJ1#m zxc-YmT=?=kX+3B}KlkHda?nY_^~seeMg5y!nh$uAX^`uF5sY(HV-*Su2y zgIu@U$e53A555VcK0WyvoKI#WpO5#Ea^&f;{rHoI;QhTN`D<*S?aB9Ie;-DE+h6(| zOYR$2JeYj4yMWHLlDtwH@eAa+&WQg(?maI4l05%p@%Q9YhKNV)C67AJ>6gg!IOOp# zKIzGQ`bm8@@-Az|E0K4{`)_sfndPLu9eK%A;$6uLq5rYu3j?Ko3i&kL4_`&zx}nr> zB!ALH{1mw!-!GEyPAc_}$aQ;uN!~7k)JNzok2?N(Jc&*odxF%ZBmWjnJQw-xQ1RmA zW%`I$A|G{5ybgJR?BcD+kJb?XjXcRF@gd|T_KHs;Ul|}ik6f=K^z-04J`?f&vXkn+ zbda3mnl)2J*=Hq`n-v9{2pox8uCAH+dKA*MrDAVtiJSYyTU`18_V% zMXu)|7s=1ze&Ad3vejg{zLBRu|M3RO_jNpzWW>0UYkgkw8#o@8BG>ww8eWk7f z`HQRKjmh`>i|fxzHUIbl@mW+KH zcia#UCEw>K{)jvSt}9-V-^BLwj=W85$@xrP{)G5<@@4nLqYRZt9Z#Ijcw&&(M}E=a z|E=FUN1j(A55aX}P4ejNq`nDxw3gzX$or-h??*lg>t!T)ns`z_mHamLi}~d7@IJMd zd_yM5`Gb7IP4QT`KGSj2za#N0x#kS9_;hm3KTNKFXY~xZ{yoww4y&pzbZ=LmA`b1HepuF~IHa_#d3`7E60 zzarQA#H0TA^7@mX#Pw+#a?J@MKaxRmmyw@@?<3doJWj6Tc8Ofa?K!#r-RAe?n)97p zbCQq#?>Ol1%lndN-Y#_&$#r>ak?ZnyB-iEbNv?ekCD%TK$aQ&x$u(ykx#pZA*X6xL zuFG3+%zwv6*LxjuU9P6&x?gl7*FFc4YoFuEb-&m|u79UG$JqbfXL*Y^wz&R(;Q2VP znd)`9_K@pxogmlc$~jK@^l=`N%72D`Ef3fEZfPUmtV;gx_#5tZN^!fz(|}x3Jf5b8 zySrlHyYij(hI<{_ChX}|UT>Hr>@t&+ky{}__IpiBf4fi?}h@6t-y8l)rUxj*q@+I(Ey_u<-4ef0CvsCUP6D7J?%!@Z85Le5w6Bk)KQBrt~a;MS*% zEYG8nCxyo+uLDm^UIU&6&i!XG>fQeJ|7Ts$aJQdn$SF!b0bZ6||Np`j$?v1SI(eEX zvb?p(Q^4!PwSNqwr$2c)iSdlIcrfMHMgB7K+VJ({1L2#=`@{FZwNLHmn8oi?&Qjz& zCSL@9O@0slp8O8{D_r~e1>+NWqWlND{+%=34)yPeWkS7rgsAfRyp)5}XHRjX-rcV5 z=aBj;hI<{#g`Dc-IpFolYrz|n*MPT$>vHv#*?PJe^=?1$a6lhwxZ6)(H`S*+aeU4R>?&d?uISZcd`;l9P`-7QD3KZjPSM z)P%d^?2eC~&os7pUn9rs)b~aHK=R&j{W}UeZVTY!sD2*&cguX|TYMYk96`=5@&8$)CVO;5t4zon>~XTSmRRUmU{5_0n*!-9*ul6JU*QJPifSf{bw=U&5sq+`Ql7D$UX3a5l9t`(Pk$!c1 zz6Xy)ehVHQuKkafmwU34>-j@Li`St1Byl9D4tXMYQ}PnYQI|DUGItLHQ6jC!}9spu!K;ch=gkW-Mn5WEz56L?wj zM(|2-?We1>@99Xs7(UQ&^L!@BG%0Y$$9*5y>*BQJdjBU2x&HsZ@{;R)p;F{}U#JSX z-tVeU{%N}O*OOe&qb6E>E4ki>-$$;0&+|C>PHZQa$&=x}=o@nFC(7^t9Z&VFv|tZuK63t z%efo2GwmeT`a|S;K75W`&u^cT>w1iYpOfhF>U?99>wJ@t>wJC5b-rcEHK!xoT}(Yk zc9(ZJ)$975My@$?4EH*({~gDN1>{5FOAL4S_Z#?m@dm@)oVxLxFV3`uJP>};a5qP{ z=PQPL9bb(4>*R~zcMNxPc9(U&IMZ{(z0UKCsDDL%9{%2NH|G<6KKk8oH|KBE`^lBIMuUB@H*{TM@2(Hg@LiPVFr|iM)lBdzO%Qg0F+?@_KX0 zH})Iub*LbIcy*XOJNyj!YWM~6mGJB2*WkCw&%qzVbsV(+H%7fXZrcA>!`=St;7#Ty zc@=oHAg9Qg^muq09*g`WJTdv-@Z{vL;J$F~KZnK3Q%?Ql(qAR=y6_t0Bj9z&2f&-c zxu13xA4NIOkTZ__34FRGXMx4{P)@8Avb+b#W57>ZaxPi?1?A*L&TI1A@Q;=p&ur<7 z$1OQrx1SEkNljiGo{79kO3BSeUJITd&hss4@j8_AH*y+~{{`=8$?0X(yZculjt`>^ z_d1>&pHCZ4o)kWV@(0V}dKMb>ZvIr{Z#3M^_e0KB@)GcU^ zmrMJfWbus_-)-?ra9uCQFyBAOH^A?a>-an**YWui&i(&m@dR^a1!+GU@%h6f2a;lPFhS#;^G`IK=i;uJT3b-zBes`mDrZwd0z2WTHX305V@!OOW zGo9pwl1GHUu;hHOc&vGnr~S`FPCW8a@YII8`>!XryuPf(TUmU7#m8Gb*l@2i%dX)w z_js0(w}G!V-0X9U;ciac^v)M&+Cd%>eh}{C)FgBMy>*M7>9kSr=KEnB{xIC@_#EWi zB%cm{NFLF>xOAqcAHtOAerlOz7^TXr*J;0eeNz>|>gf~SRR zKZj&?o~#zHNI5Yx$_xC-qr+=ka++Fv0Ob@x&JglK@Ui4g;1kIk!DqpBc~4+@gDt+F za)u-4F!@mU8S<6z3*^h;H{jaO1@!aK;y)=T1UV5G$P4v2a0VV5&iP4=dUtyZ!Sc za?X(VhF`Vh+_U&s%2|$_pX5v7(HH%9J?i)*w0Iu4j!y`33Xq?Imn5&7RpwWQye8bA zd@8&e`DA!KxNZ;He+!H2-}%=5wP174XS$?X!aW zAI>y8IQ${JPxt-QlSiI!2$n}3p9{#@LVgaum;3|#Ao+XvdBe^5zOi_e#h&oV?Z>Q7 zZ1Efx*Z(h~E?1fyl3UcM_d1jWUKZ}-n0p?+()|x-3NY&3e)3@4ni%eNd^mDikPn1+ zfcrSLW`0kj-pwD1{85Ix`B#uLj{H3QceoGo`?~+(O!F;%(Bh{p{uHj`>BY|xUXrJQ ze;}^_442OZV2L0zC%CfEcMr@ z-kaBXkuyCr-0M8gf%|NKl4pZ|w&X`#>ZZxhDSVyBK;$Pg-0OHv%R2${EkiyIUY&e1ycYRJcpJF(a|QiOv-n1fAG7!a zxb}Y&^L;}82mB4?+($p3EFN!#jHl+u$8j$ad0e>u9YI4j@A(XiFSPhh%D;j9z2w*6$1FJ)EdG>o zej?{3`B(S{OU`$TCtmg6?W$-#d7hlSFg!b4$L*W@AI?0OCpyL_4Y__UD~rV|!1aBq9`Y-b*MZlxpU5vkIXy6L^~w9fTUvYwVyWo-6{&&6W^2W7z4tNabWnSlBD01?U z--Q>o0|LJl#>-X)5$Z#=aW~52a{KYuZHXT(tfsD z{4C}4M9xL>?(iGrbKrN#gWyldkHTM&ABO)0=l;K0Jn=eNKe|0UM^19`r*L2L*oEZv znaE?pbCVZ_=O-@+F9O&8$6$M?YVmp&??(BJk>8WNA$*V}XN<)cQO+>rEF~WTUuVhL zVet!;vjRDn$(OmiK7^4^Lw%(6vOabE=fE?=-R&fU^G|=jqdd9(KF9`g zt=~zm|G&A1tpA6;H_H!((ie@9X&J??a^`*WZWALax6LRf$~tX>RfM^xtvN-=9iJt~nXV_4lXpkozu{+$!Xn)1O@D zJAz#6Cz9)YXOruEw~}klKJo}HrO%t>6T6B>+Wg<~(VW=iQ*j?ECHc-N^7<0wn&VI2 zB%aiFB-i>W7N1R?bBN?@CD)vNN_P>){m-i64=HDRK`Um7%|CwCtBkcI!;}(-VRx_!~Os+Y3$aTJz$hE!(xz@KQ z*ZS_{T0fp#>!*`z{d{s=u3hAsbC_InZjx*LLvpSELay}@aU9~~e@cs&BTwH{)=L+1 zoo}$kH;~uH?+;ug*PI*Vy50Kh`rq46a*OA+crkL_PXox~2gv-olWU&?$o0Hp9C(Kc^;-TcH;m;}m8S?+Kc-%db=k7;d z=U=qK@;o7V6nHA~TyQUW4tO@WF7IpfQ^4XiD5n;3>X6rfH=~?L@umOv79UMH{gE@C zyf=J0`7U@6`8Iek`A7IN@^|p{a2+4*f2YMmD5r7}S>CJU72tQt$G{(ukAS}Ekl|h@Vj%M8k@trO8}80mb5_H3 zd3C;9E%m1jcjvnp`RB*8WorM)go^IZ%jT4-kf{{ygm6^cxUp}@IG+vf0)JRQqC3REF`}KUrGK2 zzLxwGd>gs9gpAKF@-*|J+6J+sCl+y$`+sGTh4^d7F-Q^9z@?JOG>v#}yZj(=kKept*G3wp?c!`}a z&h*o8uk-v8av~mdzx)5kjq~tWa2+4*KZ#NA<_97_li^;+W0rEhI8!$AsPO!j{E|k! znP1s(uajE=IaSHa!0S_fCyakfi}$CTLC6_QJ^((3d?|ba`C|ACxQ?gxv(Vx@DCZP% z_K=@|A0>YcKS};4JcK-HX?JaTJXgsR!|%em|7RBW914&7_x-2@aw3rzgU2Rs0gq4K z44#5~0z3`*ICy%v_Wv8Uhawg)Yvj1w;ZSVn)eZMLz6JTU$Tz?n!+E}Kje0Y`yWw7s z^LcyZ^d^4}9|Gt6aYntFKhtop$NB$O_&HykY0jbWhkw^spr1TnYq*;e97TMG;qK2X z^*Z;6;aBJ%T>;E5T#`}do^_)E)_`mg4%E|M{mkoEv zKUrnxi!)s#PXZ4mFA0A{UL5`!uKiqyF8N_by{|)o=qKV)`Mz#%Es+zIyg57``9ydk z^6~JLaP22eESaA_`9Ze$LAx4d!4#C{%*DN{z&eDUxe$p^^Ym_H;sCCzC$tJmxg;C-;JC%{C`9Vg#n?Du#Qw(?W*CJ;+ z`EvMd!_Az_vCBf-zfh;Z0AMJ6y>-)>T;>4hr8RS*ZFq|Ihn~X!t;=Sg%=?I z3@-)O`5uWaeN?h|8_LO8P3qf|r-yeZ_lNf;uLK_g=YGZ+_3rowV*KYA?sdE?au$$x zhOZ!>0bfJ@JA4~l`#FvAIbhVg{pjDFK4ZAs&u-*gAm0hUPW}jfoBRR%Azb@OigAd0 z!kL*f>2XZ|e>%wx&)|H2e!=iEPa(s-4kfNGUW_~@yc}HTdp?fTS2gP0amW)*ys6<{ zhbAMZCHY8rNAlQ#lGBy^JL-EHZq9d%;qH9TBWD8nUib{SF4y~5GT((py_+A5<=Sny zn?JLL)bA&s20vlR4>9W9{QJm%V7Qxq5jjuD&%!^Dr>rUcgpntOdrr#t^>|Vb9*Mjb zJUU#*N6*_+7>?G%gEJZ)!I2c$Un-Knz&O_;pNI4I4u-q=Nu_O1f5Y8;Kje&r>-O)B zE-#pAxYwbXSgtwbli*9pzrt6Lhr!nx?yg6j?>58T`4+F`d~v2-{5E+A{4x0#_;d1)@Yir1&k5*1{%NNfQWz zF(v~+2@Ll-o~xnr#hH?jXM?AMYyMdDpWWh> zD5ouQ0?1p#>yS@{Hz1!3Zw1$WCZeCt79USJdyq4kd>1^3JQO~U{4RVMocq~e)Vt#! z94ma7JqHZ;Iuxmq_!065@U!Gu;TOp>!*9a1pCF9SBctB!CnT24_pRYxhpHjx19<@a z8+l*2=e*>(vvYHL!=u8rpU=3?Dn#Bdy1d@c;!WV1zXbU$$b;b>DJL58dl~iaI1G(1 z^Brxt*P%1W8Bcx!KAk*DW6233j{si`*KtUNe%2cGZaz;{0@0l z_GrXDa&fTy&l|lWtetkrRo$8$34oe0Y5Fx$tCg?dJ#jsYJdD z=VLXE9JkMqDBU`x&#iyxt!jL1Jh zo*sUgaw_5c=Z?icQ%(SKzLQsiM+uST)AgeH@hqMbuG`62LP!Y#Sc+VtmZPl$H-&A&y(keUn0*7zXjLz zrTsj%_&3UFh#b!)Pxz$ku|7OH`7n5F@*(gf}}S<;+4(#LF^%I{q`@@!&qrx83h`lQK^Vix;MxgUBgPz87BJl2gs% z9VzE4a=Ma-!TVZrhFg3gZhaoqUnVaOe@Cw8b^`YdNA7=5a*CbE-DIZ6k z2a;<}6LS6h_9Vl7od`c%cg!~2U0(g%_%g%2j;C+!d~v2#=!ED107>^9u% zP{TIj`^js-;O+ zR-VTqF9=Tp*L*)*-+3)wl5(0Nrwn;RxW6T*w#7SB&RpdDMm`JP-;y)Z;=z=26*YUP6dq5PK#fpoX^O)LLLUcM>*Ay|J>qwz|r-a=2uz2k#HbVPX&)nUI8ATyc|3Q zT(<}9CxgXHP);Z0_>p&jS0&VN&H<6ct?}qDmYClIUew%VSASaZ(9sD`@H25p>De!;D_rX7t?}10S zCF8;U$Fg`vxNdI`kdu`>6rPVfS_he5A@V5j(&YK!<;e5GE5WsY+;;LbG~7K;>lRh! z+mAd-H1U~+o9CG;40m%9qyDhrZv9Y+@tif>tzLYjU?abX1II)qvvA-4fi_U8sj{aye@o{;cm{9%FY*O znr67yd7iMNtIp>Q$$j8+4R>?&d~${1UdL~vehv90_+Ij+otzgr(?Rk;_%XxX`3ANN zFZYBP?sX_)XYs4#VaT~@xSONrlTQqHbApibf_xnOjp6S4x*y5;;!I(NyZKR!5drh+gf}$<)p=qF`7IzdaQUYr}_=4~LH?9}1rU*Z${Wdss}K8NSxYardKO z?5Fz-clV>s$Uj8B9Dc^gch{wROmU~H7JpAUMShd|f5;2Le^_#&-ILe3%WKXz9bC7o zrpU=i-WZy{Bx&b_ro7NTCe9D<>79vuk&vc&VT9{?sYs?59ffd{uZn)R+s>lx_&kdh%xSMkn=aZ`p_c|Wb)A`~|>+Xj? z{M-LD_-4c1oDO-UZolDPhu)$7F!@vX3B%o-xy_s}&UE>H_`|>R?bJ)2Un6e`zhk(Y z^J{?Azc$=mUsDT+e>B{!*Yn{B59Isq_|BNrro! z`gxe|H1e77xs<;oqs(}j#Sc@?Q{)^ce+<7s9;c7wUnY+QzYh0t%G~8$hkjm=?|^?W za(tcoz=Dz=>7hL8c9I|Y(a7_{5cH{%# zzgcnySbPTMEJx04@}=;_+rk6Lr@{lt zC&L@SwVwj$r7xRZPcQOV@WGaxu@(=e zoI=Q1MqU8E-jcJ^;vtmN6ggMP8^iCCkAOcQ9|nI3=k@is#bZ5@@zeLawaAG_z8dZe z=lmQ-y}N(i$MK=0;a)H2j$*=e@<_Jp1qXe?U$G^7rsma2>28}Tl_Ly$1Mc&y+(ck9!mZL{)qe={5f3v z|A>Bm8XnE*vmN@6@k0JX>%XLz=jq9BxjUaT<%GNayL2D-ok|(*bv)x>=ZiCyB~J&h zLf#BsoxBmeKKUGYWAd5sHssgf?a430yTf%HK45tV8uc#4%NM>_o=Jv#9g06hd>VON z_*_f=GNazj4@CYR!`=L%$T>h>7=Dtx1^g^|Gx$|FFYi5zdtS=&aeWMn`@-Gr#O;42 z=9`Ip3_Le^ykRoG{NxefCE(moMT@thoPEgom3$Aphb3o_#TQw8wZ%_a{IbR0!ed}O zAEVC?Geun(U2pP`{8Wv{*!Wk zASdE0nU9X!H+WpQ<|jdZa*G$DoJ=Dnw-|W_csWZ>Rg1T!oGQraKwcT%gZwvmAM&p7 zp>ST_@kYI`vq)2Myq#;f*YR1%Sx7zuzLI<|d@cEI_;$GVlMds5(BgL}=K*r=lZV1z zQBGFmf3$eQ*Rno!JBc<*o+l-b1oy(V|ANTRX4Jdmc?jcK*l@4oWsy^yycE1V`9OFj z^1kqzhMV(kWVk!uU8rwHz75_EuFK_z<(g{o4HiFY@%wNc=Ln;nrkv?9xd;B*k`rd} zxNjs+^D`qSA$dl4DmX81CX1J%oB-sMCHIF{vEiMFIpxek z&T8@*@U4_n72Cspi~m76dy#XKd^h|d`2+Y<@=*9&xUMhl=d;D*zy0s_5M_)!PfQ*O zo`yU-+?PBnJUe+Ecy97q@FH;TzpTX@QBHs4G$Zc|Z%4ie-idqxychXtct7%!@WF8H zzb3Ya=@wsL@g0=^2Kjr)U%`)Ba?V@)3FRanE9?CQd3^X^mYi=EPxS7;+f{YsBqOg1 z&k5IYYmad&Z1F(K>4}`$AowKmgYaqO`{8rpyu8bddiQ-d1KZGA9k3LS;$8qwg@QZNmrzgh$ro}%}PHyCUAtulybrusnC7ct!Hl-5Ol3G$lovX=bXE3AIK$oL z4MzWqD1Q&;yPE1lP`|@)cX@Xre-HUq_;JebmC<>TGhH<5-G1WXa~Jmw_d5OoIgiQT z!(WppAMd=#nckBpg@1(W`rV4FWgN&2f|@j6D1JDz^HAKun*x6fV3??Ao<-h=XUVZMVbK9_PLPLMtqlKa3{ zl4pmnCC>`q1lMsWf_{#WmxP})a>BQBjKf{S-Ejy+{sZ!A@RyeSzbzj7gDiIp=fTbI zg`D{0J>V(ex?I|S28)-ZoVmy;Lp~esZ^@}`@y?WU1UbKvAA9$AND`aOTRJM$aj3|D{$fjW{B-t{el9doLvMI`{kQTCqsEq%0x!&i| z>2v(Q_i=cB|L5g;-uL%B&+ECL$NF~?e-qdBzHRs?(n&og+TUg358`XZAICR{m&SMC zZk`(4Ki?XDQ97;YToHdBPjEGw*Y#T!h~7_*hxbW%f9~V{%go$=zY;O~jQi%%DygwGe>fG-kXhcCx<{&j{Qkj}4kj)?z^ z|16$-T)6wO*ze*G;1_V6=Z4`Ku0=if`c{-q7V*M(E?oPC46h@drgZ9wH^!S7ofi!6 zC!Ha528s{D-!M883|}Oj59xd&z5rh(z87CBz8l|y>wfMv{CDYGqw|OO75rbLljN`e z&OQA6s?6&{M$hAcKRiCVF01%Mcy3(hFKl=N={!lNp?GDyrT8HH1@QrR7hLD*W%#>> z&o+ED?mk~W;Ca`H&%t*Yodbqnmd*}3*TlEs39d)y|yj#Wl z;a?k_BZgm=&TKl@#Ao6O{*LB#>wTa3bBNdD`{73ouZ6pHZKq#Xd@J5qIyd-zl{Vh> z;e9om`@e_h@xcG2(_8!uK1lkV@<;1@%ey}87kxbP$)3jpYWPm%Q^o7ybEQ9w{>O&z zl+G+Vd&Otqhs3wzKZtL|f5P24j$xk5;_u@BdY!xb%s!;}Ct9~V$8+>ki=V->;O=={ zKbLoX*k4M&sORy((@cz>ucUY?yn@lMX?Ppyl%~^Oyd>Vu==3psf^=HZnI!%^K0|y2 zK1X~Qz8Kg2Txs||>3mG*fcRqknD_zwXYp_Gv$&gQ7WdCJ!_)p7ou|8h{-Kjm{05#I zcm3nMt`_#L5AUB7+&|?#j|ZM>QuKV4#2>+HiMPY+inqoa;clMO%+uPtKAb0BHhSLf zp2q{4MyHqfRD7WLMtrFF27HwGX?&dcNqh>f^Uv|F_vc^Yc{qQ{$-$f8v0OYk{)KpP z{7dno_zv;r_#W}5_(5Ff|H<&{(iu$WU-5x>;+xU>-2J%_PbxkiPlM|`4;lWrboS7B zLVOoq!{{_Hyqk2c(&-`oC*I%aj4*tH_(s`23KJlvf_u`%L zW8xk0lenJOCBu{6y7zu~n@$Sx@pyJz`}w`=!_Thq>XAJKt zofCBWh#$p=h-aM=t$&1gW_&EJ>z!iw8pF33{v+-_A1m>^KZ#es&l{cVhNr(Bt*`=!-^258UE}EY79WKV65opt6W@)G7XK3;FMbK1guD4~ za^KDuPf#%0|MlV}@$H8HhP(Sb)6}SQT08@O+35Uhc=}j4`G5be^9eec#mnKjakt(l znZLStQU3h8zSjxQeQDXdPZw+Bc|4%b^xKQSfOnJrkbF_6k9U38uUszj5uV2b+D+#z z@vZpV(w|Cyns@!(`RRY`dDzeVe()xEEEP|WuMuyGuNQBKZ^PX_FJzv5-u2-;m&)CJ z+St#Y#{-%`=XddO_yzIL@IS>@;Qxvr!|#ayh$l@D-B&t)T0Fd;{rMm9Je)t_wBSwf z$R!@b9}~}q7ZuNgmldy%R}g<1uYv3Q4GixjonCahivJJqEj}IZC;mP@4A*(a7`{k4 zo9KKZ{w4mo(b;79aq0X)=NIu)_*tWK&G3{7qx;9b?xmR?-4AKRQ{h>0-JjfsSCCFw zI#tBW;B~}X;q}Cy$D80f&kKh4lg=A-28xfs#~Yog-u2<;&>~g z)5-AHrPGYgNbx54Wa%v7^?#P(n+)G=_!;pP^sgG8CULaSZhrB_#?PG7uPRf zcn#?+pi@VD9^TOCv@-lP>3mIRu=pN)q|uq^T_1jaHQ@7Ww&&sJ*9|)J#INF?h?kie z-T%wPOW|w9pT{?dH^;Yl?$5ag*K;{!T>p#b;kt&?KPf&KzbL*LzaqX7zbSqSk0rVH ze)}Cyg1h;@;J(c$z7a1hUW)I}A2+-a?(Xvxv!ZipCY}s$YjnCA{de1Vd>`xG;B~@tAHx0ljpyMxHl_cacw_vi(Ld>3AND8Ezv6k=A4uoA_-lCVzUX}2 zIlB3i8J-Jw=Q5X0KJnRjQKM7N@aLqni%t{q9e5k@OL%+n3wSqN*W1VNiPFhDJJ{6V zF-1J%?7JMBEnXR)CteX>g1dRX=l)r3_(AEsNauU;_V_93eCht&&G2ORhm-vG>(H@u z9uyyqXA=Jme@J`<9>?8!cQQ{&@uvK`wXt|dyp7=lad&?n<#~sSAHm<0P8<5O#XsiH ze;0e5@bhjXpLbt)9uGX@oZwCH_)3?hZMd{R|b49!^e$(jOmo&lMxx%*z zgCFjBbK!2^UZs;yycb^7=#(?Ov2`yntUzg4{IwQru!Y4_mBK?_$ zuaeFMI%~zx;akKr%)PtqvF+mN@O^j!&c)61gW-Qlrvjb7#LMG%#5>@L9tfZDzt8t} zcna|ecxv%+cotme&t>=%()o-|W$_hwZSiCH)8aqkjm49GaCe!p=HmC^t#LPhHSULA zh7U4)iu4Q7pCo8U1={84Bo{L*)w5deeIz4`?O*%;L-O9JqU4*MHQz zKHTR9^dI*;?0-+^3Gu^tb)#S3@J`aXO{c5)O}w|!8Ep7_(#bnNSVZucE}k2oFJ2d4 zBwhz!j_ZD|GyI5jdeJ#5{y+S8@#**<;_u^Ea5v9qBYp`tbf4!u?at^RWL1otomO@CM>(76cy@JQ|9p!dv2Qp1sV|(YrpJXCw3U z^*kPUX*vVMOX9DKx4=h=H^bi%ACA8(J`|sY>->wn>;3sxc^=OHA)U423-B%Cd-3h! zyYYSE*YE@4SMX!F&VS1AJJQLzFjz$JNR%=x{P+D;W;}&>RXnwLWjqV6^W-wTvUEDq zc~ZOsUeD+>HN3ZU#?$F1J{BKlbjBDyPdcB|`B3~be3{Yt!tevq`I*iU@niVU;@LjD zd#thF#k1lUa6PXZhNph;-uvW9I_br$;tz|v>vM>^>kH#L&*R?p;pgKeUQcR!9uK@L z&-=7^7rcqlf5GtK(wRu-P4V&g1o6H2B=Oz&3|!Z{(D0pxe`okvJp8^T+@C*r-izXw z@LNXb{#4Pq>zui9*Uz*lc#`0eUpxa|QaT6tdQs8vHimaGe5CmI^d}m=6nFDK!JI3_ z%i$Z0&JM$Wmri>+e~7omuNa+MhG$J3or{})44v%aqwxH=J4d%a#l7pp&#!pJyT=%- zL#hk72as|x+s#Vg?B z#E0PTh!4W2iOsJC7vE1 zDE-rcI(-d)TRJuAOct+>&onw88oo(7uh7{l-VOg+d@}y6_(c3i+}+Ra zynZ)4LAvPN-RJdsI!VO8z#kO<9ZxI%E1nH^^E|-)lh^QS(n3M)%KW;sx*xxbEi;!_OFg)$kM+YhJa208dU$qR=gDt)b?Nk`Q(L?z-bgwt z+}9(+hZ;WG@WtY*>8~_=Kkhy+-e=B(;_u-<8J#~2zc16h`@fk^GVzUgdfe^5n?JkZ z<)w3mP9^cvcx|KeoOgZr`L&PFuQr~CpI_;hMfY=i@zi)X@#pX!;?Lmy#rxue#9zgS zd+yIU2G@Oi*SLPJ=i$0$(O)1w4gXa9IKD#sD85cS(eh~DHi{>}x8iR8joi0~#JA!X z#IqKR`Zo;Ekon&GFh9?mMLaK_6L<5t{$qw$m(J64YKuRGHodeb}E+Ir5dB#{)V_XSMhte3SJ5q`%wn)6&Ve zB6{9);(73E;`Q;r#h=D+ofYE0;p@ax ztPB<%JT{6a!*}9(Uf&shQ932*ToEsh-xPlyk7W&?@xMP8YmO(w-8`wdf6^OXOgh8p zloB6;SCdXtULT(Jt`F~@%G^KAJ&yoM#C0 zjQ2d8C)a1eo8U1~JO@5qycRxNyav8VygUAh_{;bzT<72DUGLAo*YkKV_hdTz#V6uF zh_A(ui?7B{iT{G16+eMr#dZGMhG%>zyz;;M_Wo6O-;HGzPlD$XFM{V2FN7Dxb)IsD zH<3<5IxWPX#XA_CR}3E`odI+vi1){*8l4Xe|3W(R=zJ+Y7vEuYzBT-;biSr@QG6GE zL;Qiyqw~Efem|ZhTXa9@d8INuA0B=kj0Zo8(Roz72wqa$UH`bayS_TE^VIjQ4?iE5 zRteq&k2apigZG>9yzRxC;4d5fzJ|Xqogs8)iVwgSim$~#5?_t4#C5$J3_oG`8N(Ak z9G3t4eE*5(y-)lYo*vhEvKwArI*C``eY#jB@r3wO(&^0Ci$;d`F?^`uv&CPgzu55Y zxVxVVFz0UZeE315^ONB>rSlA(SoV9*r9Pevcl+<=Pj7fJ>GY#hO1uwV$>`Mft`9%I zPE?7`v9agzfIgtpTznSZPW%_VqxcEDyZHTUqUY@;o&@jbxj*MHT=#8^as7LqhwCa# zf4X=9?i7Q9KvE%j<-54&ix!^gMjt3iN*xFOQ!#`hR-YhyA7W?|2^e+tNuC zzxRCG;3;r-j&A;p-t~Szm*-)B6rFtHZ{bD7m*OSGm*5p}ou{UEeK^kv*4xDMaGoP{ zT8JOQ+l$A(2tFuybP~VK_5Z`&JS92b0ftYNPG0&m#B<||y-u=Vj)V#CjuTsH_3mA3g7_zR4WrY*@UGH1 zOsBi}LA;-Ia{=IlT{Fr!M{3Pzq z%guAi@T58Ky&qnslR~@~oP1$o>zQ3UIf?q%NqWybS}_oEPf7eEuL|G zwEykI)8k#mtKi+mE8)FyH-Ay?hf#)4GW-+izesjgeRHofg**?pa$BzGyvm8cnmh8E;*0Ut;yLm}*AEnb7M~{W z{vOvF@nn3xI4oWTzvy}R`uRBbL)zT`?N2!368_#)LBp#W-rVs289vJJiQ*IZcOPGh zyE%7=Z|M~6=RxrB@2XBH$ZSVTe%#ITBKvbi{5XEg>*NgPIKjT9%NrK{`}NKU`kBOs;c@Zhcy95f zcp==)>EM1`l7Ga|S=Ub6z<; zj|aYpPG0f(coFe4cnR^-_!HupzY3ltcvKe8h*$UApR*pW>uPFT-`?|h@O+i%cM>m; z_Yfa~_ZA<74-#L34-@|wf75e+U1M;!uD?024?Is1Zdl^*P4Meu&npM-7YQ+VZ1y~1 z@V-0uJ%;~|hxbD~`0*Wc{vo~}zv_87|5EOsWckC%|NDFL#K;n*QKWn?`C)(!`~Hm=Q7*y^|;&5#;j|T__O#f@ptgA z#mC^^;qE?3%RZbo{7=JE6^PEu&G{4kbmGVGY`8veUc;+NC-JuEylRRk#2Xl$=7zs2 zodR_Fi|50KOD7}yHrDX@(y2#hk$7EvrF0&lzrpZB(&Gui{hjQ{q$bOSn5P zH_tzYr!9Ez{jh;fM)7s{BjUf}xx|0Q9}`cxJ-Q!?iYLd*;yQmd!=INTUqJs0@p<@HM(1n8PfBMuoipM)@he8> zmf;y5z4yLy{Vd|HpBLACD{A<&hCgrkYvPY_F0UIt7k96dm)M5|;ur8wrBj0b8pFSp zPKF)P=fxrMbokHGsY3s(;YlC6cmK=LNg@6?o~9d>=jl*Y&<(_+07SqO(B! zI{vA6{hh%gg2xK+r}6c;n`blozuoZPq|=+uY4M);Rq33hf7|ef3f+6Zy-(*6@%Qlj zxSRhH{o>yB;rUiBaCaMG)jW>}^d+5|;_LASM!>z2EQXdD#Dr&P(FI;Jw6??Fv39 zc=Q!diVwwgy`v3ZD4ptbJ`yj4uM~e~cQnsx@%s2?+|6@?{oiBwAJXYV=e&4t{BP-` zj7Re%D*WGl67GNZ0+FZoJiK%|o%G`G;}45(!gGj!i9d$B^=1j5BzTlI{5k2Irqe|H zH@uB>;_GOQ-Oj==wLsv*Yhbr!4*H-u2;r&SpP9@jSfrD4k{ENAR`cS@#AX z6g)PFXT-PQZa?EWqU(=}SBXb{((8nC?qkmDo`;tGw_7hKt50*|v z*7crvqj1>ZG1u#a>nh5+R(Ku{{89R!i|4~Pig(7p67PWT#NGbiX3k&4TZT^_JkEKY zaLzW&dCT*7;2+RWP&6$6cR$R+lZpR~KPY|-PlvlXv)?`ZSnM(J*W!1dE>_y>gqKcW z&YGTwmp=4Obp2D}nec{2zm<1=*xyJ0CC|ftBRa2$KZEy`{@n0`g2yoL`mi5=^e)H7 zdmayHJe`T+qw(qDyYboLTk%EWS@%WH`-ymZd=>7_#m&FbyFQ%14fF5!Je^sDH{%J5-+L}Sa|D|aJRTDN5zk|IRow08dHOZP|G?`Too0r=DxG}aMsxNT z&xH>+I%5rAB%RiDJ`rz;uaeGB?9WESk4R?(oulHz@Ke$`NB^?n50pr7cSGF%FQSuD zd?B7u{2M&0_+C609zIL>`RL{;WO#MyT%}W6{7?K@@hsm(=i6936W&_98s1L43f>jh z`Cm1BymUIznJE4uK3#k)K3jY=zDWFY{1frd@a4Fh|8kCKf3_RG-|#ciKT7|C_z(DX zqm!UyILUv1KH}!dg1h@L!GUPbhsE#E&uesw8eU5}dFj^`&y6>e&U1X-Y3E%Z(rmuY z_VYX*_)~NSir2>95PuCHCEf?0h`V!i^UUzB59c|-JS#j8=UGALbMa;PM)4o;uf&hw zdvTrTu;CY_ljLA9RPeYWev5vBQup2`ZoSD3&yTzNryc#r#9zQ4mre`Lx2ku2NU0yY zJ7(-T&*K4&qSHkD4ZMx`ZoIwtPQ07=zjzPv>-ejl`*RM)-MP4RjWn*G?0LAZQip;! z!DFg;F?_E0tM~%(Uihct3-A@kMxO43d+&YX_Bof~RXq>ymDACO$Lbp18F%;9%j`op@h6~MKP8ohjI!S(r?$1Q!q7QWYmI!|k4}UiN zxoh+@8(vg81?iL&&yQCSZ-7@3uZP#cb)JTXca=_WI^D&4;{C+m#|MhPhrc2I6+TLQ zGd>a5`DYluN;-egSu1`D-y;6tkJ0&V7f*rj6Mq~(AYK~(9(VKq!~Jl<@EeAwDIa~H zyWd*U&mi6c&yMT!<~O{ubcWG+QhW&hw9#o|_$$&`NT;Xxe0+e{Nf;c-V*bA3Bysom zLp~Po&!3a-6n`H-Dc(CCo%?O^A~_3%D zA^hmz&(l5kJ3~B=2iKkCd`F1y!bf@@c1{%!-UN@yp2vgt^BoH{`1PQ827IRHVdt|h zcQ21E_B0#!}HynCcHWpJ7oA3 z>3mD)y7)dkR`I`cj0fH8cw+Hu_=BE@=Xip1%#FJ_-%J<$Wbh~~*T*wPUdi)#K-qta zyqb7cyteeW(QhkW2=D53!a3XUyaPQCpSLmnq2dkkQPOWnf0B27*q=>*j^|Nh&Zg<_UKWdsS7pwEhSxQ`vEjW9 zAB?;EYAO3L+4FcXVo&CuD&7O1EB*n#KztVdDem^ct#^&#hop0y&JW^8@!yQj1@HQt z!MaYc-o#bzJ+J$Ijm{;hcw#(_cu_oq_+xl>T-Tf5@XFHZL+45H&iJ!N=Xt~XNhkAf z(Rv4pXT(QJrxo|-MDO}=KjWFB&OFcK0ac~*p?F1nnfP%0Gx4GL2JvP1X7Nw)?VkH{ z?!(==xOM$tTz}H@a9u~}pAkQRUlGspd+-aSSiCy^fam_Y9>m?c z+HqcaJP*I0Um87Kthnbz0?!c+89bi!JYn#@+n;)dcf`ZjlX&o>D|5ai-UWYEI&RJ( zhR=}BbUJgy-@_M+AHkQ1e~Yic-M$TA-*y=Ot>G7?pZ8?28NuU! zF5K<&Q*`o)*T#z)opOdZmQHs%&Bb5F+ev3A`_|3y*QGO=&Pefz_$29!qCeB{Rnl2Y zXRY{Ze2e(c_;&H1@O`*D7dOujhW{y@`%Xpo!(ZZw@jK#=;)$M&?gw}71@IK&jq%jt z4e>0v&Y#QhC#3Tloyy|<@Y>?D@u$US;*G_3!3PD8o#MstZ^d804~e(NfArj+^EX`Ab-}p)AJ5~#d~eae zEj|LjzeaRlx%*@%o?Lu8o?iSqo>}}F{;=o%x^m)fU7vGaWj#+C%wIhC5k6{o9{$!C z-~Pv%dY&+FcOSMjd@%0To9#?kkHv%}YK+r&HLyTm)<-{EfG z+>()n9_41Ryj=zh?C8p8|Y$$~wM2R|M>8@ve~#l=(L6{X`oPiqLL7ME2NX_Ty%eaE}jG5 zC|(EuO1u`n7k8g8Zl1%2UzAP{I#=NO%j z4BsN1H|T5^AA#>PIzJfxr*vHZFLBpTR42NBbl*}MUc~UShBp;I#ksV_!}~V;eqbNp zkM;CC9{4i$p^x}S_z>w=;P>rE8UBHE?$B8%ehXhJp7%m9RPb0So)cd$-U{C&{ye@5 zcl+<=KVbM}=?tfHO?)VRTYMRw@TutB-Rs7ucyjSWcq;J&cxLgNcsB8W@SM0?ZzImD zl=x_V|G$#g3Gb6wmhesR=MtXBgZFb?3^n+7qT-L>EyZ8JUl4DJzlggzckuiCgT<#a z=SagBNPjB*#o|-&72+H4&&Ai_n{YR$`*V}shM$(suXN6d|BPP~Pj)HV=fB01;}J_(2y-xT#(1!aY)zi^^9t?`8Nz!)M^`^}I6kukbvae;spvF1{Au zD1HwAO8hjw7kB&V)_d6StJ2ALH5e**+z`)$C#)Zxul7^mZoS=EZ%)tSLAO4gyy8#e zMa28zCB%E+>wMyJ2wQ>63owQx6Mv1#HD;R~fRJbiTiGVl8E z{$I*|ZuUGLcuhLn#H-=oh`)t@C;kS0RD2bFLVP9uyXXF#7jSnjZe2Hw>k~JK?ko4Y zcZ_~g@$d08;@SU-_AP^WHaxp{T|B3F9Xy}s{<v_V!-2QYm{B_*zPY>oCDgFvRNjh%MnTCHMojG*A6rX|b5I=_R5kHLY$KAfo zVc$*~e#!8Z&)j>T6uKU5Xd3YXcvf7WH@D$cq|=#Bb@2{(J)_gq@LtmSfKFfWIrvcN zEMVV88~%ZGcFb*UydXz7;mSf#J;!?MS(@4An-by-C*`H2^50TCoIwQnK;p3$iPJ9I9K-@^Y9&--t*;M?N4@%tM^_ldh7p23rg*T>W2I)8S<%Sh){ zI_1TC;ZKUsz-x(5!=Dk~fj1K0hBwFE{0q4sUNO9%;qOTQJpFgY&*HO;&LYD%Nhkfy zXwa?VY4NX(&Jn{eNvAxWtKwzxTV5yp{ycr!Xr2s>qx&a(8@l^*=Ng`e_tvM;<*`nl zhu7~*6#c|tJiIn{@WcK4uQxr92i}Q!MvJ$>CwLxq+`rqJ?s?exhU;gGZ^swmZe2e! z=L*C3NvG(o;7NkV0rA54G4V$D&*IPFXK^>rBZ;H_HShYI0nH9KHF(_DBsv%Oc|Cwm zGV#86I`P$bCh?VcHr&ng9`lqE&yQE~I^mrAn6rWB@xZUrZzz5NZz=tk>38(55BsS( zuU?*q{VKPEH^HN?cm;f@_(1%1@jm!C@jduE;@j|PxZ5{3|9tQIaQ@27zsmD?;1Asi z-UN@e;+gO*;vMnr;_dK#;&bo=;xq7L;y>X(i+_)w#NB!qa9-Cv4}X8yJrXvJ?pt^L z8(g18JT+b%5AXAE-{KENr3#+s4#>TpRQEg{__ML-`D%+7#Orw;b}khN-UN^4p2vgt z(kp2vgtYb1#} zZ;5Bb-^RnM!cWEZe7`!)yFT2{2JGj@p2q_(a(~ocDqaX*Bimq&)4EP@$YcA z|A(08oVc6wFRv5M8P68H2_E;ih@QuNo_3<2T>N=Fy?El3(Z^>N|BLH$;%?3%%=wsi zeK=18=BeO$Jn#kdtBB9V>xln`*AqX1H^p_Hw%+yOJVThLr|023*&dA6+ebVrK1944 zK0>?-J`#8HOv@5HN${8}{vP}GmEm7|{c!$`%>R?;@xZ(AyuXUSi2ot|4|(2%&qwQa zbAFDez}@!=mw4WXJrAFE9{n8RbMb=WyYa%}JMj{@o2O`|;7Ni-$td5_Tjqt5Ioj0`g!*{Q#?)deq!;wcuHL7$z*s* z>3m7&aq;zdRq3R1_mAP7rE`)_H}T)_KGJc2&uXaQ9~l0L;d=}}guBnj*__uo&%^Ud zo;KS5OX3gUe~XvJZ;6+|?`swH+xihqdr#&x}e4WA;NgLI~e@5L7xofU@flTL|r(RmyYFNU9xP90vC z&Un{{`@FsZt>v=qQzd4;d;*Ig7t)u66=Q|BgAwCt)AifjNBEB8Z?zul_KHQy) zTURmT`U;+h>$*h0iugIaj(D;3(K_pi7r~o|x5itDx5V3c?ysu@?$%YG^BUm!-M=T6 zFjz$J80q=r!TUMxYVh|%JP$8*`!nD04Y)hU5zM(+d>Fo0I&RLxhF_J=YC1Q>m*NT9 zMEmXL$(|v4KZ$sHJQ?oxtrPq9h~WhcuOa>S=+_Z{7k|#^v^2cGbk@@uB>n~drqOxZ z@K2=k3!P=+C-Ak>>B_!+W%yC)+@CQzmlNVi@UznCP5+wVDPOqv+#jQpM!X=NRs2~z zyLbaUAMWlGH%~FcYfGmOou|cnc-!#j$9g?Gnw{{Dtfl+IZ?Q^fzk zXN#xK6rIOB@dxow#LMB!#2?33;cou^+z-1AKWO*`>9?l;r+7>JU!#+xZL~g}=V9Ev z{*0iLLwp!s(CCyjysmT>(P<#Q5N~O8IvPGgI$zUyOMDOhw$Yhp_zLMoaGL&f{0{jQBaD^Oxc2+C@Egjuq%+5-*R(@$jSkISU$ILpp8g)Ddrk zKPR1)>_bb#drRj{I{n07$45wKJ^gWpFObg1bQX&*##e}ci+?V@58sHp{dDu}GW-|m zT&HtV{2G2yJX@CNyswC7#czt&z+>(2y-%LRAHa3~bcR1BotNko74M9f6`z1t5Fdxv z5MPVe5nqkh$KCv!xgXja{<7h3O8+PNqs5QmlZ?(x!&gZsan|TO)`};@w-}whhW{>| z0(AZm&xil%b;9qTlk)op$vZ@Ig>OT5zaLddybRZuF}wlpUYF|eybZ>sv>qF7G{w>SCb5Ch_9^9S#m-GvWufdCpXL~q$zS81Z@k-)#@M_|<@LIU8tC@ITUQfDv z9{xVVgz!Z!cntKsWbl5)yBhqw=i#O9b>Mx&*BQRe@ZZJVoEHsG(J9(LxBoraht%TT z@GRnA;SY{Vp{2l2$P3K+lr|?-uXOZDs zrSm^JJH@->-%4jP`*zgutJ0Z5=Z5%XJW=Op|J=FEq@U98Jh;10*3l^-z7{Vo{tI4O z`~+SJ*Li9i{(^MweAXhgQ}KTI zYVq0lI`NtKR`Ff)<7%^DXyh1@HQBKZ`yRya^ulJdX$O_oVZz_$zn|@s)UM@#T0Y@n7(+;wSJP zp8Iq5$KC$8b&W8tpWu18t_N~P`#VWI2|h!-4n9Y`7QR@#FTODuc>%uye01Dxx~Kx&+q|;PnG@%`ZL6b;R}q;Qp5L3XAzzK;tTN~ zjLvU{$6mho9KWWMSbPtj5_kJ{m3_-(coFGbp;JQqGG0+S3HW=wwG3|~oy@tT^|Tky zh<6jOi1!eG0`HHz^}2aR7(QJ(?dZ%Fe*s@4{ucg;_#5~t@#Xkh@um0{T<70w_(|y; zrgKL8Abv&sCVpM~A3XL-bUyBNBX6GQ{lwzA@dt1>|9#vK*$vNccopeCMZdauZM>e* zX=-?P>2#;lOZ;VgpwW5L@LAGv{SU-lf2q+~Yxq&aPa2-2dvtE@T-<-(A(i393@>kZ zbHm%??)%v8d>_)^^LX&}Ycl&hNPHsxruY_owD=}`60Yl=Y4{h?IZfwF@ss#Yqw}5N z*QAp&Z*(4iizmku_K1GoecqMC?-MVMr^0o;Sqv{Gofqho5^sW6GdfQj-bFfx=)5d` z0Pk;fMi@RvI{(s{Fa9_FsnJHj zyMI?W!t>IB=L>#>k13vq-zU4y9K$!@Zhs~-=VtNo_-^r&_&4Im@dLP9Z(Y{)hv8QY zPu(**2RCP(0@3^F#cSaY>SDE^yx;)2n6ofc1sU&h^exq1FIJYBD-=kA9B zbTWzO!{g%h@Z92c@j~K#@nYhy;^lCi|4GAJN@oV07sRLGUBoxzFN<%)`-q>zUlTur z55e91t+*d18$QeM)zVM%Xmn2N#8cs0jm|fQpOQ{#I%ma8;#ZB%ZNoG6zW2Uz{jB1y zpAXl4D`xm}hPO0)fVlg2qi^8h{U82*%WS^SoZ@*r@Yd|ZH1THmJn`N5hvHlCWw=|f zo97F|k4UG;W6}N|6)%LJl+HNr!%K#zeKqR2dEE8c3@>kZb=>XeCHAw0=iz=fX3o~) z4e?ImBk-=`!|>j?&Og}j>C#z5XSVo4e6i74>0KY*Kk;yJ!DE-_@!3l7|2R|%+ z4gXR63jQ0e>%Cz3eSN|!|NHMzW-rA1;+gTxxb|}zUP(Hg=~NT%h}W0Shuojdyz9gL zY!eTs4*s2==kehE33Of-AA|Q1-;cj0{tZ4t{0{z>_$_>_=l-1U;%?vEx@H^Kf9!d< zuDpe#b6F~$6JI0V5nnIf0pBJ*8QK&y<>e_aP~x2{h(ud|+q-&Y@r#*f|byiDNX z{||!jk*sfYf$O;aNpE-|+I41dq?&!j(x{u=RF_-3QC$M8R-vyIMq@vrc|j83fIz31!Jn+@94KTe1LRH(HSCM0v{>f0v{{h41X7Q_lcWl zw&AO#Glb4M@j>`j@%i{p@elBC#lOK1iSNaK!gc;X3{TiUIv;mGT%~iL_@8(x@hrun zk54C_3C|{84Udag!Smp5{v+HE*5FT*lW=_>$xN|JSXn%tDAK4ivNQblg=H^y}aQ~ zrIVw0G~e^$kKiwQop7e#?tT>v{{I{sK2|z4=)5idB>uk9nP>PW>AXZ|t9WPpYol|- z@T=09K<9?|I6T3C|IRnuAO16mvE+v5!rl3PMkk;63cR><_|G!Lo-n+jbbg@IRQw43 zf_SV%w4M&)x4HghJiIDggPW(X;S;2jhyEn-T=)#}I`|y%TKHn|UicF6|KXqGI{zla ze~`{pI>*JQ;HShl;Ah3x;a9~^<2S@l;)N z!9o9>OZdF5pBWGLKm2vd?0E1dcogtj@J{vhBpz(fCyH zFYp=SYw)?A`|DbWyLFx7yf%0q{yxLqPrl%Pc6(knct89%8{y-a=Lv)N-MODKJT@dc z2X|kcV9vzi$MICS&Y8vV($Yy=CVIYd;wkWI;_dL7;w|vHxSJ=I_3k#rUNHP6uM_Tn zgB;QI13Zrhw4MGC@vZnsqd(E`rP4V^XQlWVe7(`xZuqa#N%MHL&!@yw;g_V7n0@=l z@U%mtp1V&<)5$1a63>CVb4f}6QNycArv;sw;?3{|;zRL<;)C&)xX#nj@WIkqKxer4 zJbaA!ZhV6HPJF8PHGGEn6?_4%^Di}gr*yKGjm~eccxL>NcqRM?@e25_;+^qR;vMmG zxSKyM_d|kV(Ok~scyhyYLiTEM z|Nq=m8D7lr@`g9}JiJ$SMcWf=Z}?E$-B)Fp|8?rK<6Rxd3att{HX9_4%07ccrEGdrc+mZC*DZ> zGTu!5BHk9)dAb@tLOL1CN9%t}JU#xlczJxXcv*a=cn5s0csu+fT<8DH@UNvaiq5y< zZ{a_Re~SMk{t13s{CoVI_+k7q?&d$r{czvw(Y~suHoO4t?!(*k3yI&vOBAxgi9Pedx1{waYbehq5U%UzafzkQI@U7ArL}#b?0Q``2GP7?d48J9v59lO#EBZip zKg_|C;qF{qKfU3_q_cxgDe-N1MWa*8@b=OKMdF?C!mIPo=|e8^_idzF#`E z=o}QUfuE2LpDwX8h9?|-@A-D4bD#K2cq;LUcslX7@oc!eAKW~74X-Gj)pV+gufm@a zKZe&A{}FF0et*?y{m+Xh!8_nO|0{;SC7s9Uj1e!0PZoa$pDJD-pDX?vzCgSm{t@ox ze==HbY@^}34F6U7v+17_pNU^GI{z4+c1$#w`}(z&PDb%9_#?QktAOEEq;rN&b@9`9 zJ?ZS?*Of1dyT7+HNZkE8?p<;Beb*9k_d2;vye{W;3J>=u{Qb%;j^Fn<}(N zhv^~oM|mFhZ_^nkeiNS}{#cD@z0<@C;`4B~pKhKd-u2-q8=2=T&%=41p|eB0KE7YP zAAV504}Kiic}^Q18yBt5eO}L{lURH@o)*`BHp9zG=RBPX;%D*NM&~)hyGti+&1gNn z#8cygq_dy<=PmF0yGNBPIGo@y)$@4pepxy*#7p4|#QWom#rxtb#6QG87hiy{^W2|v zEAGz4t?L`(`X4FW@gp=P-W`)!XnX zhR-p4qv5;oaL#bwigMqc@H`&)+syf!_;~!h_?P%)@%8vWxH}iO-oz8`Jul}uaJQeo z(a9tJ3tq(Nl=ZF;*V~5m*7rPI?*p}?Ii3^0AAerF7~V#_2;Ldj_4YJ;v~-@QGhVzQ zKEvoNH2f>+tfjL*ULZ-A#1uZO4g+@JFy+?|VCS03Z~VxEWV>O;Sjcu%~d_-eeW_$vG<@soIc@!#-< zp8M-+hP!oL;)&6IxchJ+o>Y83o(9+TK4f?a>3mD4jQB3Ry3wg`cvtBZ zeL7lCck#mb0O=Iq{(Qr`KHSd+?B^8E!~JYRXPWqP_&o9V@DIh`#g~b1!#@-M3SaBF zKj#+Qor_!7UgP@jJrCD)p8hfMKk$>{h3iH8d`A2+{EGPV_;vB-_)X9KbtRY-J&#*g zVa_YF=iz_%yiV{VeB|-GeDFShJvLUx^MrxB{i$MjbKHGi3}wz%;)C(d(s6V4G<KaQ^zFO6@(-F~`x_8R`XbXwB+L%aq4r}!}ZFYzJx9q~`_MDN~vpL~R;z;*tN zh8K~}w{%K~@57%Ezm8WHzlPTq&-qL=_tWBW{8`-1-;DdAqv1UaA0_>o^v8);$EO&b zIfk#1PFFhX#k=6!jLts8PfN%3&xyPK-$p0VlxV+oKl2z~#PE9JGdP!~hWEzZ>)6}u zLqGBH_%Ne0#_;*lSw&}&_)2`GbQUrH2Jiat>+A%+&-uplc;G+M`A+T zAs)kj$KAQ)=f4|%Tinf=^u2q}(Rm)+?Q;?O1;q2<#l=_RrNuwQE8}j?73^Cb@A`1x zHnMLmJP-G++H=v|t;H+hoy3RYUBw6DJ#aVATkP8?@h_NjlGh36yu_UIJrC#ng8m}$ z&++Brf8(pfui;HmL&{tfV=yrRKw`` z8j2UeTZ+GdzaTyce-U@{U*TL{GyHYK=Su$!{RQHu@lTD;8p97sCsm_pAAS%|iT`SJ z&Kv%~`%%yBb4fZW#f#$^akp>R*|)gik4vW+ohQVb;5DTaDLoqjyEwnFBslW zI^WY7D1I1!!{|&f{6p!u{>S33zsBfnG5mMKFB<;f^yqxuxw!8WG8_Mxo! zO}whnscU!#>Evn>&DU8x2i{9MwYjeb89v+a#fI-R{5w3{hw$ruJWuc@c>LjcJb1qj zbDkHkh5seq7yn26RXov*d(X?QH>KePad%!b=oA*8hCgm}s(ROl>utb#n|dCucQc*m z#W&&|#LwWJ#ZTk^!`=Pq);qxPNz%#CG}^EC#8cu6jLuTS_e!THo&DlH@MF?x!u@&5 zyFT2{A?)W3&%^zEpUzG3ckv`MqxHG-{Skja{ChmD_yf(NkIyK6KmL&C{+zjScP?&S zg^laWc^wUxL8NNySxm!g0xK%tS{%(J7p+&MbWX?P{v-4EUA zR}+63uWNJ~8{Sholj-ykpNJ2X&RN#=uHmx{UoZW2^f!sG#djH<1BRcM&d+o%i~oe* zluinMy?@`Fd(X>xe#46!{*2)*@bG-Y*U6=Po$BFvJn*E?M|1QRzYiZIUK$@JUJ@UT zyZg|sYqH_XrPG4WD)DCcMx(RKyFOg+3D$eU^KiXG==>%=2tP0WA%0nW0sarJ>rFiO z|3BYsxcj`@PbV(E8!v2h9yh#^bh5RK=4d9K74IOOtlXckc-M#fnL2OqCU^|-JRZDX zjm`-1O88ju5%}BU!|?aTm*X?Vm*O9I?$7x#?#{)nYn5^RX3xWQeNTUz_(A*|@vN<) zef~~7Gk#RO7Jfp!2L8L}{<_ZKZe6)JuLK`N&mX=Gzt3sP_c;%GUNP{Z!H@6}_dH?n zzT2OIhF8PgecO#WYl^>wKPw$K=ktd5lg=zU1I4G}Z-`&QM~R=t$K!6_o?zeRiM!vA zUE+1Z{jbdZ|E1^gz#F%Y_I-=^v-lqIN%%hT3HU+W%{iSpFNn9sZy26+UNo2Mxa)Hp zUd`~QarbqkJNwYi^Kc*bFn>q!U3ho#fAC)7H}HYD&i|(2^Q7}gn`r$Xia(4mH#+OQ z>%()O&3eD}JY4USbPkDE#eWj-ivKF!1wV)DdjB%~!THhp+~?zDI%&nn<8fU31r4t$ zofCAP5-x~Rex>K(x@OQ{Ej|_BBz_#x4`h@K~WTPgTaA@~tK(t4gSc;D?$Hp5Hd?!GO?oMpv};7>}&%~{Xz zm!#8<&MV?A@xJ0K@d4r=<3n+`Z{yjwcg5Z7_H4t~OFwhFXn!|}XT*1jSHiy*uYiAt zyE#8$&U1$UWq7)U(OmAl+SAV@-WHFGkH&M0kHib$Zq6;tS=ICKx%q34vDVUAN~fLp z61=O?dDZZV(m60# z_zHZ0_z8T7_;GwBuJcbc{A1}P=@6aAQt?Fi8u5bodhz`DHt|OIF7fB^Z*Vt1-#*8F zGyH<#_b-ap;qH_E^plJC#na>Zyx9#eEuC3(%8Adws~MfA4eubGujq6Z-;BR1ofo6! z$A%a_Lpp!ZnInD*Uu<+%8opmT4>Hg}@f7%RqjTEu#Eb7e-x73^iWkGv;O>08us;tO zUP3xe>68&~j8~OTPx^HYZ!evJbUKN@hW8MkhxZnrix0xxdfhy489rM&JL$|5-;RGG zegR)5ehyzNo~2{7K^w#~;oEVYf4|{pq*Ia31@R~F>*DS3f5l(G6Mq!V>t0XB;Yr2E z;3;u8f8XfCV>u0f%<$^cUqQdN_%i%iqw~Dsy`*!5PG9ju_)w!W+VBsgbBoSG@qh7^ z(iy_OZ7}>t>E!GbeZWuRas0H=`P1-JA4ffR?ltM86R(bE!^4jXKgP|U*YK*+=}M=D zco)3BbVjg0%?$4$oww=q79WofkIVoZ%OB2@n(2lJp8EeV_d(e;ZI9v3Y}-fC*sYG zPJ6?LNaq_mBgFUOW2G~b{h4C;r_#AfXNCBm_y*}Lq`$-P6Vl1@QuG18iD$yki&w@k zi&w<|!QFYec@lpbJ&$@e+}#fy=)}d_;RVD;;f2KC!b^*PhL;mxfmg$I&ZiB3Q93`+ z=^}mv?DQ;fRs3oEYol|-@JrI^ zMdzyc|L|Kz=l-S9e&~81!QFi|l};}4DR@!otcoz13*IbV6yGhK)$Gqf!_P~n37yO0jqsb&*+l=oWzqi;z75aP zd3M~L?*KYE#rxxrihqC?5ubxUj_dPQHN3fWcF<`hz76jveja~G{4Cx}JoC%ZzVsE( zh!4ee{?UfdlTHOXABva9mx;HOlB`NdR(3`z3Z+p0`|EqXe|^vE-*rD84Nq^^xjxtD^ZlN4pZmtQ<`tYe z)g5n%IybCNTlin*-B9N%n_C~pC!x;W&xgNY3Ou*@9H-6_$G4--qgLljcs29=PMzb9 z-$0$NRwuSRet)}|r!?38?y>pY;dl|$8EZ#9qE3kKa!wwNa~SO3SuamKPcp5O6GsDHugSAm~5ukF-n z)oH(pM$g!u0O}}0KArcee)80 zr+JE%;rfDq2lc-*&jUYYUKW1Yya7B(u7qL+{^Da9d7n z8(jDKv1pI$IB59{=6N1jEr~?z0LBI;X`ab ztKlUqzuTPG%YlgJNvNNJeT=N)L&=y6WJ$Fte*-#etx*JJK^bzgnqZV=Cd^9 zSj9*_PlC0xek#M8o7X~}-Bzcen&PvDk zpibr&!+qQjzr*~PQ|G+n$ySH;bRVc>byC7Bm}fNCKJK&m-{trNsMEpfl!do5e*|^D zxBB%Q?|?dEtWFpBX!94~E6jVtKQe#CTr58z3Ahx_pnJhAy2 zcyaR$@S^71%-R1Q$1k8xBdc=}{)G88_yF@8@P6jWJ`LBW^S01DC49blI&<}Z(#}IZ z$BR1tDC+OB`nBOZ%o{p&S~~tB>ilJO`oe!RAL7(`-SK&-)BdG!j*H+=n}6)o*%-;^ zO_=2%o9C{G=Si^fR%bW-HS>c`{Zo;AwEo422lY=|oy+i}<~N-B$=CdQexmj7h>db&2F<%JJ-8Y=)Vt5Yo73P|!`dJ^zNBh|k@t~hJR_7~t3-j;b zv&|2~r<y z{A2T3@J{{1dCr5kHGdzz)_fWKWAjhVHJ_M$AN!U_KInf|_^`2k5fA!LJ0Sdt1Mt-5 zC(K#@LL?up|3}1w`uAI%>+llhN!Nvs&-&>cFX4E3$Dee(oq2H1gZ}ltP_Kvw{Xc1a z_JKDwAAn@G&Ric@lm+$m%SB4>bP}KHq#fe6IOgbInuzY<2vc z+{2Nm=`lwKLu^S$~xW{bsn)gPr|F1cQjZ1!dAa~Bp+OlmF;>Q6!GAC z>}++0!8@9dF=zd^BKc_jxe*WQkFz=p;bY8~nzR0=k$h0UyY;^_;z9jYR_AN@O7nx} ztbfY!WE+EI?AF_Z!9!}E=^ZcTcv;7vGS_)KW_`ATe{bFio^(*yUsrfy^Iqm$??A_A zIsTsGo6XgK*+F4HTj7Px_nEVwqmExkozqt5ANWc0)b<5>)h}k}KeOZao2!4_56i%H zKYZA!Q_Jzrj=$jeXmjZi0ppLaab zXF)RDlROFky_|N7m%vpcEKZu~R;McbY4bYp*UTS-k2G&)&VHVDydUZ; zvpNIeADWMVA21&c-*5gVJn^gHeBXx0%x9ak|HY1PL7hTYXB)hL`8V+T=HJ5WnjeMt zF+U0KZGP5V{o5Z`7Q5ki@~z=Kn9pslb2#1V=Yvl(zt5a?$~ayhb+%ZYC*YgSo13$K z2ghGVoeNfHF#NpvX!D?c@OjfRdtEm-;=wF}_b!8v?U6ds_cQmv_4VlE@LqPICjBCK z#PD@Rv`$9&s@At+u~Kk-zeh#59=8rW&-$=VLvyWnR>-k#k$j#6%QPbF?*(`U^Zw?n zGu-jnsPmZBnGdgLzQkPh-?Kh&L+ z%A>-DuEUF&C*2wTeDLq!A=g`-bmqbJ60EDc-EVV8JWqnBcrE<(`QS;-?}I;TUIJd# zytKLcxoQ2>fPZWLxZ~YWf1uTW0Y1RIKYYIVEAYAIqs-ao#7I7v+ftj`yod*L+hKJU z!MB+&ga2y25`NMAQ*-rm$>y^cp2BX5-$&{MeIB+4eoDU{&T$O9l=)gIO{dagF`};@!g6sJ-@t5KH^nBf|Ygi{a zT+i3(;O~qJ^BEn_3ZK^@%;#`C5B!mD!hC+m?}dN9HOv=%Gcm>>k7+VY1Jil=KYj{KZ@gc`g!ZpuJj$ea!vL7c2FPHz#O`aOAxn*%Y z7krl0zt{1S@Y$Ac1UHVgfZJ^#*2!`EZ8`s2m-@Fa-~K-zjymdpyyI`fXIrD6z_Xce zbo_hAe{ei;;;>-w)4}zt`l%c*fa9Cm}-r@65K@BucTVQ}r& zBDnfl3RgdC;Ogfyxcd1Du738z)z2Sr_45y0{iI3~zhCM{-w&dFR6jY9S3d>dqik+< z;p(RmysYJ0JKhQYu;pKHydV4#%a4X@y%XVD?+m!sy8v!a%l~`-Mst&|Mqc}+*Qd&B zKIf2s#QMJsSO3@H>OZ-??o)mBpAN2mio?~bHceerLGqcZX}gCcssH3S9N)!Bu|=T=QJz_y)Mvdm65OeuAr?Kj7-;AGqr0N*-RA zn!oB7gsXl@xayaKYo1NuI=8Lhb?p8y0IvKnxbk!1$}fiN_4CJ$uZL?6N8ze}242JZ zPkLMYJmqQN>c1HLd8<Taz_nkg>^JEJ=Q-#{o)NCkcXB#j0Iut$gyUu5?*v0g_;|$eI`G+HJk|?t z92)@FJV!V_4zAC4raC?cuDLCB{1bR5YxFb6cfvK#{f-}n&$9aG9sd=sd1gu({z9Dx zD-*j5uFrQ0IbIyD{wq0N9j^WxINl7d{`b2UtDo=T>gNaesBoKNX;O#(!~Mzx*Xz>Uju(PIZ1wMVygXd%tpnG38^X2T zR&cGiBV4b?dN|$}uKk(?*M2R6tN-P2^}hzL{L)W?{p5t}{FI05oK%IYpVn~YJHeG730ME);p%@HT>a05>pXnm_{VU~|1ezr zoPw*LU*PKJcev_jPW#{cl@qS|_rO)Z1YG;|I9&Zd30M90aMgbnu6e%X_$zR&cOG2* zEP<<^RdDsQ0j~N-;i`WIuKK^iRsT=8=9$I50aDkO&TTGuop4)Y72(QPgDc+-u6$Rx zUO)GCd>~wNm;qP)1@Icy{}#u0!PWmSaDD#rJ6v4kM&d5@yc-3ZwXhO z4shk)h8V_isLun z6)k^ThHxE0d%=9<>EU`GJiFt0;jOHGQO8Ter&zuTJnSwOYXxs=KheeU9`OA({{e8# zZ5Ukr%!X?Y@4~g-ui?sn2Uq?IT=^St<@4PhE?oQ7#pX~1uJc(2Udrb15Il#?zn0^V z!*xDeI^F@UIllm}Zjaj!t~m^cYYt=J+OHLG&1WrK^Z5d<`FstpVsks>_(^zm%m3{7 zRrp@Z-+B`yVNZh}2G^tJlfvGtk!wD8z%`#7aLuPC+>TGI0lbaFDkk_0agO|1I`YET*i^ywTFT=I2QE>G?0j~b1 z!`0_}xcb})S3i5<4eck6I(`PO{(pt5|3Be+oscwB_(0lsc^bIZn-#A0=7wv%kHX8@ zy6VI0nzwYk1H7T-`#L@tuK7%YYd+KA*@J;3d@ON%1zdC6=J;;7=9xTm_&A!s{qc>l zba1WrPRH+tYhCv_{s3J4KkRr7xSp4vaQrE_&Piv-yTkSRu)pI&;kr+bb$l{h_sQ9g zzYEuWaz9-Abri1sI`8v&fv}_xc2L9xb|xnykvM8#ul6Fd9ClH@F$iculale*M09Zr_LedHHVXM zt@j_e^0#G;zi%jC8vd-Us}fx2ttMRer3P@FpXQFYgKIuL;ClVj7p`>;gKJ%{!?nNf z!nNLI@R2r${cz=v!Zn}saLwmexL$|fa6GBKDWL0D^T`a?d~(7ypL^h%PYJl@(-^Mx zwuEcFo#9$zxPJdY8bp-tBO$_Zzs*!xgylH{hDjZFk0B zcbZRnxXwd%$MeE9pHgtmrvhB_X$DvSZQxq(P`L7=;acxxxYj!ZuJyj__%gWGyBV(a z?tp8(XW{DqqT^}o&ok3?r+g;3=2H@`d^x!C&%pcJedY!DYV(&J9}eGR`SFgw4Zmpl z`HsI2*ZzJ2*ZyvV>wSqY;r7Q}$G(NX77RS$$E#W#p9pL@L@x;2rbx!o>%4=OZ52KNnPlW3{yzBTf zxX!~CxX!~axX!~BxYm2a@jLGd7p`?Fe>c3p&8ISapm|OBaPub}Zwr6j@&nOU)7^SsCL5^&9@9$fVs z!h3on8F~^(2^*s2rIuENHKLEdMeIAGZVSd5!%kUePkL9_w?EifoWQ4t+oB}?|ycB$3 z_{(Dz;Cg-dC|u{fK3wOyt>azbI?u1b|B8hlBj7sEQ{g(#bKpA9pTJMs+&02B|DBHS zg=_xD;r(sS=ir)u>bqmNK7uxaPti30JK&msF8EjBFOL<3YyRaNuL9Tno5D5E)^N>p z5?uXHhpYcZaGjr}aP|M0<2&K%{{&p;=R92J=LTHsO`10xY$Dqitv5Sd=O-^*=clOS zrQte1RpB~6wc$EH&%?*qd3Xt~IS+IEb-3m~+wphdKicDNf@@#4!!`e-aNVEJz;%C4 zpD%u2wBD?6tv9dZh2dInX~!$Uwcgr}KLOWzTf%kTI>2?_y2CY}K5)%v3S4uT4cB^C zIKCFH_3nXde-FX6-X!_s_e=exhO3_}j^~1_pCWMeQwpwr8o||13%L4u-tm{<>SqjG z{Y-+ZpY?F{vlXs>zH$5@T>YGZtDj%s>L+!9|K6`V;5+PkFAG=ymEp>_ge%_x{+ZPu z0^e%>8eH`k!j=CJuKaGeo=*?JHUA5aUxsVWDGSEWQ`h_La9!^Y!_`j>xcYg*@u%R2 zY;K(#e;%&>hr`wX7`Xah30ME?;QOtgLyn(xJWZkad8$q(xcV;)SO53J)&Em))qfhU zdA{QK2>6e--uZCVc^|I)cW~v8!L{D2aINy>;1H9 zj@O0HvHqWQye(Yo9RgRMuff&NB*&-2)z5oyz3=xCe3SLR7p{H|!`06j$A5vVpX+e- zlcZ?;KB}KQaP@N!e2Dd59j<&mxczlcv1c5A0j~Pv;HvW$T=`XwZ-8r_I~?BwpJD60 z4A7cbcE}1yE#4@zRKn{5w3og z!IfVPSNzju3y`2A9yJK>kDei^v(55bjh4p+V%T=_w8jm2VGM{#m&C z83k8<0$lZ%!u}}Ygr~IpGI%2M)o|5623P(pT=kQdil3YEY2d1VKV13paMf=L*ZaDy9UtKMFvsV@ zyV`sf!+V;44A<8a*TePoh$C>-KMhy?L=VKzQ~8u|ZcA|`G#=iyTg_5 z16O_$T>0s6&FxdT@|)qxAA>7@7Os5K((&_DJ`G%7SGpHI#O7HN{;K(7aOIoAHJ@H^ zEB`QD`4({PV|&L3J3b1o z{ujVi{{zRrjCio+yEBCA{}!I*_RxZcZ5{X7m={Z??*?+91@5pdNX2Uq=RaMhm+SN+f7s{bWib35Spak%>V z1+IR6hpV5v%Ej-O`pFMh{o-)de-N(U2VT|j+VDws&YL>k8m|5a!qxw)j?Z;`F+98V zvjeXBd*I4ng)4s(u6d>?A3uN1GXq@n%;9)GxaL{H@v?BuvngEtw|0C0Tyq!(&u#OZ z4OjkMxbnN<${&E2vifHn{{`OG@_#y>s6za{Xus0HwO^Uw+OOP>7lLcQ9&o%OT>I4= zuKBccyqkHdgyrQ*_@|`(`TN72{20dVE{+Ir#>z`Ul~ve;Tg( zKfzT$^+WOVSN%I2&jnZgf{s^*tA0Jlo55ATjpHxFpSArR4)1P07q0wbxUS!AaOHQy zmH!#8{8hO6$@*~o{FToQSH2=#`D$?W(-y9L7r5$=hATf2uKY)Eox@KZ{~WG!_@(2Q z;HrNOuJtCV96wLhPYu`oHjCrA;JV)yal8~<_lHJs_20trPH^@AyyFYt<5R?LeS84l zW4_w)P4FZsZt;otB>!@nB@#!!~1!;1kXFMm*RrozKJY#dbc=IQ|P<=ju<#6IBfx zNR;rO;Bj@{(mS3Np4av(uj7T`+TXH{SB7i;bsTR9*ZkW?JUag_aLxa%h$l{%gXTOF zu0K!wJ;y(S>wdBxuIq6tT-W0s#}C2J+Vyw_uIuy{_+OU))A2-)#GeOUziA!M3{Pw4 z;cmFD(|h5%9_zq0=Z0|2vlU$P>_~czS{DS!}F#M*YhNNuz7pOpM_7bd|$^0!{4<0 zSol=)$?${bvmJjIo-AFsu8$pG55LRu+a3P~UeNMK9X|uVV)YBOeon#F z&jq;p`5mr){)VfcoHgV3>wW8|0Q^()5^&Wo3s?QdaMf?=ct7}O_P9gfn$H;X;P~ZA z_-Fm5a6R*oSDhvBFRcDoj_-%>v;1Ya>Rg8_pRHE>oR!Z5*Sadfm9Gx}DrH#rX~&;| ztNx4ToZIWjtNxpCt?OgB?i=eJKLXeNpJ(hv% zdH*5!WXsogya{}&<=evbyx#?`=l2)kdLDln{`m?9w{oy)?Bj9>{H4d)VSJNDy3)kzb?eG<;!})##*LuH)53_yz0j~A_>iC~< ztv6ZS`2E#-)55jhI~~6puJu-jSGWG_!F4{Lgr~CWt}R^W^EtTA=ZkQi&%tn=&rxul z&&6>4{WQzr`g~+PT(9T1!Zqh_;N$Fd^+EU)^S|NhCwaa2eOzyIzTNRV;rlFK5U&1< z!LwLDRzxh%($@PfTpcnAdeb(D-(RgaGkmMfArD;Zy$7!KmV#@&72u20hkZQiczw9$(;Tk(w1XGU z5Z3SJcyGAoITWsWj)srP5Z0gU_zd_|%YO;i{J(`CwfUcL{5<@)<*&lOwexuse%3tY z*THQ z9(H|wTG( zzi;y#<@f}+*1Ht`g!TCeyqWm{xaM;lUeoeFIerDM$GyE#{65O>gsY!&aOJDOm2VAK zz7t&eSK->nv5qf>_qBal4j*m42d?}fxblC&l~3F_er~T>{j`o}hO7Pq@QGHZB7C}e z3;2BV_Kpv8{B_5d!S(lRu7XVt2(J3A;i}&WuKKUS+uEGR!n>JIfopEF;i|tLuKHUYKLyvm zUw~`9znkmxzA@Xw{Ycw1eqU54GrYg8tDNIi;KMCn*YQU1*DU`6T#wriuKZhYnu`tKh1$0j{s}?trV#9=N`4_&r?jZ~Oq)`|y|GdY|(eT<>${ zcrsjvUf-(!d~o$&46gpmz}0^hxcaXJSO1OR>c0hC{l5b5YWp|>KHK~axcZ+8SO4?j z>i>PX`u_y3{x`za{|UIhkLx`A73=>BT;F$e1FrsWdn$f^)lYi3`Y8riKV=-R0#`q^ z9PbDpY3u3+*Lmw}9>jw8Kj-WW*E1e@)p;BKy4C;G@y+meEPo8HI%na^Cv6@-XXVqt zwXS>N%9n({W&PB5ya`T+yXtNz`NSB2k|GJL$+@J8m1;re=gOSm4lGhE;Q*&VL$|C|6>dBySnNzv?F)T>TV<7qWgz!yhoO3|IY{ zaMkYsSN-Q4e+^#A9`_Bn<}=+~*Xi;v!}YH~UUk;Ot62S`j-P?ow|tUT@pD$4)NtkR zfh%7Eu65OeE8iGi)B1VA@qTdCA8yXMy@R~!&x31S+u-{C_TBL9_ImO#T;Ioa3a-a^-)3k}7e-o>d3I3FMDY)_#;OhS=xbjcKl^+aOeiU5&EP*S(0X(MAekJ&e*3VOpKkfJ{@PSrm1bm43 z0=V)Yz}5ekaOJ;+D}M#9{0;aJ>nC@+@P9OC!0 zKfd62KX_-$k92%IysPD>IX)NO-SW#EUk&eR`7Ms`g7>lfA;(X``&<5J$FIT%Sw2aJ z`12r74Ig6pERN@L{Jw|>_r1E|!^IweKX3k2#DnwM&d$lx@UP6DgX>(q2+wZ)4}!Nb z9|_m_nF!Z>rolCzjqv`~=Qg}j)!zqK{Uh+|*8iW5 zC+ZYGf8}$*>sy_I@F&cx!}|O2hqK_Szu58RaMj-fSN%h9 z`*xSuACCXy_+4H8oqsSNdpk6iAKogA#U6nxUk9%KpMfj?0$lkCaOJ1K)z4bE@>}4_ zpMWcW9%8vxoAAAs zpXvBQ_*u)ZaC|L1$8BLhUpW3XysqVsL_AeOiTq)i*lBnj^ECZ6@wssA*9Q@g?$^ig zI<{YjBOX2fr{EK9zkYH2cevJ@n#PZW9w}d@nF3# z+qyc!Gg?1A9PbOi)AFx6J{G>l@>AeCx3l3lEWgC@74TGc{cdu6J6!YJ7xCykkH9t0 zB+td~ujZK=uJe=C@!arfwl9U@x=!zh>w2sN*LkZB*E}D0{7HCvn`Z~dpM&fAeG9HR z%!F&bi{YDX4$I-`>^!W8>l|){e`NV@;5u&y;hOVl$A5xr{@37|L#$i;InjAb9r5US zy92KCRx#qi^?TChQw@IE{4scOn?qChhvrYi3){Xw121a+BK&^ym*J(&N5adSkB3(> zp9ZgLJ{Mly`~!Gx^N-=0|6cfOHiyG-&F4?J@`>ydSUvA6pBt`xA^13Z-0F_kbG$2j zveoGcpK3l4uKYCkG|R7sE58Y@{4u!lXW{B6wY}l2xha1KT=^1k<;%j=PZPNEt>CIZ z1g`vRaOIc5b-!8-|IV(*EspPk>$?69UdZ<47`(Xok8s`JeuL}&b`!4qRk9xO_p1VS z9c6Gl8(jB|vJsEo-zvi^gbx>M1=s8Cj&S9N!IggZr#J6!obaOEe#m7fk*KWpI1e+F0mvvB1v!j(_c z^WV8eU!P}!>vdN>_{O~9uWt<3-xJ@)@y_t1cCdOn-XEUB@*^D|57*y!KEv?^@K3G& zGRIfL4_W>T$G?XEVEIFipM+nr{3XY)!G{+J_a#ZM`2Cfqh9@Z)=I(U-Zg`eLVg5eH zAAt9^d{xJ5!_yZD>o<11B|NL;yGA^?4i2YjE|G#J+H>=XZH(ctblsSsc#=*Y$Fr;}5{K-iIR|U2hGz*86P4 zqwDPj*ScPDd<6V)Tkji=Plao}iyU7H*Lv4PJi6Y`;9BpQhzIMvkuNx%34dQ7Jfrph zr{jrwhrdqyUeNMs;JV&3!F9dohU>a61lRRj4X*okUHBc=Pt%B}NNBlz*mmrNhzD~} zoqllDnFiPWe=b~e_yDdsd<@@Z_sLCg&0#xSb2tN^V|9LkFEdZ~Qv7}?p9Q|y@}=M( zn^%CV|7LLI+rX878Ls?r_-1?D`EcdmhbzAmuKZrO@|WStUx%yz9DU;FseC^82J63y z05>)!zhHemh+C&%l-c#qo6g;?JA%S>T#a8MyKf z!If_XSH2@${SSpJKicudjxTq7uj7Xu|I6{j{p06W*3Mgc$FssKSpEUH)>{#-{F89y z+rl-^fpFztb$l+ovh}$buKnE!SAH*C`O9$SufvtkIUs({$`^pwv_2nn{9(A}(*myg z?cvG~hATe`uKXgn@=M|Bf3xE|;HrNXuKE|@%BOkxzvr0=u6#+j_NAQTO&o9K_{(rT z4-SVPv*)|<5f5H>bqtpiTO9G=b(iWahpWzR_*tue0RFrAsfY)UYu}a-`#a*nb zfnj5Mo>H9x@I!gSTv50_FDUDHW%x_>db>4T^*g~;{{_eU!Bu|>T=i$eRey=&E8wcX zAFldG;m2%lKRJE{uKKsX62C8(tt`KY zpWl5BUt*u9?1i_s_d^cD-!VTA*Ym}%aNQqnz!%zmIO(AHId3pe4?kg^6@J;g0Q|r` zVcnweOgXgz=lA-bQ?_!=BuIIZfaJ`?93$E8o_rWXK^TGr0`sP*PdLF3_Uu5}a z@R;4_+rafcRX6w!%lC%sd1M$opFLl^4zFoG6+YQ~4t$~cQn;RXK7nVo=Y<1sormM_ zMESyf{oC>6!{YZ{=dB=I=c*W7=cf)_`G#=id%%_N3s-(JT=^Mr<=4QK{|tV&&F6&U z=i#cKVtD-A?zK7@;Cj89!|{CZ_Ex7VytH|3xav1{yd_-q2f$T-7+m$oIsO)0^*@2D z{zka!?{)kzT=f&b8b5#4Nd<3ib1MW_zBpXZJ9Xj8H-anQ1Fn2uxbl z>zRKBf86{8T>0~G^^<%={5+LU2UorbT=`OP_0t%xd`r0U{ou+EfvcaHaOD@mRew8N z`ETIL{{q+J{_c3@k@53XJ}111?bkhymw@a1KL%I*rjGZ5>-l{ET+i=Q;L6X2E58A* z{1Mr8}_*u{-*g+_-lp3{291D zk4`c=e*VR54yoZ~&5OX5F9m--@}z>->BHSN*Ty zs(%Qs`X}M4{|{X6huk(Me$J|&AFlj;@ZmOxx^U$i!S()I54iGu;p%5HT=^Mr^|KzX z{8qU7IR#h#0$lY|kBy(3@^`>hzXV+QvW_=%ybWCQ83b4Tk#OY~!IfVMSN~tamH*c9 ztB&7vJm&uwt!cRT(wypQ#H z6|ViwJU)J&%IAbDUkR>!b-41K;L1M_A7p(Fc6=0E^H~5_{SV;E?}RJA7q0woaOMAk ztN%0;;^!&P1Xul%aMdpdSH1~c`Bre{`@?nrAL{rl#}_&N1zgXwU&HlvrQhIJ>~-~D z@Vo4FY_d1v=h^WzYnhb5%^5&|1ZZAzZpL_^^*^N)XsAexXw>GxXw=% zcr`oc?cl246|VZd;i^9nuKLs9`uf*gxax0&E58k%$ofAASN;-QUvEu2DSpn%XNIev z`{Bx$hpV5b;L1M@S3j@7l^+3D{e^JlKZL9PF1Ygh9KYiD4Y=lW*W~}6XMVWy)!^!< zE?oV0fh*s`@d=JkaeTGon;bvx_&NAbdfnytP54F2XMgLz=b0C-{KIg~rv_Z}Y!6rd zS;t4guUMZG;M(71aOGFSl|Kkq{sdh4ByY#hNBPw78`ft|#|ywUpQ>=xuMJne6I}V{ z;mVJND?b^o{uepE6t4PT!d3rUxbnZjmH!K_eAX%P^Vj`9x8oHZujY6ccnNzQ*aKeA zd;na(Phl8bU;iBk*Yo&WaD5-q9C&FvSMR~~KH*Nd`q>LtKS$x}=L}r^{0dh;f5O#I zwyE*^HKkDa<2-PE-MkoF^~=Dk+Z>v~Rlf~f^}E7Vzb9Pv$HVpgJa5BQegO@I@=f9Drx#rL0dUoS2d?})xax0$E5F_G z^N#-t*L-e&=fCH9CtUe*aP?CKuKruWmG9{ItB#L#`~$~7cKln%zlSfj^ZBFWzrjDS zeERACJd+d4iFzTEnJ6|VhV09XD4xbk1YmER9n{u*5Q*o^qO zt+75cI-VV_`8)_${fFVow}30(9VLZ9^Wmz$8Ls*};L4wcD}NELe43f@ zbJqPolj9{FFXwnOxc0pbT+hER!<8QnSAGs$`S;*Q?ELJ2E58S>{3W>Z*Wk)$n-xD# z<@3PRe`UDxHQ@)X|BjA#gR7r0@D299$0Yby<}2aKuY+&1{1JE~dmVTh-rD>kyp#DK zaD5#-%k0>#k3R{c1|{KopR+z(zi+n*T;JE)8?O97xbidL z$}fPIw)b7PI{ua8zrY`|I={oKnrEI9KTqXz!qtBzxboHE%6EV({~TQXjE5`#HeC6Y zaOKy*)z9~E<$r*yeu}yOJ)aD4<%`1gxTPI$?08GZUx81ueH;OwZ$1&O&(o*D_4^mr zz*YY|7v?*F#}w`AE7wBo7H&`uJ32A3RnHw zaMkYwA8GZUhreY$4zB!L@ClY*0oV6quZ64sgK*_fz?J_Su6*+O@pD$bAYA!kaOLa5 zm2U)Bz875i0dVEtfh#``KHuiK+3_84)jtpa%+A}d@MJ~8dELGses0R&30J-hT)!XW zA-I0uO>?;N?cisu&!KSTN5l2|eHOu$UkX=0U&59D7OsA-!j-=XS3lVo#?Mpvyl~a8 z3Rk{1T=hG_m4DvxagM(Q*L+sNReu9q`4e#E&pZBy3{FiXe^IN#`zrmIN3$A%)efPiTncMM-@PpQ8HMq`0d${t? z!j*p=uKb&D;mT)!FMgiN=Y=a@1+IK8xcYDIcssc2 z4}z=yNVxLz;mW@cSAGXv`?AOJi;n-{c$UTS^VIKS$_3Zw^%ddDSA#3x0sck7@bR95 z>-T^4fxmfgm>&e+XFeLP*Nqe5`ntwa_)pf)C-Cd$2jI#dhhMe)O}Ku)Te2nbbJlwE z!j&%!SH1>Z`N!aC3WbmNJY4yg;L1;eD?c5s{5rVupTpJv4{+swhNratQ@{s6e@kASQGIJoLBfiJQCSHM;O8@TcZ;h$Tb zKjF$J`XGMJTP&Xou6#kb`gsJdd>y#@=?YiACtUrEhb#X!T=hSJE58x0`rpHq|H1KO zAI8s3`LuA&rzl+c(s1P)! ze7WU|z_s2|aOE4om2U>uJYR$>|FYv#;h$KabKu(F&2Z&+z?J_IuKaIsw}30Hn0T>Y-q`VeaD8212t3(6Vc%om`aXn7aJ{aZ1=shfE`sa(ke9>t`%u=vSKIUH z5xDv}4Oc%G;p*oPxcW)FJbu5_Pb#?jDFpw`=2je@$gY>i;L10JU$;8F;QI3f2Eeu6 zDRAXy!<YjE|m z7~agz;c~dn&nCFe&vy8SR_6j-^)JI!|8KbJCtn#qXVuRK*Pka-1g`ou;mS9F_qYDL z!jJU7FYKL%I+EL`(U`pJLKGmYc-!n;|YCE+>`kHeLJ60Uq-xblPH%Fl%>zZl-z z`dsJu=WxyEBwY1>ge!mB>iBsopB}D!F}U(&;Of7o;|<`d{~TQPUxX|F23+~6aOGFQ z^?b3x@gt6(c0Adq@$<}WuUpc>_2(>QgX_;($^&m}bt=JCr#if%<)4Nt{|x*=%fAL! z{tdYDOX13Y0$2V3T>0a0%^|iXexAywfIndU7j(QBT>aFGc&dbl(%%!&7+x@O*hd@3 zJHz$os*Ql>v^wM9%6|w~eidB#@8HTGgXgu!{m1d!*8V%^U=GR`f)}wm#o@)x>%*0A z0$2aN;mQw$D?bCS`~tZ8*$!9!8@Tenz?J_Uu70wti=UhFx!|f_1+IK8xbhw0dfaY~ zk9B-9ysYil$8gnO@A&T#4@y+d6|Vnpcq8+a>;IikkeA;MeTsR6297s_>%4Vz zyc=BSt*_&Q;W}?)9iI%>d7J0>61dLWD#tg#b>6;o{9Cxr+i}Ow!FArQI(`$b^Oj;` z{CSXPfa|>Fig@(A6@=@&wTgK3ymf@@y!CXvKV0W+q~qh^I&ZTaUj)~ATj}^ZxX#-S z$M?W>-cCCHBV6b056Az3>%67k6ub4I>s_7|uJe}P@%!L9Z{-}X0@t~!?|2iq&RfTb zN6%X~xX#=7hzIAbX0CAkZ^Jv9uZAnX39j?`wd3ExJ6Qdbj{gW(KdCmy@0a??2v@!o zT=@!c^Sq}IsLkPZ_@Cx)MLbQg^rYeXKZ&wD*-BpI`I%)}5{SJ-~ar`yM--T;k z%iz~+K5HG{0@wV%j(FvS5fl%{5c@IW(Ruy`SDl*?kDiBYTf&0emppLQc^Izs)_`lh zPdNS*T=hFdJi6XN5s$8SBwTeSMm)OS4Ob36}xzU7O;b-k2^H?r%f30&)K1tE^u9UJ>a_T-hiwARJiKThpYbka6O-X z;`m0m`Z)&IjKNzn3D7f+q;CkE-9N+2q zUdJ!N@3Vcp1}|@(d0YHEOPS|%yga;$<*UMV-)I9@zB63;;qXtb{uub@=1btpuYfDR z2d?}fxbipQ$|u_%KR10olF{+(@Ke@*0mqBN_4&wSaP`v^zS-)(==jTUt#>M1k2?o` zXP$8V8{n7hale3HH$M$m{wKKdsdmKAS^11`<*UP$uLpn5`fuiV8~7Q^Kj-+1@G*CX zeGhVcBz&&rCpkVHzR>cE9A66m-16%j{~Z3i<@Y##2wpyKxZWQe{~4~&m;Z7+@y@Vb zqJ;khudnnxo)NC+|e%ieI!cwcW~XQeqMN$JPALU@KF@5`laEj-w0kMPf#TmYXPs7=N8Ah zz_q_U;7?lrZ@{ZqovCoupAT34_u;C)3$8l*;EnBZkHK}G&%z(F{*!(cu3Ph0{WOjj zf$MQg!CP8CmEk&{HQ|3-KV9Ie-vh4t1K_GZ46gcf;i|J3-og6+1g`64BRrQ~FDKxt ze;%&-SKz9D1FrfxzK-9o{?=zc_!0AB@QK!E8Td@|#&Fed2|sA{JHu7KJ6!e0!RJ_= zx8Uo{=fG9}J@^dkeQ{!VeoeUcx1rC92j0-`^9|u` z%v(h~O+srWl7{{Dk9crjRh^;m)>db%jN#QMk_A8OM`+7r!r>XKKf@L_E5#QV|c< z)hBOQw*q{S`J;~4hmW=Vb8yvv5w7}!93Kf+{rPa!e;+=;`q|<59>*`jM_HXe;A6}) zABf)<<#WPyUn&n*zA9Y#)^O!J!PUVN3?nTRJ&So*Bn!}b3H zPnI$CKOIkWJL zcp=O8a(n=Mpyfw6J`O(A^3xrk4}aD2OCA3NKHBnI9sdeG*764(KLMX;`HK+`?pJSy zV~+g+|Iob9_u>Bpx1;F!EDqQCEbn+#cvd@a^&D>u*ZFMccvpB;J8!)m9|+g^eBJRk z;kj&{GaX+D*ZExO_&T`uYg@#l`?VXc{kk0SV87Pe{p31)i+S>+@%t-J2iN}Qa6BJe z{g;S%wEwbj_1`k$LI2yV&kpdt<}Wzj53c@Scl=Gb`d<+7X#XF;)&HJ|2mOC(eI9}z zH~#~!{6BEza~+G{uMu_~6@-sAF9}~^UJm}bc@ub1^H%VI=KbM~%!k4|o6mtiZvGy; zsrgFB*TGf)5M1?7!j=CAuKsU39zW;y)=$QWN8h(E8u4J?Ri`vub)JAL{}f#LK5*p+ z!Ihs0FKDkH7Q%~}FNf=Xy9R!b&EYUy^-sZ7{};IG{|;CEJ5R)Jedu{db?$~gWc?R| zZ?itjzz>)|0@wY&4t%3Mk2Hhp^*|fAp2tVP)&DrS`kx9{|8wB#|9!anUkO+L8{z7I z8(gnj_BwtTuJzu8m$7|Gb~1h+wcd~e2Ua@14zByvPPksz?S(&OuMdyI`w3Hl*Y$NBuGc5oPXG7*=5f3#T>DZR{M{209=oI9Io|VaQre{_5Y4|biH@}5Wg>a+`Hkbb6>=x>#Y&- z=z1T6tIo4q}@VKf!4?e)o$%k;A+f{I#+XHabKMq&@3vkuH4A@(tn2cZVzA2R_*9PjY;^@OR-wRj%5?qga&GD?~ z;^(P+ZpRD5kJ>)o@A%_z)qm3Q-f-0)==gN_yVlQq_$u?I5l@k@^!vl*$96_MxX-B0 zUbyP~2LH(F{{{cpJlXm9Im^?+RX*k48L2LSE}_8}VqJ zE^yTu3D@I}hihHa9G?qU{SP7@UGMgYNBjH+t~y5|9$oJr5s%jS2d+AI{TL2BcsU*9 zbsq9NUd8cRaLug?T=jdvm7fe(eg<5xKi_qH8CtKj&f5s#jeb`cNueWzW&UE!K@Z^sA1bsw7vSN(->)&I!x zPvNS65U%J)*0Z(bX&{1b5X-vh3EU%2vb!Y zaNRc!!FAs_3D1c`IN4hN;@1?^W}xblVJ%GZD^{}^2PXW`2CfD<|$7F*W(s~tA26EA9K7Zd}yYykG^o#9}HKY z;~akruKJ(CRev*F^>;gd0RCR4u>VtzUx4d%!Zo-)4~<=o-xs~#n-i}73pic_t~opg zA7TAJ<@nQZormWlUNWKOiecNakr5Bhp&oZUTy>^JJbIo#j(D`rdbsL*57*=V0M~ji zIerbU`bmEOcVD9G%@y%zp9SHnQ!?Vw_12Aev`!hyqXy?q@Y7V+rg&W?ESxT^my ze72pF6>y!~wQ!x=@8PQd16=hl!Bzhn{MF3iekA$h-+c-Cm#2oSpQ3O*ZfUr#>&lMT zgs-sqbb+gW54h?NaC{hC_2e=&T4^|Q_K-H!hZ|Iq4Og)cYHbS-}V%HIW7{}tfM zKLS_&X}I#wz}3$fxbl}3 z{+^ddf zy7Aw0y9@qd7>iYatNtU7caC`Cgc`e(goV1plOzqjzvDyU4J|*`@yYPUmY?VN68Hkk ze+^gv-@(=YNymSLH?sOy9lr@z|EX_=bJFKc@;l(_zXbe*&A%-Cig{zW@-5-Y4}j;k zbq#~(GanBhY5q2Rs`)2y)!ztL{he^t-wRj$EAV^lac{uuo8R{Lf6qTXT#uU_uE)&_ z*M3!jceBT>1s`tS2(J1q;PWm2GQ6w#aCjf{@s7U@S3h&%>Sr-r{p^CPpM7xEKL%I* zv+&v0|8I`}1y?^g{)yjT%|9P}u+=XX@#y=g4@Nw=@2Ss+;oA4w5s%jC6!D;r`gtC% ze)_@nxI^Gt?`*j0zYACWm2lNx2iLle!Bzh(T=jp0tNvf`**5=Vx86aD{qKDwd0M#E z`viQJy>5I8e%!o+y;te;7aPlxNgEp~i4T<2}Q<6Gfdte-=YMJR4l+KcC}8;5z^19Ipb``LFAEBlrosURpce3BKjd z@J9Kf<1fQY+5L8;7 z{?|DE8C=)<*N%S&uVvT!DaS9sKd}7oaJ}yR8?O69%H;9;E59AC`$JC03&6YB^;-h2 z`$k!KLA!pdIbIh&+VagDZv&rf`L6JH&3nRiKY7LR5%98hKbh$GG`Q|33myLuuKURv z$3KJXe)5&$`yD?S@#y{MN4V}kzdQanT=$<;xBYwGg8K4|aNU23M?Cm^f1Q0E`k>=Y z9B<|LaL32Mb$^=**Yz?7uIuGPxX%A7xX%9;xX$4&xX#-_xX#rHxX#Zn5fA47zkP&j zUkau8cfX?ZFAmr1$?}d@g=?Pm;F@P+xaQdgu6cHbYo0yfnrDBw=J_gI^BfD;=hssl zpAD~R_lFN1Uj^6a*P9*R0oVQ>hlA~!4Z$na}@lvy&iiv;=%Qzc`k#0WpmyQ|IYk? zmGFcVYptW)r0GGOJlg+uWRFYXSiOs^mcq8T<2;O zT<2;6T<`C_-9#_hzHk;?lYy~dVYU0;=%Qz^Vt@DpS|Ah2G@D(4R2wuhlj#-u13T6 zTYd?=hCS{I$2Y-STYkIa=ivIh=91$#;ajYJvNZAgC@%{o!zZe)I-h&*M|!dR|xv*Ym=Ma6K=qh3njIar~Qz2j^Mu#~y_5Ncg$nBWc?B zebIcv!5=BTL1cEX|2pB{$3Tk3R z<3Jk++BnB{ing{<(M}6WoG@ayL>!2;Vno!mLK|Cc?%wCDx3cObyT9)5yZ1i#k6VvP zRsGI7Yp*?=Q)AGc9|~ptKS_@9e2E;d6E~3Kb>HXY$iJH$`F|uw{(a=g-{X+P^?>|+ z96rk7;~jo6IqF>O@Tk z#2-bD_%j_oksQa@G;$nY+2ok_JaWu?0XdGxYsqmut|7+CCB)L!in>R@d=Y-e2yT;_#91+^VI-{pG1!F98He#oZ#>a zmFw}GMUL^jLAf2z-Lh_PCC7NKQ*OTpo@RG4mxq;G!Z<%kj&XiLxz6*da+?R^`6fBW z=P$~2o==tAJQ%l~4*#2So#!9Q^?0^Aw0WIa$9Q&7uJa65ZtKA~pF)mt9z%}tJewTj znL&Q*J z)>R`p*2&N0SSJT`N*sUqAqNT`kR#8N%Jq7CL%GiL9y#(flB3-wa`g9r&WZB^KbRc(yC~QF9i&{> zIgA{6Ml09-%~Y=Q%q2&j)#T{!jSjygxosEutI2a^oxDYkt%ApzebMu9ps4LMLu8hx9yTR{_u_tKY@IyLz8#9v5``Y$6# z{8i+LzlR+050ayv*U1sTnH=$7lOz5Ia?}&)y$mPE`$%KR5kHF@@fVXn z8>IKHclgZ?f1Lbf$@47vpTxJ2BYqn>>i>}(@%zXT-=kaNcp|Fqemysj?i{yxZl^pTg$ydOE@2RVGA@>VAQ z$@2XFe1|U~&yn~QEHO!5r*eCJ~2cAen!m&N3A7I9OJM>xvu{s<$B!yN{(^+*5Q9AN1aJW zHqWnaw}*1w-#+BXGf=r6x3iS%Jm--k&k~2PAiqV{$#vv7PH!T|aeAk6eVpD$j^lKr za$7&@e48BgY$ZoM+sW}c^)82hPmcP%p3U>6>kpBm{uJf5e$<&t{(y|<+2n|yLXP;w zTi2g^LX0vL3~GY#GgQp_#xz|=X`R+ z&mc$q3Ub7+B1b*tVdPKCJdPyaDn3EE zJNi&zZ$}J(!B68%pksR^2JN#*fzd*i4>Z~J2{(5r6C-q7kH^d)Aj_=!aCeM=R zAw9_Penns9_PjATXwDl*K0$nfay_1t9lnGd{aQhe?|WS5@SDgnUw0}WYU=N2e(dF0 z<+e_=yPh0*HYwNZXNPi~XBRp09Mn5;zR>QWpYJfd8RAZ z{Vhb#NsK>53XN68WYG&$lolOz5E z@;x$NKREnnhbQ+*9RDP#GeX`*d;~e-&m_lrGMgOnmyjdAh#c{yTz#j`*$Q zh~G|*dVV2CeCuNp#|`<9B}e=Ka>S1($GlH+c%H)x9KMzu-wRzwexl58g>rk|sI`mQ zTsA1TggkGNBToZ4;u{^_;n>9SMEv0nAL8)S96rJ#KAM66X=)7It_tIqE!Gxo&raa^2rE$&u$=<$B!aE7y7Q$&qKR z!`G2dkabc)j^nP99LL>D%Jp%#fgH!(PUW_K)cGwr>iLNr^(6I6oUdu}`l7wVJCmdS z-pY0T$C0D{vy|KVQRjK&Gh{p$kt6;xa>UO5c zeByYb-EIy)$>Ad$o=Lt`=5a1LzK^t6xjoO+1?71wl-qS4mE&s_Io?0KNx9B*hjM#- z;qRgDCCBFxzf-RByrtaMgMPhFj(&Ygj{0|!mN*nacI?IFbDCrVV?!gdEQUmyjdAlpOJ8UFR?C@>m^1mhWc98Ft{N9Pp>&^BT@gZ{5e+)U|`;#O7EONx3M~-^($q|1AIpXgm zNBn){sOJ@O#J^6C{0-!YZzM;2harjMiFOZn_+W>hLXPwQRC46cbodp@?Qwy>J6lcu zrF>8LX65#A+&`Gi)$f$+JkO9L&%5MkcdNtqIQ$p#9a85JLz~B0*K;&E;zyICo(be> z@_KM8dAfKeIi3$(tlS<)Z`!dlm&N2b-fvc}>%YU{e;`M{ULoHp!qSwzc%5|RpzNB2|*+7mw_2lSpgTsGNuG>BANha|t=>Sw@a}R+8i2w<&h`E##>GUgf&}N61nCCgrw%)cG!XXBp4k+Wp4i zd&%)Qc-Se4KPk|TZ~IqIK4j`+#sh`*E^@yp3k&)wvR ze}EkE)#Qk;AxAx5kR$#Za^&wgqUG`IN{;v;orjsK+haB}^Lyq_x z$PxbtIpUupM?LS6BmP5j#Q&Wf@&6=8Jx8P`jwj-eCP)4;i?!y`|)% zr2gB;5q~#1>aQY4d^I`ZKOsl_7v!j??HP&VhWL);h(CcG@k7W_&$;A?zknS1SCAuq z6*=O|$FNN9N?d#1vd0st~{BH4dheye091%QWo#gOo zqh{ErUbN1iJ29b~~^J-`nqKT+Z%4o@LZllYSyK7#yIi67_ibIH>sK2y1Uy@TUo zE_s6-FLx`~>;D0Atp6t+{s;1Ha=iS>;ct+KW&Lk;_;&J662Hsg-;?9`^2P)m$Na)W zvtnH=l9M!8*wg|dEX$*~T< zQLe{lufq=;n>hZczq`YSkz*W2l7A@uo#61vGzKb0B_bS)@4M!8_1??u2BhS&wb$>@F*Zn<{9C@NfKNBl+Ph@VZ4$Js^XI1gM#j^{tuD7WVaoCj_ozhBN9YaPCh{8@>AQMn%f zR~`NtImY2D@;x%1dmR1?Ip(+RSn)~S=gA;P zp3BJ5?p5UI?+p&Wl^prkDcAk2Qm*T)CP$vPlqng($p^^ecz5OY|I2)q`LUOw%5|RM5N}vo@0Zrervm&tKl)R5!2s3pg7@sVOxrE)v|sPkI#3*Tz&K3?+g zcK9BL9~w&>|H+c48+nF!8ad+A$x;7wa>VD5BmNq4#NR-UdY&Lh{Bz`p-$IV~ZRDuu zM{>mPBS-$;=e9ha$B`p`EIHae$KmrGp6~Em$nn0=o#cVtHWEJ zmpDF%Z|CrV4nLXv_fr38a=foKfqbRBpLPLxSl$PoNuDgekR0zrE_3)Q<@S6cPcys{ z@;Sk z(~BJAGfKG~AB@9z@|R>iWRPPVvdD{MJzPzW{Ke$Re>*wy-$Rc4FOeh926DW=S4%$e zNYiO^sUtsM{3mkcPnw)KFUa4X9QiwwBmYoxydO23{0ABTC^_CojgjMZ)->gIJ>Y%R zY;wGRa-DL!9#GFs-yg$NBz5$+xk)G_vCG4eRiCZ zIFE?$N{;v;{1n#GgfuJm-;TN&Ix>_I;|91I#aTDNt^YBjhP0N1k=$h=0i8uR8oq z@~KkiE^_4mo*eOqXS6(?N0Q_5C50T1+xUV z@Vm${4)>E|ojl?2=g2X?)yjvP^^js0iMf2F+}4S9|4NQL-zwMZ?Vt-1=L>lbB}blA za>S>RqramZKAs%;&sVPdd#Q5W-{s`Uvs$_C@4d=(o=3=$XCpcK`?kZkD%b5cDYxw+ zzjtBc_~W=Zm>kDNCvqGYJ;`xg9P98w%Jp$Ej2y?s4CT81IpnDSQgYP4oE*>3S3CSh za`g8ua`g9phgT}s{jDNLf9sUn{^EIWJ^7<@p8S;@@olCh&Toap_aR4~6Ug6`_;KWj zKbQOsiO(ZPo&xf(C4MbA;@6SylKA!H$g`2Wy*!`)j2!V_kt05IQR2A4!{kRx{v(vz z<1RxUPft>A=Mi~EkR#7Da>QplywKrAvt=!H# z+P#q+dG1iI*UvM`b)FZ=k>^8lwEG!3`n%iVd&rT0pK{&b?lThS1?~1GN1p!5b$_GE zb$?^z$g_YP?JjkAp>o~sy~=I7$o~jA*7-B!Sm!U2W1YXIT(9$Y$g$2FmFs$%$WhM$ znTg|%dJZPX_c^;byeB#8KS8;!e+W71KVP}6AMbn2AkUQJ?h^9b#g~xZBYrzM^4~*_ z{Ev_$|5N11|28@D{F!{2)U#c=U00=Y{{M$^I}XUxDl2imkmo3J#P@ahXopWAUm$hP zCrAE#a>TDCNBlZ+jAsQoo-b9BN91wgCFOQq;rY)7^1@)ayn5w&JR2O|c4p!@qhB4# zm&*8bcX)4d%vXQqr;8VKT-Uji9C`kxT=%#Atd{4iGdc1MB1eCRIefHo-EOvWTR-w&LXLI5j2!EH zB{|l4v2wl6Zz0Dze^$A!XFWOU*+hUJ=x@lzl0q5Zz4zhZ^#kVx~NBlr?)N>v=;x8me{AJ{bzlt37+(VA|2g#9t6FK7F zB}e>jaUoYF@h_7jej7RBcaWo=edLI5J3lDE{QU*Gr!F9sUvd>k|JDa^!EdAPBI(?RX-82ZtX{j{Jkkk^dC( zDye6x!!sRz1^J&O&ua45#2+9>{A1*(zlI#~wd9EZh8*#G$x%=8!k{qw+m18hBjku5 zPLB97hSI4n`OR!AxHk!ixS5T-isW0`jOX5 z{xiuDKam{qmyjcV3HcVuU+VBOhd)RDk>q)qe7pF^QRij`(Hdh+j#LdhRAi`~&33|2jG1Hc-d z`8KI%hr@S~ewS2;;S8gBRT51gBF{sKQBOyCfp5ES zQ(*kNlDCrly_MU)lfvbA)AE8|5nWkLVlTD6#7LudgW#s7ZT5|Mv9Xawp zN{;+blcQhnlOz8}oEO9& zNsjp8hLmh)c=6PA0tQoRSvHvNBy6ZqyF9GsOKk# zC&?Ssm@m|Gh{L;(qn^{qQO{^{)N`)GFCa%fa~!^q9QBlvqnBf-mrR^}S{`;sI75Qm>ej{pBl7CG|gk|Y08hhIsK{P&R~ z|D)u{|ANE+M2_*lr;pC{Nx5JMkM}H@hqn`80k$;ZE7m}m?+sKjs zZgRwLB=_X|U2l_Dif?uJcJe<+{4R%oPyW2b?{j$D6^Zlmg2W&0@FU6BOZ@Q;KaqT+ z#E($k&Og$EUuTl{k!^F8+v5@AxriL&dAY-{AxAx>%5^>I{&{l5|Iy*w9sVWx0I8>S zVdD58e|vJor;#H*ogC|PqQlQ8$NHS@@cHCepUWM7H96MjO%DGJIo9XH4u6sy>vO$w zy*@XRV|{+E+@23Hp1U31{_4c}!n|}Q$NCvej`&l^5kH3<@e9c@zgIYXH96+@R)^n3 zj`@AW;ZKoce%CvEBRS^x&kp~X9P_(Nxt`ze$uYl&UDNV>btgYbj>j~Ir;}s8rYqO= zTD7M?JqKNBqO&h~Get__xSW&)4LL|A8F&yT}&>?daKYLwrwi#Gguz zc1Jlp$KeYczQWfPmX$i=kPZjzJ*-=oY(t~9Ql7FM|_uS6W1Z)dy*r5I630S zkRK-Nc{X`h@%iNP&%JmzkR$$9a@6xQIpSX+M|>SQ;_Jy#Ppj(^#|QE4$PwR{9PtCm zQO`tj#Gg-&`~~EQFC<6&I&!r8ki$1R{B3fq=da0;{|AS6zP@=p?el?hSr0wP9~JNG z@PXvNllXJUk$Gz;KbQD94qr(Ag~Ts+_|@b;Nc@cszny%K#NY4m-;qyf6D)}59R4!-*%JSj z!`~;LA@QF&d?$IP#D{K3oZnZZUtx00*OBBHhhxZpl{{yXBmYEl)mFs@ZRj&KBh#dX8!r`mQ(XX2weg`?~JW$5lzBZD7 z8o-yZxE(!tXz?YY-0p)59?xyO46(l{T>`A*IliTsay%!sl%+gbZtE+q2j6Xj&zE4X zzd#&05r2)iuHW_->k!X75Rd!mvLAec+>er@pSVUmp0{LBJf62?kr&AQT=GJ>k89-L zAzmccaD3icO5P~<%gCGLekD2bR5`qw9QkX=k-wfC-|K52Z!3!t`Oq(XuMhd)_}*aH zg1NwvKbaig8;p=6e+oJBr<3D(SCsrOQh$tmt9SVSE%yn z<5Zpo`tjEL_@iQ8SE+cv$peB76%MZ?KSbiI$nkkrHF_0d$UP|61UPg}R z!5?@8$C|*sDJT>HaK3wnc268-KZ6uG$lawZMJns!lT^MKNNhZhhz=*@Ku8{}N zlhYmXQHRGIj^hCNyGXyXC?3xzbII{Mu#h}U@)VIzkT;BQ9N2dC<4Bo`w?5wd*h{5y zdk7+bmBXvaFPD01$gdQyC%;>~f&3xyM)C^rCh|k@1X;Gn$5|Zf5#CKaO!2+MlgXbE zkC4}hr;yi*r;v4(8Rq=KnpO*W1$0 zSChlTQkSh$$0s{HLY`vwvzHWdysw+C+|GMU)?1YPnvkEyizⅅPp`k`Jy1)%TuoN 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%0A2Jpqt_Yr&A8*7xwZt)@WAKs*E2xSU_eiQijaAB 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 z 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

      3FEroAa(b=ieF-a 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 ~lEBwNl`pK1Svn@L}7Y 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�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

      GDk+zbl#{(*a@AMf)cfBB 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�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

      PCq+mUi9<8>i-m9 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≻LfkXonMEatv(I7^P7Qp;C>z0 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 Lp>TZmrrZA?DB=(z literal 0 HcmV?d00001 diff --git a/thirdparty/protobuf-2.6.1/compile b/thirdparty/protobuf-2.6.1/compile new file mode 100755 index 00000000..99e50524 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/compile @@ -0,0 +1,348 @@ +#! /bin/sh +# Wrapper for compilers which do not understand '-c -o'. + +scriptversion=2018-03-07.03; # UTC + +# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# Written by Tom Tromey . +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +nl=' +' + +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent tools from complaining about whitespace usage. +IFS=" "" $nl" + +file_conv= + +# func_file_conv build_file lazy +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. If the determined conversion +# type is listed in (the comma separated) LAZY, no conversion will +# take place. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + file_conv=mingw + ;; + CYGWIN*) + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv/,$2, in + *,$file_conv,*) + ;; + mingw/*) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin/*) + file=`cygpath -m "$file" || echo "$file"` + ;; + wine/*) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_cl_dashL linkdir +# Make cl look for libraries in LINKDIR +func_cl_dashL () +{ + func_file_conv "$1" + if test -z "$lib_path"; then + lib_path=$file + else + lib_path="$lib_path;$file" + fi + linker_opts="$linker_opts -LIBPATH:$file" +} + +# func_cl_dashl library +# Do a library search-path lookup for cl +func_cl_dashl () +{ + lib=$1 + found=no + save_IFS=$IFS + IFS=';' + for dir in $lib_path $LIB + do + IFS=$save_IFS + if $shared && test -f "$dir/$lib.dll.lib"; then + found=yes + lib=$dir/$lib.dll.lib + break + fi + if test -f "$dir/$lib.lib"; then + found=yes + lib=$dir/$lib.lib + break + fi + if test -f "$dir/lib$lib.a"; then + found=yes + lib=$dir/lib$lib.a + break + fi + done + IFS=$save_IFS + + if test "$found" != yes; then + lib=$lib.lib + fi +} + +# func_cl_wrapper cl arg... +# Adjust compile command to suit cl +func_cl_wrapper () +{ + # Assume a capable shell + lib_path= + shared=: + linker_opts= + for arg + do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + eat=1 + case $2 in + *.o | *.[oO][bB][jJ]) + func_file_conv "$2" + set x "$@" -Fo"$file" + shift + ;; + *) + func_file_conv "$2" + set x "$@" -Fe"$file" + shift + ;; + esac + ;; + -I) + eat=1 + func_file_conv "$2" mingw + set x "$@" -I"$file" + shift + ;; + -I*) + func_file_conv "${1#-I}" mingw + set x "$@" -I"$file" + shift + ;; + -l) + eat=1 + func_cl_dashl "$2" + set x "$@" "$lib" + shift + ;; + -l*) + func_cl_dashl "${1#-l}" + set x "$@" "$lib" + shift + ;; + -L) + eat=1 + func_cl_dashL "$2" + ;; + -L*) + func_cl_dashL "${1#-L}" + ;; + -static) + shared=false + ;; + -Wl,*) + arg=${1#-Wl,} + save_ifs="$IFS"; IFS=',' + for flag in $arg; do + IFS="$save_ifs" + linker_opts="$linker_opts $flag" + done + IFS="$save_ifs" + ;; + -Xlinker) + eat=1 + linker_opts="$linker_opts $2" + ;; + -*) + set x "$@" "$1" + shift + ;; + *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) + func_file_conv "$1" + set x "$@" -Tp"$file" + shift + ;; + *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) + func_file_conv "$1" mingw + set x "$@" "$file" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift + done + if test -n "$linker_opts"; then + linker_opts="-link$linker_opts" + fi + exec "$@" $linker_opts + exit 1 +} + +eat= + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: compile [--help] [--version] PROGRAM [ARGS] + +Wrapper for compilers which do not understand '-c -o'. +Remove '-o dest.o' from ARGS, run PROGRAM with the remaining +arguments, and rename the output as expected. + +If you are trying to build a whole package this is not the +right script to run: please start by reading the file 'INSTALL'. + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "compile $scriptversion" + exit $? + ;; + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ + icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) + func_cl_wrapper "$@" # Doesn't return... + ;; +esac + +ofile= +cfile= + +for arg +do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + # So we strip '-o arg' only if arg is an object. + eat=1 + case $2 in + *.o | *.obj) + ofile=$2 + ;; + *) + set x "$@" -o "$2" + shift + ;; + esac + ;; + *.c) + cfile=$1 + set x "$@" "$1" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift +done + +if test -z "$ofile" || test -z "$cfile"; then + # If no '-o' option was seen then we might have been invoked from a + # pattern rule where we don't need one. That is ok -- this is a + # normal compilation that the losing compiler can handle. If no + # '.c' file was seen then we are probably linking. That is also + # ok. + exec "$@" +fi + +# Name of file we expect compiler to create. +cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` + +# Create the lock directory. +# Note: use '[/\\:.-]' here to ensure that we don't use the same name +# that we are using for the .o file. Also, base the name on the expected +# object file name, since that is what matters with a parallel build. +lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d +while true; do + if mkdir "$lockdir" >/dev/null 2>&1; then + break + fi + sleep 1 +done +# FIXME: race condition here if user kills between mkdir and trap. +trap "rmdir '$lockdir'; exit 1" 1 2 15 + +# Run the compile. +"$@" +ret=$? + +if test -f "$cofile"; then + test "$cofile" = "$ofile" || mv "$cofile" "$ofile" +elif test -f "${cofile}bj"; then + test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" +fi + +rmdir "$lockdir" +exit $ret + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/thirdparty/protobuf-2.6.1/config.guess b/thirdparty/protobuf-2.6.1/config.guess new file mode 100755 index 00000000..f50dcdb6 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/config.guess @@ -0,0 +1,1480 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright 1992-2018 Free Software Foundation, Inc. + +timestamp='2018-02-24' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). +# +# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. +# +# You can get the latest version of this script from: +# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess +# +# Please send patches to . + + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright 1992-2018 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > "$dummy.c" ; + for c in cc gcc c89 c99 ; do + if ($c -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +case "$UNAME_SYSTEM" in +Linux|GNU|GNU/*) + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + LIBC=gnu + + eval "$set_cc_for_build" + cat <<-EOF > "$dummy.c" + #include + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #else + LIBC=gnu + #endif + EOF + eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`" + + # If ldd exists, use it to detect musl libc. + if command -v ldd >/dev/null && \ + ldd --version 2>&1 | grep -q ^musl + then + LIBC=musl + fi + ;; +esac + +# Note: order is significant - the case branches are not exclusive. + +case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + "/sbin/$sysctl" 2>/dev/null || \ + "/usr/sbin/$sysctl" 2>/dev/null || \ + echo unknown)` + case "$UNAME_MACHINE_ARCH" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + earmv*) + arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` + machine="${arch}${endian}"-unknown + ;; + *) machine="$UNAME_MACHINE_ARCH"-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently (or will in the future) and ABI. + case "$UNAME_MACHINE_ARCH" in + earm*) + os=netbsdelf + ;; + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval "$set_cc_for_build" + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # Determine ABI tags. + case "$UNAME_MACHINE_ARCH" in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "$UNAME_VERSION" in + Debian*) + release='-gnu' + ;; + *) + release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "$machine-${os}${release}${abi}" + exit ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE" + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE" + exit ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" + exit ;; + *:MidnightBSD:*:*) + echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE" + exit ;; + *:ekkoBSD:*:*) + echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE" + exit ;; + *:SolidBSD:*:*) + echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE" + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd"$UNAME_RELEASE" + exit ;; + *:MirBSD:*:*) + echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE" + exit ;; + *:Sortix:*:*) + echo "$UNAME_MACHINE"-unknown-sortix + exit ;; + *:Redox:*:*) + echo "$UNAME_MACHINE"-unknown-redox + exit ;; + mips:OSF1:*.*) + echo mips-dec-osf1 + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE=alpha ;; + "EV4.5 (21064)") + UNAME_MACHINE=alpha ;; + "LCA4 (21066/21068)") + UNAME_MACHINE=alpha ;; + "EV5 (21164)") + UNAME_MACHINE=alphaev5 ;; + "EV5.6 (21164A)") + UNAME_MACHINE=alphaev56 ;; + "EV5.6 (21164PC)") + UNAME_MACHINE=alphapca56 ;; + "EV5.7 (21164PC)") + UNAME_MACHINE=alphapca57 ;; + "EV6 (21264)") + UNAME_MACHINE=alphaev6 ;; + "EV6.7 (21264A)") + UNAME_MACHINE=alphaev67 ;; + "EV6.8CB (21264C)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8AL (21264B)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8CX (21264D)") + UNAME_MACHINE=alphaev68 ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE=alphaev69 ;; + "EV7 (21364)") + UNAME_MACHINE=alphaev7 ;; + "EV7.9 (21364A)") + UNAME_MACHINE=alphaev79 ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`" + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + exitcode=$? + trap '' 0 + exit $exitcode ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo "$UNAME_MACHINE"-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo "$UNAME_MACHINE"-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix"$UNAME_RELEASE" + exit ;; + arm*:riscos:*:*|arm*:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + s390x:SunOS:*:*) + echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" + exit ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" + exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux"$UNAME_RELEASE" + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + eval "$set_cc_for_build" + SUN_ARCH=i386 + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH=x86_64 + fi + fi + echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`" + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos"$UNAME_RELEASE" + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos"$UNAME_RELEASE" + ;; + sun4) + echo sparc-sun-sunos"$UNAME_RELEASE" + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos"$UNAME_RELEASE" + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint"$UNAME_RELEASE" + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint"$UNAME_RELEASE" + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint"$UNAME_RELEASE" + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint"$UNAME_RELEASE" + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint"$UNAME_RELEASE" + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint"$UNAME_RELEASE" + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten"$UNAME_RELEASE" + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten"$UNAME_RELEASE" + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix"$UNAME_RELEASE" + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix"$UNAME_RELEASE" + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix"$UNAME_RELEASE" + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval "$set_cc_for_build" + sed 's/^ //' << EOF > "$dummy.c" +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && + dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`"$dummy" "$dummyarg"` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos"$UNAME_RELEASE" + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ] + then + if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \ + [ "$TARGET_BINARY_INTERFACE"x = x ] + then + echo m88k-dg-dgux"$UNAME_RELEASE" + else + echo m88k-dg-dguxbcs"$UNAME_RELEASE" + fi + else + echo i586-dg-dgux"$UNAME_RELEASE" + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`" + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + fi + echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV" + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval "$set_cc_for_build" + sed 's/^ //' << EOF > "$dummy.c" + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[4567]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/lslpp ] ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` + else + IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + fi + echo "$IBM_ARCH"-ibm-aix"$IBM_REV" + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` + case "$UNAME_MACHINE" in + 9000/31?) HP_ARCH=m68000 ;; + 9000/[34]??) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "$sc_cpu_version" in + 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 + 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "$sc_kernel_bits" in + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "$HP_ARCH" = "" ]; then + eval "$set_cc_for_build" + sed 's/^ //' << EOF > "$dummy.c" + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ "$HP_ARCH" = hppa2.0w ] + then + eval "$set_cc_for_build" + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH=hppa2.0w + else + HP_ARCH=hppa64 + fi + fi + echo "$HP_ARCH"-hp-hpux"$HPUX_REV" + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux"$HPUX_REV" + exit ;; + 3050*:HI-UX:*:*) + eval "$set_cc_for_build" + sed 's/^ //' << EOF > "$dummy.c" + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo "$UNAME_MACHINE"-unknown-osf1mk + else + echo "$UNAME_MACHINE"-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE" + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi"$UNAME_RELEASE" + exit ;; + *:BSD/OS:*:*) + echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE" + exit ;; + *:FreeBSD:*:*) + UNAME_PROCESSOR=`/usr/bin/uname -p` + case "$UNAME_PROCESSOR" in + amd64) + UNAME_PROCESSOR=x86_64 ;; + i386) + UNAME_PROCESSOR=i586 ;; + esac + echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" + exit ;; + i*:CYGWIN*:*) + echo "$UNAME_MACHINE"-pc-cygwin + exit ;; + *:MINGW64*:*) + echo "$UNAME_MACHINE"-pc-mingw64 + exit ;; + *:MINGW*:*) + echo "$UNAME_MACHINE"-pc-mingw32 + exit ;; + *:MSYS*:*) + echo "$UNAME_MACHINE"-pc-msys + exit ;; + i*:PW*:*) + echo "$UNAME_MACHINE"-pc-pw32 + exit ;; + *:Interix*:*) + case "$UNAME_MACHINE" in + x86) + echo i586-pc-interix"$UNAME_RELEASE" + exit ;; + authenticamd | genuineintel | EM64T) + echo x86_64-unknown-interix"$UNAME_RELEASE" + exit ;; + IA64) + echo ia64-unknown-interix"$UNAME_RELEASE" + exit ;; + esac ;; + i*:UWIN*:*) + echo "$UNAME_MACHINE"-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" + exit ;; + *:GNU:*:*) + # the GNU system + echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`" + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC" + exit ;; + i*86:Minix:*:*) + echo "$UNAME_MACHINE"-pc-minix + exit ;; + aarch64:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + arc:Linux:*:* | arceb:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + arm*:Linux:*:*) + eval "$set_cc_for_build" + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi + else + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf + fi + fi + exit ;; + avr32*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + cris:Linux:*:*) + echo "$UNAME_MACHINE"-axis-linux-"$LIBC" + exit ;; + crisv32:Linux:*:*) + echo "$UNAME_MACHINE"-axis-linux-"$LIBC" + exit ;; + e2k:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + frv:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + hexagon:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + i*86:Linux:*:*) + echo "$UNAME_MACHINE"-pc-linux-"$LIBC" + exit ;; + ia64:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + k1om:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + m32r*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + m68*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + mips:Linux:*:* | mips64:Linux:*:*) + eval "$set_cc_for_build" + sed 's/^ //' << EOF > "$dummy.c" + #undef CPU + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=${UNAME_MACHINE}el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=${UNAME_MACHINE} + #else + CPU= + #endif + #endif +EOF + eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU'`" + test "x$CPU" != x && { echo "$CPU-unknown-linux-$LIBC"; exit; } + ;; + mips64el:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + openrisc*:Linux:*:*) + echo or1k-unknown-linux-"$LIBC" + exit ;; + or32:Linux:*:* | or1k*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-"$LIBC" + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-"$LIBC" + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;; + PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;; + *) echo hppa-unknown-linux-"$LIBC" ;; + esac + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-"$LIBC" + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-"$LIBC" + exit ;; + ppc64le:Linux:*:*) + echo powerpc64le-unknown-linux-"$LIBC" + exit ;; + ppcle:Linux:*:*) + echo powerpcle-unknown-linux-"$LIBC" + exit ;; + riscv32:Linux:*:* | riscv64:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo "$UNAME_MACHINE"-ibm-linux-"$LIBC" + exit ;; + sh64*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + sh*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + tile*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + vax:Linux:*:*) + echo "$UNAME_MACHINE"-dec-linux-"$LIBC" + exit ;; + x86_64:Linux:*:*) + if objdump -f /bin/sh | grep -q elf32-x86-64; then + echo "$UNAME_MACHINE"-pc-linux-"$LIBC"x32 + else + echo "$UNAME_MACHINE"-pc-linux-"$LIBC" + fi + exit ;; + xtensa*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION" + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo "$UNAME_MACHINE"-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo "$UNAME_MACHINE"-unknown-stop + exit ;; + i*86:atheos:*:*) + echo "$UNAME_MACHINE"-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo "$UNAME_MACHINE"-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + echo i386-unknown-lynxos"$UNAME_RELEASE" + exit ;; + i*86:*DOS:*:*) + echo "$UNAME_MACHINE"-pc-msdosdjgpp + exit ;; + i*86:*:4.*:*) + UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL" + else + echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL" + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}{$UNAME_VERSION}" + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL" + else + echo "$UNAME_MACHINE"-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configure will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos"$UNAME_RELEASE" + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos"$UNAME_RELEASE" + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos"$UNAME_RELEASE" + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + echo powerpc-unknown-lynxos"$UNAME_RELEASE" + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv"$UNAME_RELEASE" + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo "$UNAME_MACHINE"-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo "$UNAME_MACHINE"-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux"$UNAME_RELEASE" + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv"$UNAME_RELEASE" + else + echo mips-unknown-sysv"$UNAME_RELEASE" + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; + x86_64:Haiku:*:*) + echo x86_64-unknown-haiku + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux"$UNAME_RELEASE" + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux"$UNAME_RELEASE" + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux"$UNAME_RELEASE" + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux"$UNAME_RELEASE" + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux"$UNAME_RELEASE" + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux"$UNAME_RELEASE" + exit ;; + SX-ACE:SUPER-UX:*:*) + echo sxace-nec-superux"$UNAME_RELEASE" + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody"$UNAME_RELEASE" + exit ;; + *:Rhapsody:*:*) + echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + eval "$set_cc_for_build" + if test "$UNAME_PROCESSOR" = unknown ; then + UNAME_PROCESSOR=powerpc + fi + if test "`echo "$UNAME_RELEASE" | sed -e 's/\..*//'`" -le 10 ; then + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc + if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_PPC >/dev/null + then + UNAME_PROCESSOR=powerpc + fi + fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # Avoid executing cc on OS X 10.9, as it ships with a stub + # that puts up a graphical alert prompting to install + # developer tools. Any system running Mac OS X 10.7 or + # later (Darwin 11 and later) is required to have a 64-bit + # processor. This is not true of the ARM version of Darwin + # that Apple uses in portable devices. + UNAME_PROCESSOR=x86_64 + fi + echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = x86; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE" + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NEO-*:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSE-*:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSR-*:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSV-*:NONSTOP_KERNEL:*:*) + echo nsv-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSX-*:NONSTOP_KERNEL:*:*) + echo nsx-tandem-nsk"$UNAME_RELEASE" + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE" + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = 386; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo "$UNAME_MACHINE"-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux"$UNAME_RELEASE" + exit ;; + *:DragonFly:*:*) + echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "$UNAME_MACHINE" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`" + exit ;; + i*86:rdos:*:*) + echo "$UNAME_MACHINE"-pc-rdos + exit ;; + i*86:AROS:*:*) + echo "$UNAME_MACHINE"-pc-aros + exit ;; + x86_64:VMkernel:*:*) + echo "$UNAME_MACHINE"-unknown-esx + exit ;; + amd64:Isilon\ OneFS:*:*) + echo x86_64-unknown-onefs + exit ;; +esac + +echo "$0: unable to guess system type" >&2 + +case "$UNAME_MACHINE:$UNAME_SYSTEM" in + mips:Linux | mips64:Linux) + # If we got here on MIPS GNU/Linux, output extra information. + cat >&2 <&2 </dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = "$UNAME_MACHINE" +UNAME_RELEASE = "$UNAME_RELEASE" +UNAME_SYSTEM = "$UNAME_SYSTEM" +UNAME_VERSION = "$UNAME_VERSION" +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-functions 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/thirdparty/protobuf-2.6.1/config.h b/thirdparty/protobuf-2.6.1/config.h new file mode 100644 index 00000000..f751561e --- /dev/null +++ b/thirdparty/protobuf-2.6.1/config.h @@ -0,0 +1,152 @@ +/* config.h. Generated from config.h.in by configure. */ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* the name of */ +#define HASH_MAP_CLASS unordered_map + +/* the location of or */ +#define HASH_MAP_H + +/* the namespace of hash_map/hash_set */ +#define HASH_NAMESPACE std + +/* the name of */ +#define HASH_SET_CLASS unordered_set + +/* the location of or */ +#define HASH_SET_H + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_FCNTL_H 1 + +/* Define to 1 if you have the `ftruncate' function. */ +#define HAVE_FTRUNCATE 1 + +/* define if the compiler has hash_map */ +#define HAVE_HASH_MAP 1 + +/* define if the compiler has hash_set */ +#define HAVE_HASH_SET 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LIMITS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `memset' function. */ +#define HAVE_MEMSET 1 + +/* Define to 1 if you have the `mkdir' function. */ +#define HAVE_MKDIR 1 + +/* Define if you have POSIX threads libraries and header files. */ +#define HAVE_PTHREAD 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the `strchr' function. */ +#define HAVE_STRCHR 1 + +/* Define to 1 if you have the `strerror' function. */ +#define HAVE_STRERROR 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the `strtol' function. */ +#define HAVE_STRTOL 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Enable classes using zlib compression. */ +#define HAVE_ZLIB 1 + +/* Define to the sub-directory where libtool stores uninstalled libraries. */ +#define LT_OBJDIR ".libs/" + +/* Name of package */ +#define PACKAGE "protobuf" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "protobuf@googlegroups.com" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "Protocol Buffers" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "Protocol Buffers 2.6.1" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "protobuf" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "2.6.1" + +/* Define to necessary symbol if this constant uses a non-standard name on + your system. */ +/* #undef PTHREAD_CREATE_JOINABLE */ + +/* 64bit enabled */ +/* #undef SOLARIS_64BIT_ENABLED */ + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Enable extensions on AIX 3, Interix. */ +#ifndef _ALL_SOURCE +# define _ALL_SOURCE 1 +#endif +/* Enable GNU extensions on systems that have them. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif +/* Enable threading extensions on Solaris. */ +#ifndef _POSIX_PTHREAD_SEMANTICS +# define _POSIX_PTHREAD_SEMANTICS 1 +#endif +/* Enable extensions on HP NonStop. */ +#ifndef _TANDEM_SOURCE +# define _TANDEM_SOURCE 1 +#endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# define __EXTENSIONS__ 1 +#endif + + +/* Version number of package */ +#define VERSION "2.6.1" + +/* Define to 1 if on MINIX. */ +/* #undef _MINIX */ + +/* Define to 2 if the system does not provide POSIX.1 features except with + this defined. */ +/* #undef _POSIX_1_SOURCE */ + +/* Define to 1 if you need to in order for `stat' and other things to work. */ +/* #undef _POSIX_SOURCE */ diff --git a/thirdparty/protobuf-2.6.1/config.h.in b/thirdparty/protobuf-2.6.1/config.h.in new file mode 100644 index 00000000..54847f50 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/config.h.in @@ -0,0 +1,151 @@ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* the name of */ +#undef HASH_MAP_CLASS + +/* the location of or */ +#undef HASH_MAP_H + +/* the namespace of hash_map/hash_set */ +#undef HASH_NAMESPACE + +/* the name of */ +#undef HASH_SET_CLASS + +/* the location of or */ +#undef HASH_SET_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_FCNTL_H + +/* Define to 1 if you have the `ftruncate' function. */ +#undef HAVE_FTRUNCATE + +/* define if the compiler has hash_map */ +#undef HAVE_HASH_MAP + +/* define if the compiler has hash_set */ +#undef HAVE_HASH_SET + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_LIMITS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the `memset' function. */ +#undef HAVE_MEMSET + +/* Define to 1 if you have the `mkdir' function. */ +#undef HAVE_MKDIR + +/* Define if you have POSIX threads libraries and header files. */ +#undef HAVE_PTHREAD + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the `strchr' function. */ +#undef HAVE_STRCHR + +/* Define to 1 if you have the `strerror' function. */ +#undef HAVE_STRERROR + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the `strtol' function. */ +#undef HAVE_STRTOL + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Enable classes using zlib compression. */ +#undef HAVE_ZLIB + +/* Define to the sub-directory where libtool stores uninstalled libraries. */ +#undef LT_OBJDIR + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define to necessary symbol if this constant uses a non-standard name on + your system. */ +#undef PTHREAD_CREATE_JOINABLE + +/* 64bit enabled */ +#undef SOLARIS_64BIT_ENABLED + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Enable extensions on AIX 3, Interix. */ +#ifndef _ALL_SOURCE +# undef _ALL_SOURCE +#endif +/* Enable GNU extensions on systems that have them. */ +#ifndef _GNU_SOURCE +# undef _GNU_SOURCE +#endif +/* Enable threading extensions on Solaris. */ +#ifndef _POSIX_PTHREAD_SEMANTICS +# undef _POSIX_PTHREAD_SEMANTICS +#endif +/* Enable extensions on HP NonStop. */ +#ifndef _TANDEM_SOURCE +# undef _TANDEM_SOURCE +#endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# undef __EXTENSIONS__ +#endif + + +/* Version number of package */ +#undef VERSION + +/* Define to 1 if on MINIX. */ +#undef _MINIX + +/* Define to 2 if the system does not provide POSIX.1 features except with + this defined. */ +#undef _POSIX_1_SOURCE + +/* Define to 1 if you need to in order for `stat' and other things to work. */ +#undef _POSIX_SOURCE diff --git a/thirdparty/protobuf-2.6.1/config.log b/thirdparty/protobuf-2.6.1/config.log new file mode 100644 index 00000000..64f807c1 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/config.log @@ -0,0 +1,1535 @@ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by Protocol Buffers configure 2.6.1, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ ./configure --no-create --no-recursion + +## --------- ## +## Platform. ## +## --------- ## + +hostname = DESKTOP-6CJ0SOQ +uname -m = x86_64 +uname -r = 4.19.128-microsoft-standard +uname -s = Linux +uname -v = #1 SMP Tue Jun 23 12:58:10 UTC 2020 + +/usr/bin/uname -p = unknown +/bin/uname -X = unknown + +/bin/arch = unknown +/usr/bin/arch -k = unknown +/usr/convex/getsysinfo = unknown +/usr/bin/hostinfo = unknown +/bin/machine = unknown +/usr/bin/oslevel = unknown +/bin/universe = unknown + +PATH: /usr/local/bin +PATH: /usr/bin +PATH: /bin +PATH: /usr/local/games +PATH: /usr/games + + +## ----------- ## +## Core tests. ## +## ----------- ## + +configure:2499: checking whether to enable maintainer-specific portions of Makefiles +configure:2508: result: yes +configure:2569: checking build system type +configure:2583: result: x86_64-pc-linux-gnu +configure:2603: checking host system type +configure:2616: result: x86_64-pc-linux-gnu +configure:2636: checking target system type +configure:2649: result: x86_64-pc-linux-gnu +configure:2692: checking for a BSD-compatible install +configure:2760: result: /usr/bin/install -c +configure:2771: checking whether build environment is sane +configure:2826: result: yes +configure:2975: checking for a thread-safe mkdir -p +configure:3014: result: /bin/mkdir -p +configure:3021: checking for gawk +configure:3051: result: no +configure:3021: checking for mawk +configure:3037: found /usr/bin/mawk +configure:3048: result: mawk +configure:3059: checking whether make sets $(MAKE) +configure:3081: result: yes +configure:3110: checking whether make supports nested variables +configure:3127: result: yes +configure:3321: checking for gcc +configure:3337: found /usr/bin/gcc +configure:3348: result: gcc +configure:3577: checking for C compiler version +configure:3586: gcc --version >&5 +gcc (Debian 8.3.0-6) 8.3.0 +Copyright (C) 2018 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +configure:3597: $? = 0 +configure:3586: gcc -v >&5 +Using built-in specs. +COLLECT_GCC=gcc +COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/8/lto-wrapper +OFFLOAD_TARGET_NAMES=nvptx-none +OFFLOAD_TARGET_DEFAULT=1 +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Debian 8.3.0-6' --with-bugurl=file:///usr/share/doc/gcc-8/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-8 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu +Thread model: posix +gcc version 8.3.0 (Debian 8.3.0-6) +configure:3597: $? = 0 +configure:3586: gcc -V >&5 +gcc: error: unrecognized command line option '-V' +gcc: fatal error: no input files +compilation terminated. +configure:3597: $? = 1 +configure:3586: gcc -qversion >&5 +gcc: error: unrecognized command line option '-qversion'; did you mean '--version'? +gcc: fatal error: no input files +compilation terminated. +configure:3597: $? = 1 +configure:3617: checking whether the C compiler works +configure:3639: gcc conftest.c >&5 +configure:3643: $? = 0 +configure:3691: result: yes +configure:3694: checking for C compiler default output file name +configure:3696: result: a.out +configure:3702: checking for suffix of executables +configure:3709: gcc -o conftest conftest.c >&5 +configure:3713: $? = 0 +configure:3735: result: +configure:3757: checking whether we are cross compiling +configure:3765: gcc -o conftest conftest.c >&5 +configure:3769: $? = 0 +configure:3776: ./conftest +configure:3780: $? = 0 +configure:3768: result: no +configure:3773: checking for suffix of object files +configure:3795: gcc -c conftest.c >&5 +configure:3799: $? = 0 +configure:3820: result: o +configure:3824: checking whether we are using the GNU C compiler +configure:3843: gcc -c conftest.c >&5 +configure:3843: $? = 0 +configure:3852: result: yes +configure:3861: checking whether gcc accepts -g +configure:3881: gcc -c -g conftest.c >&5 +configure:3881: $? = 0 +configure:3922: result: yes +configure:3939: checking for gcc option to accept ISO C89 +configure:4002: gcc -c conftest.c >&5 +configure:4002: $? = 0 +configure:4015: result: none needed +configure:4040: checking whether gcc understands -c and -o together +configure:4062: gcc -c conftest.c -o conftest2.o +configure:4065: $? = 0 +configure:4062: gcc -c conftest.c -o conftest2.o +configure:4065: $? = 0 +configure:4077: result: yes +configure:4097: checking whether make supports the include directive +configure:4112: make -f confmf.GNU && cat confinc.out +make[1]: Entering directory '/home/jusic/source-engine/thirdparty/protobuf-2.6.1' +make[1]: Leaving directory '/home/jusic/source-engine/thirdparty/protobuf-2.6.1' +this is the am__doit target +configure:4115: $? = 0 +configure:4134: result: yes (GNU style) +configure:4159: checking dependency style of gcc +configure:4270: result: gcc3 +configure:4343: checking for g++ +configure:4359: found /usr/bin/g++ +configure:4370: result: g++ +configure:4397: checking for C++ compiler version +configure:4406: g++ --version >&5 +g++ (Debian 8.3.0-6) 8.3.0 +Copyright (C) 2018 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +configure:4417: $? = 0 +configure:4406: g++ -v >&5 +Using built-in specs. +COLLECT_GCC=g++ +COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/8/lto-wrapper +OFFLOAD_TARGET_NAMES=nvptx-none +OFFLOAD_TARGET_DEFAULT=1 +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Debian 8.3.0-6' --with-bugurl=file:///usr/share/doc/gcc-8/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-8 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu +Thread model: posix +gcc version 8.3.0 (Debian 8.3.0-6) +configure:4417: $? = 0 +configure:4406: g++ -V >&5 +g++: error: unrecognized command line option '-V' +g++: fatal error: no input files +compilation terminated. +configure:4417: $? = 1 +configure:4406: g++ -qversion >&5 +g++: error: unrecognized command line option '-qversion'; did you mean '--version'? +g++: fatal error: no input files +compilation terminated. +configure:4417: $? = 1 +configure:4421: checking whether we are using the GNU C++ compiler +configure:4440: g++ -c conftest.cpp >&5 +configure:4440: $? = 0 +configure:4449: result: yes +configure:4458: checking whether g++ accepts -g +configure:4478: g++ -c -g conftest.cpp >&5 +configure:4478: $? = 0 +configure:4519: result: yes +configure:4544: checking dependency style of g++ +configure:4655: result: gcc3 +configure:4682: checking how to run the C++ preprocessor +configure:4709: g++ -E conftest.cpp +configure:4709: $? = 0 +configure:4723: g++ -E conftest.cpp +conftest.cpp:11:10: fatal error: ac_nonexistent.h: No such file or directory + #include + ^~~~~~~~~~~~~~~~~~ +compilation terminated. +configure:4723: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "Protocol Buffers" +| #define PACKAGE_TARNAME "protobuf" +| #define PACKAGE_VERSION "2.6.1" +| #define PACKAGE_STRING "Protocol Buffers 2.6.1" +| #define PACKAGE_BUGREPORT "protobuf@googlegroups.com" +| #define PACKAGE_URL "" +| #define PACKAGE "protobuf" +| #define VERSION "2.6.1" +| /* end confdefs.h. */ +| #include +configure:4748: result: g++ -E +configure:4768: g++ -E conftest.cpp +configure:4768: $? = 0 +configure:4782: g++ -E conftest.cpp +conftest.cpp:11:10: fatal error: ac_nonexistent.h: No such file or directory + #include + ^~~~~~~~~~~~~~~~~~ +compilation terminated. +configure:4782: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "Protocol Buffers" +| #define PACKAGE_TARNAME "protobuf" +| #define PACKAGE_VERSION "2.6.1" +| #define PACKAGE_STRING "Protocol Buffers 2.6.1" +| #define PACKAGE_BUGREPORT "protobuf@googlegroups.com" +| #define PACKAGE_URL "" +| #define PACKAGE "protobuf" +| #define VERSION "2.6.1" +| /* end confdefs.h. */ +| #include +configure:4811: checking for grep that handles long lines and -e +configure:4869: result: /bin/grep +configure:4874: checking for egrep +configure:4936: result: /bin/grep -E +configure:4941: checking for ANSI C header files +configure:4961: g++ -c conftest.cpp >&5 +configure:4961: $? = 0 +configure:5034: g++ -o conftest conftest.cpp >&5 +configure:5034: $? = 0 +configure:5034: ./conftest +configure:5034: $? = 0 +configure:5045: result: yes +configure:5058: checking for sys/types.h +configure:5058: g++ -c conftest.cpp >&5 +configure:5058: $? = 0 +configure:5058: result: yes +configure:5058: checking for sys/stat.h +configure:5058: g++ -c conftest.cpp >&5 +configure:5058: $? = 0 +configure:5058: result: yes +configure:5058: checking for stdlib.h +configure:5058: g++ -c conftest.cpp >&5 +configure:5058: $? = 0 +configure:5058: result: yes +configure:5058: checking for string.h +configure:5058: g++ -c conftest.cpp >&5 +configure:5058: $? = 0 +configure:5058: result: yes +configure:5058: checking for memory.h +configure:5058: g++ -c conftest.cpp >&5 +configure:5058: $? = 0 +configure:5058: result: yes +configure:5058: checking for strings.h +configure:5058: g++ -c conftest.cpp >&5 +configure:5058: $? = 0 +configure:5058: result: yes +configure:5058: checking for inttypes.h +configure:5058: g++ -c conftest.cpp >&5 +configure:5058: $? = 0 +configure:5058: result: yes +configure:5058: checking for stdint.h +configure:5058: g++ -c conftest.cpp >&5 +configure:5058: $? = 0 +configure:5058: result: yes +configure:5058: checking for unistd.h +configure:5058: g++ -c conftest.cpp >&5 +configure:5058: $? = 0 +configure:5058: result: yes +configure:5071: checking minix/config.h usability +configure:5071: g++ -c conftest.cpp >&5 +conftest.cpp:54:10: fatal error: minix/config.h: No such file or directory + #include + ^~~~~~~~~~~~~~~~ +compilation terminated. +configure:5071: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "Protocol Buffers" +| #define PACKAGE_TARNAME "protobuf" +| #define PACKAGE_VERSION "2.6.1" +| #define PACKAGE_STRING "Protocol Buffers 2.6.1" +| #define PACKAGE_BUGREPORT "protobuf@googlegroups.com" +| #define PACKAGE_URL "" +| #define PACKAGE "protobuf" +| #define VERSION "2.6.1" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| /* end confdefs.h. */ +| #include +| #ifdef HAVE_SYS_TYPES_H +| # include +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include +| #endif +| #ifdef STDC_HEADERS +| # include +| # include +| #else +| # ifdef HAVE_STDLIB_H +| # include +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include +| # endif +| # include +| #endif +| #ifdef HAVE_STRINGS_H +| # include +| #endif +| #ifdef HAVE_INTTYPES_H +| # include +| #endif +| #ifdef HAVE_STDINT_H +| # include +| #endif +| #ifdef HAVE_UNISTD_H +| # include +| #endif +| #include +configure:5071: result: no +configure:5071: checking minix/config.h presence +configure:5071: g++ -E conftest.cpp +conftest.cpp:21:10: fatal error: minix/config.h: No such file or directory + #include + ^~~~~~~~~~~~~~~~ +compilation terminated. +configure:5071: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "Protocol Buffers" +| #define PACKAGE_TARNAME "protobuf" +| #define PACKAGE_VERSION "2.6.1" +| #define PACKAGE_STRING "Protocol Buffers 2.6.1" +| #define PACKAGE_BUGREPORT "protobuf@googlegroups.com" +| #define PACKAGE_URL "" +| #define PACKAGE "protobuf" +| #define VERSION "2.6.1" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| /* end confdefs.h. */ +| #include +configure:5071: result: no +configure:5071: checking for minix/config.h +configure:5071: result: no +configure:5092: checking whether it is safe to define __EXTENSIONS__ +configure:5110: g++ -c conftest.cpp >&5 +configure:5110: $? = 0 +configure:5117: result: yes +configure:5146: checking C++ compiler flags... +configure:5162: result: use default: -O2 -g -DNDEBUG +configure:5182: checking whether __SUNPRO_CC is declared +configure:5182: g++ -c -g -DNDEBUG conftest.cpp >&5 +conftest.cpp: In function 'int main()': +conftest.cpp:64:10: error: '__SUNPRO_CC' was not declared in this scope + (void) __SUNPRO_CC; + ^~~~~~~~~~~ +configure:5182: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "Protocol Buffers" +| #define PACKAGE_TARNAME "protobuf" +| #define PACKAGE_VERSION "2.6.1" +| #define PACKAGE_STRING "Protocol Buffers 2.6.1" +| #define PACKAGE_BUGREPORT "protobuf@googlegroups.com" +| #define PACKAGE_URL "" +| #define PACKAGE "protobuf" +| #define VERSION "2.6.1" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define __EXTENSIONS__ 1 +| #define _ALL_SOURCE 1 +| #define _GNU_SOURCE 1 +| #define _POSIX_PTHREAD_SEMANTICS 1 +| #define _TANDEM_SOURCE 1 +| /* end confdefs.h. */ +| #include +| #ifdef HAVE_SYS_TYPES_H +| # include +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include +| #endif +| #ifdef STDC_HEADERS +| # include +| # include +| #else +| # ifdef HAVE_STDLIB_H +| # include +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include +| # endif +| # include +| #endif +| #ifdef HAVE_STRINGS_H +| # include +| #endif +| #ifdef HAVE_INTTYPES_H +| # include +| #endif +| #ifdef HAVE_STDINT_H +| # include +| #endif +| #ifdef HAVE_UNISTD_H +| # include +| #endif +| int +| main () +| { +| #ifndef __SUNPRO_CC +| #ifdef __cplusplus +| (void) __SUNPRO_CC; +| #else +| (void) __SUNPRO_CC; +| #endif +| #endif +| +| ; +| return 0; +| } +configure:5182: result: no +configure:5357: checking how to print strings +configure:5384: result: printf +configure:5405: checking for a sed that does not truncate output +configure:5469: result: /bin/sed +configure:5487: checking for fgrep +configure:5549: result: /bin/grep -F +configure:5584: checking for ld used by gcc +configure:5651: result: /usr/bin/ld +configure:5658: checking if the linker (/usr/bin/ld) is GNU ld +configure:5673: result: yes +configure:5685: checking for BSD- or MS-compatible name lister (nm) +configure:5739: result: /usr/bin/nm -B +configure:5869: checking the name lister (/usr/bin/nm -B) interface +configure:5876: g++ -c -g -DNDEBUG conftest.cpp >&5 +configure:5879: /usr/bin/nm -B "conftest.o" +configure:5882: output +0000000000000000 B some_variable +configure:5883: result: BSD nm +configure:5886: checking whether ln -s works +configure:5890: result: yes +configure:5898: checking the maximum length of command line arguments +configure:6029: result: 1572864 +configure:6077: checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format +configure:6117: result: func_convert_file_noop +configure:6124: checking how to convert x86_64-pc-linux-gnu file names to toolchain format +configure:6144: result: func_convert_file_noop +configure:6151: checking for /usr/bin/ld option to reload object files +configure:6158: result: -r +configure:6232: checking for objdump +configure:6248: found /usr/bin/objdump +configure:6259: result: objdump +configure:6291: checking how to recognize dependent libraries +configure:6491: result: pass_all +configure:6576: checking for dlltool +configure:6606: result: no +configure:6636: checking how to associate runtime and link libraries +configure:6663: result: printf %s\n +configure:6723: checking for ar +configure:6739: found /usr/bin/ar +configure:6750: result: ar +configure:6787: checking for archiver @FILE support +configure:6804: g++ -c -g -DNDEBUG conftest.cpp >&5 +configure:6804: $? = 0 +configure:6807: ar cru libconftest.a @conftest.lst >&5 +ar: `u' modifier ignored since `D' is the default (see `U') +configure:6810: $? = 0 +configure:6815: ar cru libconftest.a @conftest.lst >&5 +ar: `u' modifier ignored since `D' is the default (see `U') +ar: conftest.o: No such file or directory +configure:6818: $? = 1 +configure:6817: result: @ +configure:6875: checking for strip +configure:6891: found /usr/bin/strip +configure:6902: result: strip +configure:6974: checking for ranlib +configure:6990: found /usr/bin/ranlib +configure:7001: result: ranlib +configure:7103: checking command to parse /usr/bin/nm -B output from gcc object +configure:7256: g++ -c -g -DNDEBUG conftest.cpp >&5 +configure:7259: $? = 0 +configure:7263: /usr/bin/nm -B conftest.o | sed -n -e 's/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p' | sed '/ __gnu_lto/d' > conftest.nm +configure:7329: g++ -o conftest -g -DNDEBUG conftest.cpp conftstm.o >&5 +configure:7332: $? = 0 +configure:7370: result: ok +configure:7417: checking for sysroot +configure:7447: result: no +configure:7454: checking for a working dd +configure:7492: result: /bin/dd +configure:7496: checking how to truncate binary pipes +configure:7511: result: /bin/dd bs=4096 count=1 +configure:7648: g++ -c -g -DNDEBUG conftest.cpp >&5 +configure:7651: $? = 0 +configure:7841: checking for mt +configure:7857: found /bin/mt +configure:7868: result: mt +configure:7891: checking if mt is a manifest tool +configure:7897: mt '-?' +configure:7905: result: no +configure:8579: checking for dlfcn.h +configure:8579: g++ -c -g -DNDEBUG conftest.cpp >&5 +configure:8579: $? = 0 +configure:8579: result: yes +configure:8845: checking for objdir +configure:8860: result: .libs +configure:9124: checking if gcc supports -fno-rtti -fno-exceptions +configure:9142: gcc -c -fno-rtti -fno-exceptions conftest.c >&5 +cc1: warning: command line option '-fno-rtti' is valid for C++/ObjC++ but not for C +configure:9146: $? = 0 +configure:9159: result: no +configure:9517: checking for gcc option to produce PIC +configure:9524: result: -fPIC -DPIC +configure:9532: checking if gcc PIC flag -fPIC -DPIC works +configure:9550: gcc -c -fPIC -DPIC -DPIC conftest.c >&5 +configure:9554: $? = 0 +configure:9567: result: yes +configure:9596: checking if gcc static flag -static works +configure:9624: result: yes +configure:9639: checking if gcc supports -c -o file.o +configure:9660: gcc -c -o out/conftest2.o conftest.c >&5 +configure:9664: $? = 0 +configure:9686: result: yes +configure:9694: checking if gcc supports -c -o file.o +configure:9741: result: yes +configure:9774: checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries +configure:11037: result: yes +configure:11074: checking whether -lc should be explicitly linked in +configure:11082: gcc -c conftest.c >&5 +configure:11085: $? = 0 +configure:11100: gcc -shared -fPIC -DPIC conftest.o -v -Wl,-soname -Wl,conftest -o conftest 2\>\&1 \| /bin/grep -lc \>/dev/null 2\>\&1 +configure:11103: $? = 0 +configure:11117: result: no +configure:11277: checking dynamic linker characteristics +configure:11858: gcc -o conftest -Wl,-rpath -Wl,/foo conftest.c >&5 +configure:11858: $? = 0 +configure:12107: result: GNU/Linux ld.so +configure:12229: checking how to hardcode library paths into programs +configure:12254: result: immediate +configure:12802: checking whether stripping libraries is possible +configure:12807: result: yes +configure:12842: checking if libtool supports shared libraries +configure:12844: result: yes +configure:12847: checking whether to build shared libraries +configure:12872: result: yes +configure:12875: checking whether to build static libraries +configure:12879: result: yes +configure:9678: checking how to run the C++ preprocessor +configure:9744: result: g++ -E +configure:9764: g++ -E conftest.cpp +configure:9764: $? = 0 +configure:9778: g++ -E conftest.cpp +conftest.cpp:28:10: fatal error: ac_nonexistent.h: No such file or directory + #include + ^~~~~~~~~~~~~~~~~~ +compilation terminated. +configure:9778: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "Protocol Buffers" +| #define PACKAGE_TARNAME "protobuf" +| #define PACKAGE_VERSION "2.6.1" +| #define PACKAGE_STRING "Protocol Buffers 2.6.1" +| #define PACKAGE_BUGREPORT "protobuf@googlegroups.com" +| #define PACKAGE_URL "" +| #define PACKAGE "protobuf" +| #define VERSION "2.6.1" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define __EXTENSIONS__ 1 +| #define _ALL_SOURCE 1 +| #define _GNU_SOURCE 1 +| #define _POSIX_PTHREAD_SEMANTICS 1 +| #define _TANDEM_SOURCE 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| /* end confdefs.h. */ +| #include +configure:9940: checking for ld used by g++ +configure:10007: result: /usr/bin/ld -m elf_x86_64 +configure:10014: checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld +configure:10029: result: yes +configure:10084: checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries +configure:11157: result: yes +configure:11193: g++ -c -g -DNDEBUG conftest.cpp >&5 +configure:11196: $? = 0 +configure:11677: checking for g++ option to produce PIC +configure:11684: result: -fPIC -DPIC +configure:11692: checking if g++ PIC flag -fPIC -DPIC works +configure:11710: g++ -c -g -DNDEBUG -fPIC -DPIC -DPIC conftest.cpp >&5 +configure:11714: $? = 0 +configure:11727: result: yes +configure:11750: checking if g++ static flag -static works +configure:11778: result: yes +configure:11790: checking if g++ supports -c -o file.o +configure:11811: g++ -c -g -DNDEBUG -o out/conftest2.o conftest.cpp >&5 +configure:11815: $? = 0 +configure:11837: result: yes +configure:11842: checking if g++ supports -c -o file.o +configure:11889: result: yes +configure:11919: checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries +configure:11962: result: yes +configure:12103: checking dynamic linker characteristics +configure:12860: result: GNU/Linux ld.so +configure:12925: checking how to hardcode library paths into programs +configure:12950: result: immediate +configure:11844: checking for ANSI C header files +configure:11948: result: yes +configure:11959: checking fcntl.h usability +configure:11959: g++ -c -g -DNDEBUG conftest.cpp >&5 +configure:11959: $? = 0 +configure:11959: result: yes +configure:11959: checking fcntl.h presence +configure:11959: g++ -E conftest.cpp +configure:11959: $? = 0 +configure:11959: result: yes +configure:11959: checking for fcntl.h +configure:11959: result: yes +configure:11959: checking for inttypes.h +configure:11959: result: yes +configure:11959: checking limits.h usability +configure:11959: g++ -c -g -DNDEBUG conftest.cpp >&5 +configure:11959: $? = 0 +configure:11959: result: yes +configure:11959: checking limits.h presence +configure:11959: g++ -E conftest.cpp +configure:11959: $? = 0 +configure:11959: result: yes +configure:11959: checking for limits.h +configure:11959: result: yes +configure:11959: checking for stdlib.h +configure:11959: result: yes +configure:11959: checking for unistd.h +configure:11959: result: yes +configure:11971: checking for working memcmp +configure:12014: g++ -o conftest -g -DNDEBUG conftest.cpp >&5 +configure:12014: $? = 0 +configure:12014: ./conftest +configure:12014: $? = 0 +configure:12024: result: yes +configure:12033: checking for working strtod +configure:12074: g++ -o conftest -g -DNDEBUG conftest.cpp >&5 +conftest.cpp: In function 'int main()': +conftest.cpp:76:20: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] + char *string = " +69"; + ^~~~~~ +conftest.cpp:87:20: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] + char *string = "NaN"; + ^~~~~ +configure:12074: $? = 0 +configure:12074: ./conftest +configure:12074: $? = 0 +configure:12084: result: yes +configure:12149: checking for ftruncate +configure:12149: g++ -o conftest -g -DNDEBUG conftest.cpp >&5 +configure:12149: $? = 0 +configure:12149: result: yes +configure:12149: checking for memset +configure:12149: g++ -o conftest -g -DNDEBUG conftest.cpp >&5 +conftest.cpp:58:6: warning: declaration of 'char memset()' conflicts with built-in declaration 'void* memset(void*, int, long unsigned int)' [-Wbuiltin-declaration-mismatch] + char memset (); + ^~~~~~ +configure:12149: $? = 0 +configure:12149: result: yes +configure:12149: checking for mkdir +configure:12149: g++ -o conftest -g -DNDEBUG conftest.cpp >&5 +configure:12149: $? = 0 +configure:12149: result: yes +configure:12149: checking for strchr +configure:12149: g++ -o conftest -g -DNDEBUG conftest.cpp >&5 +conftest.cpp:60:6: warning: declaration of 'char strchr()' conflicts with built-in declaration 'char* strchr(const char*, int)' [-Wbuiltin-declaration-mismatch] + char strchr (); + ^~~~~~ +configure:12149: $? = 0 +configure:12149: result: yes +configure:12149: checking for strerror +configure:12149: g++ -o conftest -g -DNDEBUG conftest.cpp >&5 +configure:12149: $? = 0 +configure:12149: result: yes +configure:12149: checking for strtol +configure:12149: g++ -o conftest -g -DNDEBUG conftest.cpp >&5 +configure:12149: $? = 0 +configure:12149: result: yes +configure:12163: checking zlib version +configure:12183: g++ -c -g -DNDEBUG conftest.cpp >&5 +configure:12183: $? = 0 +configure:12185: result: ok (1.2.0.4 or later) +configure:12189: checking for library containing zlibVersion +configure:12220: g++ -o conftest -g -DNDEBUG conftest.cpp >&5 +/usr/bin/ld: /tmp/cciE0Hog.o: in function `main': +/home/jusic/source-engine/thirdparty/protobuf-2.6.1/conftest.cpp:51: undefined reference to `zlibVersion' +collect2: error: ld returned 1 exit status +configure:12220: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "Protocol Buffers" +| #define PACKAGE_TARNAME "protobuf" +| #define PACKAGE_VERSION "2.6.1" +| #define PACKAGE_STRING "Protocol Buffers 2.6.1" +| #define PACKAGE_BUGREPORT "protobuf@googlegroups.com" +| #define PACKAGE_URL "" +| #define PACKAGE "protobuf" +| #define VERSION "2.6.1" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define __EXTENSIONS__ 1 +| #define _ALL_SOURCE 1 +| #define _GNU_SOURCE 1 +| #define _POSIX_PTHREAD_SEMANTICS 1 +| #define _TANDEM_SOURCE 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define STDC_HEADERS 1 +| #define HAVE_FCNTL_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_LIMITS_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_FTRUNCATE 1 +| #define HAVE_MEMSET 1 +| #define HAVE_MKDIR 1 +| #define HAVE_STRCHR 1 +| #define HAVE_STRERROR 1 +| #define HAVE_STRTOL 1 +| /* end confdefs.h. */ +| +| /* Override any GCC internal prototype to avoid an error. +| Use char because int might match the return type of a GCC +| builtin and then its argument prototype would still apply. */ +| #ifdef __cplusplus +| extern "C" +| #endif +| char zlibVersion (); +| int +| main () +| { +| return zlibVersion (); +| ; +| return 0; +| } +configure:12220: g++ -o conftest -g -DNDEBUG conftest.cpp -lz >&5 +configure:12220: $? = 0 +configure:12237: result: -lz +configure:12488: checking for the pthreads library -lpthreads +configure:12521: gcc -o conftest conftest.c -lpthreads -lz >&5 +/usr/bin/ld: cannot find -lpthreads +collect2: error: ld returned 1 exit status +configure:12521: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "Protocol Buffers" +| #define PACKAGE_TARNAME "protobuf" +| #define PACKAGE_VERSION "2.6.1" +| #define PACKAGE_STRING "Protocol Buffers 2.6.1" +| #define PACKAGE_BUGREPORT "protobuf@googlegroups.com" +| #define PACKAGE_URL "" +| #define PACKAGE "protobuf" +| #define VERSION "2.6.1" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define __EXTENSIONS__ 1 +| #define _ALL_SOURCE 1 +| #define _GNU_SOURCE 1 +| #define _POSIX_PTHREAD_SEMANTICS 1 +| #define _TANDEM_SOURCE 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define STDC_HEADERS 1 +| #define HAVE_FCNTL_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_LIMITS_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_FTRUNCATE 1 +| #define HAVE_MEMSET 1 +| #define HAVE_MKDIR 1 +| #define HAVE_STRCHR 1 +| #define HAVE_STRERROR 1 +| #define HAVE_STRTOL 1 +| #define HAVE_ZLIB 1 +| /* end confdefs.h. */ +| #include +| int +| main () +| { +| pthread_t th; pthread_join(th, 0); +| pthread_attr_init(0); pthread_cleanup_push(0, 0); +| pthread_create(0,0,0,0); pthread_cleanup_pop(0); +| ; +| return 0; +| } +configure:12530: result: no +configure:12433: checking whether pthreads work without any flags +configure:12521: gcc -o conftest conftest.c -lz >&5 +/usr/bin/ld: /tmp/cchUZdBC.o: in function `main': +conftest.c:(.text+0x18): undefined reference to `pthread_join' +/usr/bin/ld: conftest.c:(.text+0x7e): undefined reference to `__pthread_register_cancel' +/usr/bin/ld: conftest.c:(.text+0x97): undefined reference to `pthread_create' +/usr/bin/ld: conftest.c:(.text+0xa6): undefined reference to `__pthread_unregister_cancel' +collect2: error: ld returned 1 exit status +configure:12521: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "Protocol Buffers" +| #define PACKAGE_TARNAME "protobuf" +| #define PACKAGE_VERSION "2.6.1" +| #define PACKAGE_STRING "Protocol Buffers 2.6.1" +| #define PACKAGE_BUGREPORT "protobuf@googlegroups.com" +| #define PACKAGE_URL "" +| #define PACKAGE "protobuf" +| #define VERSION "2.6.1" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define __EXTENSIONS__ 1 +| #define _ALL_SOURCE 1 +| #define _GNU_SOURCE 1 +| #define _POSIX_PTHREAD_SEMANTICS 1 +| #define _TANDEM_SOURCE 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define STDC_HEADERS 1 +| #define HAVE_FCNTL_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_LIMITS_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_FTRUNCATE 1 +| #define HAVE_MEMSET 1 +| #define HAVE_MKDIR 1 +| #define HAVE_STRCHR 1 +| #define HAVE_STRERROR 1 +| #define HAVE_STRTOL 1 +| #define HAVE_ZLIB 1 +| /* end confdefs.h. */ +| #include +| int +| main () +| { +| pthread_t th; pthread_join(th, 0); +| pthread_attr_init(0); pthread_cleanup_push(0, 0); +| pthread_create(0,0,0,0); pthread_cleanup_pop(0); +| ; +| return 0; +| } +configure:12530: result: no +configure:12438: checking whether pthreads work with -Kthread +configure:12521: gcc -o conftest -Kthread conftest.c -lz >&5 +gcc: error: unrecognized command line option '-Kthread'; did you mean '-pthread'? +configure:12521: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "Protocol Buffers" +| #define PACKAGE_TARNAME "protobuf" +| #define PACKAGE_VERSION "2.6.1" +| #define PACKAGE_STRING "Protocol Buffers 2.6.1" +| #define PACKAGE_BUGREPORT "protobuf@googlegroups.com" +| #define PACKAGE_URL "" +| #define PACKAGE "protobuf" +| #define VERSION "2.6.1" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define __EXTENSIONS__ 1 +| #define _ALL_SOURCE 1 +| #define _GNU_SOURCE 1 +| #define _POSIX_PTHREAD_SEMANTICS 1 +| #define _TANDEM_SOURCE 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define STDC_HEADERS 1 +| #define HAVE_FCNTL_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_LIMITS_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_FTRUNCATE 1 +| #define HAVE_MEMSET 1 +| #define HAVE_MKDIR 1 +| #define HAVE_STRCHR 1 +| #define HAVE_STRERROR 1 +| #define HAVE_STRTOL 1 +| #define HAVE_ZLIB 1 +| /* end confdefs.h. */ +| #include +| int +| main () +| { +| pthread_t th; pthread_join(th, 0); +| pthread_attr_init(0); pthread_cleanup_push(0, 0); +| pthread_create(0,0,0,0); pthread_cleanup_pop(0); +| ; +| return 0; +| } +configure:12530: result: no +configure:12438: checking whether pthreads work with -kthread +configure:12521: gcc -o conftest -kthread conftest.c -lz >&5 +gcc: error: unrecognized command line option '-kthread'; did you mean '-pthread'? +configure:12521: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "Protocol Buffers" +| #define PACKAGE_TARNAME "protobuf" +| #define PACKAGE_VERSION "2.6.1" +| #define PACKAGE_STRING "Protocol Buffers 2.6.1" +| #define PACKAGE_BUGREPORT "protobuf@googlegroups.com" +| #define PACKAGE_URL "" +| #define PACKAGE "protobuf" +| #define VERSION "2.6.1" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define __EXTENSIONS__ 1 +| #define _ALL_SOURCE 1 +| #define _GNU_SOURCE 1 +| #define _POSIX_PTHREAD_SEMANTICS 1 +| #define _TANDEM_SOURCE 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define STDC_HEADERS 1 +| #define HAVE_FCNTL_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_LIMITS_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_FTRUNCATE 1 +| #define HAVE_MEMSET 1 +| #define HAVE_MKDIR 1 +| #define HAVE_STRCHR 1 +| #define HAVE_STRERROR 1 +| #define HAVE_STRTOL 1 +| #define HAVE_ZLIB 1 +| /* end confdefs.h. */ +| #include +| int +| main () +| { +| pthread_t th; pthread_join(th, 0); +| pthread_attr_init(0); pthread_cleanup_push(0, 0); +| pthread_create(0,0,0,0); pthread_cleanup_pop(0); +| ; +| return 0; +| } +configure:12530: result: no +configure:12488: checking for the pthreads library -llthread +configure:12521: gcc -o conftest conftest.c -llthread -lz >&5 +/usr/bin/ld: cannot find -llthread +collect2: error: ld returned 1 exit status +configure:12521: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "Protocol Buffers" +| #define PACKAGE_TARNAME "protobuf" +| #define PACKAGE_VERSION "2.6.1" +| #define PACKAGE_STRING "Protocol Buffers 2.6.1" +| #define PACKAGE_BUGREPORT "protobuf@googlegroups.com" +| #define PACKAGE_URL "" +| #define PACKAGE "protobuf" +| #define VERSION "2.6.1" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define __EXTENSIONS__ 1 +| #define _ALL_SOURCE 1 +| #define _GNU_SOURCE 1 +| #define _POSIX_PTHREAD_SEMANTICS 1 +| #define _TANDEM_SOURCE 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define STDC_HEADERS 1 +| #define HAVE_FCNTL_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_LIMITS_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_FTRUNCATE 1 +| #define HAVE_MEMSET 1 +| #define HAVE_MKDIR 1 +| #define HAVE_STRCHR 1 +| #define HAVE_STRERROR 1 +| #define HAVE_STRTOL 1 +| #define HAVE_ZLIB 1 +| /* end confdefs.h. */ +| #include +| int +| main () +| { +| pthread_t th; pthread_join(th, 0); +| pthread_attr_init(0); pthread_cleanup_push(0, 0); +| pthread_create(0,0,0,0); pthread_cleanup_pop(0); +| ; +| return 0; +| } +configure:12530: result: no +configure:12438: checking whether pthreads work with -pthread +configure:12521: gcc -o conftest -pthread conftest.c -lz >&5 +configure:12521: $? = 0 +configure:12530: result: yes +configure:12549: checking for joinable pthread attribute +configure:12564: gcc -o conftest -pthread conftest.c -lz >&5 +configure:12564: $? = 0 +configure:12570: result: PTHREAD_CREATE_JOINABLE +configure:12580: checking if more special flags are required for pthreads +configure:12587: result: no +configure:12676: checking whether to check for GCC pthread/shared inconsistencies +configure:12689: gcc -o conftest -shared -fPIC -Wl,-z,defs -pthread conftest.c -lz >&5 +configure:12689: $? = 0 +configure:12701: result: yes +configure:12707: checking whether -pthread is sufficient with -shared +configure:12722: gcc -o conftest -shared -fPIC -Wl,-z,defs -pthread conftest.c -lz >&5 +configure:12722: $? = 0 +configure:12729: result: yes +configure:12817: checking whether what we have so far is sufficient with -nostdlib +configure:12835: gcc -o conftest -nostdlib -shared -fPIC -Wl,-z,defs -pthread conftest.c -lz -lc >&5 +/usr/bin/ld: /tmp/ccxxvvF1.o: in function `main': +conftest.c:(.text+0x18): undefined reference to `pthread_join' +/usr/bin/ld: conftest.c:(.text+0x7e): undefined reference to `__pthread_register_cancel' +/usr/bin/ld: conftest.c:(.text+0x97): undefined reference to `pthread_create' +/usr/bin/ld: conftest.c:(.text+0xa6): undefined reference to `__pthread_unregister_cancel' +collect2: error: ld returned 1 exit status +configure:12835: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "Protocol Buffers" +| #define PACKAGE_TARNAME "protobuf" +| #define PACKAGE_VERSION "2.6.1" +| #define PACKAGE_STRING "Protocol Buffers 2.6.1" +| #define PACKAGE_BUGREPORT "protobuf@googlegroups.com" +| #define PACKAGE_URL "" +| #define PACKAGE "protobuf" +| #define VERSION "2.6.1" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define __EXTENSIONS__ 1 +| #define _ALL_SOURCE 1 +| #define _GNU_SOURCE 1 +| #define _POSIX_PTHREAD_SEMANTICS 1 +| #define _TANDEM_SOURCE 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| #define STDC_HEADERS 1 +| #define HAVE_FCNTL_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_LIMITS_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_FTRUNCATE 1 +| #define HAVE_MEMSET 1 +| #define HAVE_MKDIR 1 +| #define HAVE_STRCHR 1 +| #define HAVE_STRERROR 1 +| #define HAVE_STRTOL 1 +| #define HAVE_ZLIB 1 +| /* end confdefs.h. */ +| #include +| int +| main () +| { +| pthread_t th; pthread_join(th, 0); +| pthread_attr_init(0); pthread_cleanup_push(0, 0); +| pthread_create(0,0,0,0); pthread_cleanup_pop(0); +| ; +| return 0; +| } +configure:12847: result: no +configure:12852: checking whether -lpthread saves the day +configure:12868: gcc -o conftest -nostdlib -shared -fPIC -Wl,-z,defs -pthread conftest.c -lpthread -lz -lc >&5 +configure:12868: $? = 0 +configure:12877: result: yes +configure:12917: checking the location of hash_map +configure:12943: g++ -c -g -DNDEBUG conftest.cpp >&5 +configure:12943: $? = 0 +configure:12965: g++ -c -g -DNDEBUG conftest.cpp >&5 +configure:12965: $? = 0 +configure:13032: result: +configure:13047: checking for library containing sched_yield +configure:13078: g++ -o conftest -g -DNDEBUG conftest.cpp -lz >&5 +configure:13078: $? = 0 +configure:13095: result: none required +configure:13228: checking that generated files are newer than configure +configure:13234: result: done +configure:13273: creating ./config.status + +## ---------------- ## +## Cache variables. ## +## ---------------- ## + +ac_cv_build=x86_64-pc-linux-gnu +ac_cv_c_compiler_gnu=yes +ac_cv_cxx_compiler_gnu=yes +ac_cv_cxx_hash_map='' +ac_cv_cxx_hash_map_class=unordered_map +ac_cv_cxx_hash_namespace=std +ac_cv_cxx_hash_set='' +ac_cv_cxx_hash_set_class=unordered_set +ac_cv_env_CCC_set= +ac_cv_env_CCC_value= +ac_cv_env_CC_set= +ac_cv_env_CC_value= +ac_cv_env_CFLAGS_set= +ac_cv_env_CFLAGS_value= +ac_cv_env_CPPFLAGS_set= +ac_cv_env_CPPFLAGS_value= +ac_cv_env_CXXCPP_set= +ac_cv_env_CXXCPP_value= +ac_cv_env_CXXFLAGS_set= +ac_cv_env_CXXFLAGS_value= +ac_cv_env_CXX_set= +ac_cv_env_CXX_value= +ac_cv_env_LDFLAGS_set= +ac_cv_env_LDFLAGS_value= +ac_cv_env_LIBS_set= +ac_cv_env_LIBS_value= +ac_cv_env_LT_SYS_LIBRARY_PATH_set= +ac_cv_env_LT_SYS_LIBRARY_PATH_value= +ac_cv_env_build_alias_set= +ac_cv_env_build_alias_value= +ac_cv_env_host_alias_set= +ac_cv_env_host_alias_value= +ac_cv_env_target_alias_set= +ac_cv_env_target_alias_value= +ac_cv_func_ftruncate=yes +ac_cv_func_memcmp_working=yes +ac_cv_func_memset=yes +ac_cv_func_mkdir=yes +ac_cv_func_strchr=yes +ac_cv_func_strerror=yes +ac_cv_func_strtod=yes +ac_cv_func_strtol=yes +ac_cv_have_decl___SUNPRO_CC=no +ac_cv_header_dlfcn_h=yes +ac_cv_header_fcntl_h=yes +ac_cv_header_inttypes_h=yes +ac_cv_header_limits_h=yes +ac_cv_header_memory_h=yes +ac_cv_header_minix_config_h=no +ac_cv_header_stdc=yes +ac_cv_header_stdint_h=yes +ac_cv_header_stdlib_h=yes +ac_cv_header_string_h=yes +ac_cv_header_strings_h=yes +ac_cv_header_sys_stat_h=yes +ac_cv_header_sys_types_h=yes +ac_cv_header_unistd_h=yes +ac_cv_host=x86_64-pc-linux-gnu +ac_cv_objext=o +ac_cv_path_EGREP='/bin/grep -E' +ac_cv_path_FGREP='/bin/grep -F' +ac_cv_path_GREP=/bin/grep +ac_cv_path_SED=/bin/sed +ac_cv_path_install='/usr/bin/install -c' +ac_cv_path_lt_DD=/bin/dd +ac_cv_path_mkdir=/bin/mkdir +ac_cv_prog_AWK=mawk +ac_cv_prog_CXXCPP='g++ -E' +ac_cv_prog_ac_ct_AR=ar +ac_cv_prog_ac_ct_CC=gcc +ac_cv_prog_ac_ct_CXX=g++ +ac_cv_prog_ac_ct_MANIFEST_TOOL=mt +ac_cv_prog_ac_ct_OBJDUMP=objdump +ac_cv_prog_ac_ct_RANLIB=ranlib +ac_cv_prog_ac_ct_STRIP=strip +ac_cv_prog_cc_c89= +ac_cv_prog_cc_g=yes +ac_cv_prog_cxx_g=yes +ac_cv_prog_make_make_set=yes +ac_cv_safe_to_define___extensions__=yes +ac_cv_search_sched_yield='none required' +ac_cv_search_zlibVersion=-lz +ac_cv_target=x86_64-pc-linux-gnu +am_cv_CC_dependencies_compiler_type=gcc3 +am_cv_CXX_dependencies_compiler_type=gcc3 +am_cv_make_support_nested_variables=yes +am_cv_prog_cc_c_o=yes +lt_cv_ar_at_file=@ +lt_cv_archive_cmds_need_lc=no +lt_cv_deplibs_check_method=pass_all +lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_ld_reload_flag=-r +lt_cv_nm_interface='BSD nm' +lt_cv_objdir=.libs +lt_cv_path_LD=/usr/bin/ld +lt_cv_path_LDCXX='/usr/bin/ld -m elf_x86_64' +lt_cv_path_NM='/usr/bin/nm -B' +lt_cv_path_mainfest_tool=no +lt_cv_prog_compiler_c_o=yes +lt_cv_prog_compiler_c_o_CXX=yes +lt_cv_prog_compiler_pic='-fPIC -DPIC' +lt_cv_prog_compiler_pic_CXX='-fPIC -DPIC' +lt_cv_prog_compiler_pic_works=yes +lt_cv_prog_compiler_pic_works_CXX=yes +lt_cv_prog_compiler_rtti_exceptions=no +lt_cv_prog_compiler_static_works=yes +lt_cv_prog_compiler_static_works_CXX=yes +lt_cv_prog_gnu_ld=yes +lt_cv_prog_gnu_ldcxx=yes +lt_cv_sharedlib_from_linklib_cmd='printf %s\n' +lt_cv_shlibpath_overrides_runpath=yes +lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p'\'' | sed '\''/ __gnu_lto/d'\''' +lt_cv_sys_global_symbol_to_c_name_address='sed -n -e '\''s/^: \(.*\) .*$/ {"\1", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(.*\)$/ {"\1", (void *) \&\1},/p'\''' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='sed -n -e '\''s/^: \(.*\) .*$/ {"\1", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(lib.*\)$/ {"\1", (void *) \&\1},/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(.*\)$/ {"lib\1", (void *) \&\1},/p'\''' +lt_cv_sys_global_symbol_to_cdecl='sed -n -e '\''s/^T .* \(.*\)$/extern int \1();/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(.*\)$/extern char \1;/p'\''' +lt_cv_sys_global_symbol_to_import= +lt_cv_sys_max_cmd_len=1572864 +lt_cv_to_host_file_cmd=func_convert_file_noop +lt_cv_to_tool_file_cmd=func_convert_file_noop +lt_cv_truncate_bin='/bin/dd bs=4096 count=1' + +## ----------------- ## +## Output variables. ## +## ----------------- ## + +ACLOCAL='${SHELL} /home/jusic/source-engine/thirdparty/protobuf-2.6.1/missing aclocal-1.16' +AMDEPBACKSLASH='\' +AMDEP_FALSE='#' +AMDEP_TRUE='' +AMTAR='$${TAR-tar}' +AM_BACKSLASH='\' +AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +AM_DEFAULT_VERBOSITY='1' +AM_V='$(V)' +AR='ar' +AUTOCONF='${SHELL} /home/jusic/source-engine/thirdparty/protobuf-2.6.1/missing autoconf' +AUTOHEADER='${SHELL} /home/jusic/source-engine/thirdparty/protobuf-2.6.1/missing autoheader' +AUTOMAKE='${SHELL} /home/jusic/source-engine/thirdparty/protobuf-2.6.1/missing automake-1.16' +AWK='mawk' +CC='gcc' +CCDEPMODE='depmode=gcc3' +CFLAGS='' +CPPFLAGS='' +CXX='g++' +CXXCPP='g++ -E' +CXXDEPMODE='depmode=gcc3' +CXXFLAGS=' -g -DNDEBUG' +CYGPATH_W='echo' +DEFS='-DHAVE_CONFIG_H' +DEPDIR='.deps' +DLLTOOL='false' +DSYMUTIL='' +DUMPBIN='' +ECHO_C='' +ECHO_N='-n' +ECHO_T='' +EGREP='/bin/grep -E' +EXEEXT='' +FGREP='/bin/grep -F' +GCC_FALSE='#' +GCC_TRUE='' +GREP='/bin/grep' +HAVE_ZLIB_FALSE='#' +HAVE_ZLIB_TRUE='' +INSTALL_DATA='${INSTALL} -m 644' +INSTALL_PROGRAM='${INSTALL}' +INSTALL_SCRIPT='${INSTALL}' +INSTALL_STRIP_PROGRAM='$(install_sh) -c -s' +ISAINFO='' +LD='/usr/bin/ld -m elf_x86_64' +LDFLAGS='' +LIBOBJS='' +LIBS='-lz ' +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +LIPO='' +LN_S='ln -s' +LTLIBOBJS='' +LT_SYS_LIBRARY_PATH='' +MAINT='' +MAINTAINER_MODE_FALSE='#' +MAINTAINER_MODE_TRUE='' +MAKEINFO='${SHELL} /home/jusic/source-engine/thirdparty/protobuf-2.6.1/missing makeinfo' +MANIFEST_TOOL=':' +MKDIR_P='/bin/mkdir -p' +NM='/usr/bin/nm -B' +NMEDIT='' +OBJDUMP='objdump' +OBJEXT='o' +OTOOL64='' +OTOOL='' +PACKAGE='protobuf' +PACKAGE_BUGREPORT='protobuf@googlegroups.com' +PACKAGE_NAME='Protocol Buffers' +PACKAGE_STRING='Protocol Buffers 2.6.1' +PACKAGE_TARNAME='protobuf' +PACKAGE_URL='' +PACKAGE_VERSION='2.6.1' +PATH_SEPARATOR=':' +POW_LIB='' +PROTOBUF_OPT_FLAG='-O2' +PROTOC='' +PTHREAD_CC='gcc' +PTHREAD_CFLAGS='-pthread' +PTHREAD_LIBS=' -lpthread' +RANLIB='ranlib' +SED='/bin/sed' +SET_MAKE='' +SHELL='/bin/bash' +STRIP='strip' +USE_EXTERNAL_PROTOC_FALSE='' +USE_EXTERNAL_PROTOC_TRUE='#' +VERSION='2.6.1' +ac_ct_AR='ar' +ac_ct_CC='gcc' +ac_ct_CXX='g++' +ac_ct_DUMPBIN='' +acx_pthread_config='' +am__EXEEXT_FALSE='' +am__EXEEXT_TRUE='#' +am__fastdepCC_FALSE='#' +am__fastdepCC_TRUE='' +am__fastdepCXX_FALSE='#' +am__fastdepCXX_TRUE='' +am__include='include' +am__isrc='' +am__leading_dot='.' +am__nodep='_no' +am__quote='' +am__tar='$${TAR-tar} chof - "$$tardir"' +am__untar='$${TAR-tar} xf -' +bindir='${exec_prefix}/bin' +build='x86_64-pc-linux-gnu' +build_alias='' +build_cpu='x86_64' +build_os='linux-gnu' +build_vendor='pc' +datadir='${datarootdir}' +datarootdir='${prefix}/share' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +dvidir='${docdir}' +exec_prefix='${prefix}' +host='x86_64-pc-linux-gnu' +host_alias='' +host_cpu='x86_64' +host_os='linux-gnu' +host_vendor='pc' +htmldir='${docdir}' +includedir='${prefix}/include' +infodir='${datarootdir}/info' +install_sh='${SHELL} /home/jusic/source-engine/thirdparty/protobuf-2.6.1/install-sh' +libdir='${exec_prefix}/lib' +libexecdir='${exec_prefix}/libexec' +localedir='${datarootdir}/locale' +localstatedir='${prefix}/var' +mandir='${datarootdir}/man' +mkdir_p='$(MKDIR_P)' +oldincludedir='/usr/include' +pdfdir='${docdir}' +prefix='/usr/local' +program_transform_name='s,x,x,' +psdir='${docdir}' +runstatedir='${localstatedir}/run' +sbindir='${exec_prefix}/sbin' +sharedstatedir='${prefix}/com' +subdirs=' gtest' +sysconfdir='${prefix}/etc' +target='x86_64-pc-linux-gnu' +target_alias='' +target_cpu='x86_64' +target_os='linux-gnu' +target_vendor='pc' + +## ----------- ## +## confdefs.h. ## +## ----------- ## + +/* confdefs.h */ +#define PACKAGE_NAME "Protocol Buffers" +#define PACKAGE_TARNAME "protobuf" +#define PACKAGE_VERSION "2.6.1" +#define PACKAGE_STRING "Protocol Buffers 2.6.1" +#define PACKAGE_BUGREPORT "protobuf@googlegroups.com" +#define PACKAGE_URL "" +#define PACKAGE "protobuf" +#define VERSION "2.6.1" +#define STDC_HEADERS 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_SYS_STAT_H 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STRING_H 1 +#define HAVE_MEMORY_H 1 +#define HAVE_STRINGS_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_UNISTD_H 1 +#define __EXTENSIONS__ 1 +#define _ALL_SOURCE 1 +#define _GNU_SOURCE 1 +#define _POSIX_PTHREAD_SEMANTICS 1 +#define _TANDEM_SOURCE 1 +#define HAVE_DLFCN_H 1 +#define LT_OBJDIR ".libs/" +#define STDC_HEADERS 1 +#define HAVE_FCNTL_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_LIMITS_H 1 +#define HAVE_STDLIB_H 1 +#define HAVE_UNISTD_H 1 +#define HAVE_FTRUNCATE 1 +#define HAVE_MEMSET 1 +#define HAVE_MKDIR 1 +#define HAVE_STRCHR 1 +#define HAVE_STRERROR 1 +#define HAVE_STRTOL 1 +#define HAVE_ZLIB 1 +#define HAVE_PTHREAD 1 +#define HAVE_HASH_MAP 1 +#define HAVE_HASH_SET 1 +#define HASH_MAP_H +#define HASH_SET_H +#define HASH_NAMESPACE std +#define HASH_MAP_CLASS unordered_map +#define HASH_SET_CLASS unordered_set + +configure: exit 0 + +## ---------------------- ## +## Running config.status. ## +## ---------------------- ## + +This file was extended by Protocol Buffers config.status 2.6.1, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = + CONFIG_HEADERS = + CONFIG_LINKS = + CONFIG_COMMANDS = + $ ./config.status + +on DESKTOP-6CJ0SOQ + +config.status:1193: creating Makefile +config.status:1193: creating src/Makefile +config.status:1193: creating protobuf.pc +config.status:1193: creating protobuf-lite.pc +config.status:1193: creating config.h +config.status:1422: executing depfiles commands +config.status:1499: cd src && sed -e '/# am--include-marker/d' Makefile | make -f - am--depfiles +make[1]: Entering directory '/home/jusic/source-engine/thirdparty/protobuf-2.6.1/src' +make[1]: Nothing to be done for 'am--depfiles'. +make[1]: Leaving directory '/home/jusic/source-engine/thirdparty/protobuf-2.6.1/src' +config.status:1504: $? = 0 +config.status:1422: executing libtool commands diff --git a/thirdparty/protobuf-2.6.1/config.status b/thirdparty/protobuf-2.6.1/config.status new file mode 100755 index 00000000..61a65f32 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/config.status @@ -0,0 +1,2241 @@ +#! /bin/bash +# Generated by configure. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=${CONFIG_SHELL-/bin/bash} +export SHELL +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by Protocol Buffers $as_me 2.6.1, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +# Files that config.status was made for. +config_files=" Makefile src/Makefile protobuf.pc protobuf-lite.pc" +config_headers=" config.h" +config_commands=" depfiles libtool" + +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." + +ac_cs_config="" +ac_cs_version="\ +Protocol Buffers config.status 2.6.1 +configured by ./configure, generated by GNU Autoconf 2.69, + with options \"$ac_cs_config\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='/home/jusic/source-engine/thirdparty/protobuf-2.6.1' +srcdir='.' +INSTALL='/usr/bin/install -c' +MKDIR_P='/bin/mkdir -p' +AWK='mawk' +test -n "$AWK" || AWK=awk +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +if $ac_cs_recheck; then + set X /bin/bash './configure' $ac_configure_extra_args --no-create --no-recursion + shift + $as_echo "running CONFIG_SHELL=/bin/bash $*" >&6 + CONFIG_SHELL='/bin/bash' + export CONFIG_SHELL + exec "$@" +fi + +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +# +# INIT-COMMANDS +# +AMDEP_TRUE="" MAKE="make" + + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' +double_quote_subst='s/\(["`\\]\)/\\\1/g' +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' +macro_version='2.4.6' +macro_revision='2.4.6' +enable_shared='yes' +enable_static='yes' +pic_mode='default' +enable_fast_install='needless' +shared_archive_member_spec='' +SHELL='/bin/bash' +ECHO='printf %s\n' +PATH_SEPARATOR=':' +host_alias='' +host='x86_64-pc-linux-gnu' +host_os='linux-gnu' +build_alias='' +build='x86_64-pc-linux-gnu' +build_os='linux-gnu' +SED='/bin/sed' +Xsed='/bin/sed -e 1s/^X//' +GREP='/bin/grep' +EGREP='/bin/grep -E' +FGREP='/bin/grep -F' +LD='/usr/bin/ld -m elf_x86_64' +NM='/usr/bin/nm -B' +LN_S='ln -s' +max_cmd_len='1572864' +ac_objext='o' +exeext='' +lt_unset='unset' +lt_SP2NL='tr \040 \012' +lt_NL2SP='tr \015\012 \040\040' +lt_cv_to_host_file_cmd='func_convert_file_noop' +lt_cv_to_tool_file_cmd='func_convert_file_noop' +reload_flag=' -r' +reload_cmds='$LD$reload_flag -o $output$reload_objs' +OBJDUMP='objdump' +deplibs_check_method='pass_all' +file_magic_cmd='$MAGIC_CMD' +file_magic_glob='' +want_nocaseglob='no' +DLLTOOL='false' +sharedlib_from_linklib_cmd='printf %s\n' +AR='ar' +AR_FLAGS='cru' +archiver_list_spec='@' +STRIP='strip' +RANLIB='ranlib' +old_postinstall_cmds='chmod 644 $oldlib~$RANLIB $tool_oldlib' +old_postuninstall_cmds='' +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs~$RANLIB $tool_oldlib' +lock_old_archive_extraction='no' +CC='gcc' +CFLAGS='' +compiler='g++' +GCC='yes' +lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p'\'' | sed '\''/ __gnu_lto/d'\''' +lt_cv_sys_global_symbol_to_cdecl='sed -n -e '\''s/^T .* \(.*\)$/extern int \1();/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(.*\)$/extern char \1;/p'\''' +lt_cv_sys_global_symbol_to_import='' +lt_cv_sys_global_symbol_to_c_name_address='sed -n -e '\''s/^: \(.*\) .*$/ {"\1", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(.*\)$/ {"\1", (void *) \&\1},/p'\''' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='sed -n -e '\''s/^: \(.*\) .*$/ {"\1", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(lib.*\)$/ {"\1", (void *) \&\1},/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(.*\)$/ {"lib\1", (void *) \&\1},/p'\''' +lt_cv_nm_interface='BSD nm' +nm_file_list_spec='@' +lt_sysroot='' +lt_cv_truncate_bin='/bin/dd bs=4096 count=1' +objdir='.libs' +MAGIC_CMD='file' +lt_prog_compiler_no_builtin_flag=' -fno-builtin' +lt_prog_compiler_pic=' -fPIC -DPIC' +lt_prog_compiler_wl='-Wl,' +lt_prog_compiler_static='-static' +lt_cv_prog_compiler_c_o='yes' +need_locks='no' +MANIFEST_TOOL=':' +DSYMUTIL='' +NMEDIT='' +LIPO='' +OTOOL='' +OTOOL64='' +libext='a' +shrext_cmds='.so' +extract_expsyms_cmds='' +archive_cmds_need_lc='no' +enable_shared_with_static_runtimes='no' +export_dynamic_flag_spec='$wl--export-dynamic' +whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' +compiler_needs_object='no' +old_archive_from_new_cmds='' +old_archive_from_expsyms_cmds='' +archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' +archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' +module_cmds='' +module_expsym_cmds='' +with_gnu_ld='yes' +allow_undefined_flag='' +no_undefined_flag='' +hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' +hardcode_libdir_separator='' +hardcode_direct='no' +hardcode_direct_absolute='no' +hardcode_minus_L='no' +hardcode_shlibpath_var='unsupported' +hardcode_automatic='no' +inherit_rpath='no' +link_all_deplibs='no' +always_export_symbols='no' +export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' +exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' +include_expsyms='' +prelink_cmds='' +postlink_cmds='' +file_list_spec='' +variables_saved_for_relink='PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH' +need_lib_prefix='no' +need_version='no' +version_type='linux' +runpath_var='LD_RUN_PATH' +shlibpath_var='LD_LIBRARY_PATH' +shlibpath_overrides_runpath='yes' +libname_spec='lib$name' +library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' +soname_spec='$libname$release$shared_ext$major' +install_override_mode='' +postinstall_cmds='' +postuninstall_cmds='' +finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' +finish_eval='' +hardcode_into_libs='yes' +sys_lib_search_path_spec='/usr/lib/gcc/x86_64-linux-gnu/8 /usr/lib/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib ' +configure_time_dlsearch_path='/lib /usr/lib /usr/lib/x86_64-linux-gnu/libfakeroot /usr/local/lib /usr/local/lib/x86_64-linux-gnu /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu /lib32 /usr/lib32 /libx32 /usr/libx32 ' +configure_time_lt_sys_library_path='' +hardcode_action='immediate' +enable_dlopen='unknown' +enable_dlopen_self='unknown' +enable_dlopen_self_static='unknown' +old_striplib='strip --strip-debug' +striplib='strip --strip-unneeded' +compiler_lib_search_dirs='' +predep_objects='' +postdep_objects='' +predeps='' +postdeps='' +compiler_lib_search_path='' +LD_CXX='/usr/bin/ld -m elf_x86_64' +reload_flag_CXX=' -r' +reload_cmds_CXX='$LD$reload_flag -o $output$reload_objs' +old_archive_cmds_CXX='$AR $AR_FLAGS $oldlib$oldobjs~$RANLIB $tool_oldlib' +compiler_CXX='g++' +GCC_CXX='yes' +lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' +lt_prog_compiler_pic_CXX=' -fPIC -DPIC' +lt_prog_compiler_wl_CXX='-Wl,' +lt_prog_compiler_static_CXX='-static' +lt_cv_prog_compiler_c_o_CXX='yes' +archive_cmds_need_lc_CXX='no' +enable_shared_with_static_runtimes_CXX='no' +export_dynamic_flag_spec_CXX='$wl--export-dynamic' +whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' +compiler_needs_object_CXX='no' +old_archive_from_new_cmds_CXX='' +old_archive_from_expsyms_cmds_CXX='' +archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' +archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' +module_cmds_CXX='' +module_expsym_cmds_CXX='' +with_gnu_ld_CXX='yes' +allow_undefined_flag_CXX='' +no_undefined_flag_CXX='' +hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' +hardcode_libdir_separator_CXX='' +hardcode_direct_CXX='no' +hardcode_direct_absolute_CXX='no' +hardcode_minus_L_CXX='no' +hardcode_shlibpath_var_CXX='unsupported' +hardcode_automatic_CXX='no' +inherit_rpath_CXX='no' +link_all_deplibs_CXX='no' +always_export_symbols_CXX='no' +export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' +exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' +include_expsyms_CXX='' +prelink_cmds_CXX='' +postlink_cmds_CXX='' +file_list_spec_CXX='' +hardcode_action_CXX='immediate' +compiler_lib_search_dirs_CXX='/usr/lib/gcc/x86_64-linux-gnu/8 /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu /usr/lib/gcc/x86_64-linux-gnu/8/../../../../lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /usr/lib/gcc/x86_64-linux-gnu/8/../../..' +predep_objects_CXX='/usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/8/crtbeginS.o' +postdep_objects_CXX='/usr/lib/gcc/x86_64-linux-gnu/8/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/crtn.o' +predeps_CXX='' +postdeps_CXX='-lstdc++ -lm -lgcc_s -lc -lgcc_s' +compiler_lib_search_path_CXX='-L/usr/lib/gcc/x86_64-linux-gnu/8 -L/usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/8/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/8/../../..' + +LTCC='gcc' +LTCFLAGS='' +compiler='gcc' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in SHELL ECHO PATH_SEPARATOR SED GREP EGREP FGREP LD NM LN_S lt_SP2NL lt_NL2SP reload_flag OBJDUMP deplibs_check_method file_magic_cmd file_magic_glob want_nocaseglob DLLTOOL sharedlib_from_linklib_cmd AR AR_FLAGS archiver_list_spec STRIP RANLIB CC CFLAGS compiler lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl lt_cv_sys_global_symbol_to_import lt_cv_sys_global_symbol_to_c_name_address lt_cv_sys_global_symbol_to_c_name_address_lib_prefix lt_cv_nm_interface nm_file_list_spec lt_cv_truncate_bin lt_prog_compiler_no_builtin_flag lt_prog_compiler_pic lt_prog_compiler_wl lt_prog_compiler_static lt_cv_prog_compiler_c_o need_locks MANIFEST_TOOL DSYMUTIL NMEDIT LIPO OTOOL OTOOL64 shrext_cmds export_dynamic_flag_spec whole_archive_flag_spec compiler_needs_object with_gnu_ld allow_undefined_flag no_undefined_flag hardcode_libdir_flag_spec hardcode_libdir_separator exclude_expsyms include_expsyms file_list_spec variables_saved_for_relink libname_spec library_names_spec soname_spec install_override_mode finish_eval old_striplib striplib compiler_lib_search_dirs predep_objects postdep_objects predeps postdeps compiler_lib_search_path LD_CXX reload_flag_CXX compiler_CXX lt_prog_compiler_no_builtin_flag_CXX lt_prog_compiler_pic_CXX lt_prog_compiler_wl_CXX lt_prog_compiler_static_CXX lt_cv_prog_compiler_c_o_CXX export_dynamic_flag_spec_CXX whole_archive_flag_spec_CXX compiler_needs_object_CXX with_gnu_ld_CXX allow_undefined_flag_CXX no_undefined_flag_CXX hardcode_libdir_flag_spec_CXX hardcode_libdir_separator_CXX exclude_expsyms_CXX include_expsyms_CXX file_list_spec_CXX compiler_lib_search_dirs_CXX predep_objects_CXX postdep_objects_CXX predeps_CXX postdeps_CXX compiler_lib_search_path_CXX; do + case `eval \\$ECHO \\""\\$$var"\\"` in + *[\\\`\"\$]*) + eval "lt_$var=\\\"\`\$ECHO \"\$$var\" | \$SED \"\$sed_quote_subst\"\`\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_$var=\\\"\$$var\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds old_postinstall_cmds old_postuninstall_cmds old_archive_cmds extract_expsyms_cmds old_archive_from_new_cmds old_archive_from_expsyms_cmds archive_cmds archive_expsym_cmds module_cmds module_expsym_cmds export_symbols_cmds prelink_cmds postlink_cmds postinstall_cmds postuninstall_cmds finish_cmds sys_lib_search_path_spec configure_time_dlsearch_path configure_time_lt_sys_library_path reload_cmds_CXX old_archive_cmds_CXX old_archive_from_new_cmds_CXX old_archive_from_expsyms_cmds_CXX archive_cmds_CXX archive_expsym_cmds_CXX module_cmds_CXX module_expsym_cmds_CXX export_symbols_cmds_CXX prelink_cmds_CXX postlink_cmds_CXX; do + case `eval \\$ECHO \\""\\$$var"\\"` in + *[\\\`\"\$]*) + eval "lt_$var=\\\"\`\$ECHO \"\$$var\" | \$SED -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_$var=\\\"\$$var\\\"" + ;; + esac +done + +ac_aux_dir='.' + +# See if we are running on zsh, and set the options that allow our +# commands through without removal of \ escapes INIT. +if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='protobuf' + VERSION='2.6.1' + RM='rm -f' + ofile='libtool' + + + + + + + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; + "protobuf.pc") CONFIG_FILES="$CONFIG_FILES protobuf.pc" ;; + "protobuf-lite.pc") CONFIG_FILES="$CONFIG_FILES protobuf-lite.pc" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +cat >>"$ac_tmp/subs1.awk" <<\_ACAWK && +S["am__EXEEXT_FALSE"]="" +S["am__EXEEXT_TRUE"]="#" +S["LTLIBOBJS"]="" +S["subdirs"]=" gtest" +S["PTHREAD_CFLAGS"]="-pthread" +S["PTHREAD_LIBS"]=" -lpthread" +S["PTHREAD_CC"]="gcc" +S["acx_pthread_config"]="" +S["USE_EXTERNAL_PROTOC_FALSE"]="" +S["USE_EXTERNAL_PROTOC_TRUE"]="#" +S["PROTOC"]="" +S["HAVE_ZLIB_FALSE"]="#" +S["HAVE_ZLIB_TRUE"]="" +S["POW_LIB"]="" +S["LIBOBJS"]="" +S["LT_SYS_LIBRARY_PATH"]="" +S["OTOOL64"]="" +S["OTOOL"]="" +S["LIPO"]="" +S["NMEDIT"]="" +S["DSYMUTIL"]="" +S["MANIFEST_TOOL"]=":" +S["RANLIB"]="ranlib" +S["ac_ct_AR"]="ar" +S["AR"]="ar" +S["DLLTOOL"]="false" +S["OBJDUMP"]="objdump" +S["LN_S"]="ln -s" +S["NM"]="/usr/bin/nm -B" +S["ac_ct_DUMPBIN"]="" +S["DUMPBIN"]="" +S["LD"]="/usr/bin/ld -m elf_x86_64" +S["FGREP"]="/bin/grep -F" +S["SED"]="/bin/sed" +S["LIBTOOL"]="$(SHELL) $(top_builddir)/libtool" +S["ISAINFO"]="" +S["PROTOBUF_OPT_FLAG"]="-O2" +S["GCC_FALSE"]="#" +S["GCC_TRUE"]="" +S["EGREP"]="/bin/grep -E" +S["GREP"]="/bin/grep" +S["CXXCPP"]="g++ -E" +S["am__fastdepCXX_FALSE"]="#" +S["am__fastdepCXX_TRUE"]="" +S["CXXDEPMODE"]="depmode=gcc3" +S["ac_ct_CXX"]="g++" +S["CXXFLAGS"]=" -g -DNDEBUG" +S["CXX"]="g++" +S["am__fastdepCC_FALSE"]="#" +S["am__fastdepCC_TRUE"]="" +S["CCDEPMODE"]="depmode=gcc3" +S["am__nodep"]="_no" +S["AMDEPBACKSLASH"]="\\" +S["AMDEP_FALSE"]="#" +S["AMDEP_TRUE"]="" +S["am__include"]="include" +S["DEPDIR"]=".deps" +S["OBJEXT"]="o" +S["EXEEXT"]="" +S["ac_ct_CC"]="gcc" +S["CPPFLAGS"]="" +S["LDFLAGS"]="" +S["CFLAGS"]="" +S["CC"]="gcc" +S["AM_BACKSLASH"]="\\" +S["AM_DEFAULT_VERBOSITY"]="1" +S["AM_DEFAULT_V"]="$(AM_DEFAULT_VERBOSITY)" +S["AM_V"]="$(V)" +S["am__untar"]="$${TAR-tar} xf -" +S["am__tar"]="$${TAR-tar} chof - \"$$tardir\"" +S["AMTAR"]="$${TAR-tar}" +S["am__leading_dot"]="." +S["SET_MAKE"]="" +S["AWK"]="mawk" +S["mkdir_p"]="$(MKDIR_P)" +S["MKDIR_P"]="/bin/mkdir -p" +S["INSTALL_STRIP_PROGRAM"]="$(install_sh) -c -s" +S["STRIP"]="strip" +S["install_sh"]="${SHELL} /home/jusic/source-engine/thirdparty/protobuf-2.6.1/install-sh" +S["MAKEINFO"]="${SHELL} /home/jusic/source-engine/thirdparty/protobuf-2.6.1/missing makeinfo" +S["AUTOHEADER"]="${SHELL} /home/jusic/source-engine/thirdparty/protobuf-2.6.1/missing autoheader" +S["AUTOMAKE"]="${SHELL} /home/jusic/source-engine/thirdparty/protobuf-2.6.1/missing automake-1.16" +S["AUTOCONF"]="${SHELL} /home/jusic/source-engine/thirdparty/protobuf-2.6.1/missing autoconf" +S["ACLOCAL"]="${SHELL} /home/jusic/source-engine/thirdparty/protobuf-2.6.1/missing aclocal-1.16" +S["VERSION"]="2.6.1" +S["PACKAGE"]="protobuf" +S["CYGPATH_W"]="echo" +S["am__isrc"]="" +S["INSTALL_DATA"]="${INSTALL} -m 644" +S["INSTALL_SCRIPT"]="${INSTALL}" +S["INSTALL_PROGRAM"]="${INSTALL}" +S["target_os"]="linux-gnu" +S["target_vendor"]="pc" +S["target_cpu"]="x86_64" +S["target"]="x86_64-pc-linux-gnu" +S["host_os"]="linux-gnu" +S["host_vendor"]="pc" +S["host_cpu"]="x86_64" +S["host"]="x86_64-pc-linux-gnu" +S["build_os"]="linux-gnu" +S["build_vendor"]="pc" +S["build_cpu"]="x86_64" +S["build"]="x86_64-pc-linux-gnu" +S["MAINT"]="" +S["MAINTAINER_MODE_FALSE"]="#" +S["MAINTAINER_MODE_TRUE"]="" +S["target_alias"]="" +S["host_alias"]="" +S["build_alias"]="" +S["LIBS"]="-lz " +S["ECHO_T"]="" +S["ECHO_N"]="-n" +S["ECHO_C"]="" +S["DEFS"]="-DHAVE_CONFIG_H" +S["mandir"]="${datarootdir}/man" +S["localedir"]="${datarootdir}/locale" +S["libdir"]="${exec_prefix}/lib" +S["psdir"]="${docdir}" +S["pdfdir"]="${docdir}" +S["dvidir"]="${docdir}" +S["htmldir"]="${docdir}" +S["infodir"]="${datarootdir}/info" +S["docdir"]="${datarootdir}/doc/${PACKAGE_TARNAME}" +S["oldincludedir"]="/usr/include" +S["includedir"]="${prefix}/include" +S["runstatedir"]="${localstatedir}/run" +S["localstatedir"]="${prefix}/var" +S["sharedstatedir"]="${prefix}/com" +S["sysconfdir"]="${prefix}/etc" +S["datadir"]="${datarootdir}" +S["datarootdir"]="${prefix}/share" +S["libexecdir"]="${exec_prefix}/libexec" +S["sbindir"]="${exec_prefix}/sbin" +S["bindir"]="${exec_prefix}/bin" +S["program_transform_name"]="s,x,x," +S["prefix"]="/usr/local" +S["exec_prefix"]="${prefix}" +S["PACKAGE_URL"]="" +S["PACKAGE_BUGREPORT"]="protobuf@googlegroups.com" +S["PACKAGE_STRING"]="Protocol Buffers 2.6.1" +S["PACKAGE_VERSION"]="2.6.1" +S["PACKAGE_TARNAME"]="protobuf" +S["PACKAGE_NAME"]="Protocol Buffers" +S["PATH_SEPARATOR"]=":" +S["SHELL"]="/bin/bash" +S["am__quote"]="" +_ACAWK +cat >>"$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +D["PACKAGE_NAME"]=" \"Protocol Buffers\"" +D["PACKAGE_TARNAME"]=" \"protobuf\"" +D["PACKAGE_VERSION"]=" \"2.6.1\"" +D["PACKAGE_STRING"]=" \"Protocol Buffers 2.6.1\"" +D["PACKAGE_BUGREPORT"]=" \"protobuf@googlegroups.com\"" +D["PACKAGE_URL"]=" \"\"" +D["PACKAGE"]=" \"protobuf\"" +D["VERSION"]=" \"2.6.1\"" +D["STDC_HEADERS"]=" 1" +D["HAVE_SYS_TYPES_H"]=" 1" +D["HAVE_SYS_STAT_H"]=" 1" +D["HAVE_STDLIB_H"]=" 1" +D["HAVE_STRING_H"]=" 1" +D["HAVE_MEMORY_H"]=" 1" +D["HAVE_STRINGS_H"]=" 1" +D["HAVE_INTTYPES_H"]=" 1" +D["HAVE_STDINT_H"]=" 1" +D["HAVE_UNISTD_H"]=" 1" +D["__EXTENSIONS__"]=" 1" +D["_ALL_SOURCE"]=" 1" +D["_GNU_SOURCE"]=" 1" +D["_POSIX_PTHREAD_SEMANTICS"]=" 1" +D["_TANDEM_SOURCE"]=" 1" +D["HAVE_DLFCN_H"]=" 1" +D["LT_OBJDIR"]=" \".libs/\"" +D["STDC_HEADERS"]=" 1" +D["HAVE_FCNTL_H"]=" 1" +D["HAVE_INTTYPES_H"]=" 1" +D["HAVE_LIMITS_H"]=" 1" +D["HAVE_STDLIB_H"]=" 1" +D["HAVE_UNISTD_H"]=" 1" +D["HAVE_FTRUNCATE"]=" 1" +D["HAVE_MEMSET"]=" 1" +D["HAVE_MKDIR"]=" 1" +D["HAVE_STRCHR"]=" 1" +D["HAVE_STRERROR"]=" 1" +D["HAVE_STRTOL"]=" 1" +D["HAVE_ZLIB"]=" 1" +D["HAVE_PTHREAD"]=" 1" +D["HAVE_HASH_MAP"]=" 1" +D["HAVE_HASH_SET"]=" 1" +D["HASH_MAP_H"]=" " +D["HASH_SET_H"]=" " +D["HASH_NAMESPACE"]=" std" +D["HASH_MAP_CLASS"]=" unordered_map" +D["HASH_SET_CLASS"]=" unordered_set" + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+[_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ][_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*([\t (]|$)/ { + line = $ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + ac_datarootdir_hack=' + s&@datadir@&${datarootdir}&g + s&@docdir@&${datarootdir}/doc/${PACKAGE_TARNAME}&g + s&@infodir@&${datarootdir}/info&g + s&@localedir@&${datarootdir}/locale&g + s&@mandir@&${datarootdir}/man&g + s&\${datarootdir}&${prefix}/share&g' ;; +esac +ac_sed_extra="/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +} + +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + case $CONFIG_FILES in #( + *\'*) : + eval set x "$CONFIG_FILES" ;; #( + *) : + set x $CONFIG_FILES ;; #( + *) : + ;; +esac + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`$as_dirname -- "$am_mf" || +$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$am_mf" : 'X\(//\)[^/]' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$am_mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + am_filepart=`$as_basename -- "$am_mf" || +$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$am_mf" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { echo "$as_me:$LINENO: cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles" >&5 + (cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } || am_rc=$? + done + if test $am_rc -ne 0; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. Try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking). +See \`config.log' for more details" "$LINENO" 5; } + fi + { am_dirpart=; unset am_dirpart;} + { am_filepart=; unset am_filepart;} + { am_mf=; unset am_mf;} + { am_rc=; unset am_rc;} + rm -f conftest-deps.mk +} + ;; + "libtool":C) + + # See if we are running on zsh, and set the options that allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST + fi + + cfgfile=${ofile}T + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL +# Generated automatically by $as_me ($PACKAGE) $VERSION +# NOTE: Changes made to this file will be lost: look at ltmain.sh. + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + +# Copyright (C) 2014 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +# The names of the tagged configurations supported by this script. +available_tags='CXX ' + +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + +# ### BEGIN LIBTOOL CONFIG + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# Shared archive member basename,for filename based shared library versioning on AIX. +shared_archive_member_spec=$shared_archive_member_spec + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that protects backslashes. +ECHO=$lt_ECHO + +# The PATH separator for the build system. +PATH_SEPARATOR=$lt_PATH_SEPARATOR + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# convert \$build file names to \$host format. +to_host_file_cmd=$lt_cv_to_host_file_cmd + +# convert \$build files to toolchain format. +to_tool_file_cmd=$lt_cv_to_tool_file_cmd + +# An object symbol dumper. +OBJDUMP=$lt_OBJDUMP + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method = "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# How to find potential files when deplibs_check_method = "file_magic". +file_magic_glob=$lt_file_magic_glob + +# Find potential files using nocaseglob when deplibs_check_method = "file_magic". +want_nocaseglob=$lt_want_nocaseglob + +# DLL creation program. +DLLTOOL=$lt_DLLTOOL + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd + +# The archiver. +AR=$lt_AR + +# Flags to create an archive. +AR_FLAGS=$lt_AR_FLAGS + +# How to feed a file listing to the archiver. +archiver_list_spec=$lt_archiver_list_spec + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=$lock_old_archive_extraction + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm into a list of symbols to manually relocate. +global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# The name lister interface. +nm_interface=$lt_lt_cv_nm_interface + +# Specify filename containing input files for \$NM. +nm_file_list_spec=$lt_nm_file_list_spec + +# The root where to search for dependent libraries,and where our libraries should be installed. +lt_sysroot=$lt_sysroot + +# Command to truncate a binary pipe. +lt_truncate_bin=$lt_lt_cv_truncate_bin + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Manifest tool. +MANIFEST_TOOL=$lt_MANIFEST_TOOL + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Permission mode override for installation of shared libraries. +install_override_mode=$lt_install_override_mode + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Detected run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path + +# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. +configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \$shlibpath_var if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects +postdep_objects=$lt_postdep_objects +predeps=$lt_predeps +postdeps=$lt_postdeps + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path + +# ### END LIBTOOL CONFIG + +_LT_EOF + + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + +ltmain=$ac_aux_dir/ltmain.sh + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + + cat <<_LT_EOF >> "$ofile" + +# ### BEGIN LIBTOOL TAG CONFIG: CXX + +# The linker used to build libraries. +LD=$lt_LD_CXX + +# How to create reloadable object files. +reload_flag=$lt_reload_flag_CXX +reload_cmds=$lt_reload_cmds_CXX + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds_CXX + +# A language specific compiler. +CC=$lt_compiler_CXX + +# Is the compiler the GNU compiler? +with_gcc=$GCC_CXX + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_CXX + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_CXX + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_CXX + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_CXX + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object_CXX + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds_CXX +archive_expsym_cmds=$lt_archive_expsym_cmds_CXX + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds_CXX +module_expsym_cmds=$lt_module_expsym_cmds_CXX + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld_CXX + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_CXX + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_CXX + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct_CXX + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \$shlibpath_var if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute_CXX + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L_CXX + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic_CXX + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath_CXX + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_CXX + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols_CXX + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_CXX + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_CXX + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_CXX + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds_CXX + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds_CXX + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec_CXX + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_CXX + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects_CXX +postdep_objects=$lt_postdep_objects_CXX +predeps=$lt_predeps_CXX +postdeps=$lt_postdeps_CXX + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_CXX + +# ### END LIBTOOL TAG CONFIG: CXX +_LT_EOF + + ;; + + esac +done # for ac_tag + + +as_fn_exit 0 diff --git a/thirdparty/protobuf-2.6.1/config.sub b/thirdparty/protobuf-2.6.1/config.sub new file mode 100755 index 00000000..1d8e98bc --- /dev/null +++ b/thirdparty/protobuf-2.6.1/config.sub @@ -0,0 +1,1801 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright 1992-2018 Free Software Foundation, Inc. + +timestamp='2018-02-22' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). + + +# Please send patches to . +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS + +Canonicalize a configuration name. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright 1992-2018 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo "$1" + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ + linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ + kopensolaris*-gnu* | cloudabi*-eabi* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + android-linux) + os=-linux-android + basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown + ;; + *) + basic_machine=`echo "$1" | sed 's/-[^-]*$//'` + if [ "$basic_machine" != "$1" ] + then os=`echo "$1" | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray | -microblaze*) + os= + basic_machine=$1 + ;; + -bluegene*) + os=-cnk + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*178) + os=-lynxos178 + ;; + -lynx*5) + os=-lynxos5 + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo "$1" | sed -e 's/86-.*/86-sequent/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | aarch64 | aarch64_be \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arceb \ + | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ + | avr | avr32 \ + | ba \ + | be32 | be64 \ + | bfin \ + | c4x | c8051 | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | e2k | epiphany \ + | fido | fr30 | frv | ft32 \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | hexagon \ + | i370 | i860 | i960 | ia16 | ia64 \ + | ip2k | iq2000 \ + | k1om \ + | le32 | le64 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa32r6 | mipsisa32r6el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64r6 | mipsisa64r6el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipsr5900 | mipsr5900el \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nds32 | nds32le | nds32be \ + | nios | nios2 | nios2eb | nios2el \ + | ns16k | ns32k \ + | open8 | or1k | or1knd | or32 \ + | pdp10 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle \ + | pru \ + | pyramid \ + | riscv32 | riscv64 \ + | rl78 | rx \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu \ + | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ + | ubicom32 \ + | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ + | visium \ + | wasm32 \ + | x86 | xc16x | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + c54x) + basic_machine=tic54x-unknown + ;; + c55x) + basic_machine=tic55x-unknown + ;; + c6x) + basic_machine=tic6x-unknown + ;; + leon|leon[3-9]) + basic_machine=sparc-$basic_machine + ;; + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65) + ;; + ms1) + basic_machine=mt-unknown + ;; + + strongarm | thumb | xscale) + basic_machine=arm-unknown + ;; + xgate) + basic_machine=$basic_machine-unknown + os=-none + ;; + xscaleeb) + basic_machine=armeb-unknown + ;; + + xscaleel) + basic_machine=armel-unknown + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | aarch64-* | aarch64_be-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | ba-* \ + | be32-* | be64-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* \ + | c8051-* | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | e2k-* | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | hexagon-* \ + | i*86-* | i860-* | i960-* | ia16-* | ia64-* \ + | ip2k-* | iq2000-* \ + | k1om-* \ + | le32-* | le64-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ + | microblaze-* | microblazeel-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa32r6-* | mipsisa32r6el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64r6-* | mipsisa64r6el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipsr5900-* | mipsr5900el-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nds32-* | nds32le-* | nds32be-* \ + | nios-* | nios2-* | nios2eb-* | nios2el-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | open8-* \ + | or1k*-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ + | pru-* \ + | pyramid-* \ + | riscv32-* | riscv64-* \ + | rl78-* | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ + | tahoe-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tile*-* \ + | tron-* \ + | ubicom32-* \ + | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ + | vax-* \ + | visium-* \ + | wasm32-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-pc + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aros) + basic_machine=i386-pc + os=-aros + ;; + asmjs) + basic_machine=asmjs-unknown + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo "$basic_machine" | sed 's/^[^-]*-//'` + os=-linux + ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; + c54x-*) + basic_machine=tic54x-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + c55x-*) + basic_machine=tic55x-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + c6x-*) + basic_machine=tic6x-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16 | cr16-*) + basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2*) + basic_machine=m68k-bull + os=-sysv3 + ;; + e500v[12]) + basic_machine=powerpc-unknown + os=$os"spe" + ;; + e500v[12]-*) + basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'` + os=$os"spe" + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; + i*86v32) + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + leon-*|leon[3-9]-*) + basic_machine=sparc-`echo "$basic_machine" | sed 's/-.*//'` + ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo "$basic_machine" | sed 's/^[^-]*-//'` + os=-linux + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + microblaze*) + basic_machine=microblaze-xilinx + ;; + mingw64) + basic_machine=x86_64-pc + os=-mingw64 + ;; + mingw32) + basic_machine=i686-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + moxiebox) + basic_machine=moxie-unknown + os=-moxiebox + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo "$basic_machine" | sed -e 's/ms1-/mt-/'` + ;; + msys) + basic_machine=i686-pc + os=-msys + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + nacl) + basic_machine=le32-unknown + os=-nacl + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + neo-tandem) + basic_machine=neo-tandem + ;; + nse-tandem) + basic_machine=nse-tandem + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + nsv-tandem) + basic_machine=nsv-tandem + ;; + nsx-tandem) + basic_machine=nsx-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo "$basic_machine" | sed 's/^[^-]*-//'` + os=-linux + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc | ppcbe) basic_machine=powerpc-unknown + ;; + ppc-* | ppcbe-*) + basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + os=-rdos + ;; + rdos32) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh5el) + basic_machine=sh5le-unknown + ;; + simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + strongarm-* | thumb-*) + basic_machine=arm-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tile*) + basic_machine=$basic_machine-unknown + os=-linux-gnu + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + x64) + basic_machine=x86_64-pc + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + xscale-* | xscalee[bl]-*) + basic_machine=`echo "$basic_machine" | sed 's/^xscale/arm/'` + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo "$basic_machine" | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo "$basic_machine" | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases that might get confused + # with valid system types. + # -solaris* is a basic system type, with this one exception. + -auroraux) + os=-auroraux + ;; + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # es1800 is here to avoid being matched by es* (a different OS) + -es1800*) + os=-ose + ;; + # Now accept the basic system types. + # The portable systems comes first. + # Each alternative MUST end in a * to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* | -plan9* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* | -cloudabi* | -sortix* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -knetbsd* | -mirbsd* | -netbsd* \ + | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* | -cegcc* | -glidix* \ + | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-musl* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ + | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox* | -bme* \ + | -midnightbsd*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -xray | -os68k* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo "$os" | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo "$os" | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo "$os" | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4*) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -zvmoe) + os=-zvmoe + ;; + -dicos*) + os=-dicos + ;; + -pikeos*) + # Until real need of OS specific support for + # particular features comes up, bare metal + # configurations are quite functional. + case $basic_machine in + arm*) + os=-eabi + ;; + *) + os=-elf + ;; + esac + ;; + -nacl*) + ;; + -ios) + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + c8051-*) + os=-elf + ;; + hexagon-*) + os=-elf + ;; + tic54x-*) + os=-coff + ;; + tic55x-*) + os=-coff + ;; + tic6x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + ;; + m68*-cisco) + os=-aout + ;; + mep-*) + os=-elf + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + pru-*) + os=-elf + ;; + *-be) + os=-beos + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -cnk*|-aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo "$basic_machine" | sed "s/unknown/$vendor/"` + ;; +esac + +echo "$basic_machine$os" +exit + +# Local variables: +# eval: (add-hook 'write-file-functions 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/thirdparty/protobuf-2.6.1/configure b/thirdparty/protobuf-2.6.1/configure new file mode 100755 index 00000000..4befc4cf --- /dev/null +++ b/thirdparty/protobuf-2.6.1/configure @@ -0,0 +1,20281 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.69 for Protocol Buffers 2.6.1. +# +# Report bugs to . +# +# +# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1 + + test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ + || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org and +$0: protobuf@googlegroups.com about your system, including +$0: any error possibly output before this message. Then +$0: install a modern shell, or manually run the script +$0: under such a shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + +SHELL=${CONFIG_SHELL-/bin/sh} + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='Protocol Buffers' +PACKAGE_TARNAME='protobuf' +PACKAGE_VERSION='2.6.1' +PACKAGE_STRING='Protocol Buffers 2.6.1' +PACKAGE_BUGREPORT='protobuf@googlegroups.com' +PACKAGE_URL='' + +ac_unique_file="src/google/protobuf/message.cc" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +enable_option_checking=no +ac_subst_vars='am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +subdirs +PTHREAD_CFLAGS +PTHREAD_LIBS +PTHREAD_CC +acx_pthread_config +USE_EXTERNAL_PROTOC_FALSE +USE_EXTERNAL_PROTOC_TRUE +PROTOC +HAVE_ZLIB_FALSE +HAVE_ZLIB_TRUE +POW_LIB +LIBOBJS +LT_SYS_LIBRARY_PATH +OTOOL64 +OTOOL +LIPO +NMEDIT +DSYMUTIL +MANIFEST_TOOL +RANLIB +ac_ct_AR +AR +DLLTOOL +OBJDUMP +LN_S +NM +ac_ct_DUMPBIN +DUMPBIN +LD +FGREP +SED +LIBTOOL +ISAINFO +PROTOBUF_OPT_FLAG +GCC_FALSE +GCC_TRUE +EGREP +GREP +CXXCPP +am__fastdepCXX_FALSE +am__fastdepCXX_TRUE +CXXDEPMODE +ac_ct_CXX +CXXFLAGS +CXX +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +target_os +target_vendor +target_cpu +target +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +MAINT +MAINTAINER_MODE_FALSE +MAINTAINER_MODE_TRUE +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +runstatedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL +am__quote' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_maintainer_mode +enable_silent_rules +with_zlib +with_protoc +enable_dependency_tracking +enable_64bit_solaris +enable_shared +enable_static +with_pic +enable_fast_install +with_aix_soname +with_gnu_ld +with_sysroot +enable_libtool_lock +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CXX +CXXFLAGS +CCC +CXXCPP +LT_SYS_LIBRARY_PATH' +ac_subdirs_all='gtest' + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir runstatedir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures Protocol Buffers 2.6.1 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/protobuf] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] + --target=TARGET configure for building compilers for TARGET [HOST] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of Protocol Buffers 2.6.1:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --disable-maintainer-mode + disable make rules and dependencies not useful (and + sometimes confusing) to the casual installer + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + --disable-64bit-solaris Build 64 bit binary on Solaris [default=on] + --enable-shared[=PKGS] build shared libraries [default=yes] + --enable-static[=PKGS] build static libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-libtool-lock avoid locking (might break parallel builds) + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-zlib include classes for streaming compressed data in and + out [default=check] + --with-protoc=COMMAND use the given protoc command instead of building a + new one when building tests (useful for + cross-compiling) + --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use + both] + --with-aix-soname=aix|svr4|both + shared library versioning (aka "SONAME") variant to + provide on AIX, [default=aix]. + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-sysroot[=DIR] Search for dependent libraries within DIR (or the + compiler's sysroot if not specified). + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CXX C++ compiler command + CXXFLAGS C++ compiler flags + CXXCPP C++ preprocessor + LT_SYS_LIBRARY_PATH + User-defined run-time library search path. + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +Protocol Buffers configure 2.6.1 +generated by GNU Autoconf 2.69 + +Copyright (C) 2012 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_cxx_try_compile LINENO +# ---------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_compile + +# ac_fn_cxx_try_cpp LINENO +# ------------------------ +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_cpp + +# ac_fn_cxx_check_header_mongrel LINENO HEADER VAR INCLUDES +# --------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_cxx_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval \${$3+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} +( $as_echo "## ---------------------------------------- ## +## Report this to protobuf@googlegroups.com ## +## ---------------------------------------- ##" + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_cxx_check_header_mongrel + +# ac_fn_cxx_try_run LINENO +# ------------------------ +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_cxx_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_run + +# ac_fn_cxx_check_header_compile LINENO HEADER VAR INCLUDES +# --------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_cxx_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_cxx_check_header_compile + +# ac_fn_cxx_check_decl LINENO SYMBOL VAR INCLUDES +# ----------------------------------------------- +# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR +# accordingly. +ac_fn_cxx_check_decl () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + as_decl_name=`echo $2|sed 's/ *(.*//'` + as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +$as_echo_n "checking whether $as_decl_name is declared... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +#ifndef $as_decl_name +#ifdef __cplusplus + (void) $as_decl_use; +#else + (void) $as_decl_name; +#endif +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_cxx_check_decl + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func + +# ac_fn_cxx_try_link LINENO +# ------------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_link + +# ac_fn_cxx_check_func LINENO FUNC VAR +# ------------------------------------ +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_cxx_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_cxx_check_func +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by Protocol Buffers $as_me 2.6.1, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 +$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } + # Check whether --enable-maintainer-mode was given. +if test "${enable_maintainer_mode+set}" = set; then : + enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval +else + USE_MAINTAINER_MODE=yes +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 +$as_echo "$USE_MAINTAINER_MODE" >&6; } + if test $USE_MAINTAINER_MODE = yes; then + MAINTAINER_MODE_TRUE= + MAINTAINER_MODE_FALSE='#' +else + MAINTAINER_MODE_TRUE='#' + MAINTAINER_MODE_FALSE= +fi + + MAINT=$MAINTAINER_MODE_TRUE + + + + +ac_config_headers="$ac_config_headers config.h" + + + +# autoconf's default CXXFLAGS are usually "-g -O2". These aren't necessarily +# the best choice for libprotobuf. +if test "x${ac_cv_env_CFLAGS_set}" = "x"; then : + CFLAGS="" +fi +if test "x${ac_cv_env_CXXFLAGS_set}" = "x"; then : + CXXFLAGS="" +fi + +ac_aux_dir= +for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if ${ac_cv_build+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if ${ac_cv_host+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 +$as_echo_n "checking target system type... " >&6; } +if ${ac_cv_target+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$target_alias" = x; then + ac_cv_target=$ac_cv_host +else + ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 +$as_echo "$ac_cv_target" >&6; } +case $ac_cv_target in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; +esac +target=$ac_cv_target +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_target +shift +target_cpu=$1 +target_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +target_os=$* +IFS=$ac_save_IFS +case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac + + +# The aliases save the names the user supplied, while $host etc. +# will get canonicalized. +test -n "$target_alias" && + test "$program_prefix$program_suffix$program_transform_name" = \ + NONENONEs,x,x, && + program_prefix=${target_alias}- + +am__api_version='1.16' + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if ${ac_cv_path_install+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +$as_echo_n "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken + alias in your environment" "$LINENO" 5 + fi + if test "$2" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$2" = conftest.file + ) +then + # Ok. + : +else + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was `s,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` + +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` + +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if ${ac_cv_path_mkdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +# Check whether --enable-silent-rules was given. +if test "${enable_silent_rules+set}" = set; then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=1;; +esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='protobuf' + VERSION='2.6.1' + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar pax cpio none' + +am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' + + + + + + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 + fi +fi + + + +# Check whether --with-zlib was given. +if test "${with_zlib+set}" = set; then : + withval=$with_zlib; +else + with_zlib=check +fi + + + +# Check whether --with-protoc was given. +if test "${with_protoc+set}" = set; then : + withval=$with_protoc; +else + with_protoc=no +fi + + +# Checks for programs. +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } +if ${am_cv_prog_cc_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +$as_echo "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 +$as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; } +cat > confinc.mk << 'END' +am__doit: + @echo this is the am__doit target >confinc.out +.PHONY: am__doit +END +am__include="#" +am__quote= +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 + (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + case $?:`cat confinc.out 2>/dev/null` in #( + '0:this is the am__doit target') : + case $s in #( + BSD) : + am__include='.include' am__quote='"' ;; #( + *) : + am__include='include' am__quote='' ;; +esac ;; #( + *) : + ;; +esac + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 +$as_echo "${_am_result}" >&6; } + +# Check whether --enable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then : + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + +depcc="$CC" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CC_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +$as_echo "$CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +if ${ac_cv_cxx_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } +if ${ac_cv_prog_cxx_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +else + CXXFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + +else + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +depcc="$CXX" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CXX_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +fi + + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 +$as_echo_n "checking how to run the C++ preprocessor... " >&6; } +if test -z "$CXXCPP"; then + if ${ac_cv_prog_CXXCPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 +$as_echo "$CXXCPP" >&6; } +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_cxx_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_cxx_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + ac_fn_cxx_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" +if test "x$ac_cv_header_minix_config_h" = xyes; then : + MINIX=yes +else + MINIX= +fi + + + if test "$MINIX" = yes; then + +$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h + + +$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h + + +$as_echo "#define _MINIX 1" >>confdefs.h + + fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 +$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } +if ${ac_cv_safe_to_define___extensions__+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +# define __EXTENSIONS__ 1 + $ac_includes_default +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_safe_to_define___extensions__=yes +else + ac_cv_safe_to_define___extensions__=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 +$as_echo "$ac_cv_safe_to_define___extensions__" >&6; } + test $ac_cv_safe_to_define___extensions__ = yes && + $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h + + $as_echo "#define _ALL_SOURCE 1" >>confdefs.h + + $as_echo "#define _GNU_SOURCE 1" >>confdefs.h + + $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h + + $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h + + + + + + + + if test "$GCC" = yes; then + GCC_TRUE= + GCC_FALSE='#' +else + GCC_TRUE='#' + GCC_FALSE= +fi + # let the Makefile know if we're gcc + +# test_util.cc takes forever to compile with GCC and optimization turned on. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking C++ compiler flags..." >&5 +$as_echo_n "checking C++ compiler flags...... " >&6; } +if test "x${ac_cv_env_CXXFLAGS_set}" = "x"; then : + + if test "$GCC" = "yes"; then : + + PROTOBUF_OPT_FLAG="-O2" + CXXFLAGS="${CXXFLAGS} -g" + +fi + + # Protocol Buffers contains several checks that are intended to be used only + # for debugging and which might hurt performance. Most users are probably + # end users who don't want these checks, so add -DNDEBUG by default. + CXXFLAGS="$CXXFLAGS -DNDEBUG" + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: use default: $PROTOBUF_OPT_FLAG $CXXFLAGS" >&5 +$as_echo "use default: $PROTOBUF_OPT_FLAG $CXXFLAGS" >&6; } + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: use user-supplied: $CXXFLAGS" >&5 +$as_echo "use user-supplied: $CXXFLAGS" >&6; } + +fi + + + + + + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + ac_fn_cxx_check_decl "$LINENO" "__SUNPRO_CC" "ac_cv_have_decl___SUNPRO_CC" "$ac_includes_default" +if test "x$ac_cv_have_decl___SUNPRO_CC" = xyes; then : + SUNCC="yes" +else + SUNCC="no" +fi + + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + + # Check whether --enable-64bit-solaris was given. +if test "${enable_64bit_solaris+set}" = set; then : + enableval=$enable_64bit_solaris; ac_enable_64bit="$enableval" +else + ac_enable_64bit="yes" +fi + + + if test "$SUNCC" = "yes" -a "x${ac_cv_env_CXXFLAGS_set}" = "x"; then : + + CXXFLAGS="-g0 -xO3 -xlibmil -xdepend -xbuiltin -mt -compat=5 -library=stlport4 -library=Crun -template=no%extdef ${CXXFLAGS}" + +fi + + case $host_os in + *solaris*) + for ac_prog in isainfo +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ISAINFO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ISAINFO"; then + ac_cv_prog_ISAINFO="$ISAINFO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ISAINFO="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ISAINFO=$ac_cv_prog_ISAINFO +if test -n "$ISAINFO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ISAINFO" >&5 +$as_echo "$ISAINFO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ISAINFO" && break +done +test -n "$ISAINFO" || ISAINFO="no" + + if test "x$ISAINFO" != "xno"; then : + isainfo_b=`${ISAINFO} -b` +else + isainfo_b="x" +fi + + if test "$isainfo_b" != "x"; then : + + + isainfo_k=`${ISAINFO} -k` + + if test "x$ac_enable_64bit" = "xyes"; then : + + + +$as_echo "#define SOLARIS_64BIT_ENABLED 1" >>confdefs.h + + if test "x$libdir" = "x\${exec_prefix}/lib"; then : + + libdir="${libdir}/${isainfo_k}" + +fi + + if test "x${ac_cv_env_CXXFLAGS_set}" = "x"; then : + + CXXFLAGS="${CXXFLAGS} -m64" + ac_cv_env_CXXFLAGS_set=set + ac_cv_env_CXXFLAGS_value='-m64' + +fi + + if test "x${ac_cv_env_CFLAGS_set}" = "x"; then : + + CFLAGS="${CFLAGS} -m64" + ac_cv_env_CFLAGS_set=set + ac_cv_env_CFLAGS_value='-m64' + +fi + + if test "$target_cpu" = "sparc" -a "x$SUNCC" = "xyes" ; then : + + CXXFLAGS="-xmemalign=8s ${CXXFLAGS}" + +fi + +fi + +fi + ;; + esac + + + +# Have to do libtool after SUNCC, other wise it "helpfully" adds Crun Cstd +# to the link +case `pwd` in + *\ * | *\ *) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; +esac + + + +macro_version='2.4.6' +macro_revision='2.4.6' + + + + + + + + + + + + + +ltmain=$ac_aux_dir/ltmain.sh + +# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 +$as_echo_n "checking how to print strings... " >&6; } +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "" +} + +case $ECHO in + printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 +$as_echo "printf" >&6; } ;; + print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 +$as_echo "print -r" >&6; } ;; + *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 +$as_echo "cat" >&6; } ;; +esac + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if ${ac_cv_path_SED+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +$as_echo "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +$as_echo_n "checking for fgrep... " >&6; } +if ${ac_cv_path_FGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 + then ac_cv_path_FGREP="$GREP -F" + else + if test -z "$FGREP"; then + ac_path_FGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in fgrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_FGREP" || continue +# Check for GNU ac_path_FGREP and select it if it is found. + # Check for GNU $ac_path_FGREP +case `"$ac_path_FGREP" --version 2>&1` in +*GNU*) + ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'FGREP' >> "conftest.nl" + "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_FGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_FGREP="$ac_path_FGREP" + ac_path_FGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_FGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_FGREP"; then + as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_FGREP=$FGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +$as_echo "$ac_cv_path_FGREP" >&6; } + FGREP="$ac_cv_path_FGREP" + + +test -z "$GREP" && GREP=grep + + + + + + + + + + + + + + + + + + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return, which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD=$ac_prog + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test yes = "$with_gnu_ld"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD=$ac_dir/$ac_prog + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +if ${lt_cv_path_NM+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM=$NM +else + lt_nm_to_check=${ac_tool_prefix}nm + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/$lt_tmp_nm + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the 'sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty + case $build_os in + mingw*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac + case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break 2 + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break 2 + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS=$lt_save_ifs + done + : ${lt_cv_path_NM=no} +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +$as_echo "$lt_cv_path_NM" >&6; } +if test no != "$lt_cv_path_NM"; then + NM=$lt_cv_path_NM +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + if test -n "$ac_tool_prefix"; then + for ac_prog in dumpbin "link -dump" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DUMPBIN"; then + ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DUMPBIN=$ac_cv_prog_DUMPBIN +if test -n "$DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +$as_echo "$DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$DUMPBIN" && break + done +fi +if test -z "$DUMPBIN"; then + ac_ct_DUMPBIN=$DUMPBIN + for ac_prog in dumpbin "link -dump" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DUMPBIN"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN +if test -n "$ac_ct_DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +$as_echo "$ac_ct_DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_DUMPBIN" && break +done + + if test "x$ac_ct_DUMPBIN" = x; then + DUMPBIN=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DUMPBIN=$ac_ct_DUMPBIN + fi +fi + + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols -headers" + ;; + *) + DUMPBIN=: + ;; + esac + fi + + if test : != "$DUMPBIN"; then + NM=$DUMPBIN + fi +fi +test -z "$NM" && NM=nm + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +$as_echo_n "checking the name lister ($NM) interface... " >&6; } +if ${lt_cv_nm_interface+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: output\"" >&5) + cat conftest.out >&5 + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +$as_echo "$lt_cv_nm_interface" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } +fi + +# find the maximum length of command line arguments +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +$as_echo_n "checking the maximum length of command line arguments... " >&6; } +if ${lt_cv_sys_max_cmd_len+:} false; then : + $as_echo_n "(cached) " >&6 +else + i=0 + teststring=ABCD + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test X`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test 17 != "$i" # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac + +fi + +if test -n "$lt_cv_sys_max_cmd_len"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +$as_echo "$lt_cv_sys_max_cmd_len" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 +$as_echo "none" >&6; } +fi +max_cmd_len=$lt_cv_sys_max_cmd_len + + + + + + +: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi + + + + + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 +$as_echo_n "checking how to convert $build file names to $host format... " >&6; } +if ${lt_cv_to_host_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac + +fi + +to_host_file_cmd=$lt_cv_to_host_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 +$as_echo "$lt_cv_to_host_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 +$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } +if ${lt_cv_to_tool_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + #assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac + +fi + +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 +$as_echo "$lt_cv_to_tool_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +$as_echo_n "checking for $LD option to reload object files... " >&6; } +if ${lt_cv_ld_reload_flag+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_reload_flag='-r' +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +$as_echo "$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + if test yes != "$GCC"; then + reload_cmds=false + fi + ;; + darwin*) + if test yes = "$GCC"; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +$as_echo_n "checking how to recognize dependent libraries... " >&6; } +if ${lt_cv_deplibs_check_method+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# 'unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# that responds to the $file_magic_cmd with a given extended regex. +# If you have 'file' or equivalent on your system and you're not sure +# whether 'pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[4-9]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[3-9]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd* | bitrig*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +os2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +$as_echo "$lt_cv_deplibs_check_method" >&6; } + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + + + + + + + + + + + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +$as_echo "$DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +$as_echo "$ac_ct_DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + +test -z "$DLLTOOL" && DLLTOOL=dlltool + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 +$as_echo_n "checking how to associate runtime and link libraries... " >&6; } +if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh; + # decide which one to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd=$ECHO + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 +$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + + + + + + + +if test -n "$ac_tool_prefix"; then + for ac_prog in ar + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AR" && break + done +fi +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_AR" && break +done + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +fi + +: ${AR=ar} +: ${AR_FLAGS=cru} + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 +$as_echo_n "checking for archiver @FILE support... " >&6; } +if ${lt_cv_ar_at_file+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ar_at_file=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test 0 -eq "$ac_status"; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test 0 -ne "$ac_status"; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 +$as_echo "$lt_cv_ar_at_file" >&6; } + +if test no = "$lt_cv_ar_at_file"; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +test -z "$STRIP" && STRIP=: + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +test -z "$RANLIB" && RANLIB=: + + + + + + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + bitrig* | openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } +if ${lt_cv_sys_global_symbol_pipe+:} false; then : + $as_echo_n "(cached) " >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[ABCDGISTW]' + ;; +hpux*) + if test ia64 = "$host_cpu"; then + symcode='[ABCDEGRST]' + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Gets list of data symbols to import. + lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" + # Adjust the below global symbol transforms to fixup imported variables. + lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" + lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" + lt_c_name_lib_hook="\ + -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ + -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" +else + # Disable hooks by default. + lt_cv_sys_global_symbol_to_import= + lt_cdecl_hook= + lt_c_name_hook= + lt_c_name_lib_hook= +fi + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n"\ +$lt_cdecl_hook\ +" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ +$lt_c_name_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" + +# Transform an extracted symbol line into symbol name with lib prefix and +# symbol address. +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ +$lt_c_name_lib_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function, + # D for any global variable and I for any imported variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK '"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ +" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ +" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ +" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ +" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Now try to grab the symbols. + nlist=conftest.nm + $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&5 + if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&5 && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS=conftstm.$ac_objext + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest$ac_exeext; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test yes = "$pipe_works"; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +$as_echo "failed" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 +$as_echo_n "checking for sysroot... " >&6; } + +# Check whether --with-sysroot was given. +if test "${with_sysroot+set}" = set; then : + withval=$with_sysroot; +else + with_sysroot=no +fi + + +lt_sysroot= +case $with_sysroot in #( + yes) + if test yes = "$GCC"; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 +$as_echo "$with_sysroot" >&6; } + as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 + ;; +esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 +$as_echo "${lt_sysroot:-no}" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 +$as_echo_n "checking for a working dd... " >&6; } +if ${ac_cv_path_lt_DD+:} false; then : + $as_echo_n "(cached) " >&6 +else + printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +: ${lt_DD:=$DD} +if test -z "$lt_DD"; then + ac_path_lt_DD_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in dd; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_lt_DD" || continue +if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: +fi + $ac_path_lt_DD_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_lt_DD"; then + : + fi +else + ac_cv_path_lt_DD=$lt_DD +fi + +rm -f conftest.i conftest2.i conftest.out +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 +$as_echo "$ac_cv_path_lt_DD" >&6; } + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 +$as_echo_n "checking how to truncate binary pipes... " >&6; } +if ${lt_cv_truncate_bin+:} false; then : + $as_echo_n "(cached) " >&6 +else + printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +lt_cv_truncate_bin= +if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" +fi +rm -f conftest.i conftest2.i conftest.out +test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 +$as_echo "$lt_cv_truncate_bin" >&6; } + + + + + + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + + +# Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then : + enableval=$enable_libtool_lock; +fi + +test no = "$enable_libtool_lock" || enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out what ABI is being produced by ac_compile, and set mode + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE=32 + ;; + *ELF-64*) + HPUX_IA64_MODE=64 + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + if test yes = "$lt_cv_prog_gnu_ld"; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +mips64*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + emul=elf + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + emul="${emul}32" + ;; + *64-bit*) + emul="${emul}64" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *MSB*) + emul="${emul}btsmip" + ;; + *LSB*) + emul="${emul}ltsmip" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *N32*) + emul="${emul}n32" + ;; + esac + LD="${LD-ld} -m $emul" + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. Note that the listed cases only cover the + # situations where additional linker options are needed (such as when + # doing 32-bit compilation for a host where ld defaults to 64-bit, or + # vice versa); the common cases where no linker options are needed do + # not appear in the list. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + case `/usr/bin/file conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac + ;; + powerpc64le-*linux*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + powerpcle-*linux*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -belf" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +$as_echo_n "checking whether the C compiler needs -belf... " >&6; } +if ${lt_cv_cc_needs_belf+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_cc_needs_belf=yes +else + lt_cv_cc_needs_belf=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +$as_echo "$lt_cv_cc_needs_belf" >&6; } + if test yes != "$lt_cv_cc_needs_belf"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS=$SAVE_CFLAGS + fi + ;; +*-*solaris*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*|x86_64-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD=${LD-ld}_sol2 + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks=$enable_libtool_lock + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. +set dummy ${ac_tool_prefix}mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$MANIFEST_TOOL"; then + ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL +if test -n "$MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 +$as_echo "$MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_MANIFEST_TOOL"; then + ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL + # Extract the first word of "mt", so it can be a program name with args. +set dummy mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_MANIFEST_TOOL"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL +if test -n "$ac_ct_MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 +$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_MANIFEST_TOOL" = x; then + MANIFEST_TOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL + fi +else + MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" +fi + +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 +$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } +if ${lt_cv_path_mainfest_tool+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&5 + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 +$as_echo "$lt_cv_path_mainfest_tool" >&6; } +if test yes != "$lt_cv_path_mainfest_tool"; then + MANIFEST_TOOL=: +fi + + + + + + + case $host_os in + rhapsody* | darwin*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. +set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DSYMUTIL"; then + ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DSYMUTIL=$ac_cv_prog_DSYMUTIL +if test -n "$DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +$as_echo "$DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DSYMUTIL"; then + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. +set dummy dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DSYMUTIL"; then + ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL +if test -n "$ac_ct_DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +$as_echo "$ac_ct_DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DSYMUTIL" = x; then + DSYMUTIL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DSYMUTIL=$ac_ct_DSYMUTIL + fi +else + DSYMUTIL="$ac_cv_prog_DSYMUTIL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. +set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NMEDIT"; then + ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +NMEDIT=$ac_cv_prog_NMEDIT +if test -n "$NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +$as_echo "$NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_NMEDIT"; then + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. +set dummy nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_NMEDIT"; then + ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_NMEDIT="nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT +if test -n "$ac_ct_NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +$as_echo "$ac_ct_NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_NMEDIT" = x; then + NMEDIT=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + NMEDIT=$ac_ct_NMEDIT + fi +else + NMEDIT="$ac_cv_prog_NMEDIT" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. +set dummy ${ac_tool_prefix}lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$LIPO"; then + ac_cv_prog_LIPO="$LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_LIPO="${ac_tool_prefix}lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +LIPO=$ac_cv_prog_LIPO +if test -n "$LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +$as_echo "$LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_LIPO"; then + ac_ct_LIPO=$LIPO + # Extract the first word of "lipo", so it can be a program name with args. +set dummy lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_LIPO"; then + ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_LIPO="lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO +if test -n "$ac_ct_LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +$as_echo "$ac_ct_LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_LIPO" = x; then + LIPO=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + LIPO=$ac_ct_LIPO + fi +else + LIPO="$ac_cv_prog_LIPO" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL"; then + ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL="${ac_tool_prefix}otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL=$ac_cv_prog_OTOOL +if test -n "$OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +$as_echo "$OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL"; then + ac_ct_OTOOL=$OTOOL + # Extract the first word of "otool", so it can be a program name with args. +set dummy otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL"; then + ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL="otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL +if test -n "$ac_ct_OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +$as_echo "$ac_ct_OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL" = x; then + OTOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL=$ac_ct_OTOOL + fi +else + OTOOL="$ac_cv_prog_OTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL64"; then + ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL64=$ac_cv_prog_OTOOL64 +if test -n "$OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +$as_echo "$OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL64"; then + ac_ct_OTOOL64=$OTOOL64 + # Extract the first word of "otool64", so it can be a program name with args. +set dummy otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL64"; then + ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL64="otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 +if test -n "$ac_ct_OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +$as_echo "$ac_ct_OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL64" = x; then + OTOOL64=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL64=$ac_ct_OTOOL64 + fi +else + OTOOL64="$ac_cv_prog_OTOOL64" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +$as_echo_n "checking for -single_module linker flag... " >&6; } +if ${lt_cv_apple_cc_single_mod+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_apple_cc_single_mod=no + if test -z "$LT_MULTI_MODULE"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&5 + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test 0 = "$_lt_result"; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&5 + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +$as_echo "$lt_cv_apple_cc_single_mod" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } +if ${lt_cv_ld_exported_symbols_list+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_ld_exported_symbols_list=yes +else + lt_cv_ld_exported_symbols_list=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 +$as_echo_n "checking for -force_load linker flag... " >&6; } +if ${lt_cv_ld_force_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 + echo "$AR cru libconftest.a conftest.o" >&5 + $AR cru libconftest.a conftest.o 2>&5 + echo "$RANLIB libconftest.a" >&5 + $RANLIB libconftest.a 2>&5 + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&5 + elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&5 + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 +$as_echo "$lt_cv_ld_force_load" >&6; } + case $host_os in + rhapsody* | darwin1.[012]) + _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[91]*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + 10.[012][,.]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test yes = "$lt_cv_apple_cc_single_mod"; then + _lt_dar_single_mod='$single_module' + fi + if test yes = "$lt_cv_ld_exported_symbols_list"; then + _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' + fi + if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + +for ac_header in dlfcn.h +do : + ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default +" +if test "x$ac_cv_header_dlfcn_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_DLFCN_H 1 +_ACEOF + +fi + +done + + + +func_stripname_cnf () +{ + case $2 in + .*) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%\\\\$2\$%%"`;; + *) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%$2\$%%"`;; + esac +} # func_stripname_cnf + + + + + +# Set options + + + + enable_dlopen=no + + + enable_win32_dll=no + + + # Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then : + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_shared=yes +fi + + + + + + + + + + # Check whether --enable-static was given. +if test "${enable_static+set}" = set; then : + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_static=yes +fi + + + + + + + + + + +# Check whether --with-pic was given. +if test "${with_pic+set}" = set; then : + withval=$with_pic; lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for lt_pkg in $withval; do + IFS=$lt_save_ifs + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + pic_mode=default +fi + + + + + + + + + # Check whether --enable-fast-install was given. +if test "${enable_fast_install+set}" = set; then : + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_fast_install=yes +fi + + + + + + + + + shared_archive_member_spec= +case $host,$enable_shared in +power*-*-aix[5-9]*,yes) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 +$as_echo_n "checking which variant of shared library versioning to provide... " >&6; } + +# Check whether --with-aix-soname was given. +if test "${with_aix_soname+set}" = set; then : + withval=$with_aix_soname; case $withval in + aix|svr4|both) + ;; + *) + as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 + ;; + esac + lt_cv_with_aix_soname=$with_aix_soname +else + if ${lt_cv_with_aix_soname+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_with_aix_soname=aix +fi + + with_aix_soname=$lt_cv_with_aix_soname +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 +$as_echo "$with_aix_soname" >&6; } + if test aix != "$with_aix_soname"; then + # For the AIX way of multilib, we name the shared archive member + # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', + # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. + # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, + # the AIX toolchain works better with OBJECT_MODE set (default 32). + if test 64 = "${OBJECT_MODE-32}"; then + shared_archive_member_spec=shr_64 + else + shared_archive_member_spec=shr + fi + fi + ;; +*) + with_aix_soname=aix + ;; +esac + + + + + + + + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS=$ltmain + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +test -z "$LN_S" && LN_S="ln -s" + + + + + + + + + + + + + + +if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +$as_echo_n "checking for objdir... " >&6; } +if ${lt_cv_objdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +$as_echo "$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir + + + + + +cat >>confdefs.h <<_ACEOF +#define LT_OBJDIR "$lt_cv_objdir/" +_ACEOF + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a '.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld=$lt_cv_prog_gnu_ld + +old_CC=$CC +old_CFLAGS=$CFLAGS + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +func_cc_basename $compiler +cc_basename=$func_cc_basename_result + + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/${ac_tool_prefix}file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac +fi + +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +$as_echo_n "checking for file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac +fi + +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +# Use C for the default configuration in the libtool script + +lt_save_CC=$CC +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + +lt_prog_compiler_no_builtin_flag= + +if test yes = "$GCC"; then + case $cc_basename in + nvcc*) + lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; + *) + lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + + + + + + + lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + + + if test yes = "$GCC"; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + lt_prog_compiler_pic='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + lt_prog_compiler_wl='-Xlinker ' + if test -n "$lt_prog_compiler_pic"; then + lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + case $cc_basename in + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='$wl-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + # old Intel for x86_64, which still supported -KPIC. + ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-qpic' + lt_prog_compiler_static='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + *Sun\ F* | *Sun*Fortran*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Wl,' + ;; + *Intel*\ [CF]*Compiler*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + *Portland\ Group*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic=$lt_prog_compiler_pic +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 +$as_echo "$lt_cv_prog_compiler_pic" >&6; } +lt_prog_compiler_pic=$lt_cv_prog_compiler_pic + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if ${lt_cv_prog_compiler_pic_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } + +if test yes = "$lt_cv_prog_compiler_pic_works"; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi + + + + + + + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works=yes + fi + else + lt_cv_prog_compiler_static_works=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +$as_echo "$lt_cv_prog_compiler_static_works" >&6; } + +if test yes = "$lt_cv_prog_compiler_static_works"; then + : +else + lt_prog_compiler_static= +fi + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + +hard_links=nottested +if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test no = "$hard_links"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag= + always_export_symbols=no + archive_cmds= + archive_expsym_cmds= + compiler_needs_object=no + enable_shared_with_static_runtimes=no + export_dynamic_flag_spec= + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + hardcode_automatic=no + hardcode_direct=no + hardcode_direct_absolute=no + hardcode_libdir_flag_spec= + hardcode_libdir_separator= + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + inherit_rpath=no + link_all_deplibs=unknown + module_cmds= + module_expsym_cmds= + old_archive_from_new_cmds= + old_archive_from_expsyms_cmds= + thread_safe_flag_spec= + whole_archive_flag_spec= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ' (' and ')$', so one must not match beginning or + # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', + # as well as any symbol that contains 'd'. + exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test yes != "$GCC"; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd* | bitrig*) + with_gnu_ld=no + ;; + linux* | k*bsd*-gnu | gnu*) + link_all_deplibs=no + ;; + esac + + ld_shlibs=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test yes = "$with_gnu_ld"; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; + *\ \(GNU\ Binutils\)\ [3-9]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test yes = "$lt_use_gnu_ld_interface"; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='$wl' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + export_dynamic_flag_spec='$wl--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test ia64 != "$host_cpu"; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + export_dynamic_flag_spec='$wl--export-all-symbols' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + haiku*) + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + link_all_deplibs=yes + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes + ;; + + interix[3-9]*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test linux-dietlibc = "$host_os"; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test no = "$tmp_diet" + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec= + tmp_sharedflag='--shared' ;; + nagfor*) # NAGFOR 5.3 + tmp_sharedflag='-Wl,-shared' ;; + xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + tcc*) + export_dynamic_flag_spec='-rdynamic' + ;; + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + ld_shlibs=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test no = "$ld_shlibs"; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix[4-9]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then + aix_use_runtimelinking=yes + break + fi + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_direct_absolute=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + file_list_spec='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # traditional, no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + hardcode_direct=no + hardcode_direct_absolute=no + ;; + esac + + if test yes = "$GCC"; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag="$shared_flag "'$wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + export_dynamic_flag_spec='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' $wl-bernotok' + allow_undefined_flag=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + fi + archive_cmds_need_lc=yes + archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + always_export_symbols=yes + file_list_spec='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, )='true' + enable_shared_with_static_runtimes=yes + exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + old_postinstall_cmds='chmod 644 $oldlib' + postlink_cmds='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' + enable_shared_with_static_runtimes=yes + ;; + esac + ;; + + darwin* | rhapsody*) + + + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + if test yes = "$lt_cv_ld_force_load"; then + whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + + else + whole_archive_flag_spec='' + fi + link_all_deplibs=yes + allow_undefined_flag=$_lt_dar_allow_undefined + case $cc_basename in + ifort*|nagfor*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test yes = "$_lt_dar_can_shared"; then + output_verbose_link_cmd=func_echo_all + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + + else + ld_shlibs=no + fi + + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test yes = "$GCC"; then + archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='$wl-E' + ;; + + hpux10*) + if test yes,no = "$GCC,$with_gnu_ld"; then + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='$wl-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test yes,no = "$GCC,$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 +$as_echo_n "checking if $CC understands -b... " >&6; } +if ${lt_cv_prog_compiler__b+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler__b=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -b" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler__b=yes + fi + else + lt_cv_prog_compiler__b=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 +$as_echo "$lt_cv_prog_compiler__b" >&6; } + +if test yes = "$lt_cv_prog_compiler__b"; then + archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +fi + + ;; + esac + fi + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='$wl-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test yes = "$GCC"; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 +$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } +if ${lt_cv_irix_exported_symbol+:} false; then : + $as_echo_n "(cached) " >&6 +else + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo (void) { return 0; } +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_irix_exported_symbol=yes +else + lt_cv_irix_exported_symbol=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 +$as_echo "$lt_cv_irix_exported_symbol" >&6; } + if test yes = "$lt_cv_irix_exported_symbol"; then + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' + fi + link_all_deplibs=no + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + inherit_rpath=yes + link_all_deplibs=yes + ;; + + linux*) + case $cc_basename in + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + ld_shlibs=yes + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + *nto* | *qnx*) + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + hardcode_shlibpath_var=no + hardcode_direct_absolute=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' + else + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + fi + else + ld_shlibs=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes + ;; + + osf3*) + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + archive_cmds_need_lc='no' + hardcode_libdir_separator=: + ;; + + solaris*) + no_undefined_flag=' -z defs' + if test yes = "$GCC"; then + wlarc='$wl' + archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='$wl' + archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. GCC discards it without '$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test yes = "$GCC"; then + whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + else + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test sequent = "$host_vendor"; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag='$wl-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='$wl-z,text' + allow_undefined_flag='$wl-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='$wl-R,$libdir' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + + if test sni = "$host_vendor"; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + export_dynamic_flag_spec='$wl-Blargedynsym' + ;; + esac + fi + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +$as_echo "$ld_shlibs" >&6; } +test no = "$ld_shlibs" && can_build_shared=no + +with_gnu_ld=$with_gnu_ld + + + + + + + + + + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test yes,yes = "$GCC,$enable_shared"; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +if ${lt_cv_archive_cmds_need_lc+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } + archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +if test yes = "$GCC"; then + case $host_os in + darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; + *) lt_awk_arg='/^libraries:/' ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; + *) lt_sed_strip_eq='s|=/|/|g' ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary... + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + # ...but if some path component already ends with the multilib dir we assume + # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). + case "$lt_multi_os_dir; $lt_search_path_spec " in + "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) + lt_multi_os_dir= + ;; + esac + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" + elif test -n "$lt_multi_os_dir"; then + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS = " "; FS = "/|\n";} { + lt_foo = ""; + lt_count = 0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo = "/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[lt_foo]++; } + if (lt_freq[lt_foo] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's|/\([A-Za-z]:\)|\1|g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=.so +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + + + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='$libname$release$shared_ext$major' + ;; + +aix[4-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test ia64 = "$host_cpu"; then + # AIX 5 supports IA64 + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a(lib.so.V)' + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='$libname$shared_ext' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec=$LIB + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[23].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 + fi + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test yes = "$lt_cv_prog_gnu_ld"; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + hardcode_libdir_flag_spec='-L$libdir' + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd* | bitrig*) + version_type=sunos + sys_lib_dlsearch_path_spec=/usr/lib + need_lib_prefix=no + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no + else + need_version=yes + fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +os2*) + libname_spec='$name' + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test yes = "$with_gnu_ld"; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec; then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=sco + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test yes = "$with_gnu_ld"; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test no = "$dynamic_linker" && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test yes = "$GCC"; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +fi + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +fi + +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || + test -n "$runpath_var" || + test yes = "$hardcode_automatic"; then + + # We can hardcode non-existent directories. + if test no != "$hardcode_direct" && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && + test no != "$hardcode_minus_L"; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +$as_echo "$hardcode_action" >&6; } + +if test relink = "$hardcode_action" || + test yes = "$inherit_rpath"; then + # Fast installation is not supported + enable_fast_install=no +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + if test yes != "$enable_dlopen"; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen=load_add_on + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen=LoadLibrary + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl +else + + lt_cv_dlopen=dyld + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + tpf*) + # Don't try to run any link tests for TPF. We know it's impossible + # because TPF is a cross-compiler, and we know how we open DSOs. + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + lt_cv_dlopen_self=no + ;; + + *) + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +if test "x$ac_cv_func_shl_load" = xyes; then : + lt_cv_dlopen=shl_load +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +$as_echo_n "checking for shl_load in -ldld... " >&6; } +if ${ac_cv_lib_dld_shl_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_shl_load=yes +else + ac_cv_lib_dld_shl_load=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +$as_echo "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes; then : + lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld +else + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = xyes; then : + lt_cv_dlopen=dlopen +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +$as_echo_n "checking for dlopen in -lsvld... " >&6; } +if ${ac_cv_lib_svld_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_svld_dlopen=yes +else + ac_cv_lib_svld_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +$as_echo "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = xyes; then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +$as_echo_n "checking for dld_link in -ldld... " >&6; } +if ${ac_cv_lib_dld_dld_link+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link (); +int +main () +{ +return dld_link (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_dld_link=yes +else + ac_cv_lib_dld_dld_link=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +$as_echo "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = xyes; then : + lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test no = "$lt_cv_dlopen"; then + enable_dlopen=no + else + enable_dlopen=yes + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS=$CPPFLAGS + test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS=$LDFLAGS + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS=$LIBS + LIBS="$lt_cv_dlopen_libs $LIBS" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +$as_echo_n "checking whether a program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test yes = "$cross_compiling"; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +$as_echo "$lt_cv_dlopen_self" >&6; } + + if test yes = "$lt_cv_dlopen_self"; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self_static+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test yes = "$cross_compiling"; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +$as_echo "$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS=$save_CPPFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + + + + + + + + + + + + + + + + +striplib= +old_striplib= +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +$as_echo_n "checking whether stripping libraries is possible... " >&6; } +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP"; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + ;; + esac +fi + + + + + + + + + + + + + # Report what library types will actually be built + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[4-9]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } + + + + +fi +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +CC=$lt_save_CC + + if test -n "$CXX" && ( test no != "$CXX" && + ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || + (test g++ != "$CXX"))); then + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 +$as_echo_n "checking how to run the C++ preprocessor... " >&6; } +if test -z "$CXXCPP"; then + if ${ac_cv_prog_CXXCPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 +$as_echo "$CXXCPP" >&6; } +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +else + _lt_caught_CXX_error=yes +fi + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +archive_cmds_need_lc_CXX=no +allow_undefined_flag_CXX= +always_export_symbols_CXX=no +archive_expsym_cmds_CXX= +compiler_needs_object_CXX=no +export_dynamic_flag_spec_CXX= +hardcode_direct_CXX=no +hardcode_direct_absolute_CXX=no +hardcode_libdir_flag_spec_CXX= +hardcode_libdir_separator_CXX= +hardcode_minus_L_CXX=no +hardcode_shlibpath_var_CXX=unsupported +hardcode_automatic_CXX=no +inherit_rpath_CXX=no +module_cmds_CXX= +module_expsym_cmds_CXX= +link_all_deplibs_CXX=unknown +old_archive_cmds_CXX=$old_archive_cmds +reload_flag_CXX=$reload_flag +reload_cmds_CXX=$reload_cmds +no_undefined_flag_CXX= +whole_archive_flag_spec_CXX= +enable_shared_with_static_runtimes_CXX=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +objext_CXX=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_caught_CXX_error"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + + # save warnings/boilerplate of simple test code + ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + + ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS + compiler=$CC + compiler_CXX=$CC + func_cc_basename $compiler +cc_basename=$func_cc_basename_result + + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test yes = "$GXX"; then + lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' + else + lt_prog_compiler_no_builtin_flag_CXX= + fi + + if test yes = "$GXX"; then + # Set up default GNU C++ configuration + + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return, which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD=$ac_prog + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test yes = "$with_gnu_ld"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD=$ac_dir/$ac_prog + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test yes = "$with_gnu_ld"; then + archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='$wl' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + whole_archive_flag_spec_CXX= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + ld_shlibs_CXX=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aix[4-9]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_CXX='' + hardcode_direct_CXX=yes + hardcode_direct_absolute_CXX=yes + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + file_list_spec_CXX='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + hardcode_direct_CXX=no + hardcode_direct_absolute_CXX=no + ;; + esac + + if test yes = "$GXX"; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct_CXX=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_CXX=yes + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_libdir_separator_CXX= + fi + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag=$shared_flag' $wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + export_dynamic_flag_spec_CXX='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + always_export_symbols_CXX=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + # The "-G" linker flag allows undefined symbols. + no_undefined_flag_CXX='-bernotok' + # Determine the default libpath from the value encoded in an empty + # executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath__CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath__CXX +fi + + hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" + + archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + hardcode_libdir_flag_spec_CXX='$wl-R $libdir:/usr/lib:/lib' + allow_undefined_flag_CXX="-z nodefs" + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath__CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath__CXX +fi + + hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_CXX=' $wl-bernotok' + allow_undefined_flag_CXX=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_CXX='$convenience' + fi + archive_cmds_need_lc_CXX=yes + archive_expsym_cmds_CXX='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared + # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. + archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_CXX=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + ld_shlibs_CXX=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_CXX=' ' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=yes + file_list_spec_CXX='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' + enable_shared_with_static_runtimes_CXX=yes + # Don't use ranlib + old_postinstall_cmds_CXX='chmod 644 $oldlib' + postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_CXX='-L$libdir' + export_dynamic_flag_spec_CXX='$wl--export-all-symbols' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=no + enable_shared_with_static_runtimes_CXX=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_CXX=no + fi + ;; + esac + ;; + darwin* | rhapsody*) + + + archive_cmds_need_lc_CXX=no + hardcode_direct_CXX=no + hardcode_automatic_CXX=yes + hardcode_shlibpath_var_CXX=unsupported + if test yes = "$lt_cv_ld_force_load"; then + whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + + else + whole_archive_flag_spec_CXX='' + fi + link_all_deplibs_CXX=yes + allow_undefined_flag_CXX=$_lt_dar_allow_undefined + case $cc_basename in + ifort*|nagfor*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test yes = "$_lt_dar_can_shared"; then + output_verbose_link_cmd=func_echo_all + archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + module_expsym_cmds_CXX="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + if test yes != "$lt_cv_apple_cc_single_mod"; then + archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" + archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" + fi + + else + ld_shlibs_CXX=no + fi + + ;; + + os2*) + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_minus_L_CXX=yes + allow_undefined_flag_CXX=unsupported + shrext_cmds=.dll + archive_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds_CXX='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes_CXX=yes + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + freebsd2.*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + ld_shlibs_CXX=no + ;; + + freebsd-elf*) + archive_cmds_need_lc_CXX=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + ld_shlibs_CXX=yes + ;; + + haiku*) + archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + link_all_deplibs_CXX=yes + ;; + + hpux9*) + hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='$wl-E' + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' + hardcode_libdir_separator_CXX=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + export_dynamic_flag_spec_CXX='$wl-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + ;; + *) + hardcode_direct_CXX=yes + hardcode_direct_absolute_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + interix[3-9]*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + export_dynamic_flag_spec_CXX='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_CXX='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' + fi + fi + link_all_deplibs_CXX=yes + ;; + esac + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + hardcode_libdir_separator_CXX=: + inherit_rpath_CXX=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [1-5].* | *pgcpp\ [1-5].*) + prelink_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + old_archive_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + archive_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 6 and above use weak symbols + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + + hardcode_libdir_flag_spec_CXX='$wl--rpath $wl$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + whole_archive_flag_spec_CXX='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + ;; + cxx*) + # Compaq C++ + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; + xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' + hardcode_libdir_flag_spec_CXX='-R$libdir' + whole_archive_flag_spec_CXX='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object_CXX=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + ld_shlibs_CXX=yes + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + hardcode_direct_absolute_CXX=yes + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' + export_dynamic_flag_spec_CXX='$wl-E' + whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + fi + output_verbose_link_cmd=func_echo_all + else + ld_shlibs_CXX=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + case $host in + osf3*) + allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' + archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + ;; + *) + allow_undefined_flag_CXX=' -expect_unresolved \*' + archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ + $RM $lib.exp' + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + ;; + esac + + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes,no = "$GXX,$with_gnu_ld"; then + allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' + case $host in + osf3*) + archive_cmds_CXX='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + *) + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + esac + + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + archive_cmds_need_lc_CXX=yes + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_shlibpath_var_CXX=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' + ;; + esac + link_all_deplibs_CXX=yes + + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test yes,no = "$GXX,$with_gnu_ld"; then + no_undefined_flag_CXX=' $wl-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' + else + # g++ 2.7 appears to require '-G' NOT '-shared' on this + # platform. + archive_cmds_CXX='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' + fi + + hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir' + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + whole_archive_flag_spec_CXX='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag_CXX='$wl-z,text' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag_CXX='$wl-z,text' + allow_undefined_flag_CXX='$wl-z,nodefs' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='$wl-R,$libdir' + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + export_dynamic_flag_spec_CXX='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ + '"$old_archive_cmds_CXX" + reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ + '"$reload_cmds_CXX" + ;; + *) + archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } + test no = "$ld_shlibs_CXX" && can_build_shared=no + + GCC_CXX=$GXX + LD_CXX=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + # Dependencies to place before and after the object being linked: +predep_objects_CXX= +postdep_objects_CXX= +predeps_CXX= +postdeps_CXX= +compiler_lib_search_path_CXX= + +cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF + + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; +esac + +if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case $prev$p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test x-L = "$p" || + test x-R = "$p"; then + prev=$p + continue + fi + + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac + if test no = "$pre_test_object_deps_done"; then + case $prev in + -L | -R) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$compiler_lib_search_path_CXX"; then + compiler_lib_search_path_CXX=$prev$p + else + compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} $prev$p" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$postdeps_CXX"; then + postdeps_CXX=$prev$p + else + postdeps_CXX="${postdeps_CXX} $prev$p" + fi + fi + prev= + ;; + + *.lto.$objext) ;; # Ignore GCC LTO objects + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test no = "$pre_test_object_deps_done"; then + if test -z "$predep_objects_CXX"; then + predep_objects_CXX=$p + else + predep_objects_CXX="$predep_objects_CXX $p" + fi + else + if test -z "$postdep_objects_CXX"; then + postdep_objects_CXX=$p + else + postdep_objects_CXX="$postdep_objects_CXX $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling CXX test program" +fi + +$RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS + +# PORTME: override above test on systems where it is broken +case $host_os in +interix[3-9]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + predep_objects_CXX= + postdep_objects_CXX= + postdeps_CXX= + ;; +esac + + +case " $postdeps_CXX " in +*" -lc "*) archive_cmds_need_lc_CXX=no ;; +esac + compiler_lib_search_dirs_CXX= +if test -n "${compiler_lib_search_path_CXX}"; then + compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | $SED -e 's! -L! !g' -e 's!^ !!'` +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + lt_prog_compiler_wl_CXX= +lt_prog_compiler_pic_CXX= +lt_prog_compiler_static_CXX= + + + # C++ specific cases for pic, static, wl, etc. + if test yes = "$GXX"; then + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + fi + lt_prog_compiler_pic_CXX='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic_CXX='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static_CXX='$wl-static' + ;; + esac + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_CXX='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + lt_prog_compiler_pic_CXX= + ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static_CXX= + ;; + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_CXX=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic_CXX='-fPIC -shared' + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + else + case $host_os in + aix[4-9]*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + else + lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; + dgux*) + case $cc_basename in + ec++*) + lt_prog_compiler_pic_CXX='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='$wl-a ${wl}archive' + if test ia64 != "$host_cpu"; then + lt_prog_compiler_pic_CXX='+Z' + fi + ;; + aCC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='$wl-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_CXX='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # KAI C++ Compiler + lt_prog_compiler_wl_CXX='--backend -Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64, which still supported -KPIC. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + lt_prog_compiler_static_CXX='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fpic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-qpic' + lt_prog_compiler_static_CXX='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + lt_prog_compiler_pic_CXX='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic_CXX='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + lt_prog_compiler_wl_CXX='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + lt_prog_compiler_pic_CXX='-pic' + ;; + cxx*) + # Digital/Compaq C++ + lt_prog_compiler_wl_CXX='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + lt_prog_compiler_pic_CXX='-pic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + lcc*) + # Lucid + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + lt_prog_compiler_pic_CXX='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + lt_prog_compiler_can_build_shared_CXX=no + ;; + esac + fi + +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_CXX= + ;; + *) + lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } +lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } +if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works_CXX=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works_CXX=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } + +if test yes = "$lt_cv_prog_compiler_pic_works_CXX"; then + case $lt_prog_compiler_pic_CXX in + "" | " "*) ;; + *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; + esac +else + lt_prog_compiler_pic_CXX= + lt_prog_compiler_can_build_shared_CXX=no +fi + +fi + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works_CXX=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works_CXX=yes + fi + else + lt_cv_prog_compiler_static_works_CXX=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } + +if test yes = "$lt_cv_prog_compiler_static_works_CXX"; then + : +else + lt_prog_compiler_static_CXX= +fi + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } + + + + +hard_links=nottested +if test no = "$lt_cv_prog_compiler_c_o_CXX" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test no = "$hard_links"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + case $host_os in + aix[4-9]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_CXX='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + export_symbols_cmds_CXX=$ltdll_cmds + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in + cl*) + exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + ;; + esac + ;; + linux* | k*bsd*-gnu | gnu*) + link_all_deplibs_CXX=no + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } +test no = "$ld_shlibs_CXX" && can_build_shared=no + +with_gnu_ld_CXX=$with_gnu_ld + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_CXX" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_CXX=yes + + if test yes,yes = "$GCC,$enable_shared"; then + case $archive_cmds_CXX in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_CXX + pic_flag=$lt_prog_compiler_pic_CXX + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_CXX + allow_undefined_flag_CXX= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc_CXX=no + else + lt_cv_archive_cmds_need_lc_CXX=yes + fi + allow_undefined_flag_CXX=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } + archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=.so +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + + + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='$libname$release$shared_ext$major' + ;; + +aix[4-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test ia64 = "$host_cpu"; then + # AIX 5 supports IA64 + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a(lib.so.V)' + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='$libname$shared_ext' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec=$LIB + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[23].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 + fi + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test yes = "$lt_cv_prog_gnu_ld"; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + hardcode_libdir_flag_spec_CXX='-L$libdir' + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd* | bitrig*) + version_type=sunos + sys_lib_dlsearch_path_spec=/usr/lib + need_lib_prefix=no + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no + else + need_version=yes + fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +os2*) + libname_spec='$name' + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test yes = "$with_gnu_ld"; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec; then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=sco + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test yes = "$with_gnu_ld"; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test no = "$dynamic_linker" && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test yes = "$GCC"; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +fi + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +fi + +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action_CXX= +if test -n "$hardcode_libdir_flag_spec_CXX" || + test -n "$runpath_var_CXX" || + test yes = "$hardcode_automatic_CXX"; then + + # We can hardcode non-existent directories. + if test no != "$hardcode_direct_CXX" && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" && + test no != "$hardcode_minus_L_CXX"; then + # Linking always hardcodes the temporary library directory. + hardcode_action_CXX=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_CXX=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_CXX=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 +$as_echo "$hardcode_action_CXX" >&6; } + +if test relink = "$hardcode_action_CXX" || + test yes = "$inherit_rpath_CXX"; then + # Fast installation is not supported + enable_fast_install=no +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + + fi # test -n "$compiler" + + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test yes != "$_lt_caught_CXX_error" + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + + + + + + + + + + + + + + ac_config_commands="$ac_config_commands libtool" + + + + +# Only expand once: + + + +# Checks for header files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_cxx_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +for ac_header in fcntl.h inttypes.h limits.h stdlib.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_cxx_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +# Checks for library functions. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working memcmp" >&5 +$as_echo_n "checking for working memcmp... " >&6; } +if ${ac_cv_func_memcmp_working+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_memcmp_working=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ + + /* Some versions of memcmp are not 8-bit clean. */ + char c0 = '\100', c1 = '\200', c2 = '\201'; + if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0) + return 1; + + /* The Next x86 OpenStep bug shows up only when comparing 16 bytes + or more and with at least one buffer not starting on a 4-byte boundary. + William Lewis provided this test program. */ + { + char foo[21]; + char bar[21]; + int i; + for (i = 0; i < 4; i++) + { + char *a = foo + i; + char *b = bar + i; + strcpy (a, "--------01111111"); + strcpy (b, "--------10000000"); + if (memcmp (a, b, 16) >= 0) + return 1; + } + return 0; + } + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_run "$LINENO"; then : + ac_cv_func_memcmp_working=yes +else + ac_cv_func_memcmp_working=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_memcmp_working" >&5 +$as_echo "$ac_cv_func_memcmp_working" >&6; } +test $ac_cv_func_memcmp_working = no && case " $LIBOBJS " in + *" memcmp.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS memcmp.$ac_objext" + ;; +esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working strtod" >&5 +$as_echo_n "checking for working strtod... " >&6; } +if ${ac_cv_func_strtod+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_strtod=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +$ac_includes_default +#ifndef strtod +double strtod (); +#endif +int +main() +{ + { + /* Some versions of Linux strtod mis-parse strings with leading '+'. */ + char *string = " +69"; + char *term; + double value; + value = strtod (string, &term); + if (value != 69 || term != (string + 4)) + return 1; + } + + { + /* Under Solaris 2.4, strtod returns the wrong value for the + terminating character under some conditions. */ + char *string = "NaN"; + char *term; + strtod (string, &term); + if (term != string && *(term - 1) == 0) + return 1; + } + return 0; +} + +_ACEOF +if ac_fn_cxx_try_run "$LINENO"; then : + ac_cv_func_strtod=yes +else + ac_cv_func_strtod=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strtod" >&5 +$as_echo "$ac_cv_func_strtod" >&6; } +if test $ac_cv_func_strtod = no; then + case " $LIBOBJS " in + *" strtod.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strtod.$ac_objext" + ;; +esac + +ac_fn_cxx_check_func "$LINENO" "pow" "ac_cv_func_pow" +if test "x$ac_cv_func_pow" = xyes; then : + +fi + +if test $ac_cv_func_pow = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pow in -lm" >&5 +$as_echo_n "checking for pow in -lm... " >&6; } +if ${ac_cv_lib_m_pow+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lm $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char pow (); +int +main () +{ +return pow (); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + ac_cv_lib_m_pow=yes +else + ac_cv_lib_m_pow=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_pow" >&5 +$as_echo "$ac_cv_lib_m_pow" >&6; } +if test "x$ac_cv_lib_m_pow" = xyes; then : + POW_LIB=-lm +else + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot find library containing definition of pow" >&5 +$as_echo "$as_me: WARNING: cannot find library containing definition of pow" >&2;} +fi + +fi + +fi + +for ac_func in ftruncate memset mkdir strchr strerror strtol +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_cxx_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +# Check for zlib. +HAVE_ZLIB=0 +if test "$with_zlib" != no; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking zlib version" >&5 +$as_echo_n "checking zlib version... " >&6; } + + # First check the zlib header version. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #if !defined(ZLIB_VERNUM) || (ZLIB_VERNUM < 0x1204) + # error zlib version too old + #endif + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (1.2.0.4 or later)" >&5 +$as_echo "ok (1.2.0.4 or later)" >&6; } + + # Also need to add -lz to the linker flags and make sure this succeeds. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing zlibVersion" >&5 +$as_echo_n "checking for library containing zlibVersion... " >&6; } +if ${ac_cv_search_zlibVersion+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char zlibVersion (); +int +main () +{ +return zlibVersion (); + ; + return 0; +} +_ACEOF +for ac_lib in '' z; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_cxx_try_link "$LINENO"; then : + ac_cv_search_zlibVersion=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_zlibVersion+:} false; then : + break +fi +done +if ${ac_cv_search_zlibVersion+:} false; then : + +else + ac_cv_search_zlibVersion=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_zlibVersion" >&5 +$as_echo "$ac_cv_search_zlibVersion" >&6; } +ac_res=$ac_cv_search_zlibVersion +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + + +$as_echo "#define HAVE_ZLIB 1" >>confdefs.h + + HAVE_ZLIB=1 + +else + + if test "$with_zlib" != check; then : + + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "--with-zlib was given, but no working zlib library was found +See \`config.log' for more details" "$LINENO" 5; } + +fi + +fi + + +else + + if test "$with_zlib" = check; then : + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: headers missing or too old (requires 1.2.0.4)" >&5 +$as_echo "headers missing or too old (requires 1.2.0.4)" >&6; } + +else + + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "--with-zlib was given, but zlib headers were not present or were too old (requires 1.2.0.4) +See \`config.log' for more details" "$LINENO" 5; } + +fi + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi + if test $HAVE_ZLIB = 1; then + HAVE_ZLIB_TRUE= + HAVE_ZLIB_FALSE='#' +else + HAVE_ZLIB_TRUE='#' + HAVE_ZLIB_FALSE= +fi + + +if test "$with_protoc" != "no"; then : + + PROTOC=$with_protoc + if test "$with_protoc" = "yes"; then : + + # No argument given. Use system protoc. + PROTOC=protoc + +fi + if echo "$PROTOC" | grep -q '^[^/].*/'; then : + + # Does not start with a slash, but contains a slash. So, it's a relative + # path (as opposed to an absolute path or an executable in $PATH). + # Since it will actually be executed from the src directory, prefix with + # the current directory. We also insert $ac_top_build_prefix in case this + # is a nested package and --with-protoc was actually given on the outer + # package's configure script. + PROTOC=`pwd`/${ac_top_build_prefix}$PROTOC + +fi + + +fi + if test "$with_protoc" != "no"; then + USE_EXTERNAL_PROTOC_TRUE= + USE_EXTERNAL_PROTOC_FALSE='#' +else + USE_EXTERNAL_PROTOC_TRUE='#' + USE_EXTERNAL_PROTOC_FALSE= +fi + + + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +acx_pthread_ok=no + +# We used to check for pthread.h first, but this fails if pthread.h +# requires special compiler flags (e.g. on True64 or Sequent). +# It gets checked for in the link test anyway. + +# First of all, check if the user has set any of the PTHREAD_LIBS, +# etcetera environment variables, and if threads linking works using +# them: +if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + save_LIBS="$LIBS" + LIBS="$PTHREAD_LIBS $LIBS" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5 +$as_echo_n "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char pthread_join (); +int +main () +{ +return pthread_join (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + acx_pthread_ok=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_ok" >&5 +$as_echo "$acx_pthread_ok" >&6; } + if test x"$acx_pthread_ok" = xno; then + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" + fi + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" +fi + +# We must check for the threads library under a number of different +# names; the ordering is very important because some systems +# (e.g. DEC) have both -lpthread and -lpthreads, where one of the +# libraries is broken (non-POSIX). + +# Create a list of thread flags to try. Items starting with a "-" are +# C compiler flags, and other items are library names, except for "none" +# which indicates that we try without any flags at all, and "pthread-config" +# which is a program returning the flags for the Pth emulation library. + +acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" + +# The ordering *is* (sometimes) important. Some notes on the +# individual items follow: + +# pthreads: AIX (must check this before -lpthread) +# none: in case threads are in libc; should be tried before -Kthread and +# other compiler flags to prevent continual compiler warnings +# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) +# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) +# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) +# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) +# -pthreads: Solaris/gcc +# -mthreads: Mingw32/gcc, Lynx/gcc +# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it +# doesn't hurt to check since this sometimes defines pthreads too; +# also defines -D_REENTRANT) +# ... -mt is also the pthreads flag for HP/aCC +# pthread: Linux, etcetera +# --thread-safe: KAI C++ +# pthread-config: use pthread-config program (for GNU Pth library) + +case "${host_cpu}-${host_os}" in + *solaris*) + + # On Solaris (at least, for some versions), libc contains stubbed + # (non-functional) versions of the pthreads routines, so link-based + # tests will erroneously succeed. (We need to link with -pthreads/-mt/ + # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather + # a function called by this macro, so we could check for that, but + # who knows whether they'll stub that too in a future libc.) So, + # we'll just look for -pthreads and -lpthread first: + + acx_pthread_flags="-pthreads pthread -mt -pthread $acx_pthread_flags" + ;; +esac + +if test x"$acx_pthread_ok" = xno; then +for flag in $acx_pthread_flags; do + + case $flag in + none) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5 +$as_echo_n "checking whether pthreads work without any flags... " >&6; } + ;; + + -*) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $flag" >&5 +$as_echo_n "checking whether pthreads work with $flag... " >&6; } + PTHREAD_CFLAGS="$flag" + ;; + + pthread-config) + # Extract the first word of "pthread-config", so it can be a program name with args. +set dummy pthread-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_acx_pthread_config+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$acx_pthread_config"; then + ac_cv_prog_acx_pthread_config="$acx_pthread_config" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_acx_pthread_config="yes" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_acx_pthread_config" && ac_cv_prog_acx_pthread_config="no" +fi +fi +acx_pthread_config=$ac_cv_prog_acx_pthread_config +if test -n "$acx_pthread_config"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_config" >&5 +$as_echo "$acx_pthread_config" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test x"$acx_pthread_config" = xno; then continue; fi + PTHREAD_CFLAGS="`pthread-config --cflags`" + PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" + ;; + + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$flag" >&5 +$as_echo_n "checking for the pthreads library -l$flag... " >&6; } + PTHREAD_LIBS="-l$flag" + ;; + esac + + save_LIBS="$LIBS" + save_CFLAGS="$CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + + # Check for various functions. We must include pthread.h, + # since some functions may be macros. (On the Sequent, we + # need a special flag -Kthread to make this header compile.) + # We check for pthread_join because it is in -lpthread on IRIX + # while pthread_create is in libc. We check for pthread_attr_init + # due to DEC craziness with -lpthreads. We check for + # pthread_cleanup_push because it is one of the few pthread + # functions on Solaris that doesn't have a non-functional libc stub. + # We try pthread_create on general principles. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +pthread_t th; pthread_join(th, 0); + pthread_attr_init(0); pthread_cleanup_push(0, 0); + pthread_create(0,0,0,0); pthread_cleanup_pop(0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + acx_pthread_ok=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_ok" >&5 +$as_echo "$acx_pthread_ok" >&6; } + if test "x$acx_pthread_ok" = xyes; then + break; + fi + + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" +done +fi + +# Various other checks: +if test "x$acx_pthread_ok" = xyes; then + save_LIBS="$LIBS" + LIBS="$PTHREAD_LIBS $LIBS" + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + + # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5 +$as_echo_n "checking for joinable pthread attribute... " >&6; } + attr_name=unknown + for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +int attr=$attr; return attr; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + attr_name=$attr; break +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + done + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $attr_name" >&5 +$as_echo "$attr_name" >&6; } + if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then + +cat >>confdefs.h <<_ACEOF +#define PTHREAD_CREATE_JOINABLE $attr_name +_ACEOF + + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if more special flags are required for pthreads" >&5 +$as_echo_n "checking if more special flags are required for pthreads... " >&6; } + flag=no + case "${host_cpu}-${host_os}" in + *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";; + *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${flag}" >&5 +$as_echo "${flag}" >&6; } + if test "x$flag" != xno; then + PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" + fi + + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + # More AIX lossage: must compile with xlc_r or cc_r + if test x"$GCC" != xyes; then + for ac_prog in xlc_r cc_r +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_PTHREAD_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$PTHREAD_CC"; then + ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_PTHREAD_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +PTHREAD_CC=$ac_cv_prog_PTHREAD_CC +if test -n "$PTHREAD_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5 +$as_echo "$PTHREAD_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$PTHREAD_CC" && break +done +test -n "$PTHREAD_CC" || PTHREAD_CC="${CC}" + + else + PTHREAD_CC=$CC + fi + + # The next part tries to detect GCC inconsistency with -shared on some + # architectures and systems. The problem is that in certain + # configurations, when -shared is specified, GCC "forgets" to + # internally use various flags which are still necessary. + + # + # Prepare the flags + # + save_CFLAGS="$CFLAGS" + save_LIBS="$LIBS" + save_CC="$CC" + + # Try with the flags determined by the earlier checks. + # + # -Wl,-z,defs forces link-time symbol resolution, so that the + # linking checks with -shared actually have any value + # + # FIXME: -fPIC is required for -shared on many architectures, + # so we specify it here, but the right way would probably be to + # properly detect whether it is actually required. + CFLAGS="-shared -fPIC -Wl,-z,defs $CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + CC="$PTHREAD_CC" + + # In order not to create several levels of indentation, we test + # the value of "$done" until we find the cure or run out of ideas. + done="no" + + # First, make sure the CFLAGS we added are actually accepted by our + # compiler. If not (and OS X's ld, for instance, does not accept -z), + # then we can't do this test. + if test x"$done" = xno; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to check for GCC pthread/shared inconsistencies" >&5 +$as_echo_n "checking whether to check for GCC pthread/shared inconsistencies... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + +else + done=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + if test "x$done" = xyes ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + fi + fi + + if test x"$done" = xno; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -pthread is sufficient with -shared" >&5 +$as_echo_n "checking whether -pthread is sufficient with -shared... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +pthread_t th; pthread_join(th, 0); + pthread_attr_init(0); pthread_cleanup_push(0, 0); + pthread_create(0,0,0,0); pthread_cleanup_pop(0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + done=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + if test "x$done" = xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + fi + + # + # Linux gcc on some architectures such as mips/mipsel forgets + # about -lpthread + # + if test x"$done" = xno; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lpthread fixes that" >&5 +$as_echo_n "checking whether -lpthread fixes that... " >&6; } + LIBS="-lpthread $PTHREAD_LIBS $save_LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +pthread_t th; pthread_join(th, 0); + pthread_attr_init(0); pthread_cleanup_push(0, 0); + pthread_create(0,0,0,0); pthread_cleanup_pop(0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + done=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + if test "x$done" = xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + PTHREAD_LIBS="-lpthread $PTHREAD_LIBS" + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + fi + # + # FreeBSD 4.10 gcc forgets to use -lc_r instead of -lc + # + if test x"$done" = xno; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc_r fixes that" >&5 +$as_echo_n "checking whether -lc_r fixes that... " >&6; } + LIBS="-lc_r $PTHREAD_LIBS $save_LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +pthread_t th; pthread_join(th, 0); + pthread_attr_init(0); pthread_cleanup_push(0, 0); + pthread_create(0,0,0,0); pthread_cleanup_pop(0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + done=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + if test "x$done" = xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + PTHREAD_LIBS="-lc_r $PTHREAD_LIBS" + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + fi + if test x"$done" = xno; then + # OK, we have run out of ideas + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Impossible to determine how to use pthreads with shared libraries" >&5 +$as_echo "$as_me: WARNING: Impossible to determine how to use pthreads with shared libraries" >&2;} + + # so it's not safe to assume that we may use pthreads + acx_pthread_ok=no + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether what we have so far is sufficient with -nostdlib" >&5 +$as_echo_n "checking whether what we have so far is sufficient with -nostdlib... " >&6; } + CFLAGS="-nostdlib $CFLAGS" + # we need c with nostdlib + LIBS="$LIBS -lc" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +pthread_t th; pthread_join(th, 0); + pthread_attr_init(0); pthread_cleanup_push(0, 0); + pthread_create(0,0,0,0); pthread_cleanup_pop(0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + done=yes +else + done=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + if test "x$done" = xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + + if test x"$done" = xno; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lpthread saves the day" >&5 +$as_echo_n "checking whether -lpthread saves the day... " >&6; } + LIBS="-lpthread $LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +pthread_t th; pthread_join(th, 0); + pthread_attr_init(0); pthread_cleanup_push(0, 0); + pthread_create(0,0,0,0); pthread_cleanup_pop(0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + done=yes +else + done=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + if test "x$done" = xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + PTHREAD_LIBS="$PTHREAD_LIBS -lpthread" + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Impossible to determine how to use pthreads with shared libraries and -nostdlib" >&5 +$as_echo "$as_me: WARNING: Impossible to determine how to use pthreads with shared libraries and -nostdlib" >&2;} + fi + fi + + CFLAGS="$save_CFLAGS" + LIBS="$save_LIBS" + CC="$save_CC" +else + PTHREAD_CC="$CC" +fi + + + + + +# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: +if test x"$acx_pthread_ok" = xyes; then + +$as_echo "#define HAVE_PTHREAD 1" >>confdefs.h + + : +else + acx_pthread_ok=no + +fi +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking the location of hash_map" >&5 +$as_echo_n "checking the location of hash_map... " >&6; } + + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + ac_cv_cxx_hash_map="" + # First try unordered_map, but not on gcc's before 4.2 -- I've + # seen unexplainable unordered_map bugs with -O2 on older gcc's. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined(__GNUC__) && (__GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 2)) + # error GCC too old for unordered_map + #endif + +int +main () +{ +/* no program body necessary */ + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + stl_hash_old_gcc=no +else + stl_hash_old_gcc=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + for location in unordered_map tr1/unordered_map; do + for namespace in std std::tr1; do + if test -z "$ac_cv_cxx_hash_map" -a "$stl_hash_old_gcc" != yes; then + # Some older gcc's have a buggy tr1, so test a bit of code. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$location> +int +main () +{ +const ${namespace}::unordered_map t; + return t.find(5) == t.end(); + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_cxx_hash_map="<$location>"; + ac_cv_cxx_hash_namespace="$namespace"; + ac_cv_cxx_hash_map_class="unordered_map"; +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + done + done + # Now try hash_map + for location in ext/hash_map hash_map; do + for namespace in __gnu_cxx "" std stdext; do + if test -z "$ac_cv_cxx_hash_map"; then + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$location> +int +main () +{ +${namespace}::hash_map t + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_cxx_hash_map="<$location>"; + ac_cv_cxx_hash_namespace="$namespace"; + ac_cv_cxx_hash_map_class="hash_map"; +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi + done + done + ac_cv_cxx_hash_set=`echo "$ac_cv_cxx_hash_map" | sed s/map/set/`; + ac_cv_cxx_hash_set_class=`echo "$ac_cv_cxx_hash_map_class" | sed s/map/set/`; + if test -n "$ac_cv_cxx_hash_map"; then + +$as_echo "#define HAVE_HASH_MAP 1" >>confdefs.h + + +$as_echo "#define HAVE_HASH_SET 1" >>confdefs.h + + +cat >>confdefs.h <<_ACEOF +#define HASH_MAP_H $ac_cv_cxx_hash_map +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define HASH_SET_H $ac_cv_cxx_hash_set +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define HASH_NAMESPACE $ac_cv_cxx_hash_namespace +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define HASH_MAP_CLASS $ac_cv_cxx_hash_map_class +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define HASH_SET_CLASS $ac_cv_cxx_hash_set_class +_ACEOF + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_hash_map" >&5 +$as_echo "$ac_cv_cxx_hash_map" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: " >&5 +$as_echo "" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: could not find an STL hash_map" >&5 +$as_echo "$as_me: WARNING: could not find an STL hash_map" >&2;} + fi + + +case "$target_os" in + mingw* | cygwin* | win*) + ;; + *) + # Need to link against rt on Solaris + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing sched_yield" >&5 +$as_echo_n "checking for library containing sched_yield... " >&6; } +if ${ac_cv_search_sched_yield+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char sched_yield (); +int +main () +{ +return sched_yield (); + ; + return 0; +} +_ACEOF +for ac_lib in '' rt; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_cxx_try_link "$LINENO"; then : + ac_cv_search_sched_yield=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_sched_yield+:} false; then : + break +fi +done +if ${ac_cv_search_sched_yield+:} false; then : + +else + ac_cv_search_sched_yield=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_sched_yield" >&5 +$as_echo "$ac_cv_search_sched_yield" >&6; } +ac_res=$ac_cv_search_sched_yield +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "sched_yield was not found on your system +See \`config.log' for more details" "$LINENO" 5; } +fi + + ;; +esac + +# HACK: Make gtest's configure script pick up our copy of CFLAGS and CXXFLAGS, +# since the flags added by ACX_CHECK_SUNCC must be used when compiling gtest +# too. +export CFLAGS +export CXXFLAGS + + +subdirs="$subdirs gtest" + + +ac_config_files="$ac_config_files Makefile src/Makefile protobuf.pc protobuf-lite.pc" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then + as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +$as_echo_n "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 +$as_echo "done" >&6; } + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${GCC_TRUE}" && test -z "${GCC_FALSE}"; then + as_fn_error $? "conditional \"GCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_ZLIB_TRUE}" && test -z "${HAVE_ZLIB_FALSE}"; then + as_fn_error $? "conditional \"HAVE_ZLIB\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${USE_EXTERNAL_PROTOC_TRUE}" && test -z "${USE_EXTERNAL_PROTOC_FALSE}"; then + as_fn_error $? "conditional \"USE_EXTERNAL_PROTOC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by Protocol Buffers $as_me 2.6.1, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +Protocol Buffers config.status 2.6.1 +configured by $0, generated by GNU Autoconf 2.69, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" + + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' +macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' +enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' +enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' +pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' +enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' +shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' +SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' +ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' +PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' +host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' +host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' +host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' +build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' +build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' +build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' +SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' +Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' +GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' +EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' +FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' +LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' +NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' +LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' +max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' +ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' +exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' +lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' +lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' +lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' +lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' +lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' +reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' +reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' +deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' +file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' +file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' +want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' +DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' +sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' +AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' +AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' +archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' +STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' +RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' +old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' +old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' +lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' +CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' +CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' +compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' +GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' +lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' +nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' +lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' +lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' +objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' +MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' +need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' +MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' +DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' +NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' +LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' +OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' +OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' +libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' +shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' +extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' +compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' +module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' +with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' +no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' +hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' +hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' +inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' +link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' +always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' +exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' +include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' +prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' +postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' +file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' +variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' +need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' +need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' +version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' +runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' +libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' +library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' +soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' +install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' +postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' +postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' +finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' +hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' +sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' +configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' +configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' +hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' +enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' +old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' +striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' +predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' +postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' +predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' +postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' +LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' +reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' +reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' +compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' +GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' +archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' +module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' +with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' +no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' +inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' +link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' +always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' +exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' +include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' +prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' +postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' +file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' +predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' +postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' +predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' +postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' + +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in SHELL \ +ECHO \ +PATH_SEPARATOR \ +SED \ +GREP \ +EGREP \ +FGREP \ +LD \ +NM \ +LN_S \ +lt_SP2NL \ +lt_NL2SP \ +reload_flag \ +OBJDUMP \ +deplibs_check_method \ +file_magic_cmd \ +file_magic_glob \ +want_nocaseglob \ +DLLTOOL \ +sharedlib_from_linklib_cmd \ +AR \ +AR_FLAGS \ +archiver_list_spec \ +STRIP \ +RANLIB \ +CC \ +CFLAGS \ +compiler \ +lt_cv_sys_global_symbol_pipe \ +lt_cv_sys_global_symbol_to_cdecl \ +lt_cv_sys_global_symbol_to_import \ +lt_cv_sys_global_symbol_to_c_name_address \ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ +lt_cv_nm_interface \ +nm_file_list_spec \ +lt_cv_truncate_bin \ +lt_prog_compiler_no_builtin_flag \ +lt_prog_compiler_pic \ +lt_prog_compiler_wl \ +lt_prog_compiler_static \ +lt_cv_prog_compiler_c_o \ +need_locks \ +MANIFEST_TOOL \ +DSYMUTIL \ +NMEDIT \ +LIPO \ +OTOOL \ +OTOOL64 \ +shrext_cmds \ +export_dynamic_flag_spec \ +whole_archive_flag_spec \ +compiler_needs_object \ +with_gnu_ld \ +allow_undefined_flag \ +no_undefined_flag \ +hardcode_libdir_flag_spec \ +hardcode_libdir_separator \ +exclude_expsyms \ +include_expsyms \ +file_list_spec \ +variables_saved_for_relink \ +libname_spec \ +library_names_spec \ +soname_spec \ +install_override_mode \ +finish_eval \ +old_striplib \ +striplib \ +compiler_lib_search_dirs \ +predep_objects \ +postdep_objects \ +predeps \ +postdeps \ +compiler_lib_search_path \ +LD_CXX \ +reload_flag_CXX \ +compiler_CXX \ +lt_prog_compiler_no_builtin_flag_CXX \ +lt_prog_compiler_pic_CXX \ +lt_prog_compiler_wl_CXX \ +lt_prog_compiler_static_CXX \ +lt_cv_prog_compiler_c_o_CXX \ +export_dynamic_flag_spec_CXX \ +whole_archive_flag_spec_CXX \ +compiler_needs_object_CXX \ +with_gnu_ld_CXX \ +allow_undefined_flag_CXX \ +no_undefined_flag_CXX \ +hardcode_libdir_flag_spec_CXX \ +hardcode_libdir_separator_CXX \ +exclude_expsyms_CXX \ +include_expsyms_CXX \ +file_list_spec_CXX \ +compiler_lib_search_dirs_CXX \ +predep_objects_CXX \ +postdep_objects_CXX \ +predeps_CXX \ +postdeps_CXX \ +compiler_lib_search_path_CXX; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds \ +old_postinstall_cmds \ +old_postuninstall_cmds \ +old_archive_cmds \ +extract_expsyms_cmds \ +old_archive_from_new_cmds \ +old_archive_from_expsyms_cmds \ +archive_cmds \ +archive_expsym_cmds \ +module_cmds \ +module_expsym_cmds \ +export_symbols_cmds \ +prelink_cmds \ +postlink_cmds \ +postinstall_cmds \ +postuninstall_cmds \ +finish_cmds \ +sys_lib_search_path_spec \ +configure_time_dlsearch_path \ +configure_time_lt_sys_library_path \ +reload_cmds_CXX \ +old_archive_cmds_CXX \ +old_archive_from_new_cmds_CXX \ +old_archive_from_expsyms_cmds_CXX \ +archive_cmds_CXX \ +archive_expsym_cmds_CXX \ +module_cmds_CXX \ +module_expsym_cmds_CXX \ +export_symbols_cmds_CXX \ +prelink_cmds_CXX \ +postlink_cmds_CXX; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +ac_aux_dir='$ac_aux_dir' + +# See if we are running on zsh, and set the options that allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='$PACKAGE' + VERSION='$VERSION' + RM='$RM' + ofile='$ofile' + + + + + + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; + "protobuf.pc") CONFIG_FILES="$CONFIG_FILES protobuf.pc" ;; + "protobuf-lite.pc") CONFIG_FILES="$CONFIG_FILES protobuf-lite.pc" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + case $CONFIG_FILES in #( + *\'*) : + eval set x "$CONFIG_FILES" ;; #( + *) : + set x $CONFIG_FILES ;; #( + *) : + ;; +esac + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`$as_dirname -- "$am_mf" || +$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$am_mf" : 'X\(//\)[^/]' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$am_mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + am_filepart=`$as_basename -- "$am_mf" || +$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$am_mf" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { echo "$as_me:$LINENO: cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles" >&5 + (cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } || am_rc=$? + done + if test $am_rc -ne 0; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. Try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking). +See \`config.log' for more details" "$LINENO" 5; } + fi + { am_dirpart=; unset am_dirpart;} + { am_filepart=; unset am_filepart;} + { am_mf=; unset am_mf;} + { am_rc=; unset am_rc;} + rm -f conftest-deps.mk +} + ;; + "libtool":C) + + # See if we are running on zsh, and set the options that allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST + fi + + cfgfile=${ofile}T + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL +# Generated automatically by $as_me ($PACKAGE) $VERSION +# NOTE: Changes made to this file will be lost: look at ltmain.sh. + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + +# Copyright (C) 2014 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +# The names of the tagged configurations supported by this script. +available_tags='CXX ' + +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + +# ### BEGIN LIBTOOL CONFIG + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# Shared archive member basename,for filename based shared library versioning on AIX. +shared_archive_member_spec=$shared_archive_member_spec + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that protects backslashes. +ECHO=$lt_ECHO + +# The PATH separator for the build system. +PATH_SEPARATOR=$lt_PATH_SEPARATOR + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# convert \$build file names to \$host format. +to_host_file_cmd=$lt_cv_to_host_file_cmd + +# convert \$build files to toolchain format. +to_tool_file_cmd=$lt_cv_to_tool_file_cmd + +# An object symbol dumper. +OBJDUMP=$lt_OBJDUMP + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method = "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# How to find potential files when deplibs_check_method = "file_magic". +file_magic_glob=$lt_file_magic_glob + +# Find potential files using nocaseglob when deplibs_check_method = "file_magic". +want_nocaseglob=$lt_want_nocaseglob + +# DLL creation program. +DLLTOOL=$lt_DLLTOOL + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd + +# The archiver. +AR=$lt_AR + +# Flags to create an archive. +AR_FLAGS=$lt_AR_FLAGS + +# How to feed a file listing to the archiver. +archiver_list_spec=$lt_archiver_list_spec + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=$lock_old_archive_extraction + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm into a list of symbols to manually relocate. +global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# The name lister interface. +nm_interface=$lt_lt_cv_nm_interface + +# Specify filename containing input files for \$NM. +nm_file_list_spec=$lt_nm_file_list_spec + +# The root where to search for dependent libraries,and where our libraries should be installed. +lt_sysroot=$lt_sysroot + +# Command to truncate a binary pipe. +lt_truncate_bin=$lt_lt_cv_truncate_bin + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Manifest tool. +MANIFEST_TOOL=$lt_MANIFEST_TOOL + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Permission mode override for installation of shared libraries. +install_override_mode=$lt_install_override_mode + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Detected run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path + +# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. +configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \$shlibpath_var if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects +postdep_objects=$lt_postdep_objects +predeps=$lt_predeps +postdeps=$lt_postdeps + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path + +# ### END LIBTOOL CONFIG + +_LT_EOF + + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + +ltmain=$ac_aux_dir/ltmain.sh + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + + cat <<_LT_EOF >> "$ofile" + +# ### BEGIN LIBTOOL TAG CONFIG: CXX + +# The linker used to build libraries. +LD=$lt_LD_CXX + +# How to create reloadable object files. +reload_flag=$lt_reload_flag_CXX +reload_cmds=$lt_reload_cmds_CXX + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds_CXX + +# A language specific compiler. +CC=$lt_compiler_CXX + +# Is the compiler the GNU compiler? +with_gcc=$GCC_CXX + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_CXX + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_CXX + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_CXX + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_CXX + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object_CXX + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds_CXX +archive_expsym_cmds=$lt_archive_expsym_cmds_CXX + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds_CXX +module_expsym_cmds=$lt_module_expsym_cmds_CXX + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld_CXX + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_CXX + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_CXX + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct_CXX + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \$shlibpath_var if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute_CXX + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L_CXX + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic_CXX + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath_CXX + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_CXX + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols_CXX + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_CXX + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_CXX + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_CXX + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds_CXX + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds_CXX + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec_CXX + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_CXX + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects_CXX +postdep_objects=$lt_postdep_objects_CXX +predeps=$lt_predeps_CXX +postdeps=$lt_postdeps_CXX + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_CXX + +# ### END LIBTOOL TAG CONFIG: CXX +_LT_EOF + + ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi + +# +# CONFIG_SUBDIRS section. +# +if test "$no_recursion" != yes; then + + # Remove --cache-file, --srcdir, and --disable-option-checking arguments + # so they do not pile up. + ac_sub_configure_args= + ac_prev= + eval "set x $ac_configure_args" + shift + for ac_arg + do + if test -n "$ac_prev"; then + ac_prev= + continue + fi + case $ac_arg in + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* \ + | --c=*) + ;; + --config-cache | -C) + ;; + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + ;; + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + ;; + --disable-option-checking) + ;; + *) + case $ac_arg in + *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append ac_sub_configure_args " '$ac_arg'" ;; + esac + done + + # Always prepend --prefix to ensure using the same prefix + # in subdir configurations. + ac_arg="--prefix=$prefix" + case $ac_arg in + *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + ac_sub_configure_args="'$ac_arg' $ac_sub_configure_args" + + # Pass --silent + if test "$silent" = yes; then + ac_sub_configure_args="--silent $ac_sub_configure_args" + fi + + # Always prepend --disable-option-checking to silence warnings, since + # different subdirs can have different --enable and --with options. + ac_sub_configure_args="--disable-option-checking $ac_sub_configure_args" + + ac_popdir=`pwd` + for ac_dir in : $subdirs; do test "x$ac_dir" = x: && continue + + # Do not complain, so a configure script can configure whichever + # parts of a large source tree are present. + test -d "$srcdir/$ac_dir" || continue + + ac_msg="=== configuring in $ac_dir (`pwd`/$ac_dir)" + $as_echo "$as_me:${as_lineno-$LINENO}: $ac_msg" >&5 + $as_echo "$ac_msg" >&6 + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + cd "$ac_dir" + + # Check for guested configure; otherwise get Cygnus style configure. + if test -f "$ac_srcdir/configure.gnu"; then + ac_sub_configure=$ac_srcdir/configure.gnu + elif test -f "$ac_srcdir/configure"; then + ac_sub_configure=$ac_srcdir/configure + elif test -f "$ac_srcdir/configure.in"; then + # This should be Cygnus configure. + ac_sub_configure=$ac_aux_dir/configure + else + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: no configuration information is in $ac_dir" >&5 +$as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2;} + ac_sub_configure= + fi + + # The recursion is here. + if test -n "$ac_sub_configure"; then + # Make the cache file name correct relative to the subdirectory. + case $cache_file in + [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;; + *) # Relative name. + ac_sub_cache_file=$ac_top_build_prefix$cache_file ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&5 +$as_echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir" >&6;} + # The eval makes quoting arguments work. + eval "\$SHELL \"\$ac_sub_configure\" $ac_sub_configure_args \ + --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" || + as_fn_error $? "$ac_sub_configure failed for $ac_dir" "$LINENO" 5 + fi + + cd "$ac_popdir" + done +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + diff --git a/thirdparty/protobuf-2.6.1/configure.ac b/thirdparty/protobuf-2.6.1/configure.ac new file mode 100644 index 00000000..c07067cf --- /dev/null +++ b/thirdparty/protobuf-2.6.1/configure.ac @@ -0,0 +1,159 @@ +## Process this file with autoconf to produce configure. +## In general, the safest way to proceed is to run ./autogen.sh + +AC_PREREQ(2.59) + +# Note: If you change the version, you must also update it in: +# * java/pom.xml +# * python/setup.py +# * src/google/protobuf/stubs/common.h +# * src/Makefile.am (Update -version-info for LDFLAGS if needed) +# +# In the SVN trunk, the version should always be the next anticipated release +# version with the "-pre" suffix. (We used to use "-SNAPSHOT" but this pushed +# the size of one file name in the dist tarfile over the 99-char limit.) +AC_INIT([Protocol Buffers],[2.6.1],[protobuf@googlegroups.com],[protobuf]) + +AM_MAINTAINER_MODE([enable]) + +AC_CONFIG_SRCDIR(src/google/protobuf/message.cc) +AC_CONFIG_HEADERS([config.h]) +AC_CONFIG_MACRO_DIR([m4]) + +# autoconf's default CXXFLAGS are usually "-g -O2". These aren't necessarily +# the best choice for libprotobuf. +AS_IF([test "x${ac_cv_env_CFLAGS_set}" = "x"], + [CFLAGS=""]) +AS_IF([test "x${ac_cv_env_CXXFLAGS_set}" = "x"], + [CXXFLAGS=""]) + +AC_CANONICAL_TARGET + +AM_INIT_AUTOMAKE([subdir-objects]) + +AC_ARG_WITH([zlib], + [AS_HELP_STRING([--with-zlib], + [include classes for streaming compressed data in and out @<:@default=check@:>@])], + [],[with_zlib=check]) + +AC_ARG_WITH([protoc], + [AS_HELP_STRING([--with-protoc=COMMAND], + [use the given protoc command instead of building a new one when building tests (useful for cross-compiling)])], + [],[with_protoc=no]) + +# Checks for programs. +AC_PROG_CC +AC_PROG_CXX +AC_LANG([C++]) +ACX_USE_SYSTEM_EXTENSIONS +AM_CONDITIONAL(GCC, test "$GCC" = yes) # let the Makefile know if we're gcc + +# test_util.cc takes forever to compile with GCC and optimization turned on. +AC_MSG_CHECKING([C++ compiler flags...]) +AS_IF([test "x${ac_cv_env_CXXFLAGS_set}" = "x"],[ + AS_IF([test "$GCC" = "yes"],[ + PROTOBUF_OPT_FLAG="-O2" + CXXFLAGS="${CXXFLAGS} -g" + ]) + + # Protocol Buffers contains several checks that are intended to be used only + # for debugging and which might hurt performance. Most users are probably + # end users who don't want these checks, so add -DNDEBUG by default. + CXXFLAGS="$CXXFLAGS -DNDEBUG" + + AC_MSG_RESULT([use default: $PROTOBUF_OPT_FLAG $CXXFLAGS]) +],[ + AC_MSG_RESULT([use user-supplied: $CXXFLAGS]) +]) + +AC_SUBST(PROTOBUF_OPT_FLAG) + +ACX_CHECK_SUNCC + +# Have to do libtool after SUNCC, other wise it "helpfully" adds Crun Cstd +# to the link +AC_PROG_LIBTOOL + +# Checks for header files. +AC_HEADER_STDC +AC_CHECK_HEADERS([fcntl.h inttypes.h limits.h stdlib.h unistd.h]) + +# Checks for library functions. +AC_FUNC_MEMCMP +AC_FUNC_STRTOD +AC_CHECK_FUNCS([ftruncate memset mkdir strchr strerror strtol]) + +# Check for zlib. +HAVE_ZLIB=0 +AS_IF([test "$with_zlib" != no], [ + AC_MSG_CHECKING([zlib version]) + + # First check the zlib header version. + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[ + #include + #if !defined(ZLIB_VERNUM) || (ZLIB_VERNUM < 0x1204) + # error zlib version too old + #endif + ]], [])], [ + AC_MSG_RESULT([ok (1.2.0.4 or later)]) + + # Also need to add -lz to the linker flags and make sure this succeeds. + AC_SEARCH_LIBS([zlibVersion], [z], [ + AC_DEFINE([HAVE_ZLIB], [1], [Enable classes using zlib compression.]) + HAVE_ZLIB=1 + ], [ + AS_IF([test "$with_zlib" != check], [ + AC_MSG_FAILURE([--with-zlib was given, but no working zlib library was found]) + ]) + ]) + ], [ + AS_IF([test "$with_zlib" = check], [ + AC_MSG_RESULT([headers missing or too old (requires 1.2.0.4)]) + ], [ + AC_MSG_FAILURE([--with-zlib was given, but zlib headers were not present or were too old (requires 1.2.0.4)]) + ]) + ]) +]) +AM_CONDITIONAL([HAVE_ZLIB], [test $HAVE_ZLIB = 1]) + +AS_IF([test "$with_protoc" != "no"], [ + PROTOC=$with_protoc + AS_IF([test "$with_protoc" = "yes"], [ + # No argument given. Use system protoc. + PROTOC=protoc + ]) + AS_IF([echo "$PROTOC" | grep -q '^@<:@^/@:>@.*/'], [ + # Does not start with a slash, but contains a slash. So, it's a relative + # path (as opposed to an absolute path or an executable in $PATH). + # Since it will actually be executed from the src directory, prefix with + # the current directory. We also insert $ac_top_build_prefix in case this + # is a nested package and --with-protoc was actually given on the outer + # package's configure script. + PROTOC=`pwd`/${ac_top_build_prefix}$PROTOC + ]) + AC_SUBST([PROTOC]) +]) +AM_CONDITIONAL([USE_EXTERNAL_PROTOC], [test "$with_protoc" != "no"]) + +ACX_PTHREAD +AC_CXX_STL_HASH + +case "$target_os" in + mingw* | cygwin* | win*) + ;; + *) + # Need to link against rt on Solaris + AC_SEARCH_LIBS([sched_yield], [rt], [], [AC_MSG_FAILURE([sched_yield was not found on your system])]) + ;; +esac + +# HACK: Make gtest's configure script pick up our copy of CFLAGS and CXXFLAGS, +# since the flags added by ACX_CHECK_SUNCC must be used when compiling gtest +# too. +export CFLAGS +export CXXFLAGS +AC_CONFIG_SUBDIRS([gtest]) + +AC_CONFIG_FILES([Makefile src/Makefile protobuf.pc protobuf-lite.pc]) +AC_OUTPUT diff --git a/thirdparty/protobuf-2.6.1/depcomp b/thirdparty/protobuf-2.6.1/depcomp new file mode 100755 index 00000000..65cbf709 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/depcomp @@ -0,0 +1,791 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2018-03-07.03; # UTC + +# Copyright (C) 1999-2018 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by 'PROGRAMS ARGS'. + object Object file output by 'PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputting dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +# Get the directory component of the given path, and save it in the +# global variables '$dir'. Note that this directory component will +# be either empty or ending with a '/' character. This is deliberate. +set_dir_from () +{ + case $1 in + */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; + *) dir=;; + esac +} + +# Get the suffix-stripped basename of the given path, and save it the +# global variable '$base'. +set_base_from () +{ + base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` +} + +# If no dependency file was actually created by the compiler invocation, +# we still have to create a dummy depfile, to avoid errors with the +# Makefile "include basename.Plo" scheme. +make_dummy_depfile () +{ + echo "#dummy" > "$depfile" +} + +# Factor out some common post-processing of the generated depfile. +# Requires the auxiliary global variable '$tmpdepfile' to be set. +aix_post_process_depfile () +{ + # If the compiler actually managed to produce a dependency file, + # post-process it. + if test -f "$tmpdepfile"; then + # Each line is of the form 'foo.o: dependency.h'. + # Do two passes, one to just change these to + # $object: dependency.h + # and one to simply output + # dependency.h: + # which is needed to avoid the deleted-header problem. + { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" + sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" + } > "$depfile" + rm -f "$tmpdepfile" + else + make_dummy_depfile + fi +} + +# A tabulation character. +tab=' ' +# A newline character. +nl=' +' +# Character ranges might be problematic outside the C locale. +# These definitions help. +upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ +lower=abcdefghijklmnopqrstuvwxyz +digits=0123456789 +alpha=${upper}${lower} + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Avoid interferences from the environment. +gccflag= dashmflag= + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +cygpath_u="cygpath -u -f -" +if test "$depmode" = msvcmsys; then + # This is just like msvisualcpp but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvisualcpp +fi + +if test "$depmode" = msvc7msys; then + # This is just like msvc7 but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvc7 +fi + +if test "$depmode" = xlc; then + # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. + gccflag=-qmakedep=gcc,-MF + depmode=gcc +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. +## Unfortunately, FreeBSD c89 acceptance of flags depends upon +## the command line argument order; so add the flags where they +## appear in depend2.am. Note that the slowdown incurred here +## affects only configure: in makefiles, %FASTDEP% shortcuts this. + for arg + do + case $arg in + -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; + *) set fnord "$@" "$arg" ;; + esac + shift # fnord + shift # $arg + done + "$@" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. +## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. +## (see the conditional assignment to $gccflag above). +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). Also, it might not be +## supported by the other compilers which use the 'gcc' depmode. +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The second -e expression handles DOS-style file names with drive + # letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the "deleted header file" problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. +## Some versions of gcc put a space before the ':'. On the theory +## that the space means something, we add a space to the output as +## well. hp depmode also adds that space, but also prefixes the VPATH +## to the object. Take care to not repeat it in the output. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like '#:fec' to the end of the + # dependency line. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ + | tr "$nl" ' ' >> "$depfile" + echo >> "$depfile" + # The second pass generates a dummy entry for each header file. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" + ;; + +xlc) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts '$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.u + tmpdepfile2=$base.u + tmpdepfile3=$dir.libs/$base.u + "$@" -Wc,-M + else + tmpdepfile1=$dir$base.u + tmpdepfile2=$dir$base.u + tmpdepfile3=$dir$base.u + "$@" -M + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + aix_post_process_depfile + ;; + +tcc) + # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 + # FIXME: That version still under development at the moment of writing. + # Make that this statement remains true also for stable, released + # versions. + # It will wrap lines (doesn't matter whether long or short) with a + # trailing '\', as in: + # + # foo.o : \ + # foo.c \ + # foo.h \ + # + # It will put a trailing '\' even on the last line, and will use leading + # spaces rather than leading tabs (at least since its commit 0394caf7 + # "Emit spaces for -MD"). + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. + # We have to change lines of the first kind to '$object: \'. + sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" + # And for each line of the second kind, we have to emit a 'dep.h:' + # dummy dependency, to avoid the deleted-header problem. + sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" + rm -f "$tmpdepfile" + ;; + +## The order of this option in the case statement is important, since the +## shell code in configure will try each of these formats in the order +## listed in this file. A plain '-MD' option would be understood by many +## compilers, so we must ensure this comes after the gcc and icc options. +pgcc) + # Portland's C compiler understands '-MD'. + # Will always output deps to 'file.d' where file is the root name of the + # source file under compilation, even if file resides in a subdirectory. + # The object file name does not affect the name of the '.d' file. + # pgcc 10.2 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using '\' : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + set_dir_from "$object" + # Use the source, not the object, to determine the base name, since + # that's sadly what pgcc will do too. + set_base_from "$source" + tmpdepfile=$base.d + + # For projects that build the same source file twice into different object + # files, the pgcc approach of using the *source* file root name can cause + # problems in parallel builds. Use a locking strategy to avoid stomping on + # the same $tmpdepfile. + lockdir=$base.d-lock + trap " + echo '$0: caught signal, cleaning up...' >&2 + rmdir '$lockdir' + exit 1 + " 1 2 13 15 + numtries=100 + i=$numtries + while test $i -gt 0; do + # mkdir is a portable test-and-set. + if mkdir "$lockdir" 2>/dev/null; then + # This process acquired the lock. + "$@" -MD + stat=$? + # Release the lock. + rmdir "$lockdir" + break + else + # If the lock is being held by a different process, wait + # until the winning process is done or we timeout. + while test -d "$lockdir" && test $i -gt 0; do + sleep 1 + i=`expr $i - 1` + done + fi + i=`expr $i - 1` + done + trap - 1 2 13 15 + if test $i -le 0; then + echo "$0: failed to acquire lock after $numtries attempts" >&2 + echo "$0: check lockdir '$lockdir'" >&2 + exit 1 + fi + + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp2) + # The "hp" stanza above does not work with aCC (C++) and HP's ia64 + # compilers, which have integrated preprocessors. The correct option + # to use with these is +Maked; it writes dependencies to a file named + # 'foo.d', which lands next to the object file, wherever that + # happens to be. + # Much of this is similar to the tru64 case; see comments there. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir.libs/$base.d + "$@" -Wc,+Maked + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + "$@" +Maked + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" + # Add 'dependent.h:' lines. + sed -ne '2,${ + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" "$tmpdepfile2" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in 'foo.d' instead, so we check for that too. + # Subdirectories are respected. + set_dir_from "$object" + set_base_from "$object" + + if test "$libtool" = yes; then + # Libtool generates 2 separate objects for the 2 libraries. These + # two compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir$base.o.d # libtool 1.5 + tmpdepfile2=$dir.libs/$base.o.d # Likewise. + tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + # Same post-processing that is required for AIX mode. + aix_post_process_depfile + ;; + +msvc7) + if test "$libtool" = yes; then + showIncludes=-Wc,-showIncludes + else + showIncludes=-showIncludes + fi + "$@" $showIncludes > "$tmpdepfile" + stat=$? + grep -v '^Note: including file: ' "$tmpdepfile" + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The first sed program below extracts the file names and escapes + # backslashes for cygpath. The second sed program outputs the file + # name when reading, but also accumulates all include files in the + # hold buffer in order to output them again at the end. This only + # works with sed implementations that can handle large buffers. + sed < "$tmpdepfile" -n ' +/^Note: including file: *\(.*\)/ { + s//\1/ + s/\\/\\\\/g + p +}' | $cygpath_u | sort -u | sed -n ' +s/ /\\ /g +s/\(.*\)/'"$tab"'\1 \\/p +s/.\(.*\) \\/\1:/ +H +$ { + s/.*/'"$tab"'/ + G + p +}' >> "$depfile" + echo >> "$depfile" # make sure the fragment doesn't end with a backslash + rm -f "$tmpdepfile" + ;; + +msvc7msys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for ':' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. + "$@" $dashmflag | + sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this sed invocation + # correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no eat=no + for arg + do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + if test $eat = yes; then + eat=no + continue + fi + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -arch) + eat=yes ;; + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix=`echo "$object" | sed 's/^.*\././'` + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + # makedepend may prepend the VPATH from the source file name to the object. + # No need to regex-escape $object, excess matching of '.' is harmless. + sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process the last invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed '1,2d' "$tmpdepfile" \ + | tr ' ' "$nl" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E \ + | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + | sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + IFS=" " + for arg + do + case "$arg" in + -o) + shift + ;; + $object) + shift + ;; + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E 2>/dev/null | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" + echo "$tab" >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvcmsys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/thirdparty/protobuf-2.6.1/editors/README.txt b/thirdparty/protobuf-2.6.1/editors/README.txt new file mode 100644 index 00000000..3e9fc79e --- /dev/null +++ b/thirdparty/protobuf-2.6.1/editors/README.txt @@ -0,0 +1,5 @@ +This directory contains syntax highlighting and configuration files for editors +to properly display Protocol Buffer files. + +See each file's header comment for directions on how to use it with the +appropriate editor. diff --git a/thirdparty/protobuf-2.6.1/editors/proto.vim b/thirdparty/protobuf-2.6.1/editors/proto.vim new file mode 100644 index 00000000..7cd1dbf2 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/editors/proto.vim @@ -0,0 +1,105 @@ +" Protocol Buffers - Google's data interchange format +" Copyright 2008 Google Inc. All rights reserved. +" https://developers.google.com/protocol-buffers/ +" +" Redistribution and use in source and binary forms, with or without +" modification, are permitted provided that the following conditions are +" met: +" +" * Redistributions of source code must retain the above copyright +" notice, this list of conditions and the following disclaimer. +" * Redistributions in binary form must reproduce the above +" copyright notice, this list of conditions and the following disclaimer +" in the documentation and/or other materials provided with the +" distribution. +" * Neither the name of Google Inc. nor the names of its +" contributors may be used to endorse or promote products derived from +" this software without specific prior written permission. +" +" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +" "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +" A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +" OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +" LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +" OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +" This is the Vim syntax file for Google Protocol Buffers. +" +" Usage: +" +" 1. cp proto.vim ~/.vim/syntax/ +" 2. Add the following to ~/.vimrc: +" +" augroup filetype +" au! BufRead,BufNewFile *.proto setfiletype proto +" augroup end +" +" Or just create a new file called ~/.vim/ftdetect/proto.vim with the +" previous lines on it. + +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +syn case match + +syn keyword pbTodo contained TODO FIXME XXX +syn cluster pbCommentGrp contains=pbTodo + +syn keyword pbSyntax syntax import option +syn keyword pbStructure package message group +syn keyword pbRepeat optional required repeated +syn keyword pbDefault default +syn keyword pbExtend extend extensions to max +syn keyword pbRPC service rpc returns + +syn keyword pbType int32 int64 uint32 uint64 sint32 sint64 +syn keyword pbType fixed32 fixed64 sfixed32 sfixed64 +syn keyword pbType float double bool string bytes +syn keyword pbTypedef enum +syn keyword pbBool true false + +syn match pbInt /-\?\<\d\+\>/ +syn match pbInt /\<0[xX]\x+\>/ +syn match pbFloat /\<-\?\d*\(\.\d*\)\?/ +syn region pbComment start="\/\*" end="\*\/" contains=@pbCommentGrp +syn region pbComment start="//" skip="\\$" end="$" keepend contains=@pbCommentGrp +syn region pbString start=/"/ skip=/\\./ end=/"/ +syn region pbString start=/'/ skip=/\\./ end=/'/ + +if version >= 508 || !exists("did_proto_syn_inits") + if version < 508 + let did_proto_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink pbTodo Todo + + HiLink pbSyntax Include + HiLink pbStructure Structure + HiLink pbRepeat Repeat + HiLink pbDefault Keyword + HiLink pbExtend Keyword + HiLink pbRPC Keyword + HiLink pbType Type + HiLink pbTypedef Typedef + HiLink pbBool Boolean + + HiLink pbInt Number + HiLink pbFloat Float + HiLink pbComment Comment + HiLink pbString String + + delcommand HiLink +endif + +let b:current_syntax = "proto" diff --git a/thirdparty/protobuf-2.6.1/editors/protobuf-mode.el b/thirdparty/protobuf-2.6.1/editors/protobuf-mode.el new file mode 100644 index 00000000..09aecc93 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/editors/protobuf-mode.el @@ -0,0 +1,220 @@ +;;; protobuf-mode.el --- major mode for editing protocol buffers. + +;; Author: Alexandre Vassalotti +;; Created: 23-Apr-2009 +;; Version: 0.3 +;; Keywords: google protobuf languages + +;; Redistribution and use in source and binary forms, with or without +;; modification, are permitted provided that the following conditions are +;; met: +;; +;; * Redistributions of source code must retain the above copyright +;; notice, this list of conditions and the following disclaimer. +;; * Redistributions in binary form must reproduce the above +;; copyright notice, this list of conditions and the following disclaimer +;; in the documentation and/or other materials provided with the +;; distribution. +;; * Neither the name of Google Inc. nor the names of its +;; contributors may be used to endorse or promote products derived from +;; this software without specific prior written permission. +;; +;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +;; "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +;; LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +;; A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +;; OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +;; SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +;; LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +;; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +;; THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +;; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +;; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +;;; Commentary: + +;; Installation: +;; - Put `protobuf-mode.el' in your Emacs load-path. +;; - Add this line to your .emacs file: +;; (require 'protobuf-mode) +;; +;; You can customize this mode just like any mode derived from CC Mode. If +;; you want to add customizations specific to protobuf-mode, you can use the +;; `protobuf-mode-hook'. For example, the following would make protocol-mode +;; use 2-space indentation: +;; +;; (defconst my-protobuf-style +;; '((c-basic-offset . 2) +;; (indent-tabs-mode . nil))) +;; +;; (add-hook 'protobuf-mode-hook +;; (lambda () (c-add-style "my-style" my-protobuf-style t))) +;; +;; Refer to the documentation of CC Mode for more information about +;; customization details and how to use this mode. +;; +;; TODO: +;; - Make highlighting for enum values work properly. +;; - Fix the parser to recognize extensions as identifiers and not +;; as casts. +;; - Improve the parsing of option assignment lists. For example: +;; optional int32 foo = 1 [(my_field_option) = 4.5]; +;; - Add support for fully-qualified identifiers (e.g., with a leading "."). + +;;; Code: + +(require 'cc-mode) + +(eval-when-compile + (require 'cc-langs) + (require 'cc-fonts)) + +;; This mode does not inherit properties from other modes. So, we do not use +;; the usual `c-add-language' function. +(eval-and-compile + (put 'protobuf-mode 'c-mode-prefix "protobuf-")) + +;; The following code uses of the `c-lang-defconst' macro define syntactic +;; features of protocol buffer language. Refer to the documentation in the +;; cc-langs.el file for information about the meaning of the -kwds variables. + +(c-lang-defconst c-primitive-type-kwds + protobuf '("double" "float" "int32" "int64" "uint32" "uint64" "sint32" + "sint64" "fixed32" "fixed64" "sfixed32" "sfixed64" "bool" + "string" "bytes" "group")) + +(c-lang-defconst c-modifier-kwds + protobuf '("required" "optional" "repeated")) + +(c-lang-defconst c-class-decl-kwds + protobuf '("message" "enum" "service")) + +(c-lang-defconst c-constant-kwds + protobuf '("true" "false")) + +(c-lang-defconst c-other-decl-kwds + protobuf '("package" "import")) + +(c-lang-defconst c-other-kwds + protobuf '("default" "max")) + +(c-lang-defconst c-identifier-ops + ;; Handle extended identifiers like google.protobuf.MessageOptions + protobuf '((left-assoc "."))) + +;; The following keywords do not fit well in keyword classes defined by +;; cc-mode. So, we approximate as best we can. + +(c-lang-defconst c-type-list-kwds + protobuf '("extensions" "to")) + +(c-lang-defconst c-typeless-decl-kwds + protobuf '("extend" "rpc" "option" "returns")) + + +;; Here we remove default syntax for loops, if-statements and other C +;; syntactic features that are not supported by the protocol buffer language. + +(c-lang-defconst c-brace-list-decl-kwds + ;; Remove syntax for C-style enumerations. + protobuf nil) + +(c-lang-defconst c-block-stmt-1-kwds + ;; Remove syntax for "do" and "else" keywords. + protobuf nil) + +(c-lang-defconst c-block-stmt-2-kwds + ;; Remove syntax for "for", "if", "switch" and "while" keywords. + protobuf nil) + +(c-lang-defconst c-simple-stmt-kwds + ;; Remove syntax for "break", "continue", "goto" and "return" keywords. + protobuf nil) + +(c-lang-defconst c-paren-stmt-kwds + ;; Remove special case for the "(;;)" in for-loops. + protobuf nil) + +(c-lang-defconst c-label-kwds + ;; Remove case label syntax for the "case" and "default" keywords. + protobuf nil) + +(c-lang-defconst c-before-label-kwds + ;; Remove special case for the label in a goto statement. + protobuf nil) + +(c-lang-defconst c-cpp-matchers + ;; Disable all the C preprocessor syntax. + protobuf nil) + +(c-lang-defconst c-decl-prefix-re + ;; Same as for C, except it does not match "(". This is needed for disabling + ;; the syntax for casts. + protobuf "\\([\{\};,]+\\)") + + +;; Add support for variable levels of syntax highlighting. + +(defconst protobuf-font-lock-keywords-1 (c-lang-const c-matchers-1 protobuf) + "Minimal highlighting for protobuf-mode.") + +(defconst protobuf-font-lock-keywords-2 (c-lang-const c-matchers-2 protobuf) + "Fast normal highlighting for protobuf-mode.") + +(defconst protobuf-font-lock-keywords-3 (c-lang-const c-matchers-3 protobuf) + "Accurate normal highlighting for protobuf-mode.") + +(defvar protobuf-font-lock-keywords protobuf-font-lock-keywords-3 + "Default expressions to highlight in protobuf-mode.") + +;; Our syntax table is auto-generated from the keyword classes we defined +;; previously with the `c-lang-const' macro. +(defvar protobuf-mode-syntax-table nil + "Syntax table used in protobuf-mode buffers.") +(or protobuf-mode-syntax-table + (setq protobuf-mode-syntax-table + (funcall (c-lang-const c-make-mode-syntax-table protobuf)))) + +(defvar protobuf-mode-abbrev-table nil + "Abbreviation table used in protobuf-mode buffers.") + +(defvar protobuf-mode-map nil + "Keymap used in protobuf-mode buffers.") +(or protobuf-mode-map + (setq protobuf-mode-map (c-make-inherited-keymap))) + +(easy-menu-define protobuf-menu protobuf-mode-map + "Protocol Buffers Mode Commands" + (cons "Protocol Buffers" (c-lang-const c-mode-menu protobuf))) + +;;;###autoload (add-to-list 'auto-mode-alist '("\\.proto\\'" . protobuf-mode)) + +;;;###autoload +(defun protobuf-mode () + "Major mode for editing Protocol Buffers description language. + +The hook `c-mode-common-hook' is run with no argument at mode +initialization, then `protobuf-mode-hook'. + +Key bindings: +\\{protobuf-mode-map}" + (interactive) + (kill-all-local-variables) + (set-syntax-table protobuf-mode-syntax-table) + (setq major-mode 'protobuf-mode + mode-name "Protocol-Buffers" + local-abbrev-table protobuf-mode-abbrev-table + abbrev-mode t) + (use-local-map protobuf-mode-map) + (c-initialize-cc-mode t) + (if (fboundp 'c-make-emacs-variables-local) + (c-make-emacs-variables-local)) + (c-init-language-vars protobuf-mode) + (c-common-init 'protobuf-mode) + (easy-menu-add protobuf-menu) + (c-run-mode-hooks 'c-mode-common-hook 'protobuf-mode-hook) + (c-update-modeline)) + +(provide 'protobuf-mode) + +;;; protobuf-mode.el ends here diff --git a/thirdparty/protobuf-2.6.1/examples/AddPerson.java b/thirdparty/protobuf-2.6.1/examples/AddPerson.java new file mode 100644 index 00000000..ca5ac273 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/examples/AddPerson.java @@ -0,0 +1,95 @@ +// See README.txt for information and build instructions. + +import com.example.tutorial.AddressBookProtos.AddressBook; +import com.example.tutorial.AddressBookProtos.Person; +import java.io.BufferedReader; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.InputStreamReader; +import java.io.IOException; +import java.io.PrintStream; + +class AddPerson { + // This function fills in a Person message based on user input. + static Person PromptForAddress(BufferedReader stdin, + PrintStream stdout) throws IOException { + Person.Builder person = Person.newBuilder(); + + stdout.print("Enter person ID: "); + person.setId(Integer.valueOf(stdin.readLine())); + + stdout.print("Enter name: "); + person.setName(stdin.readLine()); + + stdout.print("Enter email address (blank for none): "); + String email = stdin.readLine(); + if (email.length() > 0) { + person.setEmail(email); + } + + while (true) { + stdout.print("Enter a phone number (or leave blank to finish): "); + String number = stdin.readLine(); + if (number.length() == 0) { + break; + } + + Person.PhoneNumber.Builder phoneNumber = + Person.PhoneNumber.newBuilder().setNumber(number); + + stdout.print("Is this a mobile, home, or work phone? "); + String type = stdin.readLine(); + if (type.equals("mobile")) { + phoneNumber.setType(Person.PhoneType.MOBILE); + } else if (type.equals("home")) { + phoneNumber.setType(Person.PhoneType.HOME); + } else if (type.equals("work")) { + phoneNumber.setType(Person.PhoneType.WORK); + } else { + stdout.println("Unknown phone type. Using default."); + } + + person.addPhone(phoneNumber); + } + + return person.build(); + } + + // Main function: Reads the entire address book from a file, + // adds one person based on user input, then writes it back out to the same + // file. + public static void main(String[] args) throws Exception { + if (args.length != 1) { + System.err.println("Usage: AddPerson ADDRESS_BOOK_FILE"); + System.exit(-1); + } + + AddressBook.Builder addressBook = AddressBook.newBuilder(); + + // Read the existing address book. + try { + FileInputStream input = new FileInputStream(args[0]); + try { + addressBook.mergeFrom(input); + } finally { + try { input.close(); } catch (Throwable ignore) {} + } + } catch (FileNotFoundException e) { + System.out.println(args[0] + ": File not found. Creating a new file."); + } + + // Add an address. + addressBook.addPerson( + PromptForAddress(new BufferedReader(new InputStreamReader(System.in)), + System.out)); + + // Write the new address book back to disk. + FileOutputStream output = new FileOutputStream(args[0]); + try { + addressBook.build().writeTo(output); + } finally { + output.close(); + } + } +} diff --git a/thirdparty/protobuf-2.6.1/examples/ListPeople.java b/thirdparty/protobuf-2.6.1/examples/ListPeople.java new file mode 100644 index 00000000..b2f153af --- /dev/null +++ b/thirdparty/protobuf-2.6.1/examples/ListPeople.java @@ -0,0 +1,50 @@ +// See README.txt for information and build instructions. + +import com.example.tutorial.AddressBookProtos.AddressBook; +import com.example.tutorial.AddressBookProtos.Person; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.PrintStream; + +class ListPeople { + // Iterates though all people in the AddressBook and prints info about them. + static void Print(AddressBook addressBook) { + for (Person person: addressBook.getPersonList()) { + System.out.println("Person ID: " + person.getId()); + System.out.println(" Name: " + person.getName()); + if (person.hasEmail()) { + System.out.println(" E-mail address: " + person.getEmail()); + } + + for (Person.PhoneNumber phoneNumber : person.getPhoneList()) { + switch (phoneNumber.getType()) { + case MOBILE: + System.out.print(" Mobile phone #: "); + break; + case HOME: + System.out.print(" Home phone #: "); + break; + case WORK: + System.out.print(" Work phone #: "); + break; + } + System.out.println(phoneNumber.getNumber()); + } + } + } + + // Main function: Reads the entire address book from a file and prints all + // the information inside. + public static void main(String[] args) throws Exception { + if (args.length != 1) { + System.err.println("Usage: ListPeople ADDRESS_BOOK_FILE"); + System.exit(-1); + } + + // Read the existing address book. + AddressBook addressBook = + AddressBook.parseFrom(new FileInputStream(args[0])); + + Print(addressBook); + } +} diff --git a/thirdparty/protobuf-2.6.1/examples/Makefile b/thirdparty/protobuf-2.6.1/examples/Makefile new file mode 100644 index 00000000..8dc90836 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/examples/Makefile @@ -0,0 +1,58 @@ +# See README.txt. + +.PHONY: all cpp java python clean + +all: cpp java python + +cpp: add_person_cpp list_people_cpp +java: add_person_java list_people_java +python: add_person_python list_people_python + +clean: + rm -f add_person_cpp list_people_cpp add_person_java list_people_java add_person_python list_people_python + rm -f javac_middleman AddPerson*.class ListPeople*.class com/example/tutorial/*.class + rm -f protoc_middleman addressbook.pb.cc addressbook.pb.h addressbook_pb2.py com/example/tutorial/AddressBookProtos.java + rm -f *.pyc + rmdir com/example/tutorial 2>/dev/null || true + rmdir com/example 2>/dev/null || true + rmdir com 2>/dev/null || true + +protoc_middleman: addressbook.proto + protoc --cpp_out=. --java_out=. --python_out=. addressbook.proto + @touch protoc_middleman + +add_person_cpp: add_person.cc protoc_middleman + pkg-config --cflags protobuf # fails if protobuf is not installed + c++ add_person.cc addressbook.pb.cc -o add_person_cpp `pkg-config --cflags --libs protobuf` + +list_people_cpp: list_people.cc protoc_middleman + pkg-config --cflags protobuf # fails if protobuf is not installed + c++ list_people.cc addressbook.pb.cc -o list_people_cpp `pkg-config --cflags --libs protobuf` + +javac_middleman: AddPerson.java ListPeople.java protoc_middleman + javac AddPerson.java ListPeople.java com/example/tutorial/AddressBookProtos.java + @touch javac_middleman + +add_person_java: javac_middleman + @echo "Writing shortcut script add_person_java..." + @echo '#! /bin/sh' > add_person_java + @echo 'java -classpath .:$$CLASSPATH AddPerson "$$@"' >> add_person_java + @chmod +x add_person_java + +list_people_java: javac_middleman + @echo "Writing shortcut script list_people_java..." + @echo '#! /bin/sh' > list_people_java + @echo 'java -classpath .:$$CLASSPATH ListPeople "$$@"' >> list_people_java + @chmod +x list_people_java + +add_person_python: add_person.py protoc_middleman + @echo "Writing shortcut script add_person_python..." + @echo '#! /bin/sh' > add_person_python + @echo './add_person.py "$$@"' >> add_person_python + @chmod +x add_person_python + +list_people_python: list_people.py protoc_middleman + @echo "Writing shortcut script list_people_python..." + @echo '#! /bin/sh' > list_people_python + @echo './list_people.py "$$@"' >> list_people_python + @chmod +x list_people_python diff --git a/thirdparty/protobuf-2.6.1/examples/README.txt b/thirdparty/protobuf-2.6.1/examples/README.txt new file mode 100644 index 00000000..f5530a5e --- /dev/null +++ b/thirdparty/protobuf-2.6.1/examples/README.txt @@ -0,0 +1,29 @@ +This directory contains example code that uses Protocol Buffers to manage an +address book. Two programs are provided, each with three different +implementations, one written in each of C++, Java, and Python. The add_person +example adds a new person to an address book, prompting the user to input +the person's information. The list_people example lists people already in the +address book. The examples use the exact same format in all three languages, +so you can, for example, use add_person_java to create an address book and then +use list_people_python to read it. + +You must install the protobuf package before you can build these. + +To build all the examples (on a unix-like system), simply run "make". This +creates the following executable files in the current directory: + add_person_cpp list_people_cpp + add_person_java list_people_java + add_person_python list_people_python + +If you only want to compile examples in one language, use "make cpp"*, +"make java", or "make python". + +All of these programs simply take an address book file as their parameter. +The add_person programs will create the file if it doesn't already exist. + +These examples are part of the Protocol Buffers tutorial, located at: + https://developers.google.com/protocol-buffers/docs/tutorials + +* Note that on some platforms you may have to edit the Makefile and remove +"-lpthread" from the linker commands (perhaps replacing it with something else). +We didn't do this automatically because we wanted to keep the example simple. diff --git a/thirdparty/protobuf-2.6.1/examples/add_person.cc b/thirdparty/protobuf-2.6.1/examples/add_person.cc new file mode 100644 index 00000000..b9ca44fc --- /dev/null +++ b/thirdparty/protobuf-2.6.1/examples/add_person.cc @@ -0,0 +1,95 @@ +// See README.txt for information and build instructions. + +#include +#include +#include +#include "addressbook.pb.h" +using namespace std; + +// This function fills in a Person message based on user input. +void PromptForAddress(tutorial::Person* person) { + cout << "Enter person ID number: "; + int id; + cin >> id; + person->set_id(id); + cin.ignore(256, '\n'); + + cout << "Enter name: "; + getline(cin, *person->mutable_name()); + + cout << "Enter email address (blank for none): "; + string email; + getline(cin, email); + if (!email.empty()) { + person->set_email(email); + } + + while (true) { + cout << "Enter a phone number (or leave blank to finish): "; + string number; + getline(cin, number); + if (number.empty()) { + break; + } + + tutorial::Person::PhoneNumber* phone_number = person->add_phone(); + phone_number->set_number(number); + + cout << "Is this a mobile, home, or work phone? "; + string type; + getline(cin, type); + if (type == "mobile") { + phone_number->set_type(tutorial::Person::MOBILE); + } else if (type == "home") { + phone_number->set_type(tutorial::Person::HOME); + } else if (type == "work") { + phone_number->set_type(tutorial::Person::WORK); + } else { + cout << "Unknown phone type. Using default." << endl; + } + } +} + +// Main function: Reads the entire address book from a file, +// adds one person based on user input, then writes it back out to the same +// file. +int main(int argc, char* argv[]) { + // Verify that the version of the library that we linked against is + // compatible with the version of the headers we compiled against. + GOOGLE_PROTOBUF_VERIFY_VERSION; + + if (argc != 2) { + cerr << "Usage: " << argv[0] << " ADDRESS_BOOK_FILE" << endl; + return -1; + } + + tutorial::AddressBook address_book; + + { + // Read the existing address book. + fstream input(argv[1], ios::in | ios::binary); + if (!input) { + cout << argv[1] << ": File not found. Creating a new file." << endl; + } else if (!address_book.ParseFromIstream(&input)) { + cerr << "Failed to parse address book." << endl; + return -1; + } + } + + // Add an address. + PromptForAddress(address_book.add_person()); + + { + // Write the new address book back to disk. + fstream output(argv[1], ios::out | ios::trunc | ios::binary); + if (!address_book.SerializeToOstream(&output)) { + cerr << "Failed to write address book." << endl; + return -1; + } + } + + // Optional: Delete all global objects allocated by libprotobuf. + google::protobuf::ShutdownProtobufLibrary(); + + return 0; +} diff --git a/thirdparty/protobuf-2.6.1/examples/add_person.py b/thirdparty/protobuf-2.6.1/examples/add_person.py new file mode 100644 index 00000000..78e56966 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/examples/add_person.py @@ -0,0 +1,58 @@ +#! /usr/bin/python + +# See README.txt for information and build instructions. + +import addressbook_pb2 +import sys + +# This function fills in a Person message based on user input. +def PromptForAddress(person): + person.id = int(raw_input("Enter person ID number: ")) + person.name = raw_input("Enter name: ") + + email = raw_input("Enter email address (blank for none): ") + if email != "": + person.email = email + + while True: + number = raw_input("Enter a phone number (or leave blank to finish): ") + if number == "": + break + + phone_number = person.phone.add() + phone_number.number = number + + type = raw_input("Is this a mobile, home, or work phone? ") + if type == "mobile": + phone_number.type = addressbook_pb2.Person.MOBILE + elif type == "home": + phone_number.type = addressbook_pb2.Person.HOME + elif type == "work": + phone_number.type = addressbook_pb2.Person.WORK + else: + print "Unknown phone type; leaving as default value." + +# Main procedure: Reads the entire address book from a file, +# adds one person based on user input, then writes it back out to the same +# file. +if len(sys.argv) != 2: + print "Usage:", sys.argv[0], "ADDRESS_BOOK_FILE" + sys.exit(-1) + +address_book = addressbook_pb2.AddressBook() + +# Read the existing address book. +try: + f = open(sys.argv[1], "rb") + address_book.ParseFromString(f.read()) + f.close() +except IOError: + print sys.argv[1] + ": File not found. Creating a new file." + +# Add an address. +PromptForAddress(address_book.person.add()) + +# Write the new address book back to disk. +f = open(sys.argv[1], "wb") +f.write(address_book.SerializeToString()) +f.close() diff --git a/thirdparty/protobuf-2.6.1/examples/addressbook.proto b/thirdparty/protobuf-2.6.1/examples/addressbook.proto new file mode 100644 index 00000000..b14829e9 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/examples/addressbook.proto @@ -0,0 +1,30 @@ +// See README.txt for information and build instructions. + +package tutorial; + +option java_package = "com.example.tutorial"; +option java_outer_classname = "AddressBookProtos"; + +message Person { + required string name = 1; + required int32 id = 2; // Unique ID number for this person. + optional string email = 3; + + enum PhoneType { + MOBILE = 0; + HOME = 1; + WORK = 2; + } + + message PhoneNumber { + required string number = 1; + optional PhoneType type = 2 [default = HOME]; + } + + repeated PhoneNumber phone = 4; +} + +// Our address book file is just one of these. +message AddressBook { + repeated Person person = 1; +} diff --git a/thirdparty/protobuf-2.6.1/examples/list_people.cc b/thirdparty/protobuf-2.6.1/examples/list_people.cc new file mode 100644 index 00000000..5363152e --- /dev/null +++ b/thirdparty/protobuf-2.6.1/examples/list_people.cc @@ -0,0 +1,68 @@ +// See README.txt for information and build instructions. + +#include +#include +#include +#include "addressbook.pb.h" +using namespace std; + +// Iterates though all people in the AddressBook and prints info about them. +void ListPeople(const tutorial::AddressBook& address_book) { + for (int i = 0; i < address_book.person_size(); i++) { + const tutorial::Person& person = address_book.person(i); + + cout << "Person ID: " << person.id() << endl; + cout << " Name: " << person.name() << endl; + if (person.has_email()) { + cout << " E-mail address: " << person.email() << endl; + } + + for (int j = 0; j < person.phone_size(); j++) { + const tutorial::Person::PhoneNumber& phone_number = person.phone(j); + + switch (phone_number.type()) { + case tutorial::Person::MOBILE: + cout << " Mobile phone #: "; + break; + case tutorial::Person::HOME: + cout << " Home phone #: "; + break; + case tutorial::Person::WORK: + cout << " Work phone #: "; + break; + } + cout << phone_number.number() << endl; + } + } +} + +// Main function: Reads the entire address book from a file and prints all +// the information inside. +int main(int argc, char* argv[]) { + // Verify that the version of the library that we linked against is + // compatible with the version of the headers we compiled against. + GOOGLE_PROTOBUF_VERIFY_VERSION; + + if (argc != 2) { + cerr << "Usage: " << argv[0] << " ADDRESS_BOOK_FILE" << endl; + return -1; + } + + tutorial::AddressBook address_book; + + { + // Read the existing address book. + fstream input(argv[1], ios::in | ios::binary); + if (!address_book.ParseFromIstream(&input)) { + cerr << "Failed to parse address book." << endl; + return -1; + } + } + + ListPeople(address_book); + + // Optional: Delete all global objects allocated by libprotobuf. + google::protobuf::ShutdownProtobufLibrary(); + + return 0; +} diff --git a/thirdparty/protobuf-2.6.1/examples/list_people.py b/thirdparty/protobuf-2.6.1/examples/list_people.py new file mode 100644 index 00000000..f9f36b96 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/examples/list_people.py @@ -0,0 +1,38 @@ +#! /usr/bin/python + +# See README.txt for information and build instructions. + +import addressbook_pb2 +import sys + +# Iterates though all people in the AddressBook and prints info about them. +def ListPeople(address_book): + for person in address_book.person: + print "Person ID:", person.id + print " Name:", person.name + if person.HasField('email'): + print " E-mail address:", person.email + + for phone_number in person.phone: + if phone_number.type == addressbook_pb2.Person.MOBILE: + print " Mobile phone #:", + elif phone_number.type == addressbook_pb2.Person.HOME: + print " Home phone #:", + elif phone_number.type == addressbook_pb2.Person.WORK: + print " Work phone #:", + print phone_number.number + +# Main procedure: Reads the entire address book from a file and prints all +# the information inside. +if len(sys.argv) != 2: + print "Usage:", sys.argv[0], "ADDRESS_BOOK_FILE" + sys.exit(-1) + +address_book = addressbook_pb2.AddressBook() + +# Read the existing address book. +f = open(sys.argv[1], "rb") +address_book.ParseFromString(f.read()) +f.close() + +ListPeople(address_book) diff --git a/thirdparty/protobuf-2.6.1/generate_descriptor_proto.sh b/thirdparty/protobuf-2.6.1/generate_descriptor_proto.sh new file mode 100644 index 00000000..07219dc1 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/generate_descriptor_proto.sh @@ -0,0 +1,33 @@ +#!/bin/sh + +# Run this script to regenerate descriptor.pb.{h,cc} after the protocol +# compiler changes. Since these files are compiled into the protocol compiler +# itself, they cannot be generated automatically by a make rule. "make check" +# will fail if these files do not match what the protocol compiler would +# generate. +# +# HINT: Flags passed to generate_descriptor_proto.sh will be passed directly +# to make when building protoc. This is particularly useful for passing +# -j4 to run 4 jobs simultaneously. + +if test ! -e src/google/protobuf/stubs/common.h; then + cat >&2 << __EOF__ +Could not find source code. Make sure you are running this script from the +root of the distribution tree. +__EOF__ + exit 1 +fi + +if test ! -e src/Makefile; then + cat >&2 << __EOF__ +Could not find src/Makefile. You must run ./configure (and perhaps +./autogen.sh) first. +__EOF__ + exit 1 +fi + +cd src +make $@ protoc && + ./protoc --cpp_out=dllexport_decl=LIBPROTOBUF_EXPORT:. google/protobuf/descriptor.proto && \ + ./protoc --cpp_out=dllexport_decl=LIBPROTOC_EXPORT:. google/protobuf/compiler/plugin.proto +cd .. diff --git a/thirdparty/protobuf-2.6.1/gtest/CHANGES b/thirdparty/protobuf-2.6.1/gtest/CHANGES new file mode 100644 index 00000000..59192458 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/CHANGES @@ -0,0 +1,130 @@ +Changes for 1.6.0: + +* New feature: ADD_FAILURE_AT() for reporting a test failure at the + given source location -- useful for writing testing utilities. +* New feature: the universal value printer is moved from Google Mock + to Google Test. +* New feature: type parameters and value parameters are reported in + the XML report now. +* A gtest_disable_pthreads CMake option. +* Colored output works in GNU Screen sessions now. +* Parameters of value-parameterized tests are now printed in the + textual output. +* Failures from ad hoc test assertions run before RUN_ALL_TESTS() are + now correctly reported. +* Arguments of ASSERT_XY and EXPECT_XY no longer need to support << to + ostream. +* More complete handling of exceptions. +* GTEST_ASSERT_XY can be used instead of ASSERT_XY in case the latter + name is already used by another library. +* --gtest_catch_exceptions is now true by default, allowing a test + program to continue after an exception is thrown. +* Value-parameterized test fixtures can now derive from Test and + WithParamInterface separately, easing conversion of legacy tests. +* Death test messages are clearly marked to make them more + distinguishable from other messages. +* Compatibility fixes for Android, Google Native Client, MinGW, HP UX, + PowerPC, Lucid autotools, libCStd, Sun C++, Borland C++ Builder (Code Gear), + IBM XL C++ (Visual Age C++), and C++0x. +* Bug fixes and implementation clean-ups. +* Potentially incompatible changes: disables the harmful 'make install' + command in autotools. + +Changes for 1.5.0: + + * New feature: assertions can be safely called in multiple threads + where the pthreads library is available. + * New feature: predicates used inside EXPECT_TRUE() and friends + can now generate custom failure messages. + * New feature: Google Test can now be compiled as a DLL. + * New feature: fused source files are included. + * New feature: prints help when encountering unrecognized Google Test flags. + * Experimental feature: CMake build script (requires CMake 2.6.4+). + * Experimental feature: the Pump script for meta programming. + * double values streamed to an assertion are printed with enough precision + to differentiate any two different values. + * Google Test now works on Solaris and AIX. + * Build and test script improvements. + * Bug fixes and implementation clean-ups. + + Potentially breaking changes: + + * Stopped supporting VC++ 7.1 with exceptions disabled. + * Dropped support for 'make install'. + +Changes for 1.4.0: + + * New feature: the event listener API + * New feature: test shuffling + * New feature: the XML report format is closer to junitreport and can + be parsed by Hudson now. + * New feature: when a test runs under Visual Studio, its failures are + integrated in the IDE. + * New feature: /MD(d) versions of VC++ projects. + * New feature: elapsed time for the tests is printed by default. + * New feature: comes with a TR1 tuple implementation such that Boost + is no longer needed for Combine(). + * New feature: EXPECT_DEATH_IF_SUPPORTED macro and friends. + * New feature: the Xcode project can now produce static gtest + libraries in addition to a framework. + * Compatibility fixes for Solaris, Cygwin, minGW, Windows Mobile, + Symbian, gcc, and C++Builder. + * Bug fixes and implementation clean-ups. + +Changes for 1.3.0: + + * New feature: death tests on Windows, Cygwin, and Mac. + * New feature: ability to use Google Test assertions in other testing + frameworks. + * New feature: ability to run disabled test via + --gtest_also_run_disabled_tests. + * New feature: the --help flag for printing the usage. + * New feature: access to Google Test flag values in user code. + * New feature: a script that packs Google Test into one .h and one + .cc file for easy deployment. + * New feature: support for distributing test functions to multiple + machines (requires support from the test runner). + * Bug fixes and implementation clean-ups. + +Changes for 1.2.1: + + * Compatibility fixes for Linux IA-64 and IBM z/OS. + * Added support for using Boost and other TR1 implementations. + * Changes to the build scripts to support upcoming release of Google C++ + Mocking Framework. + * Added Makefile to the distribution package. + * Improved build instructions in README. + +Changes for 1.2.0: + + * New feature: value-parameterized tests. + * New feature: the ASSERT/EXPECT_(NON)FATAL_FAILURE(_ON_ALL_THREADS) + macros. + * Changed the XML report format to match JUnit/Ant's. + * Added tests to the Xcode project. + * Added scons/SConscript for building with SCons. + * Added src/gtest-all.cc for building Google Test from a single file. + * Fixed compatibility with Solaris and z/OS. + * Enabled running Python tests on systems with python 2.3 installed, + e.g. Mac OS X 10.4. + * Bug fixes. + +Changes for 1.1.0: + + * New feature: type-parameterized tests. + * New feature: exception assertions. + * New feature: printing elapsed time of tests. + * Improved the robustness of death tests. + * Added an Xcode project and samples. + * Adjusted the output format on Windows to be understandable by Visual Studio. + * Minor bug fixes. + +Changes for 1.0.1: + + * Added project files for Visual Studio 7.1. + * Fixed issues with compiling on Mac OS X. + * Fixed issues with compiling on Cygwin. + +Changes for 1.0.0: + + * Initial Open Source release of Google Test diff --git a/thirdparty/protobuf-2.6.1/gtest/CMakeLists.txt b/thirdparty/protobuf-2.6.1/gtest/CMakeLists.txt new file mode 100644 index 00000000..64527f74 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/CMakeLists.txt @@ -0,0 +1,250 @@ +######################################################################## +# CMake build script for Google Test. +# +# To run the tests for Google Test itself on Linux, use 'make test' or +# ctest. You can select which tests to run using 'ctest -R regex'. +# For more options, run 'ctest --help'. + +# BUILD_SHARED_LIBS is a standard CMake variable, but we declare it here to +# make it prominent in the GUI. +option(BUILD_SHARED_LIBS "Build shared libraries (DLLs)." OFF) + +# When other libraries are using a shared version of runtime libraries, +# Google Test also has to use one. +option( + gtest_force_shared_crt + "Use shared (DLL) run-time lib even when Google Test is built as static lib." + OFF) + +option(gtest_build_tests "Build all of gtest's own tests." OFF) + +option(gtest_build_samples "Build gtest's sample programs." OFF) + +option(gtest_disable_pthreads "Disable uses of pthreads in gtest." OFF) + +# Defines pre_project_set_up_hermetic_build() and set_up_hermetic_build(). +include(cmake/hermetic_build.cmake OPTIONAL) + +if (COMMAND pre_project_set_up_hermetic_build) + pre_project_set_up_hermetic_build() +endif() + +######################################################################## +# +# Project-wide settings + +# Name of the project. +# +# CMake files in this project can refer to the root source directory +# as ${gtest_SOURCE_DIR} and to the root binary directory as +# ${gtest_BINARY_DIR}. +# Language "C" is required for find_package(Threads). +project(gtest CXX C) +cmake_minimum_required(VERSION 2.6.2) + +if (COMMAND set_up_hermetic_build) + set_up_hermetic_build() +endif() + +# Define helper functions and macros used by Google Test. +include(cmake/internal_utils.cmake) + +config_compiler_and_linker() # Defined in internal_utils.cmake. + +# Where Google Test's .h files can be found. +include_directories( + ${gtest_SOURCE_DIR}/include + ${gtest_SOURCE_DIR}) + +# Where Google Test's libraries can be found. +link_directories(${gtest_BINARY_DIR}/src) + +######################################################################## +# +# Defines the gtest & gtest_main libraries. User tests should link +# with one of them. + +# Google Test libraries. We build them using more strict warnings than what +# are used for other targets, to ensure that gtest can be compiled by a user +# aggressive about warnings. +cxx_library(gtest "${cxx_strict}" src/gtest-all.cc) +cxx_library(gtest_main "${cxx_strict}" src/gtest_main.cc) +target_link_libraries(gtest_main gtest) + +######################################################################## +# +# Samples on how to link user tests with gtest or gtest_main. +# +# They are not built by default. To build them, set the +# gtest_build_samples option to ON. You can do it by running ccmake +# or specifying the -Dbuild_gtest_samples=ON flag when running cmake. + +if (gtest_build_samples) + cxx_executable(sample1_unittest samples gtest_main samples/sample1.cc) + cxx_executable(sample2_unittest samples gtest_main samples/sample2.cc) + cxx_executable(sample3_unittest samples gtest_main) + cxx_executable(sample4_unittest samples gtest_main samples/sample4.cc) + cxx_executable(sample5_unittest samples gtest_main samples/sample1.cc) + cxx_executable(sample6_unittest samples gtest_main) + cxx_executable(sample7_unittest samples gtest_main) + cxx_executable(sample8_unittest samples gtest_main) + cxx_executable(sample9_unittest samples gtest) + cxx_executable(sample10_unittest samples gtest) +endif() + +######################################################################## +# +# Google Test's own tests. +# +# You can skip this section if you aren't interested in testing +# Google Test itself. +# +# The tests are not built by default. To build them, set the +# gtest_build_tests option to ON. You can do it by running ccmake +# or specifying the -Dgtest_build_tests=ON flag when running cmake. + +if (gtest_build_tests) + # This must be set in the root directory for the tests to be run by + # 'make test' or ctest. + enable_testing() + + ############################################################ + # C++ tests built with standard compiler flags. + + cxx_test(gtest-death-test_test gtest_main) + cxx_test(gtest_environment_test gtest) + cxx_test(gtest-filepath_test gtest_main) + cxx_test(gtest-linked_ptr_test gtest_main) + cxx_test(gtest-listener_test gtest_main) + cxx_test(gtest_main_unittest gtest_main) + cxx_test(gtest-message_test gtest_main) + cxx_test(gtest_no_test_unittest gtest) + cxx_test(gtest-options_test gtest_main) + cxx_test(gtest-param-test_test gtest + test/gtest-param-test2_test.cc) + cxx_test(gtest-port_test gtest_main) + cxx_test(gtest_pred_impl_unittest gtest_main) + cxx_test(gtest-printers_test gtest_main) + cxx_test(gtest_prod_test gtest_main + test/production.cc) + cxx_test(gtest_repeat_test gtest) + cxx_test(gtest_sole_header_test gtest_main) + cxx_test(gtest_stress_test gtest) + cxx_test(gtest-test-part_test gtest_main) + cxx_test(gtest_throw_on_failure_ex_test gtest) + cxx_test(gtest-typed-test_test gtest_main + test/gtest-typed-test2_test.cc) + cxx_test(gtest_unittest gtest_main) + cxx_test(gtest-unittest-api_test gtest) + + ############################################################ + # C++ tests built with non-standard compiler flags. + + # MSVC 7.1 does not support STL with exceptions disabled. + if (NOT MSVC OR MSVC_VERSION GREATER 1310) + cxx_library(gtest_no_exception "${cxx_no_exception}" + src/gtest-all.cc) + cxx_library(gtest_main_no_exception "${cxx_no_exception}" + src/gtest-all.cc src/gtest_main.cc) + endif() + cxx_library(gtest_main_no_rtti "${cxx_no_rtti}" + src/gtest-all.cc src/gtest_main.cc) + + cxx_test_with_flags(gtest-death-test_ex_nocatch_test + "${cxx_exception} -DGTEST_ENABLE_CATCH_EXCEPTIONS_=0" + gtest test/gtest-death-test_ex_test.cc) + cxx_test_with_flags(gtest-death-test_ex_catch_test + "${cxx_exception} -DGTEST_ENABLE_CATCH_EXCEPTIONS_=1" + gtest test/gtest-death-test_ex_test.cc) + + cxx_test_with_flags(gtest_no_rtti_unittest "${cxx_no_rtti}" + gtest_main_no_rtti test/gtest_unittest.cc) + + cxx_shared_library(gtest_dll "${cxx_default}" + src/gtest-all.cc src/gtest_main.cc) + + cxx_executable_with_flags(gtest_dll_test_ "${cxx_default}" + gtest_dll test/gtest_all_test.cc) + set_target_properties(gtest_dll_test_ + PROPERTIES + COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1") + + if (NOT MSVC OR NOT MSVC_VERSION EQUAL 1600) + # The C++ Standard specifies tuple_element. + # Yet MSVC 10's declares tuple_element. + # That declaration conflicts with our own standard-conforming + # tuple implementation. Therefore using our own tuple with + # MSVC 10 doesn't compile. + cxx_library(gtest_main_use_own_tuple "${cxx_use_own_tuple}" + src/gtest-all.cc src/gtest_main.cc) + + cxx_test_with_flags(gtest-tuple_test "${cxx_use_own_tuple}" + gtest_main_use_own_tuple test/gtest-tuple_test.cc) + + cxx_test_with_flags(gtest_use_own_tuple_test "${cxx_use_own_tuple}" + gtest_main_use_own_tuple + test/gtest-param-test_test.cc test/gtest-param-test2_test.cc) + endif() + + ############################################################ + # Python tests. + + cxx_executable(gtest_break_on_failure_unittest_ test gtest) + py_test(gtest_break_on_failure_unittest) + + # MSVC 7.1 does not support STL with exceptions disabled. + if (NOT MSVC OR MSVC_VERSION GREATER 1310) + cxx_executable_with_flags( + gtest_catch_exceptions_no_ex_test_ + "${cxx_no_exception}" + gtest_main_no_exception + test/gtest_catch_exceptions_test_.cc) + endif() + + cxx_executable_with_flags( + gtest_catch_exceptions_ex_test_ + "${cxx_exception}" + gtest_main + test/gtest_catch_exceptions_test_.cc) + py_test(gtest_catch_exceptions_test) + + cxx_executable(gtest_color_test_ test gtest) + py_test(gtest_color_test) + + cxx_executable(gtest_env_var_test_ test gtest) + py_test(gtest_env_var_test) + + cxx_executable(gtest_filter_unittest_ test gtest) + py_test(gtest_filter_unittest) + + cxx_executable(gtest_help_test_ test gtest_main) + py_test(gtest_help_test) + + cxx_executable(gtest_list_tests_unittest_ test gtest) + py_test(gtest_list_tests_unittest) + + cxx_executable(gtest_output_test_ test gtest) + py_test(gtest_output_test) + + cxx_executable(gtest_shuffle_test_ test gtest) + py_test(gtest_shuffle_test) + + # MSVC 7.1 does not support STL with exceptions disabled. + if (NOT MSVC OR MSVC_VERSION GREATER 1310) + cxx_executable(gtest_throw_on_failure_test_ test gtest_no_exception) + set_target_properties(gtest_throw_on_failure_test_ + PROPERTIES + COMPILE_FLAGS "${cxx_no_exception}") + py_test(gtest_throw_on_failure_test) + endif() + + cxx_executable(gtest_uninitialized_test_ test gtest) + py_test(gtest_uninitialized_test) + + cxx_executable(gtest_xml_outfile1_test_ test gtest_main) + cxx_executable(gtest_xml_outfile2_test_ test gtest_main) + py_test(gtest_xml_outfiles_test) + + cxx_executable(gtest_xml_output_unittest_ test gtest) + py_test(gtest_xml_output_unittest) +endif() diff --git a/thirdparty/protobuf-2.6.1/gtest/CONTRIBUTORS b/thirdparty/protobuf-2.6.1/gtest/CONTRIBUTORS new file mode 100644 index 00000000..feae2fc0 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/CONTRIBUTORS @@ -0,0 +1,37 @@ +# This file contains a list of people who've made non-trivial +# contribution to the Google C++ Testing Framework project. People +# who commit code to the project are encouraged to add their names +# here. Please keep the list sorted by first names. + +Ajay Joshi +Balázs Dán +Bharat Mediratta +Chandler Carruth +Chris Prince +Chris Taylor +Dan Egnor +Eric Roman +Hady Zalek +Jeffrey Yasskin +Jói Sigurðsson +Keir Mierle +Keith Ray +Kenton Varda +Manuel Klimek +Markus Heule +Mika Raento +Miklós Fazekas +Pasi Valminen +Patrick Hanna +Patrick Riley +Peter Kaminski +Preston Jackson +Rainer Klaffenboeck +Russ Cox +Russ Rufer +Sean Mcafee +Sigurður Ásgeirsson +Tracy Bialik +Vadim Berman +Vlad Losev +Zhanyong Wan diff --git a/thirdparty/protobuf-2.6.1/gtest/LICENSE b/thirdparty/protobuf-2.6.1/gtest/LICENSE new file mode 100644 index 00000000..1941a11f --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/LICENSE @@ -0,0 +1,28 @@ +Copyright 2008, Google Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/thirdparty/protobuf-2.6.1/gtest/Makefile b/thirdparty/protobuf-2.6.1/gtest/Makefile new file mode 100644 index 00000000..999dacbc --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/Makefile @@ -0,0 +1,1817 @@ +# Makefile.in generated by automake 1.16.1 from Makefile.am. +# Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2018 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +# Automake file + + + + +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/gtest +pkgincludedir = $(includedir)/gtest +pkglibdir = $(libdir)/gtest +pkglibexecdir = $(libexecdir)/gtest +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-pc-linux-gnu +host_triplet = x86_64-pc-linux-gnu +TESTS = samples/sample1_unittest$(EXEEXT) \ + samples/sample10_unittest$(EXEEXT) \ + test/gtest_all_test$(EXEEXT) $(am__EXEEXT_1) +check_PROGRAMS = samples/sample1_unittest$(EXEEXT) \ + samples/sample10_unittest$(EXEEXT) \ + test/gtest_all_test$(EXEEXT) $(am__EXEEXT_1) +#am__append_1 = test/fused_gtest_test +#am__append_2 = test/fused_gtest_test +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/acx_pthread.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ + $(am__configure_deps) $(pkginclude_HEADERS) \ + $(pkginclude_internal_HEADERS) $(am__DIST_COMMON) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/build-aux/config.h +CONFIG_CLEAN_FILES = scripts/gtest-config +CONFIG_CLEAN_VPATH_FILES = +#am__EXEEXT_1 = test/fused_gtest_test$(EXEEXT) +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(m4datadir)" \ + "$(DESTDIR)$(pkgincludedir)" \ + "$(DESTDIR)$(pkginclude_internaldir)" +LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES) +lib_libgtest_la_LIBADD = +am__dirstamp = $(am__leading_dot)dirstamp +am_lib_libgtest_la_OBJECTS = src/gtest-all.lo +lib_libgtest_la_OBJECTS = $(am_lib_libgtest_la_OBJECTS) +AM_V_lt = $(am__v_lt_$(V)) +am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +am__v_lt_0 = --silent +am__v_lt_1 = +lib_libgtest_main_la_DEPENDENCIES = lib/libgtest.la +am_lib_libgtest_main_la_OBJECTS = src/gtest_main.lo +lib_libgtest_main_la_OBJECTS = $(am_lib_libgtest_main_la_OBJECTS) +samples_libsamples_la_LIBADD = +am_samples_libsamples_la_OBJECTS = samples/sample1.lo \ + samples/sample2.lo samples/sample4.lo +samples_libsamples_la_OBJECTS = $(am_samples_libsamples_la_OBJECTS) +am_samples_sample10_unittest_OBJECTS = \ + samples/sample10_unittest.$(OBJEXT) +samples_sample10_unittest_OBJECTS = \ + $(am_samples_sample10_unittest_OBJECTS) +samples_sample10_unittest_DEPENDENCIES = lib/libgtest.la +am_samples_sample1_unittest_OBJECTS = \ + samples/sample1_unittest.$(OBJEXT) +samples_sample1_unittest_OBJECTS = \ + $(am_samples_sample1_unittest_OBJECTS) +samples_sample1_unittest_DEPENDENCIES = lib/libgtest_main.la \ + lib/libgtest.la samples/libsamples.la +am__test_fused_gtest_test_SOURCES_DIST = fused-src/gtest/gtest-all.cc \ + fused-src/gtest/gtest.h fused-src/gtest/gtest_main.cc \ + samples/sample1.cc samples/sample1_unittest.cc +am__objects_1 = \ + fused-src/gtest/test_fused_gtest_test-gtest-all.$(OBJEXT) \ + fused-src/gtest/test_fused_gtest_test-gtest_main.$(OBJEXT) +#am_test_fused_gtest_test_OBJECTS = $(am__objects_1) \ +# samples/test_fused_gtest_test-sample1.$(OBJEXT) \ +# samples/test_fused_gtest_test-sample1_unittest.$(OBJEXT) +test_fused_gtest_test_OBJECTS = $(am_test_fused_gtest_test_OBJECTS) +test_fused_gtest_test_LDADD = $(LDADD) +am_test_gtest_all_test_OBJECTS = test/gtest_all_test.$(OBJEXT) +test_gtest_all_test_OBJECTS = $(am_test_gtest_all_test_OBJECTS) +test_gtest_all_test_DEPENDENCIES = lib/libgtest_main.la \ + lib/libgtest.la +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I. -I$(top_builddir)/build-aux +depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp +am__maybe_remake_depfiles = depfiles +am__depfiles_remade = \ + fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest-all.Po \ + fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest_main.Po \ + samples/$(DEPDIR)/sample1.Plo \ + samples/$(DEPDIR)/sample10_unittest.Po \ + samples/$(DEPDIR)/sample1_unittest.Po \ + samples/$(DEPDIR)/sample2.Plo samples/$(DEPDIR)/sample4.Plo \ + samples/$(DEPDIR)/test_fused_gtest_test-sample1.Po \ + samples/$(DEPDIR)/test_fused_gtest_test-sample1_unittest.Po \ + src/$(DEPDIR)/gtest-all.Plo src/$(DEPDIR)/gtest_main.Plo \ + test/$(DEPDIR)/gtest_all_test.Po +am__mv = mv -f +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_CXX = $(am__v_CXX_$(V)) +am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY)) +am__v_CXX_0 = @echo " CXX " $@; +am__v_CXX_1 = +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CXXLD = $(am__v_CXXLD_$(V)) +am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CXXLD_0 = @echo " CXXLD " $@; +am__v_CXXLD_1 = +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_$(V)) +am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_$(V)) +am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(lib_libgtest_la_SOURCES) $(lib_libgtest_main_la_SOURCES) \ + $(samples_libsamples_la_SOURCES) \ + $(samples_sample10_unittest_SOURCES) \ + $(samples_sample1_unittest_SOURCES) \ + $(test_fused_gtest_test_SOURCES) \ + $(test_gtest_all_test_SOURCES) +DIST_SOURCES = $(lib_libgtest_la_SOURCES) \ + $(lib_libgtest_main_la_SOURCES) \ + $(samples_libsamples_la_SOURCES) \ + $(samples_sample10_unittest_SOURCES) \ + $(samples_sample1_unittest_SOURCES) \ + $(am__test_fused_gtest_test_SOURCES_DIST) \ + $(test_gtest_all_test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +DATA = $(m4data_DATA) +HEADERS = $(pkginclude_HEADERS) $(pkginclude_internal_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +CSCOPE = cscope +AM_RECURSIVE_TARGETS = cscope check recheck +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/build-aux/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/build-aux/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/build-aux/compile \ + $(top_srcdir)/build-aux/config.guess \ + $(top_srcdir)/build-aux/config.h.in \ + $(top_srcdir)/build-aux/config.sub \ + $(top_srcdir)/build-aux/depcomp \ + $(top_srcdir)/build-aux/install-sh \ + $(top_srcdir)/build-aux/ltmain.sh \ + $(top_srcdir)/build-aux/missing \ + $(top_srcdir)/build-aux/test-driver \ + $(top_srcdir)/scripts/gtest-config.in README build-aux/compile \ + build-aux/config.guess build-aux/config.sub build-aux/depcomp \ + build-aux/install-sh build-aux/ltmain.sh build-aux/missing +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi +am__post_remove_distdir = $(am__remove_distdir) +DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 $(distdir).zip +GZIP_ENV = --best +DIST_TARGETS = dist-bzip2 dist-gzip dist-zip +distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' +distcleancheck_listfiles = find . -type f -print +ACLOCAL = ${SHELL} /home/jusic/source-engine/thirdparty/protobuf-2.6.1/gtest/build-aux/missing aclocal-1.16 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AR = ar +AUTOCONF = ${SHELL} /home/jusic/source-engine/thirdparty/protobuf-2.6.1/gtest/build-aux/missing autoconf +AUTOHEADER = ${SHELL} /home/jusic/source-engine/thirdparty/protobuf-2.6.1/gtest/build-aux/missing autoheader +AUTOMAKE = ${SHELL} /home/jusic/source-engine/thirdparty/protobuf-2.6.1/gtest/build-aux/missing automake-1.16 +AWK = mawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = +CPP = gcc -E +CPPFLAGS = +CXX = g++ +CXXCPP = g++ -E +CXXDEPMODE = depmode=gcc3 +CXXFLAGS = -g -DNDEBUG +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +DLLTOOL = false +DSYMUTIL = +DUMPBIN = +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /bin/grep -E +EXEEXT = +FGREP = /bin/grep -F +GREP = /bin/grep +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LD = /usr/bin/ld -m elf_x86_64 +LDFLAGS = +LIBOBJS = +LIBS = +LIBTOOL = $(SHELL) $(top_builddir)/libtool +LIPO = +LN_S = ln -s +LTLIBOBJS = +LT_SYS_LIBRARY_PATH = +MAKEINFO = ${SHELL} /home/jusic/source-engine/thirdparty/protobuf-2.6.1/gtest/build-aux/missing makeinfo +MANIFEST_TOOL = : +MKDIR_P = /bin/mkdir -p +NM = /usr/bin/nm -B +NMEDIT = +OBJDUMP = objdump +OBJEXT = o +OTOOL = +OTOOL64 = +PACKAGE = gtest +PACKAGE_BUGREPORT = googletestframework@googlegroups.com +PACKAGE_NAME = Google C++ Testing Framework +PACKAGE_STRING = Google C++ Testing Framework 1.6.0 +PACKAGE_TARNAME = gtest +PACKAGE_URL = +PACKAGE_VERSION = 1.6.0 +PATH_SEPARATOR = : +PTHREAD_CC = gcc +PTHREAD_CFLAGS = -pthread +PTHREAD_LIBS = +PYTHON = : +RANLIB = ranlib +SED = /bin/sed +SET_MAKE = +SHELL = /bin/bash +STRIP = strip +VERSION = 1.6.0 +abs_builddir = /home/jusic/source-engine/thirdparty/protobuf-2.6.1/gtest +abs_srcdir = /home/jusic/source-engine/thirdparty/protobuf-2.6.1/gtest +abs_top_builddir = /home/jusic/source-engine/thirdparty/protobuf-2.6.1/gtest +abs_top_srcdir = /home/jusic/source-engine/thirdparty/protobuf-2.6.1/gtest +ac_ct_AR = ar +ac_ct_CC = gcc +ac_ct_CXX = g++ +ac_ct_DUMPBIN = +acx_pthread_config = +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-pc-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = pc +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-pc-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = pc +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/jusic/source-engine/thirdparty/protobuf-2.6.1/gtest/build-aux/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +runstatedir = ${localstatedir}/run +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target_alias = +top_build_prefix = +top_builddir = . +top_srcdir = . +ACLOCAL_AMFLAGS = -I m4 + +# Nonstandard package files for distribution + +# Sample files that we don't compile. + +# C++ test files that we don't compile directly. + +# Python tests that we don't run. + +# CMake script + +# MSVC project files + +# xcode project files + +# xcode sample files + +# C++Builder project files +EXTRA_DIST = CHANGES CONTRIBUTORS LICENSE \ + include/gtest/gtest-param-test.h.pump \ + include/gtest/internal/gtest-param-util-generated.h.pump \ + include/gtest/internal/gtest-tuple.h.pump \ + include/gtest/internal/gtest-type-util.h.pump make/Makefile \ + scripts/fuse_gtest_files.py scripts/gen_gtest_pred_impl.py \ + scripts/pump.py scripts/test/Makefile $(GTEST_SRC) \ + samples/prime_tables.h samples/sample2_unittest.cc \ + samples/sample3_unittest.cc samples/sample4_unittest.cc \ + samples/sample5_unittest.cc samples/sample6_unittest.cc \ + samples/sample7_unittest.cc samples/sample8_unittest.cc \ + samples/sample9_unittest.cc test/gtest-death-test_ex_test.cc \ + test/gtest-death-test_test.cc test/gtest-filepath_test.cc \ + test/gtest-linked_ptr_test.cc test/gtest-listener_test.cc \ + test/gtest-message_test.cc test/gtest-options_test.cc \ + test/gtest-param-test2_test.cc test/gtest-param-test2_test.cc \ + test/gtest-param-test_test.cc test/gtest-param-test_test.cc \ + test/gtest-param-test_test.h test/gtest-port_test.cc \ + test/gtest-printers_test.cc test/gtest-test-part_test.cc \ + test/gtest-tuple_test.cc test/gtest-typed-test2_test.cc \ + test/gtest-typed-test_test.cc test/gtest-typed-test_test.h \ + test/gtest-unittest-api_test.cc \ + test/gtest_break_on_failure_unittest_.cc \ + test/gtest_catch_exceptions_test_.cc test/gtest_color_test_.cc \ + test/gtest_env_var_test_.cc test/gtest_environment_test.cc \ + test/gtest_filter_unittest_.cc test/gtest_help_test_.cc \ + test/gtest_list_tests_unittest_.cc test/gtest_main_unittest.cc \ + test/gtest_no_test_unittest.cc test/gtest_output_test_.cc \ + test/gtest_pred_impl_unittest.cc test/gtest_prod_test.cc \ + test/gtest_repeat_test.cc test/gtest_shuffle_test_.cc \ + test/gtest_sole_header_test.cc test/gtest_stress_test.cc \ + test/gtest_throw_on_failure_ex_test.cc \ + test/gtest_throw_on_failure_test_.cc \ + test/gtest_uninitialized_test_.cc test/gtest_unittest.cc \ + test/gtest_unittest.cc test/gtest_xml_outfile1_test_.cc \ + test/gtest_xml_outfile2_test_.cc \ + test/gtest_xml_output_unittest_.cc test/production.cc \ + test/production.h test/gtest_break_on_failure_unittest.py \ + test/gtest_catch_exceptions_test.py test/gtest_color_test.py \ + test/gtest_env_var_test.py test/gtest_filter_unittest.py \ + test/gtest_help_test.py test/gtest_list_tests_unittest.py \ + test/gtest_output_test.py \ + test/gtest_output_test_golden_lin.txt \ + test/gtest_shuffle_test.py test/gtest_test_utils.py \ + test/gtest_throw_on_failure_test.py \ + test/gtest_uninitialized_test.py \ + test/gtest_xml_outfiles_test.py \ + test/gtest_xml_output_unittest.py test/gtest_xml_test_utils.py \ + CMakeLists.txt cmake/internal_utils.cmake msvc/gtest-md.sln \ + msvc/gtest-md.vcproj msvc/gtest.sln msvc/gtest.vcproj \ + msvc/gtest_main-md.vcproj msvc/gtest_main.vcproj \ + msvc/gtest_prod_test-md.vcproj msvc/gtest_prod_test.vcproj \ + msvc/gtest_unittest-md.vcproj msvc/gtest_unittest.vcproj \ + xcode/Config/DebugProject.xcconfig \ + xcode/Config/FrameworkTarget.xcconfig \ + xcode/Config/General.xcconfig \ + xcode/Config/ReleaseProject.xcconfig \ + xcode/Config/StaticLibraryTarget.xcconfig \ + xcode/Config/TestTarget.xcconfig xcode/Resources/Info.plist \ + xcode/Scripts/runtests.sh xcode/Scripts/versiongenerate.py \ + xcode/gtest.xcodeproj/project.pbxproj \ + xcode/Samples/FrameworkSample/Info.plist \ + xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj \ + xcode/Samples/FrameworkSample/runtests.sh \ + xcode/Samples/FrameworkSample/widget.cc \ + xcode/Samples/FrameworkSample/widget.h \ + xcode/Samples/FrameworkSample/widget_test.cc \ + codegear/gtest.cbproj codegear/gtest.groupproj \ + codegear/gtest_all.cc codegear/gtest_link.cc \ + codegear/gtest_main.cbproj codegear/gtest_unittest.cbproj \ + $(m4data_DATA) + +# gtest source files that we don't compile directly. They are +# #included by gtest-all.cc. +GTEST_SRC = \ + src/gtest-death-test.cc \ + src/gtest-filepath.cc \ + src/gtest-internal-inl.h \ + src/gtest-port.cc \ + src/gtest-printers.cc \ + src/gtest-test-part.cc \ + src/gtest-typed-test.cc \ + src/gtest.cc + + +# Distribute and install M4 macro +m4datadir = $(datadir)/aclocal +m4data_DATA = m4/gtest.m4 + +# We define the global AM_CPPFLAGS as everything we compile includes from these +# directories. +AM_CPPFLAGS = -I$(srcdir) -I$(srcdir)/include +#AM_CXXFLAGS = -DGTEST_HAS_PTHREAD=0 + +# Modifies compiler and linker flags for pthreads compatibility. +AM_CXXFLAGS = -pthread -DGTEST_HAS_PTHREAD=1 +AM_LIBS = + +# Build rules for libraries. +lib_LTLIBRARIES = lib/libgtest.la lib/libgtest_main.la +lib_libgtest_la_SOURCES = src/gtest-all.cc +pkginclude_HEADERS = \ + include/gtest/gtest-death-test.h \ + include/gtest/gtest-message.h \ + include/gtest/gtest-param-test.h \ + include/gtest/gtest-printers.h \ + include/gtest/gtest-spi.h \ + include/gtest/gtest-test-part.h \ + include/gtest/gtest-typed-test.h \ + include/gtest/gtest.h \ + include/gtest/gtest_pred_impl.h \ + include/gtest/gtest_prod.h + +pkginclude_internaldir = $(pkgincludedir)/internal +pkginclude_internal_HEADERS = \ + include/gtest/internal/gtest-death-test-internal.h \ + include/gtest/internal/gtest-filepath.h \ + include/gtest/internal/gtest-internal.h \ + include/gtest/internal/gtest-linked_ptr.h \ + include/gtest/internal/gtest-param-util-generated.h \ + include/gtest/internal/gtest-param-util.h \ + include/gtest/internal/gtest-port.h \ + include/gtest/internal/gtest-string.h \ + include/gtest/internal/gtest-tuple.h \ + include/gtest/internal/gtest-type-util.h + +lib_libgtest_main_la_SOURCES = src/gtest_main.cc +lib_libgtest_main_la_LIBADD = lib/libgtest.la + +# Bulid rules for samples and tests. Automake's naming for some of +# these variables isn't terribly obvious, so this is a brief +# reference: +# +# TESTS -- Programs run automatically by "make check" +# check_PROGRAMS -- Programs built by "make check" but not necessarily run +noinst_LTLIBRARIES = samples/libsamples.la +samples_libsamples_la_SOURCES = \ + samples/sample1.cc \ + samples/sample1.h \ + samples/sample2.cc \ + samples/sample2.h \ + samples/sample3-inl.h \ + samples/sample4.cc \ + samples/sample4.h + +TESTS_ENVIRONMENT = GTEST_SOURCE_DIR="$(srcdir)/test" \ + GTEST_BUILD_DIR="$(top_builddir)/test" + +samples_sample1_unittest_SOURCES = samples/sample1_unittest.cc +samples_sample1_unittest_LDADD = lib/libgtest_main.la \ + lib/libgtest.la \ + samples/libsamples.la + +samples_sample10_unittest_SOURCES = samples/sample10_unittest.cc +samples_sample10_unittest_LDADD = lib/libgtest.la +test_gtest_all_test_SOURCES = test/gtest_all_test.cc +test_gtest_all_test_LDADD = lib/libgtest_main.la \ + lib/libgtest.la + + +# Tests that fused gtest files compile and work. +FUSED_GTEST_SRC = \ + fused-src/gtest/gtest-all.cc \ + fused-src/gtest/gtest.h \ + fused-src/gtest/gtest_main.cc + +#test_fused_gtest_test_SOURCES = $(FUSED_GTEST_SRC) \ +# samples/sample1.cc samples/sample1_unittest.cc + +#test_fused_gtest_test_CPPFLAGS = -I"$(srcdir)/fused-src" + +# Death tests may produce core dumps in the build directory. In case +# this happens, clean them to keep distcleancheck happy. +CLEANFILES = core +all: all-am + +.SUFFIXES: +.SUFFIXES: .cc .lo .log .o .obj .test .test$(EXEEXT) .trs +am--refresh: Makefile + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): + +build-aux/config.h: build-aux/stamp-h1 + @test -f $@ || rm -f build-aux/stamp-h1 + @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) build-aux/stamp-h1 + +build-aux/stamp-h1: $(top_srcdir)/build-aux/config.h.in $(top_builddir)/config.status + @rm -f build-aux/stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status build-aux/config.h +$(top_srcdir)/build-aux/config.h.in: $(am__configure_deps) + ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) + rm -f build-aux/stamp-h1 + touch $@ + +distclean-hdr: + -rm -f build-aux/config.h build-aux/stamp-h1 +scripts/gtest-config: $(top_builddir)/config.status $(top_srcdir)/scripts/gtest-config.in + cd $(top_builddir) && $(SHELL) ./config.status $@ + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } +src/$(am__dirstamp): + @$(MKDIR_P) src + @: > src/$(am__dirstamp) +src/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/$(DEPDIR) + @: > src/$(DEPDIR)/$(am__dirstamp) +src/gtest-all.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +lib/$(am__dirstamp): + @$(MKDIR_P) lib + @: > lib/$(am__dirstamp) + +lib/libgtest.la: $(lib_libgtest_la_OBJECTS) $(lib_libgtest_la_DEPENDENCIES) $(EXTRA_lib_libgtest_la_DEPENDENCIES) lib/$(am__dirstamp) + $(AM_V_CXXLD)$(CXXLINK) -rpath $(libdir) $(lib_libgtest_la_OBJECTS) $(lib_libgtest_la_LIBADD) $(LIBS) +src/gtest_main.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) + +lib/libgtest_main.la: $(lib_libgtest_main_la_OBJECTS) $(lib_libgtest_main_la_DEPENDENCIES) $(EXTRA_lib_libgtest_main_la_DEPENDENCIES) lib/$(am__dirstamp) + $(AM_V_CXXLD)$(CXXLINK) -rpath $(libdir) $(lib_libgtest_main_la_OBJECTS) $(lib_libgtest_main_la_LIBADD) $(LIBS) +samples/$(am__dirstamp): + @$(MKDIR_P) samples + @: > samples/$(am__dirstamp) +samples/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) samples/$(DEPDIR) + @: > samples/$(DEPDIR)/$(am__dirstamp) +samples/sample1.lo: samples/$(am__dirstamp) \ + samples/$(DEPDIR)/$(am__dirstamp) +samples/sample2.lo: samples/$(am__dirstamp) \ + samples/$(DEPDIR)/$(am__dirstamp) +samples/sample4.lo: samples/$(am__dirstamp) \ + samples/$(DEPDIR)/$(am__dirstamp) + +samples/libsamples.la: $(samples_libsamples_la_OBJECTS) $(samples_libsamples_la_DEPENDENCIES) $(EXTRA_samples_libsamples_la_DEPENDENCIES) samples/$(am__dirstamp) + $(AM_V_CXXLD)$(CXXLINK) $(samples_libsamples_la_OBJECTS) $(samples_libsamples_la_LIBADD) $(LIBS) +samples/sample10_unittest.$(OBJEXT): samples/$(am__dirstamp) \ + samples/$(DEPDIR)/$(am__dirstamp) + +samples/sample10_unittest$(EXEEXT): $(samples_sample10_unittest_OBJECTS) $(samples_sample10_unittest_DEPENDENCIES) $(EXTRA_samples_sample10_unittest_DEPENDENCIES) samples/$(am__dirstamp) + @rm -f samples/sample10_unittest$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(samples_sample10_unittest_OBJECTS) $(samples_sample10_unittest_LDADD) $(LIBS) +samples/sample1_unittest.$(OBJEXT): samples/$(am__dirstamp) \ + samples/$(DEPDIR)/$(am__dirstamp) + +samples/sample1_unittest$(EXEEXT): $(samples_sample1_unittest_OBJECTS) $(samples_sample1_unittest_DEPENDENCIES) $(EXTRA_samples_sample1_unittest_DEPENDENCIES) samples/$(am__dirstamp) + @rm -f samples/sample1_unittest$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(samples_sample1_unittest_OBJECTS) $(samples_sample1_unittest_LDADD) $(LIBS) +fused-src/gtest/$(am__dirstamp): + @$(MKDIR_P) fused-src/gtest + @: > fused-src/gtest/$(am__dirstamp) +fused-src/gtest/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) fused-src/gtest/$(DEPDIR) + @: > fused-src/gtest/$(DEPDIR)/$(am__dirstamp) +fused-src/gtest/test_fused_gtest_test-gtest-all.$(OBJEXT): \ + fused-src/gtest/$(am__dirstamp) \ + fused-src/gtest/$(DEPDIR)/$(am__dirstamp) +fused-src/gtest/test_fused_gtest_test-gtest_main.$(OBJEXT): \ + fused-src/gtest/$(am__dirstamp) \ + fused-src/gtest/$(DEPDIR)/$(am__dirstamp) +samples/test_fused_gtest_test-sample1.$(OBJEXT): \ + samples/$(am__dirstamp) samples/$(DEPDIR)/$(am__dirstamp) +samples/test_fused_gtest_test-sample1_unittest.$(OBJEXT): \ + samples/$(am__dirstamp) samples/$(DEPDIR)/$(am__dirstamp) +test/$(am__dirstamp): + @$(MKDIR_P) test + @: > test/$(am__dirstamp) + +test/fused_gtest_test$(EXEEXT): $(test_fused_gtest_test_OBJECTS) $(test_fused_gtest_test_DEPENDENCIES) $(EXTRA_test_fused_gtest_test_DEPENDENCIES) test/$(am__dirstamp) + @rm -f test/fused_gtest_test$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(test_fused_gtest_test_OBJECTS) $(test_fused_gtest_test_LDADD) $(LIBS) +test/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) test/$(DEPDIR) + @: > test/$(DEPDIR)/$(am__dirstamp) +test/gtest_all_test.$(OBJEXT): test/$(am__dirstamp) \ + test/$(DEPDIR)/$(am__dirstamp) + +test/gtest_all_test$(EXEEXT): $(test_gtest_all_test_OBJECTS) $(test_gtest_all_test_DEPENDENCIES) $(EXTRA_test_gtest_all_test_DEPENDENCIES) test/$(am__dirstamp) + @rm -f test/gtest_all_test$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(test_gtest_all_test_OBJECTS) $(test_gtest_all_test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + -rm -f fused-src/gtest/*.$(OBJEXT) + -rm -f samples/*.$(OBJEXT) + -rm -f samples/*.lo + -rm -f src/*.$(OBJEXT) + -rm -f src/*.lo + -rm -f test/*.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest-all.Po # am--include-marker +include fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest_main.Po # am--include-marker +include samples/$(DEPDIR)/sample1.Plo # am--include-marker +include samples/$(DEPDIR)/sample10_unittest.Po # am--include-marker +include samples/$(DEPDIR)/sample1_unittest.Po # am--include-marker +include samples/$(DEPDIR)/sample2.Plo # am--include-marker +include samples/$(DEPDIR)/sample4.Plo # am--include-marker +include samples/$(DEPDIR)/test_fused_gtest_test-sample1.Po # am--include-marker +include samples/$(DEPDIR)/test_fused_gtest_test-sample1_unittest.Po # am--include-marker +include src/$(DEPDIR)/gtest-all.Plo # am--include-marker +include src/$(DEPDIR)/gtest_main.Plo # am--include-marker +include test/$(DEPDIR)/gtest_all_test.Po # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) + +.cc.o: + $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ + $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ + $(am__mv) $$depbase.Tpo $$depbase.Po +# $(AM_V_CXX)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ +# $(AM_V_CXX_no)$(CXXCOMPILE) -c -o $@ $< + +.cc.obj: + $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ + $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ + $(am__mv) $$depbase.Tpo $$depbase.Po +# $(AM_V_CXX)source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ +# $(AM_V_CXX_no)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cc.lo: + $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ + $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ + $(am__mv) $$depbase.Tpo $$depbase.Plo +# $(AM_V_CXX)source='$<' object='$@' libtool=yes \ +# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ +# $(AM_V_CXX_no)$(LTCXXCOMPILE) -c -o $@ $< + +fused-src/gtest/test_fused_gtest_test-gtest-all.o: fused-src/gtest/gtest-all.cc + $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT fused-src/gtest/test_fused_gtest_test-gtest-all.o -MD -MP -MF fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest-all.Tpo -c -o fused-src/gtest/test_fused_gtest_test-gtest-all.o `test -f 'fused-src/gtest/gtest-all.cc' || echo '$(srcdir)/'`fused-src/gtest/gtest-all.cc + $(AM_V_at)$(am__mv) fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest-all.Tpo fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest-all.Po +# $(AM_V_CXX)source='fused-src/gtest/gtest-all.cc' object='fused-src/gtest/test_fused_gtest_test-gtest-all.o' libtool=no \ +# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ +# $(AM_V_CXX_no)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o fused-src/gtest/test_fused_gtest_test-gtest-all.o `test -f 'fused-src/gtest/gtest-all.cc' || echo '$(srcdir)/'`fused-src/gtest/gtest-all.cc + +fused-src/gtest/test_fused_gtest_test-gtest-all.obj: fused-src/gtest/gtest-all.cc + $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT fused-src/gtest/test_fused_gtest_test-gtest-all.obj -MD -MP -MF fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest-all.Tpo -c -o fused-src/gtest/test_fused_gtest_test-gtest-all.obj `if test -f 'fused-src/gtest/gtest-all.cc'; then $(CYGPATH_W) 'fused-src/gtest/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/fused-src/gtest/gtest-all.cc'; fi` + $(AM_V_at)$(am__mv) fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest-all.Tpo fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest-all.Po +# $(AM_V_CXX)source='fused-src/gtest/gtest-all.cc' object='fused-src/gtest/test_fused_gtest_test-gtest-all.obj' libtool=no \ +# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ +# $(AM_V_CXX_no)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o fused-src/gtest/test_fused_gtest_test-gtest-all.obj `if test -f 'fused-src/gtest/gtest-all.cc'; then $(CYGPATH_W) 'fused-src/gtest/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/fused-src/gtest/gtest-all.cc'; fi` + +fused-src/gtest/test_fused_gtest_test-gtest_main.o: fused-src/gtest/gtest_main.cc + $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT fused-src/gtest/test_fused_gtest_test-gtest_main.o -MD -MP -MF fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest_main.Tpo -c -o fused-src/gtest/test_fused_gtest_test-gtest_main.o `test -f 'fused-src/gtest/gtest_main.cc' || echo '$(srcdir)/'`fused-src/gtest/gtest_main.cc + $(AM_V_at)$(am__mv) fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest_main.Tpo fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest_main.Po +# $(AM_V_CXX)source='fused-src/gtest/gtest_main.cc' object='fused-src/gtest/test_fused_gtest_test-gtest_main.o' libtool=no \ +# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ +# $(AM_V_CXX_no)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o fused-src/gtest/test_fused_gtest_test-gtest_main.o `test -f 'fused-src/gtest/gtest_main.cc' || echo '$(srcdir)/'`fused-src/gtest/gtest_main.cc + +fused-src/gtest/test_fused_gtest_test-gtest_main.obj: fused-src/gtest/gtest_main.cc + $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT fused-src/gtest/test_fused_gtest_test-gtest_main.obj -MD -MP -MF fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest_main.Tpo -c -o fused-src/gtest/test_fused_gtest_test-gtest_main.obj `if test -f 'fused-src/gtest/gtest_main.cc'; then $(CYGPATH_W) 'fused-src/gtest/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/fused-src/gtest/gtest_main.cc'; fi` + $(AM_V_at)$(am__mv) fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest_main.Tpo fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest_main.Po +# $(AM_V_CXX)source='fused-src/gtest/gtest_main.cc' object='fused-src/gtest/test_fused_gtest_test-gtest_main.obj' libtool=no \ +# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ +# $(AM_V_CXX_no)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o fused-src/gtest/test_fused_gtest_test-gtest_main.obj `if test -f 'fused-src/gtest/gtest_main.cc'; then $(CYGPATH_W) 'fused-src/gtest/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/fused-src/gtest/gtest_main.cc'; fi` + +samples/test_fused_gtest_test-sample1.o: samples/sample1.cc + $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT samples/test_fused_gtest_test-sample1.o -MD -MP -MF samples/$(DEPDIR)/test_fused_gtest_test-sample1.Tpo -c -o samples/test_fused_gtest_test-sample1.o `test -f 'samples/sample1.cc' || echo '$(srcdir)/'`samples/sample1.cc + $(AM_V_at)$(am__mv) samples/$(DEPDIR)/test_fused_gtest_test-sample1.Tpo samples/$(DEPDIR)/test_fused_gtest_test-sample1.Po +# $(AM_V_CXX)source='samples/sample1.cc' object='samples/test_fused_gtest_test-sample1.o' libtool=no \ +# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ +# $(AM_V_CXX_no)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o samples/test_fused_gtest_test-sample1.o `test -f 'samples/sample1.cc' || echo '$(srcdir)/'`samples/sample1.cc + +samples/test_fused_gtest_test-sample1.obj: samples/sample1.cc + $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT samples/test_fused_gtest_test-sample1.obj -MD -MP -MF samples/$(DEPDIR)/test_fused_gtest_test-sample1.Tpo -c -o samples/test_fused_gtest_test-sample1.obj `if test -f 'samples/sample1.cc'; then $(CYGPATH_W) 'samples/sample1.cc'; else $(CYGPATH_W) '$(srcdir)/samples/sample1.cc'; fi` + $(AM_V_at)$(am__mv) samples/$(DEPDIR)/test_fused_gtest_test-sample1.Tpo samples/$(DEPDIR)/test_fused_gtest_test-sample1.Po +# $(AM_V_CXX)source='samples/sample1.cc' object='samples/test_fused_gtest_test-sample1.obj' libtool=no \ +# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ +# $(AM_V_CXX_no)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o samples/test_fused_gtest_test-sample1.obj `if test -f 'samples/sample1.cc'; then $(CYGPATH_W) 'samples/sample1.cc'; else $(CYGPATH_W) '$(srcdir)/samples/sample1.cc'; fi` + +samples/test_fused_gtest_test-sample1_unittest.o: samples/sample1_unittest.cc + $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT samples/test_fused_gtest_test-sample1_unittest.o -MD -MP -MF samples/$(DEPDIR)/test_fused_gtest_test-sample1_unittest.Tpo -c -o samples/test_fused_gtest_test-sample1_unittest.o `test -f 'samples/sample1_unittest.cc' || echo '$(srcdir)/'`samples/sample1_unittest.cc + $(AM_V_at)$(am__mv) samples/$(DEPDIR)/test_fused_gtest_test-sample1_unittest.Tpo samples/$(DEPDIR)/test_fused_gtest_test-sample1_unittest.Po +# $(AM_V_CXX)source='samples/sample1_unittest.cc' object='samples/test_fused_gtest_test-sample1_unittest.o' libtool=no \ +# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ +# $(AM_V_CXX_no)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o samples/test_fused_gtest_test-sample1_unittest.o `test -f 'samples/sample1_unittest.cc' || echo '$(srcdir)/'`samples/sample1_unittest.cc + +samples/test_fused_gtest_test-sample1_unittest.obj: samples/sample1_unittest.cc + $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT samples/test_fused_gtest_test-sample1_unittest.obj -MD -MP -MF samples/$(DEPDIR)/test_fused_gtest_test-sample1_unittest.Tpo -c -o samples/test_fused_gtest_test-sample1_unittest.obj `if test -f 'samples/sample1_unittest.cc'; then $(CYGPATH_W) 'samples/sample1_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/samples/sample1_unittest.cc'; fi` + $(AM_V_at)$(am__mv) samples/$(DEPDIR)/test_fused_gtest_test-sample1_unittest.Tpo samples/$(DEPDIR)/test_fused_gtest_test-sample1_unittest.Po +# $(AM_V_CXX)source='samples/sample1_unittest.cc' object='samples/test_fused_gtest_test-sample1_unittest.obj' libtool=no \ +# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \ +# $(AM_V_CXX_no)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o samples/test_fused_gtest_test-sample1_unittest.obj `if test -f 'samples/sample1_unittest.cc'; then $(CYGPATH_W) 'samples/sample1_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/samples/sample1_unittest.cc'; fi` + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + -rm -rf lib/.libs lib/_libs + -rm -rf samples/.libs samples/_libs + -rm -rf src/.libs src/_libs + -rm -rf test/.libs test/_libs + +distclean-libtool: + -rm -f libtool config.lt +install-m4dataDATA: $(m4data_DATA) + @$(NORMAL_INSTALL) + @list='$(m4data_DATA)'; test -n "$(m4datadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(m4datadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(m4datadir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(m4datadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(m4datadir)" || exit $$?; \ + done + +uninstall-m4dataDATA: + @$(NORMAL_UNINSTALL) + @list='$(m4data_DATA)'; test -n "$(m4datadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(m4datadir)'; $(am__uninstall_files_from_dir) +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) +install-pkginclude_internalHEADERS: $(pkginclude_internal_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_internal_HEADERS)'; test -n "$(pkginclude_internaldir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkginclude_internaldir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkginclude_internaldir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkginclude_internaldir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkginclude_internaldir)" || exit $$?; \ + done + +uninstall-pkginclude_internalHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_internal_HEADERS)'; test -n "$(pkginclude_internaldir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkginclude_internaldir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscope: cscope.files + test ! -s cscope.files \ + || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +clean-cscope: + -rm -f cscope.files +cscope.files: clean-cscope cscopelist +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + elif test -n "$$redo_logs"; then \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: $(check_PROGRAMS) + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +samples/sample1_unittest.log: samples/sample1_unittest$(EXEEXT) + @p='samples/sample1_unittest$(EXEEXT)'; \ + b='samples/sample1_unittest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +samples/sample10_unittest.log: samples/sample10_unittest$(EXEEXT) + @p='samples/sample10_unittest$(EXEEXT)'; \ + b='samples/sample10_unittest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test/gtest_all_test.log: test/gtest_all_test$(EXEEXT) + @p='test/gtest_all_test$(EXEEXT)'; \ + b='test/gtest_all_test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test/fused_gtest_test.log: test/fused_gtest_test$(EXEEXT) + @p='test/fused_gtest_test$(EXEEXT)'; \ + b='test/fused_gtest_test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +#.test$(EXEEXT).log: +# @p='$<'; \ +# $(am__set_b); \ +# $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +# --log-file $$b.log --trs-file $$b.trs \ +# $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +# "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + $(am__remove_distdir) + test -d "$(distdir)" || mkdir "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz + $(am__post_remove_distdir) +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__post_remove_distdir) + +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + $(am__post_remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + $(am__post_remove_distdir) + +dist-tarZ: distdir + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__post_remove_distdir) + +dist-shar: distdir + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz + $(am__post_remove_distdir) +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__post_remove_distdir) + +dist dist-all: + $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' + $(am__post_remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir) + chmod u+w $(distdir) + mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build/sub \ + && ../../configure \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + --srcdir=../.. --prefix="$$dc_install_base" \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__post_remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(m4datadir)" "$(DESTDIR)$(pkgincludedir)" "$(DESTDIR)$(pkginclude_internaldir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -rm -f fused-src/gtest/$(DEPDIR)/$(am__dirstamp) + -rm -f fused-src/gtest/$(am__dirstamp) + -rm -f lib/$(am__dirstamp) + -rm -f samples/$(DEPDIR)/$(am__dirstamp) + -rm -f samples/$(am__dirstamp) + -rm -f src/$(DEPDIR)/$(am__dirstamp) + -rm -f src/$(am__dirstamp) + -rm -f test/$(DEPDIR)/$(am__dirstamp) + -rm -f test/$(am__dirstamp) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +maintainer-clean-local: +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libLTLIBRARIES \ + clean-libtool clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest-all.Po + -rm -f fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest_main.Po + -rm -f samples/$(DEPDIR)/sample1.Plo + -rm -f samples/$(DEPDIR)/sample10_unittest.Po + -rm -f samples/$(DEPDIR)/sample1_unittest.Po + -rm -f samples/$(DEPDIR)/sample2.Plo + -rm -f samples/$(DEPDIR)/sample4.Plo + -rm -f samples/$(DEPDIR)/test_fused_gtest_test-sample1.Po + -rm -f samples/$(DEPDIR)/test_fused_gtest_test-sample1_unittest.Po + -rm -f src/$(DEPDIR)/gtest-all.Plo + -rm -f src/$(DEPDIR)/gtest_main.Plo + -rm -f test/$(DEPDIR)/gtest_all_test.Po + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-hdr distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-data-local install-m4dataDATA \ + install-pkgincludeHEADERS install-pkginclude_internalHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-exec-local install-libLTLIBRARIES + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest-all.Po + -rm -f fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest_main.Po + -rm -f samples/$(DEPDIR)/sample1.Plo + -rm -f samples/$(DEPDIR)/sample10_unittest.Po + -rm -f samples/$(DEPDIR)/sample1_unittest.Po + -rm -f samples/$(DEPDIR)/sample2.Plo + -rm -f samples/$(DEPDIR)/sample4.Plo + -rm -f samples/$(DEPDIR)/test_fused_gtest_test-sample1.Po + -rm -f samples/$(DEPDIR)/test_fused_gtest_test-sample1_unittest.Po + -rm -f src/$(DEPDIR)/gtest-all.Plo + -rm -f src/$(DEPDIR)/gtest_main.Plo + -rm -f test/$(DEPDIR)/gtest_all_test.Po + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic \ + maintainer-clean-local + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-libLTLIBRARIES uninstall-m4dataDATA \ + uninstall-pkgincludeHEADERS \ + uninstall-pkginclude_internalHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles am--refresh check \ + check-TESTS check-am clean clean-checkPROGRAMS clean-cscope \ + clean-generic clean-libLTLIBRARIES clean-libtool \ + clean-noinstLTLIBRARIES cscope cscopelist-am ctags ctags-am \ + dist dist-all dist-bzip2 dist-gzip dist-lzip dist-shar \ + dist-tarZ dist-xz dist-zip distcheck distclean \ + distclean-compile distclean-generic distclean-hdr \ + distclean-libtool distclean-tags distcleancheck distdir \ + distuninstallcheck dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am \ + install-data-local install-dvi install-dvi-am install-exec \ + install-exec-am install-exec-local install-html \ + install-html-am install-info install-info-am \ + install-libLTLIBRARIES install-m4dataDATA install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-pkginclude_internalHEADERS install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic \ + maintainer-clean-local mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-libLTLIBRARIES uninstall-m4dataDATA \ + uninstall-pkgincludeHEADERS \ + uninstall-pkginclude_internalHEADERS + +.PRECIOUS: Makefile + + +# Build rules for putting fused Google Test files into the distribution +# package. The user can also create those files by manually running +# scripts/fuse_gtest_files.py. +#$(test_fused_gtest_test_SOURCES): fused-gtest + +#fused-gtest: $(pkginclude_HEADERS) $(pkginclude_internal_HEADERS) \ +# $(GTEST_SRC) src/gtest-all.cc src/gtest_main.cc \ +# scripts/fuse_gtest_files.py +# mkdir -p "$(srcdir)/fused-src" +# chmod -R u+w "$(srcdir)/fused-src" +# rm -f "$(srcdir)/fused-src/gtest/gtest-all.cc" +# rm -f "$(srcdir)/fused-src/gtest/gtest.h" +# "$(srcdir)/scripts/fuse_gtest_files.py" "$(srcdir)/fused-src" +# cp -f "$(srcdir)/src/gtest_main.cc" "$(srcdir)/fused-src/gtest/" + +#maintainer-clean-local: +# rm -rf "$(srcdir)/fused-src" + +# Disables 'make install' as installing a compiled version of Google +# Test can lead to undefined behavior due to violation of the +# One-Definition Rule. + +install-exec-local: + echo "'make install' is dangerous and not supported. Instead, see README for how to integrate Google Test into your build system." + false + +install-data-local: + echo "'make install' is dangerous and not supported. Instead, see README for how to integrate Google Test into your build system." + false + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/thirdparty/protobuf-2.6.1/gtest/Makefile.am b/thirdparty/protobuf-2.6.1/gtest/Makefile.am new file mode 100644 index 00000000..788c475f --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/Makefile.am @@ -0,0 +1,305 @@ +# Automake file + +ACLOCAL_AMFLAGS = -I m4 + +# Nonstandard package files for distribution +EXTRA_DIST = \ + CHANGES \ + CONTRIBUTORS \ + LICENSE \ + include/gtest/gtest-param-test.h.pump \ + include/gtest/internal/gtest-param-util-generated.h.pump \ + include/gtest/internal/gtest-tuple.h.pump \ + include/gtest/internal/gtest-type-util.h.pump \ + make/Makefile \ + scripts/fuse_gtest_files.py \ + scripts/gen_gtest_pred_impl.py \ + scripts/pump.py \ + scripts/test/Makefile + +# gtest source files that we don't compile directly. They are +# #included by gtest-all.cc. +GTEST_SRC = \ + src/gtest-death-test.cc \ + src/gtest-filepath.cc \ + src/gtest-internal-inl.h \ + src/gtest-port.cc \ + src/gtest-printers.cc \ + src/gtest-test-part.cc \ + src/gtest-typed-test.cc \ + src/gtest.cc + +EXTRA_DIST += $(GTEST_SRC) + +# Sample files that we don't compile. +EXTRA_DIST += \ + samples/prime_tables.h \ + samples/sample2_unittest.cc \ + samples/sample3_unittest.cc \ + samples/sample4_unittest.cc \ + samples/sample5_unittest.cc \ + samples/sample6_unittest.cc \ + samples/sample7_unittest.cc \ + samples/sample8_unittest.cc \ + samples/sample9_unittest.cc + +# C++ test files that we don't compile directly. +EXTRA_DIST += \ + test/gtest-death-test_ex_test.cc \ + test/gtest-death-test_test.cc \ + test/gtest-filepath_test.cc \ + test/gtest-linked_ptr_test.cc \ + test/gtest-listener_test.cc \ + test/gtest-message_test.cc \ + test/gtest-options_test.cc \ + test/gtest-param-test2_test.cc \ + test/gtest-param-test2_test.cc \ + test/gtest-param-test_test.cc \ + test/gtest-param-test_test.cc \ + test/gtest-param-test_test.h \ + test/gtest-port_test.cc \ + test/gtest-printers_test.cc \ + test/gtest-test-part_test.cc \ + test/gtest-tuple_test.cc \ + test/gtest-typed-test2_test.cc \ + test/gtest-typed-test_test.cc \ + test/gtest-typed-test_test.h \ + test/gtest-unittest-api_test.cc \ + test/gtest_break_on_failure_unittest_.cc \ + test/gtest_catch_exceptions_test_.cc \ + test/gtest_color_test_.cc \ + test/gtest_env_var_test_.cc \ + test/gtest_environment_test.cc \ + test/gtest_filter_unittest_.cc \ + test/gtest_help_test_.cc \ + test/gtest_list_tests_unittest_.cc \ + test/gtest_main_unittest.cc \ + test/gtest_no_test_unittest.cc \ + test/gtest_output_test_.cc \ + test/gtest_pred_impl_unittest.cc \ + test/gtest_prod_test.cc \ + test/gtest_repeat_test.cc \ + test/gtest_shuffle_test_.cc \ + test/gtest_sole_header_test.cc \ + test/gtest_stress_test.cc \ + test/gtest_throw_on_failure_ex_test.cc \ + test/gtest_throw_on_failure_test_.cc \ + test/gtest_uninitialized_test_.cc \ + test/gtest_unittest.cc \ + test/gtest_unittest.cc \ + test/gtest_xml_outfile1_test_.cc \ + test/gtest_xml_outfile2_test_.cc \ + test/gtest_xml_output_unittest_.cc \ + test/production.cc \ + test/production.h + +# Python tests that we don't run. +EXTRA_DIST += \ + test/gtest_break_on_failure_unittest.py \ + test/gtest_catch_exceptions_test.py \ + test/gtest_color_test.py \ + test/gtest_env_var_test.py \ + test/gtest_filter_unittest.py \ + test/gtest_help_test.py \ + test/gtest_list_tests_unittest.py \ + test/gtest_output_test.py \ + test/gtest_output_test_golden_lin.txt \ + test/gtest_shuffle_test.py \ + test/gtest_test_utils.py \ + test/gtest_throw_on_failure_test.py \ + test/gtest_uninitialized_test.py \ + test/gtest_xml_outfiles_test.py \ + test/gtest_xml_output_unittest.py \ + test/gtest_xml_test_utils.py + +# CMake script +EXTRA_DIST += \ + CMakeLists.txt \ + cmake/internal_utils.cmake + +# MSVC project files +EXTRA_DIST += \ + msvc/gtest-md.sln \ + msvc/gtest-md.vcproj \ + msvc/gtest.sln \ + msvc/gtest.vcproj \ + msvc/gtest_main-md.vcproj \ + msvc/gtest_main.vcproj \ + msvc/gtest_prod_test-md.vcproj \ + msvc/gtest_prod_test.vcproj \ + msvc/gtest_unittest-md.vcproj \ + msvc/gtest_unittest.vcproj + +# xcode project files +EXTRA_DIST += \ + xcode/Config/DebugProject.xcconfig \ + xcode/Config/FrameworkTarget.xcconfig \ + xcode/Config/General.xcconfig \ + xcode/Config/ReleaseProject.xcconfig \ + xcode/Config/StaticLibraryTarget.xcconfig \ + xcode/Config/TestTarget.xcconfig \ + xcode/Resources/Info.plist \ + xcode/Scripts/runtests.sh \ + xcode/Scripts/versiongenerate.py \ + xcode/gtest.xcodeproj/project.pbxproj + +# xcode sample files +EXTRA_DIST += \ + xcode/Samples/FrameworkSample/Info.plist \ + xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj \ + xcode/Samples/FrameworkSample/runtests.sh \ + xcode/Samples/FrameworkSample/widget.cc \ + xcode/Samples/FrameworkSample/widget.h \ + xcode/Samples/FrameworkSample/widget_test.cc + +# C++Builder project files +EXTRA_DIST += \ + codegear/gtest.cbproj \ + codegear/gtest.groupproj \ + codegear/gtest_all.cc \ + codegear/gtest_link.cc \ + codegear/gtest_main.cbproj \ + codegear/gtest_unittest.cbproj + +# Distribute and install M4 macro +m4datadir = $(datadir)/aclocal +m4data_DATA = m4/gtest.m4 +EXTRA_DIST += $(m4data_DATA) + +# We define the global AM_CPPFLAGS as everything we compile includes from these +# directories. +AM_CPPFLAGS = -I$(srcdir) -I$(srcdir)/include + +# Modifies compiler and linker flags for pthreads compatibility. +if HAVE_PTHREADS + AM_CXXFLAGS = @PTHREAD_CFLAGS@ -DGTEST_HAS_PTHREAD=1 + AM_LIBS = @PTHREAD_LIBS@ +else + AM_CXXFLAGS = -DGTEST_HAS_PTHREAD=0 +endif + +# Build rules for libraries. +lib_LTLIBRARIES = lib/libgtest.la lib/libgtest_main.la + +lib_libgtest_la_SOURCES = src/gtest-all.cc + +pkginclude_HEADERS = \ + include/gtest/gtest-death-test.h \ + include/gtest/gtest-message.h \ + include/gtest/gtest-param-test.h \ + include/gtest/gtest-printers.h \ + include/gtest/gtest-spi.h \ + include/gtest/gtest-test-part.h \ + include/gtest/gtest-typed-test.h \ + include/gtest/gtest.h \ + include/gtest/gtest_pred_impl.h \ + include/gtest/gtest_prod.h + +pkginclude_internaldir = $(pkgincludedir)/internal +pkginclude_internal_HEADERS = \ + include/gtest/internal/gtest-death-test-internal.h \ + include/gtest/internal/gtest-filepath.h \ + include/gtest/internal/gtest-internal.h \ + include/gtest/internal/gtest-linked_ptr.h \ + include/gtest/internal/gtest-param-util-generated.h \ + include/gtest/internal/gtest-param-util.h \ + include/gtest/internal/gtest-port.h \ + include/gtest/internal/gtest-string.h \ + include/gtest/internal/gtest-tuple.h \ + include/gtest/internal/gtest-type-util.h + +lib_libgtest_main_la_SOURCES = src/gtest_main.cc +lib_libgtest_main_la_LIBADD = lib/libgtest.la + +# Bulid rules for samples and tests. Automake's naming for some of +# these variables isn't terribly obvious, so this is a brief +# reference: +# +# TESTS -- Programs run automatically by "make check" +# check_PROGRAMS -- Programs built by "make check" but not necessarily run + +noinst_LTLIBRARIES = samples/libsamples.la + +samples_libsamples_la_SOURCES = \ + samples/sample1.cc \ + samples/sample1.h \ + samples/sample2.cc \ + samples/sample2.h \ + samples/sample3-inl.h \ + samples/sample4.cc \ + samples/sample4.h + +TESTS= +TESTS_ENVIRONMENT = GTEST_SOURCE_DIR="$(srcdir)/test" \ + GTEST_BUILD_DIR="$(top_builddir)/test" +check_PROGRAMS= + +# A simple sample on using gtest. +TESTS += samples/sample1_unittest +check_PROGRAMS += samples/sample1_unittest +samples_sample1_unittest_SOURCES = samples/sample1_unittest.cc +samples_sample1_unittest_LDADD = lib/libgtest_main.la \ + lib/libgtest.la \ + samples/libsamples.la + +# Another sample. It also verifies that libgtest works. +TESTS += samples/sample10_unittest +check_PROGRAMS += samples/sample10_unittest +samples_sample10_unittest_SOURCES = samples/sample10_unittest.cc +samples_sample10_unittest_LDADD = lib/libgtest.la + +# This tests most constructs of gtest and verifies that libgtest_main +# and libgtest work. +TESTS += test/gtest_all_test +check_PROGRAMS += test/gtest_all_test +test_gtest_all_test_SOURCES = test/gtest_all_test.cc +test_gtest_all_test_LDADD = lib/libgtest_main.la \ + lib/libgtest.la + +# Tests that fused gtest files compile and work. +FUSED_GTEST_SRC = \ + fused-src/gtest/gtest-all.cc \ + fused-src/gtest/gtest.h \ + fused-src/gtest/gtest_main.cc + +if HAVE_PYTHON +TESTS += test/fused_gtest_test +check_PROGRAMS += test/fused_gtest_test +test_fused_gtest_test_SOURCES = $(FUSED_GTEST_SRC) \ + samples/sample1.cc samples/sample1_unittest.cc +test_fused_gtest_test_CPPFLAGS = -I"$(srcdir)/fused-src" + +# Build rules for putting fused Google Test files into the distribution +# package. The user can also create those files by manually running +# scripts/fuse_gtest_files.py. +$(test_fused_gtest_test_SOURCES): fused-gtest + +fused-gtest: $(pkginclude_HEADERS) $(pkginclude_internal_HEADERS) \ + $(GTEST_SRC) src/gtest-all.cc src/gtest_main.cc \ + scripts/fuse_gtest_files.py + mkdir -p "$(srcdir)/fused-src" + chmod -R u+w "$(srcdir)/fused-src" + rm -f "$(srcdir)/fused-src/gtest/gtest-all.cc" + rm -f "$(srcdir)/fused-src/gtest/gtest.h" + "$(srcdir)/scripts/fuse_gtest_files.py" "$(srcdir)/fused-src" + cp -f "$(srcdir)/src/gtest_main.cc" "$(srcdir)/fused-src/gtest/" + +maintainer-clean-local: + rm -rf "$(srcdir)/fused-src" +endif + +# Death tests may produce core dumps in the build directory. In case +# this happens, clean them to keep distcleancheck happy. +CLEANFILES = core + +# Disables 'make install' as installing a compiled version of Google +# Test can lead to undefined behavior due to violation of the +# One-Definition Rule. + +install-exec-local: + echo "'make install' is dangerous and not supported. Instead, see README for how to integrate Google Test into your build system." + false + +install-data-local: + echo "'make install' is dangerous and not supported. Instead, see README for how to integrate Google Test into your build system." + false diff --git a/thirdparty/protobuf-2.6.1/gtest/Makefile.in b/thirdparty/protobuf-2.6.1/gtest/Makefile.in new file mode 100644 index 00000000..9b20a3b2 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/Makefile.in @@ -0,0 +1,1817 @@ +# Makefile.in generated by automake 1.16.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2018 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Automake file + + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +TESTS = samples/sample1_unittest$(EXEEXT) \ + samples/sample10_unittest$(EXEEXT) \ + test/gtest_all_test$(EXEEXT) $(am__EXEEXT_1) +check_PROGRAMS = samples/sample1_unittest$(EXEEXT) \ + samples/sample10_unittest$(EXEEXT) \ + test/gtest_all_test$(EXEEXT) $(am__EXEEXT_1) +@HAVE_PYTHON_TRUE@am__append_1 = test/fused_gtest_test +@HAVE_PYTHON_TRUE@am__append_2 = test/fused_gtest_test +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/m4/acx_pthread.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ + $(am__configure_deps) $(pkginclude_HEADERS) \ + $(pkginclude_internal_HEADERS) $(am__DIST_COMMON) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/build-aux/config.h +CONFIG_CLEAN_FILES = scripts/gtest-config +CONFIG_CLEAN_VPATH_FILES = +@HAVE_PYTHON_TRUE@am__EXEEXT_1 = test/fused_gtest_test$(EXEEXT) +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(m4datadir)" \ + "$(DESTDIR)$(pkgincludedir)" \ + "$(DESTDIR)$(pkginclude_internaldir)" +LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES) +lib_libgtest_la_LIBADD = +am__dirstamp = $(am__leading_dot)dirstamp +am_lib_libgtest_la_OBJECTS = src/gtest-all.lo +lib_libgtest_la_OBJECTS = $(am_lib_libgtest_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +lib_libgtest_main_la_DEPENDENCIES = lib/libgtest.la +am_lib_libgtest_main_la_OBJECTS = src/gtest_main.lo +lib_libgtest_main_la_OBJECTS = $(am_lib_libgtest_main_la_OBJECTS) +samples_libsamples_la_LIBADD = +am_samples_libsamples_la_OBJECTS = samples/sample1.lo \ + samples/sample2.lo samples/sample4.lo +samples_libsamples_la_OBJECTS = $(am_samples_libsamples_la_OBJECTS) +am_samples_sample10_unittest_OBJECTS = \ + samples/sample10_unittest.$(OBJEXT) +samples_sample10_unittest_OBJECTS = \ + $(am_samples_sample10_unittest_OBJECTS) +samples_sample10_unittest_DEPENDENCIES = lib/libgtest.la +am_samples_sample1_unittest_OBJECTS = \ + samples/sample1_unittest.$(OBJEXT) +samples_sample1_unittest_OBJECTS = \ + $(am_samples_sample1_unittest_OBJECTS) +samples_sample1_unittest_DEPENDENCIES = lib/libgtest_main.la \ + lib/libgtest.la samples/libsamples.la +am__test_fused_gtest_test_SOURCES_DIST = fused-src/gtest/gtest-all.cc \ + fused-src/gtest/gtest.h fused-src/gtest/gtest_main.cc \ + samples/sample1.cc samples/sample1_unittest.cc +am__objects_1 = \ + fused-src/gtest/test_fused_gtest_test-gtest-all.$(OBJEXT) \ + fused-src/gtest/test_fused_gtest_test-gtest_main.$(OBJEXT) +@HAVE_PYTHON_TRUE@am_test_fused_gtest_test_OBJECTS = $(am__objects_1) \ +@HAVE_PYTHON_TRUE@ samples/test_fused_gtest_test-sample1.$(OBJEXT) \ +@HAVE_PYTHON_TRUE@ samples/test_fused_gtest_test-sample1_unittest.$(OBJEXT) +test_fused_gtest_test_OBJECTS = $(am_test_fused_gtest_test_OBJECTS) +test_fused_gtest_test_LDADD = $(LDADD) +am_test_gtest_all_test_OBJECTS = test/gtest_all_test.$(OBJEXT) +test_gtest_all_test_OBJECTS = $(am_test_gtest_all_test_OBJECTS) +test_gtest_all_test_DEPENDENCIES = lib/libgtest_main.la \ + lib/libgtest.la +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/build-aux +depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp +am__maybe_remake_depfiles = depfiles +am__depfiles_remade = \ + fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest-all.Po \ + fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest_main.Po \ + samples/$(DEPDIR)/sample1.Plo \ + samples/$(DEPDIR)/sample10_unittest.Po \ + samples/$(DEPDIR)/sample1_unittest.Po \ + samples/$(DEPDIR)/sample2.Plo samples/$(DEPDIR)/sample4.Plo \ + samples/$(DEPDIR)/test_fused_gtest_test-sample1.Po \ + samples/$(DEPDIR)/test_fused_gtest_test-sample1_unittest.Po \ + src/$(DEPDIR)/gtest-all.Plo src/$(DEPDIR)/gtest_main.Plo \ + test/$(DEPDIR)/gtest_all_test.Po +am__mv = mv -f +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CXXFLAGS) $(CXXFLAGS) +AM_V_CXX = $(am__v_CXX_@AM_V@) +am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) +am__v_CXX_0 = @echo " CXX " $@; +am__v_CXX_1 = +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) +am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) +am__v_CXXLD_0 = @echo " CXXLD " $@; +am__v_CXXLD_1 = +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(lib_libgtest_la_SOURCES) $(lib_libgtest_main_la_SOURCES) \ + $(samples_libsamples_la_SOURCES) \ + $(samples_sample10_unittest_SOURCES) \ + $(samples_sample1_unittest_SOURCES) \ + $(test_fused_gtest_test_SOURCES) \ + $(test_gtest_all_test_SOURCES) +DIST_SOURCES = $(lib_libgtest_la_SOURCES) \ + $(lib_libgtest_main_la_SOURCES) \ + $(samples_libsamples_la_SOURCES) \ + $(samples_sample10_unittest_SOURCES) \ + $(samples_sample1_unittest_SOURCES) \ + $(am__test_fused_gtest_test_SOURCES_DIST) \ + $(test_gtest_all_test_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +DATA = $(m4data_DATA) +HEADERS = $(pkginclude_HEADERS) $(pkginclude_internal_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +CSCOPE = cscope +AM_RECURSIVE_TARGETS = cscope check recheck +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/build-aux/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/build-aux/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/build-aux/compile \ + $(top_srcdir)/build-aux/config.guess \ + $(top_srcdir)/build-aux/config.h.in \ + $(top_srcdir)/build-aux/config.sub \ + $(top_srcdir)/build-aux/depcomp \ + $(top_srcdir)/build-aux/install-sh \ + $(top_srcdir)/build-aux/ltmain.sh \ + $(top_srcdir)/build-aux/missing \ + $(top_srcdir)/build-aux/test-driver \ + $(top_srcdir)/scripts/gtest-config.in README build-aux/compile \ + build-aux/config.guess build-aux/config.sub build-aux/depcomp \ + build-aux/install-sh build-aux/ltmain.sh build-aux/missing +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi +am__post_remove_distdir = $(am__remove_distdir) +DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2 $(distdir).zip +GZIP_ENV = --best +DIST_TARGETS = dist-bzip2 dist-gzip dist-zip +distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PTHREAD_CC = @PTHREAD_CC@ +PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ +PTHREAD_LIBS = @PTHREAD_LIBS@ +PYTHON = @PYTHON@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +acx_pthread_config = @acx_pthread_config@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +ACLOCAL_AMFLAGS = -I m4 + +# Nonstandard package files for distribution + +# Sample files that we don't compile. + +# C++ test files that we don't compile directly. + +# Python tests that we don't run. + +# CMake script + +# MSVC project files + +# xcode project files + +# xcode sample files + +# C++Builder project files +EXTRA_DIST = CHANGES CONTRIBUTORS LICENSE \ + include/gtest/gtest-param-test.h.pump \ + include/gtest/internal/gtest-param-util-generated.h.pump \ + include/gtest/internal/gtest-tuple.h.pump \ + include/gtest/internal/gtest-type-util.h.pump make/Makefile \ + scripts/fuse_gtest_files.py scripts/gen_gtest_pred_impl.py \ + scripts/pump.py scripts/test/Makefile $(GTEST_SRC) \ + samples/prime_tables.h samples/sample2_unittest.cc \ + samples/sample3_unittest.cc samples/sample4_unittest.cc \ + samples/sample5_unittest.cc samples/sample6_unittest.cc \ + samples/sample7_unittest.cc samples/sample8_unittest.cc \ + samples/sample9_unittest.cc test/gtest-death-test_ex_test.cc \ + test/gtest-death-test_test.cc test/gtest-filepath_test.cc \ + test/gtest-linked_ptr_test.cc test/gtest-listener_test.cc \ + test/gtest-message_test.cc test/gtest-options_test.cc \ + test/gtest-param-test2_test.cc test/gtest-param-test2_test.cc \ + test/gtest-param-test_test.cc test/gtest-param-test_test.cc \ + test/gtest-param-test_test.h test/gtest-port_test.cc \ + test/gtest-printers_test.cc test/gtest-test-part_test.cc \ + test/gtest-tuple_test.cc test/gtest-typed-test2_test.cc \ + test/gtest-typed-test_test.cc test/gtest-typed-test_test.h \ + test/gtest-unittest-api_test.cc \ + test/gtest_break_on_failure_unittest_.cc \ + test/gtest_catch_exceptions_test_.cc test/gtest_color_test_.cc \ + test/gtest_env_var_test_.cc test/gtest_environment_test.cc \ + test/gtest_filter_unittest_.cc test/gtest_help_test_.cc \ + test/gtest_list_tests_unittest_.cc test/gtest_main_unittest.cc \ + test/gtest_no_test_unittest.cc test/gtest_output_test_.cc \ + test/gtest_pred_impl_unittest.cc test/gtest_prod_test.cc \ + test/gtest_repeat_test.cc test/gtest_shuffle_test_.cc \ + test/gtest_sole_header_test.cc test/gtest_stress_test.cc \ + test/gtest_throw_on_failure_ex_test.cc \ + test/gtest_throw_on_failure_test_.cc \ + test/gtest_uninitialized_test_.cc test/gtest_unittest.cc \ + test/gtest_unittest.cc test/gtest_xml_outfile1_test_.cc \ + test/gtest_xml_outfile2_test_.cc \ + test/gtest_xml_output_unittest_.cc test/production.cc \ + test/production.h test/gtest_break_on_failure_unittest.py \ + test/gtest_catch_exceptions_test.py test/gtest_color_test.py \ + test/gtest_env_var_test.py test/gtest_filter_unittest.py \ + test/gtest_help_test.py test/gtest_list_tests_unittest.py \ + test/gtest_output_test.py \ + test/gtest_output_test_golden_lin.txt \ + test/gtest_shuffle_test.py test/gtest_test_utils.py \ + test/gtest_throw_on_failure_test.py \ + test/gtest_uninitialized_test.py \ + test/gtest_xml_outfiles_test.py \ + test/gtest_xml_output_unittest.py test/gtest_xml_test_utils.py \ + CMakeLists.txt cmake/internal_utils.cmake msvc/gtest-md.sln \ + msvc/gtest-md.vcproj msvc/gtest.sln msvc/gtest.vcproj \ + msvc/gtest_main-md.vcproj msvc/gtest_main.vcproj \ + msvc/gtest_prod_test-md.vcproj msvc/gtest_prod_test.vcproj \ + msvc/gtest_unittest-md.vcproj msvc/gtest_unittest.vcproj \ + xcode/Config/DebugProject.xcconfig \ + xcode/Config/FrameworkTarget.xcconfig \ + xcode/Config/General.xcconfig \ + xcode/Config/ReleaseProject.xcconfig \ + xcode/Config/StaticLibraryTarget.xcconfig \ + xcode/Config/TestTarget.xcconfig xcode/Resources/Info.plist \ + xcode/Scripts/runtests.sh xcode/Scripts/versiongenerate.py \ + xcode/gtest.xcodeproj/project.pbxproj \ + xcode/Samples/FrameworkSample/Info.plist \ + xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj \ + xcode/Samples/FrameworkSample/runtests.sh \ + xcode/Samples/FrameworkSample/widget.cc \ + xcode/Samples/FrameworkSample/widget.h \ + xcode/Samples/FrameworkSample/widget_test.cc \ + codegear/gtest.cbproj codegear/gtest.groupproj \ + codegear/gtest_all.cc codegear/gtest_link.cc \ + codegear/gtest_main.cbproj codegear/gtest_unittest.cbproj \ + $(m4data_DATA) + +# gtest source files that we don't compile directly. They are +# #included by gtest-all.cc. +GTEST_SRC = \ + src/gtest-death-test.cc \ + src/gtest-filepath.cc \ + src/gtest-internal-inl.h \ + src/gtest-port.cc \ + src/gtest-printers.cc \ + src/gtest-test-part.cc \ + src/gtest-typed-test.cc \ + src/gtest.cc + + +# Distribute and install M4 macro +m4datadir = $(datadir)/aclocal +m4data_DATA = m4/gtest.m4 + +# We define the global AM_CPPFLAGS as everything we compile includes from these +# directories. +AM_CPPFLAGS = -I$(srcdir) -I$(srcdir)/include +@HAVE_PTHREADS_FALSE@AM_CXXFLAGS = -DGTEST_HAS_PTHREAD=0 + +# Modifies compiler and linker flags for pthreads compatibility. +@HAVE_PTHREADS_TRUE@AM_CXXFLAGS = @PTHREAD_CFLAGS@ -DGTEST_HAS_PTHREAD=1 +@HAVE_PTHREADS_TRUE@AM_LIBS = @PTHREAD_LIBS@ + +# Build rules for libraries. +lib_LTLIBRARIES = lib/libgtest.la lib/libgtest_main.la +lib_libgtest_la_SOURCES = src/gtest-all.cc +pkginclude_HEADERS = \ + include/gtest/gtest-death-test.h \ + include/gtest/gtest-message.h \ + include/gtest/gtest-param-test.h \ + include/gtest/gtest-printers.h \ + include/gtest/gtest-spi.h \ + include/gtest/gtest-test-part.h \ + include/gtest/gtest-typed-test.h \ + include/gtest/gtest.h \ + include/gtest/gtest_pred_impl.h \ + include/gtest/gtest_prod.h + +pkginclude_internaldir = $(pkgincludedir)/internal +pkginclude_internal_HEADERS = \ + include/gtest/internal/gtest-death-test-internal.h \ + include/gtest/internal/gtest-filepath.h \ + include/gtest/internal/gtest-internal.h \ + include/gtest/internal/gtest-linked_ptr.h \ + include/gtest/internal/gtest-param-util-generated.h \ + include/gtest/internal/gtest-param-util.h \ + include/gtest/internal/gtest-port.h \ + include/gtest/internal/gtest-string.h \ + include/gtest/internal/gtest-tuple.h \ + include/gtest/internal/gtest-type-util.h + +lib_libgtest_main_la_SOURCES = src/gtest_main.cc +lib_libgtest_main_la_LIBADD = lib/libgtest.la + +# Bulid rules for samples and tests. Automake's naming for some of +# these variables isn't terribly obvious, so this is a brief +# reference: +# +# TESTS -- Programs run automatically by "make check" +# check_PROGRAMS -- Programs built by "make check" but not necessarily run +noinst_LTLIBRARIES = samples/libsamples.la +samples_libsamples_la_SOURCES = \ + samples/sample1.cc \ + samples/sample1.h \ + samples/sample2.cc \ + samples/sample2.h \ + samples/sample3-inl.h \ + samples/sample4.cc \ + samples/sample4.h + +TESTS_ENVIRONMENT = GTEST_SOURCE_DIR="$(srcdir)/test" \ + GTEST_BUILD_DIR="$(top_builddir)/test" + +samples_sample1_unittest_SOURCES = samples/sample1_unittest.cc +samples_sample1_unittest_LDADD = lib/libgtest_main.la \ + lib/libgtest.la \ + samples/libsamples.la + +samples_sample10_unittest_SOURCES = samples/sample10_unittest.cc +samples_sample10_unittest_LDADD = lib/libgtest.la +test_gtest_all_test_SOURCES = test/gtest_all_test.cc +test_gtest_all_test_LDADD = lib/libgtest_main.la \ + lib/libgtest.la + + +# Tests that fused gtest files compile and work. +FUSED_GTEST_SRC = \ + fused-src/gtest/gtest-all.cc \ + fused-src/gtest/gtest.h \ + fused-src/gtest/gtest_main.cc + +@HAVE_PYTHON_TRUE@test_fused_gtest_test_SOURCES = $(FUSED_GTEST_SRC) \ +@HAVE_PYTHON_TRUE@ samples/sample1.cc samples/sample1_unittest.cc + +@HAVE_PYTHON_TRUE@test_fused_gtest_test_CPPFLAGS = -I"$(srcdir)/fused-src" + +# Death tests may produce core dumps in the build directory. In case +# this happens, clean them to keep distcleancheck happy. +CLEANFILES = core +all: all-am + +.SUFFIXES: +.SUFFIXES: .cc .lo .log .o .obj .test .test$(EXEEXT) .trs +am--refresh: Makefile + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): + +build-aux/config.h: build-aux/stamp-h1 + @test -f $@ || rm -f build-aux/stamp-h1 + @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) build-aux/stamp-h1 + +build-aux/stamp-h1: $(top_srcdir)/build-aux/config.h.in $(top_builddir)/config.status + @rm -f build-aux/stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status build-aux/config.h +$(top_srcdir)/build-aux/config.h.in: $(am__configure_deps) + ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) + rm -f build-aux/stamp-h1 + touch $@ + +distclean-hdr: + -rm -f build-aux/config.h build-aux/stamp-h1 +scripts/gtest-config: $(top_builddir)/config.status $(top_srcdir)/scripts/gtest-config.in + cd $(top_builddir) && $(SHELL) ./config.status $@ + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } +src/$(am__dirstamp): + @$(MKDIR_P) src + @: > src/$(am__dirstamp) +src/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) src/$(DEPDIR) + @: > src/$(DEPDIR)/$(am__dirstamp) +src/gtest-all.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) +lib/$(am__dirstamp): + @$(MKDIR_P) lib + @: > lib/$(am__dirstamp) + +lib/libgtest.la: $(lib_libgtest_la_OBJECTS) $(lib_libgtest_la_DEPENDENCIES) $(EXTRA_lib_libgtest_la_DEPENDENCIES) lib/$(am__dirstamp) + $(AM_V_CXXLD)$(CXXLINK) -rpath $(libdir) $(lib_libgtest_la_OBJECTS) $(lib_libgtest_la_LIBADD) $(LIBS) +src/gtest_main.lo: src/$(am__dirstamp) src/$(DEPDIR)/$(am__dirstamp) + +lib/libgtest_main.la: $(lib_libgtest_main_la_OBJECTS) $(lib_libgtest_main_la_DEPENDENCIES) $(EXTRA_lib_libgtest_main_la_DEPENDENCIES) lib/$(am__dirstamp) + $(AM_V_CXXLD)$(CXXLINK) -rpath $(libdir) $(lib_libgtest_main_la_OBJECTS) $(lib_libgtest_main_la_LIBADD) $(LIBS) +samples/$(am__dirstamp): + @$(MKDIR_P) samples + @: > samples/$(am__dirstamp) +samples/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) samples/$(DEPDIR) + @: > samples/$(DEPDIR)/$(am__dirstamp) +samples/sample1.lo: samples/$(am__dirstamp) \ + samples/$(DEPDIR)/$(am__dirstamp) +samples/sample2.lo: samples/$(am__dirstamp) \ + samples/$(DEPDIR)/$(am__dirstamp) +samples/sample4.lo: samples/$(am__dirstamp) \ + samples/$(DEPDIR)/$(am__dirstamp) + +samples/libsamples.la: $(samples_libsamples_la_OBJECTS) $(samples_libsamples_la_DEPENDENCIES) $(EXTRA_samples_libsamples_la_DEPENDENCIES) samples/$(am__dirstamp) + $(AM_V_CXXLD)$(CXXLINK) $(samples_libsamples_la_OBJECTS) $(samples_libsamples_la_LIBADD) $(LIBS) +samples/sample10_unittest.$(OBJEXT): samples/$(am__dirstamp) \ + samples/$(DEPDIR)/$(am__dirstamp) + +samples/sample10_unittest$(EXEEXT): $(samples_sample10_unittest_OBJECTS) $(samples_sample10_unittest_DEPENDENCIES) $(EXTRA_samples_sample10_unittest_DEPENDENCIES) samples/$(am__dirstamp) + @rm -f samples/sample10_unittest$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(samples_sample10_unittest_OBJECTS) $(samples_sample10_unittest_LDADD) $(LIBS) +samples/sample1_unittest.$(OBJEXT): samples/$(am__dirstamp) \ + samples/$(DEPDIR)/$(am__dirstamp) + +samples/sample1_unittest$(EXEEXT): $(samples_sample1_unittest_OBJECTS) $(samples_sample1_unittest_DEPENDENCIES) $(EXTRA_samples_sample1_unittest_DEPENDENCIES) samples/$(am__dirstamp) + @rm -f samples/sample1_unittest$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(samples_sample1_unittest_OBJECTS) $(samples_sample1_unittest_LDADD) $(LIBS) +fused-src/gtest/$(am__dirstamp): + @$(MKDIR_P) fused-src/gtest + @: > fused-src/gtest/$(am__dirstamp) +fused-src/gtest/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) fused-src/gtest/$(DEPDIR) + @: > fused-src/gtest/$(DEPDIR)/$(am__dirstamp) +fused-src/gtest/test_fused_gtest_test-gtest-all.$(OBJEXT): \ + fused-src/gtest/$(am__dirstamp) \ + fused-src/gtest/$(DEPDIR)/$(am__dirstamp) +fused-src/gtest/test_fused_gtest_test-gtest_main.$(OBJEXT): \ + fused-src/gtest/$(am__dirstamp) \ + fused-src/gtest/$(DEPDIR)/$(am__dirstamp) +samples/test_fused_gtest_test-sample1.$(OBJEXT): \ + samples/$(am__dirstamp) samples/$(DEPDIR)/$(am__dirstamp) +samples/test_fused_gtest_test-sample1_unittest.$(OBJEXT): \ + samples/$(am__dirstamp) samples/$(DEPDIR)/$(am__dirstamp) +test/$(am__dirstamp): + @$(MKDIR_P) test + @: > test/$(am__dirstamp) + +test/fused_gtest_test$(EXEEXT): $(test_fused_gtest_test_OBJECTS) $(test_fused_gtest_test_DEPENDENCIES) $(EXTRA_test_fused_gtest_test_DEPENDENCIES) test/$(am__dirstamp) + @rm -f test/fused_gtest_test$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(test_fused_gtest_test_OBJECTS) $(test_fused_gtest_test_LDADD) $(LIBS) +test/$(DEPDIR)/$(am__dirstamp): + @$(MKDIR_P) test/$(DEPDIR) + @: > test/$(DEPDIR)/$(am__dirstamp) +test/gtest_all_test.$(OBJEXT): test/$(am__dirstamp) \ + test/$(DEPDIR)/$(am__dirstamp) + +test/gtest_all_test$(EXEEXT): $(test_gtest_all_test_OBJECTS) $(test_gtest_all_test_DEPENDENCIES) $(EXTRA_test_gtest_all_test_DEPENDENCIES) test/$(am__dirstamp) + @rm -f test/gtest_all_test$(EXEEXT) + $(AM_V_CXXLD)$(CXXLINK) $(test_gtest_all_test_OBJECTS) $(test_gtest_all_test_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + -rm -f fused-src/gtest/*.$(OBJEXT) + -rm -f samples/*.$(OBJEXT) + -rm -f samples/*.lo + -rm -f src/*.$(OBJEXT) + -rm -f src/*.lo + -rm -f test/*.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest-all.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest_main.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@samples/$(DEPDIR)/sample1.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@samples/$(DEPDIR)/sample10_unittest.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@samples/$(DEPDIR)/sample1_unittest.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@samples/$(DEPDIR)/sample2.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@samples/$(DEPDIR)/sample4.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@samples/$(DEPDIR)/test_fused_gtest_test-sample1.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@samples/$(DEPDIR)/test_fused_gtest_test-sample1_unittest.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/gtest-all.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/gtest_main.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@test/$(DEPDIR)/gtest_all_test.Po@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) + +.cc.o: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< + +.cc.obj: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cc.lo: +@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ +@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< + +fused-src/gtest/test_fused_gtest_test-gtest-all.o: fused-src/gtest/gtest-all.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT fused-src/gtest/test_fused_gtest_test-gtest-all.o -MD -MP -MF fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest-all.Tpo -c -o fused-src/gtest/test_fused_gtest_test-gtest-all.o `test -f 'fused-src/gtest/gtest-all.cc' || echo '$(srcdir)/'`fused-src/gtest/gtest-all.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest-all.Tpo fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest-all.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fused-src/gtest/gtest-all.cc' object='fused-src/gtest/test_fused_gtest_test-gtest-all.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o fused-src/gtest/test_fused_gtest_test-gtest-all.o `test -f 'fused-src/gtest/gtest-all.cc' || echo '$(srcdir)/'`fused-src/gtest/gtest-all.cc + +fused-src/gtest/test_fused_gtest_test-gtest-all.obj: fused-src/gtest/gtest-all.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT fused-src/gtest/test_fused_gtest_test-gtest-all.obj -MD -MP -MF fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest-all.Tpo -c -o fused-src/gtest/test_fused_gtest_test-gtest-all.obj `if test -f 'fused-src/gtest/gtest-all.cc'; then $(CYGPATH_W) 'fused-src/gtest/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/fused-src/gtest/gtest-all.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest-all.Tpo fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest-all.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fused-src/gtest/gtest-all.cc' object='fused-src/gtest/test_fused_gtest_test-gtest-all.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o fused-src/gtest/test_fused_gtest_test-gtest-all.obj `if test -f 'fused-src/gtest/gtest-all.cc'; then $(CYGPATH_W) 'fused-src/gtest/gtest-all.cc'; else $(CYGPATH_W) '$(srcdir)/fused-src/gtest/gtest-all.cc'; fi` + +fused-src/gtest/test_fused_gtest_test-gtest_main.o: fused-src/gtest/gtest_main.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT fused-src/gtest/test_fused_gtest_test-gtest_main.o -MD -MP -MF fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest_main.Tpo -c -o fused-src/gtest/test_fused_gtest_test-gtest_main.o `test -f 'fused-src/gtest/gtest_main.cc' || echo '$(srcdir)/'`fused-src/gtest/gtest_main.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest_main.Tpo fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest_main.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fused-src/gtest/gtest_main.cc' object='fused-src/gtest/test_fused_gtest_test-gtest_main.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o fused-src/gtest/test_fused_gtest_test-gtest_main.o `test -f 'fused-src/gtest/gtest_main.cc' || echo '$(srcdir)/'`fused-src/gtest/gtest_main.cc + +fused-src/gtest/test_fused_gtest_test-gtest_main.obj: fused-src/gtest/gtest_main.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT fused-src/gtest/test_fused_gtest_test-gtest_main.obj -MD -MP -MF fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest_main.Tpo -c -o fused-src/gtest/test_fused_gtest_test-gtest_main.obj `if test -f 'fused-src/gtest/gtest_main.cc'; then $(CYGPATH_W) 'fused-src/gtest/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/fused-src/gtest/gtest_main.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest_main.Tpo fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest_main.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fused-src/gtest/gtest_main.cc' object='fused-src/gtest/test_fused_gtest_test-gtest_main.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o fused-src/gtest/test_fused_gtest_test-gtest_main.obj `if test -f 'fused-src/gtest/gtest_main.cc'; then $(CYGPATH_W) 'fused-src/gtest/gtest_main.cc'; else $(CYGPATH_W) '$(srcdir)/fused-src/gtest/gtest_main.cc'; fi` + +samples/test_fused_gtest_test-sample1.o: samples/sample1.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT samples/test_fused_gtest_test-sample1.o -MD -MP -MF samples/$(DEPDIR)/test_fused_gtest_test-sample1.Tpo -c -o samples/test_fused_gtest_test-sample1.o `test -f 'samples/sample1.cc' || echo '$(srcdir)/'`samples/sample1.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) samples/$(DEPDIR)/test_fused_gtest_test-sample1.Tpo samples/$(DEPDIR)/test_fused_gtest_test-sample1.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='samples/sample1.cc' object='samples/test_fused_gtest_test-sample1.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o samples/test_fused_gtest_test-sample1.o `test -f 'samples/sample1.cc' || echo '$(srcdir)/'`samples/sample1.cc + +samples/test_fused_gtest_test-sample1.obj: samples/sample1.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT samples/test_fused_gtest_test-sample1.obj -MD -MP -MF samples/$(DEPDIR)/test_fused_gtest_test-sample1.Tpo -c -o samples/test_fused_gtest_test-sample1.obj `if test -f 'samples/sample1.cc'; then $(CYGPATH_W) 'samples/sample1.cc'; else $(CYGPATH_W) '$(srcdir)/samples/sample1.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) samples/$(DEPDIR)/test_fused_gtest_test-sample1.Tpo samples/$(DEPDIR)/test_fused_gtest_test-sample1.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='samples/sample1.cc' object='samples/test_fused_gtest_test-sample1.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o samples/test_fused_gtest_test-sample1.obj `if test -f 'samples/sample1.cc'; then $(CYGPATH_W) 'samples/sample1.cc'; else $(CYGPATH_W) '$(srcdir)/samples/sample1.cc'; fi` + +samples/test_fused_gtest_test-sample1_unittest.o: samples/sample1_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT samples/test_fused_gtest_test-sample1_unittest.o -MD -MP -MF samples/$(DEPDIR)/test_fused_gtest_test-sample1_unittest.Tpo -c -o samples/test_fused_gtest_test-sample1_unittest.o `test -f 'samples/sample1_unittest.cc' || echo '$(srcdir)/'`samples/sample1_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) samples/$(DEPDIR)/test_fused_gtest_test-sample1_unittest.Tpo samples/$(DEPDIR)/test_fused_gtest_test-sample1_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='samples/sample1_unittest.cc' object='samples/test_fused_gtest_test-sample1_unittest.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o samples/test_fused_gtest_test-sample1_unittest.o `test -f 'samples/sample1_unittest.cc' || echo '$(srcdir)/'`samples/sample1_unittest.cc + +samples/test_fused_gtest_test-sample1_unittest.obj: samples/sample1_unittest.cc +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT samples/test_fused_gtest_test-sample1_unittest.obj -MD -MP -MF samples/$(DEPDIR)/test_fused_gtest_test-sample1_unittest.Tpo -c -o samples/test_fused_gtest_test-sample1_unittest.obj `if test -f 'samples/sample1_unittest.cc'; then $(CYGPATH_W) 'samples/sample1_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/samples/sample1_unittest.cc'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) samples/$(DEPDIR)/test_fused_gtest_test-sample1_unittest.Tpo samples/$(DEPDIR)/test_fused_gtest_test-sample1_unittest.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='samples/sample1_unittest.cc' object='samples/test_fused_gtest_test-sample1_unittest.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(test_fused_gtest_test_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o samples/test_fused_gtest_test-sample1_unittest.obj `if test -f 'samples/sample1_unittest.cc'; then $(CYGPATH_W) 'samples/sample1_unittest.cc'; else $(CYGPATH_W) '$(srcdir)/samples/sample1_unittest.cc'; fi` + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + -rm -rf lib/.libs lib/_libs + -rm -rf samples/.libs samples/_libs + -rm -rf src/.libs src/_libs + -rm -rf test/.libs test/_libs + +distclean-libtool: + -rm -f libtool config.lt +install-m4dataDATA: $(m4data_DATA) + @$(NORMAL_INSTALL) + @list='$(m4data_DATA)'; test -n "$(m4datadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(m4datadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(m4datadir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(m4datadir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(m4datadir)" || exit $$?; \ + done + +uninstall-m4dataDATA: + @$(NORMAL_UNINSTALL) + @list='$(m4data_DATA)'; test -n "$(m4datadir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(m4datadir)'; $(am__uninstall_files_from_dir) +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) +install-pkginclude_internalHEADERS: $(pkginclude_internal_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_internal_HEADERS)'; test -n "$(pkginclude_internaldir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkginclude_internaldir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkginclude_internaldir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkginclude_internaldir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkginclude_internaldir)" || exit $$?; \ + done + +uninstall-pkginclude_internalHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_internal_HEADERS)'; test -n "$(pkginclude_internaldir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkginclude_internaldir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscope: cscope.files + test ! -s cscope.files \ + || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +clean-cscope: + -rm -f cscope.files +cscope.files: clean-cscope cscopelist +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + elif test -n "$$redo_logs"; then \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: $(check_PROGRAMS) + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +samples/sample1_unittest.log: samples/sample1_unittest$(EXEEXT) + @p='samples/sample1_unittest$(EXEEXT)'; \ + b='samples/sample1_unittest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +samples/sample10_unittest.log: samples/sample10_unittest$(EXEEXT) + @p='samples/sample10_unittest$(EXEEXT)'; \ + b='samples/sample10_unittest'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test/gtest_all_test.log: test/gtest_all_test$(EXEEXT) + @p='test/gtest_all_test$(EXEEXT)'; \ + b='test/gtest_all_test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +test/fused_gtest_test.log: test/fused_gtest_test$(EXEEXT) + @p='test/fused_gtest_test$(EXEEXT)'; \ + b='test/fused_gtest_test'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + $(am__remove_distdir) + test -d "$(distdir)" || mkdir "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz + $(am__post_remove_distdir) +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__post_remove_distdir) + +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + $(am__post_remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + $(am__post_remove_distdir) + +dist-tarZ: distdir + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__post_remove_distdir) + +dist-shar: distdir + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz + $(am__post_remove_distdir) +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__post_remove_distdir) + +dist dist-all: + $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' + $(am__post_remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir) + chmod u+w $(distdir) + mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build/sub \ + && ../../configure \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + --srcdir=../.. --prefix="$$dc_install_base" \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__post_remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-am +all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(m4datadir)" "$(DESTDIR)$(pkgincludedir)" "$(DESTDIR)$(pkginclude_internaldir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + -rm -f fused-src/gtest/$(DEPDIR)/$(am__dirstamp) + -rm -f fused-src/gtest/$(am__dirstamp) + -rm -f lib/$(am__dirstamp) + -rm -f samples/$(DEPDIR)/$(am__dirstamp) + -rm -f samples/$(am__dirstamp) + -rm -f src/$(DEPDIR)/$(am__dirstamp) + -rm -f src/$(am__dirstamp) + -rm -f test/$(DEPDIR)/$(am__dirstamp) + -rm -f test/$(am__dirstamp) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +@HAVE_PYTHON_FALSE@maintainer-clean-local: +clean: clean-am + +clean-am: clean-checkPROGRAMS clean-generic clean-libLTLIBRARIES \ + clean-libtool clean-noinstLTLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest-all.Po + -rm -f fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest_main.Po + -rm -f samples/$(DEPDIR)/sample1.Plo + -rm -f samples/$(DEPDIR)/sample10_unittest.Po + -rm -f samples/$(DEPDIR)/sample1_unittest.Po + -rm -f samples/$(DEPDIR)/sample2.Plo + -rm -f samples/$(DEPDIR)/sample4.Plo + -rm -f samples/$(DEPDIR)/test_fused_gtest_test-sample1.Po + -rm -f samples/$(DEPDIR)/test_fused_gtest_test-sample1_unittest.Po + -rm -f src/$(DEPDIR)/gtest-all.Plo + -rm -f src/$(DEPDIR)/gtest_main.Plo + -rm -f test/$(DEPDIR)/gtest_all_test.Po + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-hdr distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-data-local install-m4dataDATA \ + install-pkgincludeHEADERS install-pkginclude_internalHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-exec-local install-libLTLIBRARIES + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest-all.Po + -rm -f fused-src/gtest/$(DEPDIR)/test_fused_gtest_test-gtest_main.Po + -rm -f samples/$(DEPDIR)/sample1.Plo + -rm -f samples/$(DEPDIR)/sample10_unittest.Po + -rm -f samples/$(DEPDIR)/sample1_unittest.Po + -rm -f samples/$(DEPDIR)/sample2.Plo + -rm -f samples/$(DEPDIR)/sample4.Plo + -rm -f samples/$(DEPDIR)/test_fused_gtest_test-sample1.Po + -rm -f samples/$(DEPDIR)/test_fused_gtest_test-sample1_unittest.Po + -rm -f src/$(DEPDIR)/gtest-all.Plo + -rm -f src/$(DEPDIR)/gtest_main.Plo + -rm -f test/$(DEPDIR)/gtest_all_test.Po + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic \ + maintainer-clean-local + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-libLTLIBRARIES uninstall-m4dataDATA \ + uninstall-pkgincludeHEADERS \ + uninstall-pkginclude_internalHEADERS + +.MAKE: check-am install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles am--refresh check \ + check-TESTS check-am clean clean-checkPROGRAMS clean-cscope \ + clean-generic clean-libLTLIBRARIES clean-libtool \ + clean-noinstLTLIBRARIES cscope cscopelist-am ctags ctags-am \ + dist dist-all dist-bzip2 dist-gzip dist-lzip dist-shar \ + dist-tarZ dist-xz dist-zip distcheck distclean \ + distclean-compile distclean-generic distclean-hdr \ + distclean-libtool distclean-tags distcleancheck distdir \ + distuninstallcheck dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am \ + install-data-local install-dvi install-dvi-am install-exec \ + install-exec-am install-exec-local install-html \ + install-html-am install-info install-info-am \ + install-libLTLIBRARIES install-m4dataDATA install-man \ + install-pdf install-pdf-am install-pkgincludeHEADERS \ + install-pkginclude_internalHEADERS install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic \ + maintainer-clean-local mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + recheck tags tags-am uninstall uninstall-am \ + uninstall-libLTLIBRARIES uninstall-m4dataDATA \ + uninstall-pkgincludeHEADERS \ + uninstall-pkginclude_internalHEADERS + +.PRECIOUS: Makefile + + +# Build rules for putting fused Google Test files into the distribution +# package. The user can also create those files by manually running +# scripts/fuse_gtest_files.py. +@HAVE_PYTHON_TRUE@$(test_fused_gtest_test_SOURCES): fused-gtest + +@HAVE_PYTHON_TRUE@fused-gtest: $(pkginclude_HEADERS) $(pkginclude_internal_HEADERS) \ +@HAVE_PYTHON_TRUE@ $(GTEST_SRC) src/gtest-all.cc src/gtest_main.cc \ +@HAVE_PYTHON_TRUE@ scripts/fuse_gtest_files.py +@HAVE_PYTHON_TRUE@ mkdir -p "$(srcdir)/fused-src" +@HAVE_PYTHON_TRUE@ chmod -R u+w "$(srcdir)/fused-src" +@HAVE_PYTHON_TRUE@ rm -f "$(srcdir)/fused-src/gtest/gtest-all.cc" +@HAVE_PYTHON_TRUE@ rm -f "$(srcdir)/fused-src/gtest/gtest.h" +@HAVE_PYTHON_TRUE@ "$(srcdir)/scripts/fuse_gtest_files.py" "$(srcdir)/fused-src" +@HAVE_PYTHON_TRUE@ cp -f "$(srcdir)/src/gtest_main.cc" "$(srcdir)/fused-src/gtest/" + +@HAVE_PYTHON_TRUE@maintainer-clean-local: +@HAVE_PYTHON_TRUE@ rm -rf "$(srcdir)/fused-src" + +# Disables 'make install' as installing a compiled version of Google +# Test can lead to undefined behavior due to violation of the +# One-Definition Rule. + +install-exec-local: + echo "'make install' is dangerous and not supported. Instead, see README for how to integrate Google Test into your build system." + false + +install-data-local: + echo "'make install' is dangerous and not supported. Instead, see README for how to integrate Google Test into your build system." + false + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/thirdparty/protobuf-2.6.1/gtest/README b/thirdparty/protobuf-2.6.1/gtest/README new file mode 100644 index 00000000..17bf72f4 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/README @@ -0,0 +1,434 @@ +Google C++ Testing Framework +============================ + +http://code.google.com/p/googletest/ + +Overview +-------- + +Google's framework for writing C++ tests on a variety of platforms +(Linux, Mac OS X, Windows, Windows CE, Symbian, etc). Based on the +xUnit architecture. Supports automatic test discovery, a rich set of +assertions, user-defined assertions, death tests, fatal and non-fatal +failures, various options for running the tests, and XML test report +generation. + +Please see the project page above for more information as well as the +mailing list for questions, discussions, and development. There is +also an IRC channel on OFTC (irc.oftc.net) #gtest available. Please +join us! + +Requirements for End Users +-------------------------- + +Google Test is designed to have fairly minimal requirements to build +and use with your projects, but there are some. Currently, we support +Linux, Windows, Mac OS X, and Cygwin. We will also make our best +effort to support other platforms (e.g. Solaris, AIX, and z/OS). +However, since core members of the Google Test project have no access +to these platforms, Google Test may have outstanding issues there. If +you notice any problems on your platform, please notify +googletestframework@googlegroups.com. Patches for fixing them are +even more welcome! + +### Linux Requirements ### + +These are the base requirements to build and use Google Test from a source +package (as described below): + * GNU-compatible Make or gmake + * POSIX-standard shell + * POSIX(-2) Regular Expressions (regex.h) + * A C++98-standard-compliant compiler + +### Windows Requirements ### + + * Microsoft Visual C++ 7.1 or newer + +### Cygwin Requirements ### + + * Cygwin 1.5.25-14 or newer + +### Mac OS X Requirements ### + + * Mac OS X 10.4 Tiger or newer + * Developer Tools Installed + +Also, you'll need CMake 2.6.4 or higher if you want to build the +samples using the provided CMake script, regardless of the platform. + +Requirements for Contributors +----------------------------- + +We welcome patches. If you plan to contribute a patch, you need to +build Google Test and its own tests from an SVN checkout (described +below), which has further requirements: + + * Python version 2.3 or newer (for running some of the tests and + re-generating certain source files from templates) + * CMake 2.6.4 or newer + +Getting the Source +------------------ + +There are two primary ways of getting Google Test's source code: you +can download a stable source release in your preferred archive format, +or directly check out the source from our Subversion (SVN) repositary. +The SVN checkout requires a few extra steps and some extra software +packages on your system, but lets you track the latest development and +make patches much more easily, so we highly encourage it. + +### Source Package ### + +Google Test is released in versioned source packages which can be +downloaded from the download page [1]. Several different archive +formats are provided, but the only difference is the tools used to +manipulate them, and the size of the resulting file. Download +whichever you are most comfortable with. + + [1] http://code.google.com/p/googletest/downloads/list + +Once the package is downloaded, expand it using whichever tools you +prefer for that type. This will result in a new directory with the +name "gtest-X.Y.Z" which contains all of the source code. Here are +some examples on Linux: + + tar -xvzf gtest-X.Y.Z.tar.gz + tar -xvjf gtest-X.Y.Z.tar.bz2 + unzip gtest-X.Y.Z.zip + +### SVN Checkout ### + +To check out the main branch (also known as the "trunk") of Google +Test, run the following Subversion command: + + svn checkout http://googletest.googlecode.com/svn/trunk/ gtest-svn + +Setting up the Build +-------------------- + +To build Google Test and your tests that use it, you need to tell your +build system where to find its headers and source files. The exact +way to do it depends on which build system you use, and is usually +straightforward. + +### Generic Build Instructions ### + +Suppose you put Google Test in directory ${GTEST_DIR}. To build it, +create a library build target (or a project as called by Visual Studio +and Xcode) to compile + + ${GTEST_DIR}/src/gtest-all.cc + +with + + ${GTEST_DIR}/include and ${GTEST_DIR} + +in the header search path. Assuming a Linux-like system and gcc, +something like the following will do: + + g++ -I${GTEST_DIR}/include -I${GTEST_DIR} -c ${GTEST_DIR}/src/gtest-all.cc + ar -rv libgtest.a gtest-all.o + +Next, you should compile your test source file with +${GTEST_DIR}/include in the header search path, and link it with gtest +and any other necessary libraries: + + g++ -I${GTEST_DIR}/include path/to/your_test.cc libgtest.a -o your_test + +As an example, the make/ directory contains a Makefile that you can +use to build Google Test on systems where GNU make is available +(e.g. Linux, Mac OS X, and Cygwin). It doesn't try to build Google +Test's own tests. Instead, it just builds the Google Test library and +a sample test. You can use it as a starting point for your own build +script. + +If the default settings are correct for your environment, the +following commands should succeed: + + cd ${GTEST_DIR}/make + make + ./sample1_unittest + +If you see errors, try to tweak the contents of make/Makefile to make +them go away. There are instructions in make/Makefile on how to do +it. + +### Using CMake ### + +Google Test comes with a CMake build script (CMakeLists.txt) that can +be used on a wide range of platforms ("C" stands for cross-platofrm.). +If you don't have CMake installed already, you can download it for +free from http://www.cmake.org/. + +CMake works by generating native makefiles or build projects that can +be used in the compiler environment of your choice. The typical +workflow starts with: + + mkdir mybuild # Create a directory to hold the build output. + cd mybuild + cmake ${GTEST_DIR} # Generate native build scripts. + +If you want to build Google Test's samples, you should replace the +last command with + + cmake -Dgtest_build_samples=ON ${GTEST_DIR} + +If you are on a *nix system, you should now see a Makefile in the +current directory. Just type 'make' to build gtest. + +If you use Windows and have Vistual Studio installed, a gtest.sln file +and several .vcproj files will be created. You can then build them +using Visual Studio. + +On Mac OS X with Xcode installed, a .xcodeproj file will be generated. + +### Legacy Build Scripts ### + +Before settling on CMake, we have been providing hand-maintained build +projects/scripts for Visual Studio, Xcode, and Autotools. While we +continue to provide them for convenience, they are not actively +maintained any more. We highly recommend that you follow the +instructions in the previous two sections to integrate Google Test +with your existing build system. + +If you still need to use the legacy build scripts, here's how: + +The msvc\ folder contains two solutions with Visual C++ projects. +Open the gtest.sln or gtest-md.sln file using Visual Studio, and you +are ready to build Google Test the same way you build any Visual +Studio project. Files that have names ending with -md use DLL +versions of Microsoft runtime libraries (the /MD or the /MDd compiler +option). Files without that suffix use static versions of the runtime +libraries (the /MT or the /MTd option). Please note that one must use +the same option to compile both gtest and the test code. If you use +Visual Studio 2005 or above, we recommend the -md version as /MD is +the default for new projects in these versions of Visual Studio. + +On Mac OS X, open the gtest.xcodeproj in the xcode/ folder using +Xcode. Build the "gtest" target. The universal binary framework will +end up in your selected build directory (selected in the Xcode +"Preferences..." -> "Building" pane and defaults to xcode/build). +Alternatively, at the command line, enter: + + xcodebuild + +This will build the "Release" configuration of gtest.framework in your +default build location. See the "xcodebuild" man page for more +information about building different configurations and building in +different locations. + +If you wish to use the Google Test Xcode project with Xcode 4.x and +above, you need to either: + * update the SDK configuration options in xcode/Config/General.xconfig. + Comment options SDKROOT, MACOS_DEPLOYMENT_TARGET, and GCC_VERSION. If + you choose this route you lose the ability to target earlier versions + of MacOS X. + * Install an SDK for an earlier version. This doesn't appear to be + supported by Apple, but has been reported to work + (http://stackoverflow.com/questions/5378518). + +Tweaking Google Test +-------------------- + +Google Test can be used in diverse environments. The default +configuration may not work (or may not work well) out of the box in +some environments. However, you can easily tweak Google Test by +defining control macros on the compiler command line. Generally, +these macros are named like GTEST_XYZ and you define them to either 1 +or 0 to enable or disable a certain feature. + +We list the most frequently used macros below. For a complete list, +see file include/gtest/internal/gtest-port.h. + +### Choosing a TR1 Tuple Library ### + +Some Google Test features require the C++ Technical Report 1 (TR1) +tuple library, which is not yet available with all compilers. The +good news is that Google Test implements a subset of TR1 tuple that's +enough for its own need, and will automatically use this when the +compiler doesn't provide TR1 tuple. + +Usually you don't need to care about which tuple library Google Test +uses. However, if your project already uses TR1 tuple, you need to +tell Google Test to use the same TR1 tuple library the rest of your +project uses, or the two tuple implementations will clash. To do +that, add + + -DGTEST_USE_OWN_TR1_TUPLE=0 + +to the compiler flags while compiling Google Test and your tests. If +you want to force Google Test to use its own tuple library, just add + + -DGTEST_USE_OWN_TR1_TUPLE=1 + +to the compiler flags instead. + +If you don't want Google Test to use tuple at all, add + + -DGTEST_HAS_TR1_TUPLE=0 + +and all features using tuple will be disabled. + +### Multi-threaded Tests ### + +Google Test is thread-safe where the pthread library is available. +After #include "gtest/gtest.h", you can check the GTEST_IS_THREADSAFE +macro to see whether this is the case (yes if the macro is #defined to +1, no if it's undefined.). + +If Google Test doesn't correctly detect whether pthread is available +in your environment, you can force it with + + -DGTEST_HAS_PTHREAD=1 + +or + + -DGTEST_HAS_PTHREAD=0 + +When Google Test uses pthread, you may need to add flags to your +compiler and/or linker to select the pthread library, or you'll get +link errors. If you use the CMake script or the deprecated Autotools +script, this is taken care of for you. If you use your own build +script, you'll need to read your compiler and linker's manual to +figure out what flags to add. + +### As a Shared Library (DLL) ### + +Google Test is compact, so most users can build and link it as a +static library for the simplicity. You can choose to use Google Test +as a shared library (known as a DLL on Windows) if you prefer. + +To compile *gtest* as a shared library, add + + -DGTEST_CREATE_SHARED_LIBRARY=1 + +to the compiler flags. You'll also need to tell the linker to produce +a shared library instead - consult your linker's manual for how to do +it. + +To compile your *tests* that use the gtest shared library, add + + -DGTEST_LINKED_AS_SHARED_LIBRARY=1 + +to the compiler flags. + +Note: while the above steps aren't technically necessary today when +using some compilers (e.g. GCC), they may become necessary in the +future, if we decide to improve the speed of loading the library (see +http://gcc.gnu.org/wiki/Visibility for details). Therefore you are +recommended to always add the above flags when using Google Test as a +shared library. Otherwise a future release of Google Test may break +your build script. + +### Avoiding Macro Name Clashes ### + +In C++, macros don't obey namespaces. Therefore two libraries that +both define a macro of the same name will clash if you #include both +definitions. In case a Google Test macro clashes with another +library, you can force Google Test to rename its macro to avoid the +conflict. + +Specifically, if both Google Test and some other code define macro +FOO, you can add + + -DGTEST_DONT_DEFINE_FOO=1 + +to the compiler flags to tell Google Test to change the macro's name +from FOO to GTEST_FOO. Currently FOO can be FAIL, SUCCEED, or TEST. +For example, with -DGTEST_DONT_DEFINE_TEST=1, you'll need to write + + GTEST_TEST(SomeTest, DoesThis) { ... } + +instead of + + TEST(SomeTest, DoesThis) { ... } + +in order to define a test. + +Upgrating from an Earlier Version +--------------------------------- + +We strive to keep Google Test releases backward compatible. +Sometimes, though, we have to make some breaking changes for the +users' long-term benefits. This section describes what you'll need to +do if you are upgrading from an earlier version of Google Test. + +### Upgrading from 1.3.0 or Earlier ### + +You may need to explicitly enable or disable Google Test's own TR1 +tuple library. See the instructions in section "Choosing a TR1 Tuple +Library". + +### Upgrading from 1.4.0 or Earlier ### + +The Autotools build script (configure + make) is no longer officially +supportted. You are encouraged to migrate to your own build system or +use CMake. If you still need to use Autotools, you can find +instructions in the README file from Google Test 1.4.0. + +On platforms where the pthread library is available, Google Test uses +it in order to be thread-safe. See the "Multi-threaded Tests" section +for what this means to your build script. + +If you use Microsoft Visual C++ 7.1 with exceptions disabled, Google +Test will no longer compile. This should affect very few people, as a +large portion of STL (including ) doesn't compile in this mode +anyway. We decided to stop supporting it in order to greatly simplify +Google Test's implementation. + +Developing Google Test +---------------------- + +This section discusses how to make your own changes to Google Test. + +### Testing Google Test Itself ### + +To make sure your changes work as intended and don't break existing +functionality, you'll want to compile and run Google Test's own tests. +For that you can use CMake: + + mkdir mybuild + cd mybuild + cmake -Dgtest_build_tests=ON ${GTEST_DIR} + +Make sure you have Python installed, as some of Google Test's tests +are written in Python. If the cmake command complains about not being +able to find Python ("Could NOT find PythonInterp (missing: +PYTHON_EXECUTABLE)"), try telling it explicitly where your Python +executable can be found: + + cmake -DPYTHON_EXECUTABLE=path/to/python -Dgtest_build_tests=ON ${GTEST_DIR} + +Next, you can build Google Test and all of its own tests. On *nix, +this is usually done by 'make'. To run the tests, do + + make test + +All tests should pass. + +### Regenerating Source Files ### + +Some of Google Test's source files are generated from templates (not +in the C++ sense) using a script. A template file is named FOO.pump, +where FOO is the name of the file it will generate. For example, the +file include/gtest/internal/gtest-type-util.h.pump is used to generate +gtest-type-util.h in the same directory. + +Normally you don't need to worry about regenerating the source files, +unless you need to modify them. In that case, you should modify the +corresponding .pump files instead and run the pump.py Python script to +regenerate them. You can find pump.py in the scripts/ directory. +Read the Pump manual [2] for how to use it. + + [2] http://code.google.com/p/googletest/wiki/PumpManual + +### Contributing a Patch ### + +We welcome patches. Please read the Google Test developer's guide [3] +for how you can contribute. In particular, make sure you have signed +the Contributor License Agreement, or we won't be able to accept the +patch. + + [3] http://code.google.com/p/googletest/wiki/GoogleTestDevGuide + +Happy testing! diff --git a/thirdparty/protobuf-2.6.1/gtest/aclocal.m4 b/thirdparty/protobuf-2.6.1/gtest/aclocal.m4 new file mode 100644 index 00000000..1bc4d9a7 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/aclocal.m4 @@ -0,0 +1,1378 @@ +# generated automatically by aclocal 1.16.1 -*- Autoconf -*- + +# Copyright (C) 1996-2018 Free Software Foundation, Inc. + +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, +[m4_warning([this file was generated for autoconf 2.69. +You have another version of autoconf. It may work, but is not guaranteed to. +If you have problems, you may need to regenerate the build system entirely. +To do so, use the procedure documented by the package, typically 'autoreconf'.])]) + +# Copyright (C) 2002-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.16' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.16.1], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.16.1])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to +# '$srcdir', '$srcdir/..', or '$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is '.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + +# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + + +# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], + [$1], [CXX], [depcc="$CXX" am_compiler_list=], + [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], + [$1], [UPC], [depcc="$UPC" am_compiler_list=], + [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES. +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE([dependency-tracking], [dnl +AS_HELP_STRING( + [--enable-dependency-tracking], + [do not reject slow dependency extractors]) +AS_HELP_STRING( + [--disable-dependency-tracking], + [speeds up one-time build])]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +AC_SUBST([am__nodep])dnl +_AM_SUBST_NOTMAKE([am__nodep])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[{ + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + AS_CASE([$CONFIG_FILES], + [*\'*], [eval set x "$CONFIG_FILES"], + [*], [set x $CONFIG_FILES]) + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`AS_DIRNAME(["$am_mf"])` + am_filepart=`AS_BASENAME(["$am_mf"])` + AM_RUN_LOG([cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles]) || am_rc=$? + done + if test $am_rc -ne 0; then + AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. Try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking).]) + fi + AS_UNSET([am_dirpart]) + AS_UNSET([am_filepart]) + AS_UNSET([am_mf]) + AS_UNSET([am_rc]) + rm -f conftest-deps.mk +} +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking is enabled. +# This creates each '.Po' and '.Plo' makefile fragment that we'll need in +# order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. +m4_define([AC_PROG_CC], +m4_defn([AC_PROG_CC]) +[_AM_PROG_CC_C_O +]) + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.65])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if( + m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +AM_MISSING_PROG([AUTOCONF], [autoconf]) +AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +AM_MISSING_PROG([AUTOHEADER], [autoheader]) +AM_MISSING_PROG([MAKEINFO], [makeinfo]) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl +]) +AC_REQUIRE([AM_SILENT_RULES])dnl +dnl The testsuite driver may need to know about EXEEXT, so add the +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) + fi +fi +dnl The trailing newline in this macro's definition is deliberate, for +dnl backward compatibility and to allow trailing 'dnl'-style comments +dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. +]) + +dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further +dnl mangled by Autoconf and run in a shell conditional statement. +m4_define([_AC_COMPILER_EXEEXT], +m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST([install_sh])]) + +# Copyright (C) 2003-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MAKE_INCLUDE() +# ----------------- +# Check whether make has an 'include' directive that can support all +# the idioms we need for our automatic dependency tracking code. +AC_DEFUN([AM_MAKE_INCLUDE], +[AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive]) +cat > confinc.mk << 'END' +am__doit: + @echo this is the am__doit target >confinc.out +.PHONY: am__doit +END +am__include="#" +am__quote= +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out]) + AS_CASE([$?:`cat confinc.out 2>/dev/null`], + ['0:this is the am__doit target'], + [AS_CASE([$s], + [BSD], [am__include='.include' am__quote='"'], + [am__include='include' am__quote=''])]) + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +AC_MSG_RESULT([${_am_result}]) +AC_SUBST([am__include])]) +AC_SUBST([am__quote])]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it is modern enough. +# If it is, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + AC_MSG_WARN(['missing' script is too old or missing]) +fi +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# -------------------- +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) + +# _AM_SET_OPTIONS(OPTIONS) +# ------------------------ +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_CC_C_O +# --------------- +# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC +# to automatically call this. +AC_DEFUN([_AM_PROG_CC_C_O], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +AC_LANG_PUSH([C])dnl +AC_CACHE_CHECK( + [whether $CC understands -c and -o together], + [am_cv_prog_cc_c_o], + [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i]) +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +AC_LANG_POP([C])]) + +# For backward compatibility. +AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) + +# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + + +# AM_PATH_PYTHON([MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# --------------------------------------------------------------------------- +# Adds support for distributing Python modules and packages. To +# install modules, copy them to $(pythondir), using the python_PYTHON +# automake variable. To install a package with the same name as the +# automake package, install to $(pkgpythondir), or use the +# pkgpython_PYTHON automake variable. +# +# The variables $(pyexecdir) and $(pkgpyexecdir) are provided as +# locations to install python extension modules (shared libraries). +# Another macro is required to find the appropriate flags to compile +# extension modules. +# +# If your package is configured with a different prefix to python, +# users will have to add the install directory to the PYTHONPATH +# environment variable, or create a .pth file (see the python +# documentation for details). +# +# If the MINIMUM-VERSION argument is passed, AM_PATH_PYTHON will +# cause an error if the version of python installed on the system +# doesn't meet the requirement. MINIMUM-VERSION should consist of +# numbers and dots only. +AC_DEFUN([AM_PATH_PYTHON], + [ + dnl Find a Python interpreter. Python versions prior to 2.0 are not + dnl supported. (2.0 was released on October 16, 2000). + m4_define_default([_AM_PYTHON_INTERPRETER_LIST], +[python python2 python3 dnl + python3.9 python3.8 python3.7 python3.6 python3.5 python3.4 python3.3 dnl + python3.2 python3.1 python3.0 dnl + python2.7 python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 dnl + python2.0]) + + AC_ARG_VAR([PYTHON], [the Python interpreter]) + + m4_if([$1],[],[ + dnl No version check is needed. + # Find any Python interpreter. + if test -z "$PYTHON"; then + AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST, :) + fi + am_display_PYTHON=python + ], [ + dnl A version check is needed. + if test -n "$PYTHON"; then + # If the user set $PYTHON, use it and don't search something else. + AC_MSG_CHECKING([whether $PYTHON version is >= $1]) + AM_PYTHON_CHECK_VERSION([$PYTHON], [$1], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no]) + AC_MSG_ERROR([Python interpreter is too old])]) + am_display_PYTHON=$PYTHON + else + # Otherwise, try each interpreter until we find one that satisfies + # VERSION. + AC_CACHE_CHECK([for a Python interpreter with version >= $1], + [am_cv_pathless_PYTHON],[ + for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do + test "$am_cv_pathless_PYTHON" = none && break + AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break]) + done]) + # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON. + if test "$am_cv_pathless_PYTHON" = none; then + PYTHON=: + else + AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON]) + fi + am_display_PYTHON=$am_cv_pathless_PYTHON + fi + ]) + + if test "$PYTHON" = :; then + dnl Run any user-specified action, or abort. + m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])]) + else + + dnl Query Python for its version number. Getting [:3] seems to be + dnl the best way to do this; it's what "site.py" does in the standard + dnl library. + + AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version], + [am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[[:3]])"`]) + AC_SUBST([PYTHON_VERSION], [$am_cv_python_version]) + + dnl Use the values of $prefix and $exec_prefix for the corresponding + dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX. These are made + dnl distinct variables so they can be overridden if need be. However, + dnl general consensus is that you shouldn't need this ability. + + AC_SUBST([PYTHON_PREFIX], ['${prefix}']) + AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}']) + + dnl At times (like when building shared libraries) you may want + dnl to know which OS platform Python thinks this is. + + AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform], + [am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`]) + AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform]) + + # Just factor out some code duplication. + am_python_setup_sysconfig="\ +import sys +# Prefer sysconfig over distutils.sysconfig, for better compatibility +# with python 3.x. See automake bug#10227. +try: + import sysconfig +except ImportError: + can_use_sysconfig = 0 +else: + can_use_sysconfig = 1 +# Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs: +# +try: + from platform import python_implementation + if python_implementation() == 'CPython' and sys.version[[:3]] == '2.7': + can_use_sysconfig = 0 +except ImportError: + pass" + + dnl Set up 4 directories: + + dnl pythondir -- where to install python scripts. This is the + dnl site-packages directory, not the python standard library + dnl directory like in previous automake betas. This behavior + dnl is more consistent with lispdir.m4 for example. + dnl Query distutils for this directory. + AC_CACHE_CHECK([for $am_display_PYTHON script directory], + [am_cv_python_pythondir], + [if test "x$prefix" = xNONE + then + am_py_prefix=$ac_default_prefix + else + am_py_prefix=$prefix + fi + am_cv_python_pythondir=`$PYTHON -c " +$am_python_setup_sysconfig +if can_use_sysconfig: + sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'}) +else: + from distutils import sysconfig + sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix') +sys.stdout.write(sitedir)"` + case $am_cv_python_pythondir in + $am_py_prefix*) + am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'` + am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"` + ;; + *) + case $am_py_prefix in + /usr|/System*) ;; + *) + am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages + ;; + esac + ;; + esac + ]) + AC_SUBST([pythondir], [$am_cv_python_pythondir]) + + dnl pkgpythondir -- $PACKAGE directory under pythondir. Was + dnl PYTHON_SITE_PACKAGE in previous betas, but this naming is + dnl more consistent with the rest of automake. + + AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE]) + + dnl pyexecdir -- directory for installing python extension modules + dnl (shared libraries) + dnl Query distutils for this directory. + AC_CACHE_CHECK([for $am_display_PYTHON extension module directory], + [am_cv_python_pyexecdir], + [if test "x$exec_prefix" = xNONE + then + am_py_exec_prefix=$am_py_prefix + else + am_py_exec_prefix=$exec_prefix + fi + am_cv_python_pyexecdir=`$PYTHON -c " +$am_python_setup_sysconfig +if can_use_sysconfig: + sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'}) +else: + from distutils import sysconfig + sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix') +sys.stdout.write(sitedir)"` + case $am_cv_python_pyexecdir in + $am_py_exec_prefix*) + am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'` + am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"` + ;; + *) + case $am_py_exec_prefix in + /usr|/System*) ;; + *) + am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages + ;; + esac + ;; + esac + ]) + AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir]) + + dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE) + + AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE]) + + dnl Run any user-specified action. + $2 + fi + +]) + + +# AM_PYTHON_CHECK_VERSION(PROG, VERSION, [ACTION-IF-TRUE], [ACTION-IF-FALSE]) +# --------------------------------------------------------------------------- +# Run ACTION-IF-TRUE if the Python interpreter PROG has version >= VERSION. +# Run ACTION-IF-FALSE otherwise. +# This test uses sys.hexversion instead of the string equivalent (first +# word of sys.version), in order to cope with versions such as 2.2c1. +# This supports Python 2.0 or higher. (2.0 was released on October 16, 2000). +AC_DEFUN([AM_PYTHON_CHECK_VERSION], + [prog="import sys +# split strings by '.' and convert to numeric. Append some zeros +# because we need at least 4 digits for the hex conversion. +# map returns an iterator in Python 3.0 and a list in 2.x +minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]] +minverhex = 0 +# xrange is not present in Python 3.0 and range returns an iterator +for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]] +sys.exit(sys.hexversion < minverhex)" + AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])]) + +# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_RUN_LOG(COMMAND) +# ------------------- +# Run COMMAND, save the exit status in ac_status, and log it. +# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) +AC_DEFUN([AM_RUN_LOG], +[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken + alias in your environment]) + fi + if test "$[2]" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT([yes]) +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file +]) + +# Copyright (C) 2009-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SILENT_RULES([DEFAULT]) +# -------------------------- +# Enable less verbose build rules; with the default set to DEFAULT +# ("yes" being less verbose, "no" or empty being verbose). +AC_DEFUN([AM_SILENT_RULES], +[AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; +esac +dnl +dnl A few 'make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi]) +if test $am_cv_make_support_nested_variables = yes; then + dnl Using '$V' instead of '$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_DEFAULT_V])dnl +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl +AC_SUBST([AM_DEFAULT_VERBOSITY])dnl +AM_BACKSLASH='\' +AC_SUBST([AM_BACKSLASH])dnl +_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +]) + +# Copyright (C) 2001-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor 'install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in "make install-strip", and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# AM_SUBST_NOTMAKE(VARIABLE) +# -------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of 'v7', 'ustar', or 'pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +# +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' + +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], + + [pax], + [], + + [m4_fatal([Unknown tar format])]) + + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + +m4_include([m4/libtool.m4]) +m4_include([m4/ltoptions.m4]) +m4_include([m4/ltsugar.m4]) +m4_include([m4/ltversion.m4]) +m4_include([m4/lt~obsolete.m4]) diff --git a/thirdparty/protobuf-2.6.1/gtest/autom4te.cache/output.0 b/thirdparty/protobuf-2.6.1/gtest/autom4te.cache/output.0 new file mode 100644 index 00000000..99576859 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/autom4te.cache/output.0 @@ -0,0 +1,18941 @@ +@%:@! /bin/sh +@%:@ Guess values for system-dependent variables and create Makefiles. +@%:@ Generated by GNU Autoconf 2.69 for Google C++ Testing Framework 1.6.0. +@%:@ +@%:@ Report bugs to . +@%:@ +@%:@ +@%:@ Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +@%:@ +@%:@ +@%:@ This configure script is free software; the Free Software Foundation +@%:@ gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in @%:@( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in @%:@(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in @%:@ (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 + + test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ + || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in @%:@( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in @%:@ (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org and +$0: googletestframework@googlegroups.com about your system, +$0: including any error possibly output before this +$0: message. Then install a modern shell, or manually run +$0: the script under such a shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +@%:@ as_fn_unset VAR +@%:@ --------------- +@%:@ Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} @%:@ as_fn_set_status + +@%:@ as_fn_exit STATUS +@%:@ ----------------- +@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} @%:@ as_fn_exit + +@%:@ as_fn_mkdir_p +@%:@ ------------- +@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} @%:@ as_fn_mkdir_p + +@%:@ as_fn_executable_p FILE +@%:@ ----------------------- +@%:@ Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} @%:@ as_fn_executable_p +@%:@ as_fn_append VAR VALUE +@%:@ ---------------------- +@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take +@%:@ advantage of any shell optimizations that allow amortized linear growth over +@%:@ repeated appends, instead of the typical quadratic growth present in naive +@%:@ implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are +@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the +@%:@ script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in @%:@((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + +SHELL=${CONFIG_SHELL-/bin/sh} + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIB@&t@OBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='Google C++ Testing Framework' +PACKAGE_TARNAME='gtest' +PACKAGE_VERSION='1.6.0' +PACKAGE_STRING='Google C++ Testing Framework 1.6.0' +PACKAGE_BUGREPORT='googletestframework@googlegroups.com' +PACKAGE_URL='' + +ac_unique_file="./LICENSE" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +LIB@&t@OBJS +HAVE_PTHREADS_FALSE +HAVE_PTHREADS_TRUE +PTHREAD_CFLAGS +PTHREAD_LIBS +PTHREAD_CC +acx_pthread_config +HAVE_PYTHON_FALSE +HAVE_PYTHON_TRUE +PYTHON +CXXCPP +CPP +LT_SYS_LIBRARY_PATH +OTOOL64 +OTOOL +LIPO +NMEDIT +DSYMUTIL +MANIFEST_TOOL +RANLIB +ac_ct_AR +AR +DLLTOOL +OBJDUMP +LN_S +NM +ac_ct_DUMPBIN +DUMPBIN +LD +FGREP +EGREP +GREP +SED +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +LIBTOOL +am__fastdepCXX_FALSE +am__fastdepCXX_TRUE +CXXDEPMODE +ac_ct_CXX +CXXFLAGS +CXX +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +runstatedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL +am__quote' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_silent_rules +enable_dependency_tracking +enable_shared +enable_static +with_pic +enable_fast_install +with_aix_soname +with_gnu_ld +with_sysroot +enable_libtool_lock +with_pthreads +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CXX +CXXFLAGS +CCC +LT_SYS_LIBRARY_PATH +CPP +CXXCPP' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir runstatedir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures Google C++ Testing Framework 1.6.0 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + @<:@@S|@ac_default_prefix@:>@ + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + @<:@PREFIX@:>@ + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root @<:@DATAROOTDIR/doc/gtest@:>@ + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of Google C++ Testing Framework 1.6.0:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + --enable-shared@<:@=PKGS@:>@ build shared libraries @<:@default=yes@:>@ + --enable-static@<:@=PKGS@:>@ build static libraries @<:@default=yes@:>@ + --enable-fast-install@<:@=PKGS@:>@ + optimize for fast installation @<:@default=yes@:>@ + --disable-libtool-lock avoid locking (might break parallel builds) + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-pic@<:@=PKGS@:>@ try to use only PIC/non-PIC objects @<:@default=use + both@:>@ + --with-aix-soname=aix|svr4|both + shared library versioning (aka "SONAME") variant to + provide on AIX, @<:@default=aix@:>@. + --with-gnu-ld assume the C compiler uses GNU ld @<:@default=no@:>@ + --with-sysroot@<:@=DIR@:>@ Search for dependent libraries within DIR (or the + compiler's sysroot if not specified). + --with-pthreads use pthreads (default is yes) + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CXX C++ compiler command + CXXFLAGS C++ compiler flags + LT_SYS_LIBRARY_PATH + User-defined run-time library search path. + CPP C preprocessor + CXXCPP C++ preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +Google C++ Testing Framework configure 1.6.0 +generated by GNU Autoconf 2.69 + +Copyright (C) 2012 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +@%:@ ac_fn_c_try_compile LINENO +@%:@ -------------------------- +@%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_compile + +@%:@ ac_fn_cxx_try_compile LINENO +@%:@ ---------------------------- +@%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_cxx_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_cxx_try_compile + +@%:@ ac_fn_c_try_link LINENO +@%:@ ----------------------- +@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_link + +@%:@ ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +@%:@ ------------------------------------------------------- +@%:@ Tests whether HEADER exists and can be compiled using the include files in +@%:@ INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +@%:@include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_header_compile + +@%:@ ac_fn_c_try_cpp LINENO +@%:@ ---------------------- +@%:@ Try to preprocess conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_cpp + +@%:@ ac_fn_c_try_run LINENO +@%:@ ---------------------- +@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. Assumes +@%:@ that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_run + +@%:@ ac_fn_c_check_func LINENO FUNC VAR +@%:@ ---------------------------------- +@%:@ Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_func + +@%:@ ac_fn_cxx_try_cpp LINENO +@%:@ ------------------------ +@%:@ Try to preprocess conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_cxx_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_cxx_try_cpp + +@%:@ ac_fn_cxx_try_link LINENO +@%:@ ------------------------- +@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_cxx_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_cxx_try_link +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by Google C++ Testing Framework $as_me 1.6.0, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in @%:@(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +# Provide various options to initialize the Autoconf and configure processes. + + + +ac_aux_dir= +for ac_dir in build-aux "$srcdir"/build-aux; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + as_fn_error $? "cannot find install-sh, install.sh, or shtool in build-aux \"$srcdir\"/build-aux" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +ac_config_headers="$ac_config_headers build-aux/config.h" + +ac_config_files="$ac_config_files Makefile" + +ac_config_files="$ac_config_files scripts/gtest-config" + + +# Initialize Automake with various options. We require at least v1.9, prevent +# pedantic complaints about package files, and enable various distribution +# targets. +am__api_version='1.16' + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if ${ac_cv_path_install+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in @%:@(( + ./ | .// | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +$as_echo_n "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken + alias in your environment" "$LINENO" 5 + fi + if test "$2" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$2" = conftest.file + ) +then + # Ok. + : +else + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was `s,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` + +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` + +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if ${ac_cv_path_mkdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +@%:@ Check whether --enable-silent-rules was given. +if test "${enable_silent_rules+set}" = set; then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=1;; +esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='gtest' + VERSION='1.6.0' + + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +@%:@define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar pax cpio none' + +am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' + + + + + + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 + fi +fi + + +# Check for programs used in building Google Test. +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $@%:@ != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } +if ${am_cv_prog_cc_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +$as_echo "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 +$as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; } +cat > confinc.mk << 'END' +am__doit: + @echo this is the am__doit target >confinc.out +.PHONY: am__doit +END +am__include="#" +am__quote= +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 + (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + case $?:`cat confinc.out 2>/dev/null` in @%:@( + '0:this is the am__doit target') : + case $s in @%:@( + BSD) : + am__include='.include' am__quote='"' ;; @%:@( + *) : + am__include='include' am__quote='' ;; +esac ;; @%:@( + *) : + ;; +esac + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 +$as_echo "${_am_result}" >&6; } + +@%:@ Check whether --enable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then : + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + +depcc="$CC" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CC_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +$as_echo "$CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +if ${ac_cv_cxx_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } +if ${ac_cv_prog_cxx_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +else + CXXFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + +else + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +depcc="$CXX" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CXX_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +fi + + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +case `pwd` in + *\ * | *\ *) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; +esac + + + +macro_version='2.4.6' +macro_revision='2.4.6' + + + + + + + + + + + + + +ltmain=$ac_aux_dir/ltmain.sh + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if ${ac_cv_build+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if ${ac_cv_host+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 +$as_echo_n "checking how to print strings... " >&6; } +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "" +} + +case $ECHO in + printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 +$as_echo "printf" >&6; } ;; + print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 +$as_echo "print -r" >&6; } ;; + *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 +$as_echo "cat" >&6; } ;; +esac + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if ${ac_cv_path_SED+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +$as_echo "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +$as_echo_n "checking for fgrep... " >&6; } +if ${ac_cv_path_FGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 + then ac_cv_path_FGREP="$GREP -F" + else + if test -z "$FGREP"; then + ac_path_FGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in fgrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_FGREP" || continue +# Check for GNU ac_path_FGREP and select it if it is found. + # Check for GNU $ac_path_FGREP +case `"$ac_path_FGREP" --version 2>&1` in +*GNU*) + ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'FGREP' >> "conftest.nl" + "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_FGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_FGREP="$ac_path_FGREP" + ac_path_FGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_FGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_FGREP"; then + as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_FGREP=$FGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +$as_echo "$ac_cv_path_FGREP" >&6; } + FGREP="$ac_cv_path_FGREP" + + +test -z "$GREP" && GREP=grep + + + + + + + + + + + + + + + + + + + +@%:@ Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return, which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD=$ac_prog + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test yes = "$with_gnu_ld"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD=$ac_dir/$ac_prog + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +if ${lt_cv_path_NM+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM=$NM +else + lt_nm_to_check=${ac_tool_prefix}nm + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/$lt_tmp_nm + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the 'sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty + case $build_os in + mingw*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac + case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break 2 + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break 2 + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS=$lt_save_ifs + done + : ${lt_cv_path_NM=no} +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +$as_echo "$lt_cv_path_NM" >&6; } +if test no != "$lt_cv_path_NM"; then + NM=$lt_cv_path_NM +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + if test -n "$ac_tool_prefix"; then + for ac_prog in dumpbin "link -dump" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DUMPBIN"; then + ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DUMPBIN=$ac_cv_prog_DUMPBIN +if test -n "$DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +$as_echo "$DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$DUMPBIN" && break + done +fi +if test -z "$DUMPBIN"; then + ac_ct_DUMPBIN=$DUMPBIN + for ac_prog in dumpbin "link -dump" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DUMPBIN"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN +if test -n "$ac_ct_DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +$as_echo "$ac_ct_DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_DUMPBIN" && break +done + + if test "x$ac_ct_DUMPBIN" = x; then + DUMPBIN=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DUMPBIN=$ac_ct_DUMPBIN + fi +fi + + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols -headers" + ;; + *) + DUMPBIN=: + ;; + esac + fi + + if test : != "$DUMPBIN"; then + NM=$DUMPBIN + fi +fi +test -z "$NM" && NM=nm + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +$as_echo_n "checking the name lister ($NM) interface... " >&6; } +if ${lt_cv_nm_interface+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: output\"" >&5) + cat conftest.out >&5 + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +$as_echo "$lt_cv_nm_interface" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } +fi + +# find the maximum length of command line arguments +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +$as_echo_n "checking the maximum length of command line arguments... " >&6; } +if ${lt_cv_sys_max_cmd_len+:} false; then : + $as_echo_n "(cached) " >&6 +else + i=0 + teststring=ABCD + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test X`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test 17 != "$i" # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac + +fi + +if test -n "$lt_cv_sys_max_cmd_len"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +$as_echo "$lt_cv_sys_max_cmd_len" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 +$as_echo "none" >&6; } +fi +max_cmd_len=$lt_cv_sys_max_cmd_len + + + + + + +: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi + + + + + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 +$as_echo_n "checking how to convert $build file names to $host format... " >&6; } +if ${lt_cv_to_host_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac + +fi + +to_host_file_cmd=$lt_cv_to_host_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 +$as_echo "$lt_cv_to_host_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 +$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } +if ${lt_cv_to_tool_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + #assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac + +fi + +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 +$as_echo "$lt_cv_to_tool_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +$as_echo_n "checking for $LD option to reload object files... " >&6; } +if ${lt_cv_ld_reload_flag+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_reload_flag='-r' +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +$as_echo "$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + if test yes != "$GCC"; then + reload_cmds=false + fi + ;; + darwin*) + if test yes = "$GCC"; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +$as_echo_n "checking how to recognize dependent libraries... " >&6; } +if ${lt_cv_deplibs_check_method+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# 'unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# that responds to the $file_magic_cmd with a given extended regex. +# If you have 'file' or equivalent on your system and you're not sure +# whether 'pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[4-9]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[3-9]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd* | bitrig*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +os2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +$as_echo "$lt_cv_deplibs_check_method" >&6; } + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + + + + + + + + + + + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +$as_echo "$DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +$as_echo "$ac_ct_DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + +test -z "$DLLTOOL" && DLLTOOL=dlltool + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 +$as_echo_n "checking how to associate runtime and link libraries... " >&6; } +if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh; + # decide which one to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd=$ECHO + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 +$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + + + + + + + + +if test -n "$ac_tool_prefix"; then + for ac_prog in ar + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AR" && break + done +fi +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_AR" && break +done + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +fi + +: ${AR=ar} +: ${AR_FLAGS=cru} + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 +$as_echo_n "checking for archiver @FILE support... " >&6; } +if ${lt_cv_ar_at_file+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ar_at_file=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test 0 -eq "$ac_status"; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test 0 -ne "$ac_status"; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 +$as_echo "$lt_cv_ar_at_file" >&6; } + +if test no = "$lt_cv_ar_at_file"; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +test -z "$STRIP" && STRIP=: + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +test -z "$RANLIB" && RANLIB=: + + + + + + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + bitrig* | openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } +if ${lt_cv_sys_global_symbol_pipe+:} false; then : + $as_echo_n "(cached) " >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[ABCDGISTW]' + ;; +hpux*) + if test ia64 = "$host_cpu"; then + symcode='[ABCDEGRST]' + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Gets list of data symbols to import. + lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" + # Adjust the below global symbol transforms to fixup imported variables. + lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" + lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" + lt_c_name_lib_hook="\ + -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ + -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" +else + # Disable hooks by default. + lt_cv_sys_global_symbol_to_import= + lt_cdecl_hook= + lt_c_name_hook= + lt_c_name_lib_hook= +fi + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n"\ +$lt_cdecl_hook\ +" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ +$lt_c_name_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" + +# Transform an extracted symbol line into symbol name with lib prefix and +# symbol address. +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ +$lt_c_name_lib_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function, + # D for any global variable and I for any imported variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK '"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ +" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ +" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ +" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ +" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Now try to grab the symbols. + nlist=conftest.nm + $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&5 + if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&5 && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT@&t@_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT@&t@_DLSYM_CONST +#else +# define LT@&t@_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT@&t@_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS=conftstm.$ac_objext + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest$ac_exeext; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test yes = "$pipe_works"; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +$as_echo "failed" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 +$as_echo_n "checking for sysroot... " >&6; } + +@%:@ Check whether --with-sysroot was given. +if test "${with_sysroot+set}" = set; then : + withval=$with_sysroot; +else + with_sysroot=no +fi + + +lt_sysroot= +case $with_sysroot in #( + yes) + if test yes = "$GCC"; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 +$as_echo "$with_sysroot" >&6; } + as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 + ;; +esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 +$as_echo "${lt_sysroot:-no}" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 +$as_echo_n "checking for a working dd... " >&6; } +if ${ac_cv_path_lt_DD+:} false; then : + $as_echo_n "(cached) " >&6 +else + printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +: ${lt_DD:=$DD} +if test -z "$lt_DD"; then + ac_path_lt_DD_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in dd; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_lt_DD" || continue +if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: +fi + $ac_path_lt_DD_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_lt_DD"; then + : + fi +else + ac_cv_path_lt_DD=$lt_DD +fi + +rm -f conftest.i conftest2.i conftest.out +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 +$as_echo "$ac_cv_path_lt_DD" >&6; } + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 +$as_echo_n "checking how to truncate binary pipes... " >&6; } +if ${lt_cv_truncate_bin+:} false; then : + $as_echo_n "(cached) " >&6 +else + printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +lt_cv_truncate_bin= +if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" +fi +rm -f conftest.i conftest2.i conftest.out +test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 +$as_echo "$lt_cv_truncate_bin" >&6; } + + + + + + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in @S|@*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + + +@%:@ Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then : + enableval=$enable_libtool_lock; +fi + +test no = "$enable_libtool_lock" || enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out what ABI is being produced by ac_compile, and set mode + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE=32 + ;; + *ELF-64*) + HPUX_IA64_MODE=64 + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + if test yes = "$lt_cv_prog_gnu_ld"; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +mips64*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + emul=elf + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + emul="${emul}32" + ;; + *64-bit*) + emul="${emul}64" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *MSB*) + emul="${emul}btsmip" + ;; + *LSB*) + emul="${emul}ltsmip" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *N32*) + emul="${emul}n32" + ;; + esac + LD="${LD-ld} -m $emul" + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. Note that the listed cases only cover the + # situations where additional linker options are needed (such as when + # doing 32-bit compilation for a host where ld defaults to 64-bit, or + # vice versa); the common cases where no linker options are needed do + # not appear in the list. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + case `/usr/bin/file conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac + ;; + powerpc64le-*linux*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + powerpcle-*linux*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -belf" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +$as_echo_n "checking whether the C compiler needs -belf... " >&6; } +if ${lt_cv_cc_needs_belf+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_cc_needs_belf=yes +else + lt_cv_cc_needs_belf=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +$as_echo "$lt_cv_cc_needs_belf" >&6; } + if test yes != "$lt_cv_cc_needs_belf"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS=$SAVE_CFLAGS + fi + ;; +*-*solaris*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*|x86_64-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD=${LD-ld}_sol2 + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks=$enable_libtool_lock + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. +set dummy ${ac_tool_prefix}mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$MANIFEST_TOOL"; then + ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL +if test -n "$MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 +$as_echo "$MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_MANIFEST_TOOL"; then + ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL + # Extract the first word of "mt", so it can be a program name with args. +set dummy mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_MANIFEST_TOOL"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL +if test -n "$ac_ct_MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 +$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_MANIFEST_TOOL" = x; then + MANIFEST_TOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL + fi +else + MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" +fi + +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 +$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } +if ${lt_cv_path_mainfest_tool+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&5 + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 +$as_echo "$lt_cv_path_mainfest_tool" >&6; } +if test yes != "$lt_cv_path_mainfest_tool"; then + MANIFEST_TOOL=: +fi + + + + + + + case $host_os in + rhapsody* | darwin*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. +set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DSYMUTIL"; then + ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DSYMUTIL=$ac_cv_prog_DSYMUTIL +if test -n "$DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +$as_echo "$DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DSYMUTIL"; then + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. +set dummy dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DSYMUTIL"; then + ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL +if test -n "$ac_ct_DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +$as_echo "$ac_ct_DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DSYMUTIL" = x; then + DSYMUTIL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DSYMUTIL=$ac_ct_DSYMUTIL + fi +else + DSYMUTIL="$ac_cv_prog_DSYMUTIL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. +set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NMEDIT"; then + ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +NMEDIT=$ac_cv_prog_NMEDIT +if test -n "$NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +$as_echo "$NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_NMEDIT"; then + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. +set dummy nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_NMEDIT"; then + ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_NMEDIT="nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT +if test -n "$ac_ct_NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +$as_echo "$ac_ct_NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_NMEDIT" = x; then + NMEDIT=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + NMEDIT=$ac_ct_NMEDIT + fi +else + NMEDIT="$ac_cv_prog_NMEDIT" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. +set dummy ${ac_tool_prefix}lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$LIPO"; then + ac_cv_prog_LIPO="$LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_LIPO="${ac_tool_prefix}lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +LIPO=$ac_cv_prog_LIPO +if test -n "$LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +$as_echo "$LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_LIPO"; then + ac_ct_LIPO=$LIPO + # Extract the first word of "lipo", so it can be a program name with args. +set dummy lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_LIPO"; then + ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_LIPO="lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO +if test -n "$ac_ct_LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +$as_echo "$ac_ct_LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_LIPO" = x; then + LIPO=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + LIPO=$ac_ct_LIPO + fi +else + LIPO="$ac_cv_prog_LIPO" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL"; then + ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL="${ac_tool_prefix}otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL=$ac_cv_prog_OTOOL +if test -n "$OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +$as_echo "$OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL"; then + ac_ct_OTOOL=$OTOOL + # Extract the first word of "otool", so it can be a program name with args. +set dummy otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL"; then + ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL="otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL +if test -n "$ac_ct_OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +$as_echo "$ac_ct_OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL" = x; then + OTOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL=$ac_ct_OTOOL + fi +else + OTOOL="$ac_cv_prog_OTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL64"; then + ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL64=$ac_cv_prog_OTOOL64 +if test -n "$OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +$as_echo "$OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL64"; then + ac_ct_OTOOL64=$OTOOL64 + # Extract the first word of "otool64", so it can be a program name with args. +set dummy otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL64"; then + ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL64="otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 +if test -n "$ac_ct_OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +$as_echo "$ac_ct_OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL64" = x; then + OTOOL64=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL64=$ac_ct_OTOOL64 + fi +else + OTOOL64="$ac_cv_prog_OTOOL64" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +$as_echo_n "checking for -single_module linker flag... " >&6; } +if ${lt_cv_apple_cc_single_mod+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_apple_cc_single_mod=no + if test -z "$LT_MULTI_MODULE"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&5 + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test 0 = "$_lt_result"; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&5 + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +$as_echo "$lt_cv_apple_cc_single_mod" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } +if ${lt_cv_ld_exported_symbols_list+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_ld_exported_symbols_list=yes +else + lt_cv_ld_exported_symbols_list=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 +$as_echo_n "checking for -force_load linker flag... " >&6; } +if ${lt_cv_ld_force_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 + echo "$AR cru libconftest.a conftest.o" >&5 + $AR cru libconftest.a conftest.o 2>&5 + echo "$RANLIB libconftest.a" >&5 + $RANLIB libconftest.a 2>&5 + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&5 + elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&5 + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 +$as_echo "$lt_cv_ld_force_load" >&6; } + case $host_os in + rhapsody* | darwin1.[012]) + _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[91]*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + 10.[012][,.]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test yes = "$lt_cv_apple_cc_single_mod"; then + _lt_dar_single_mod='$single_module' + fi + if test yes = "$lt_cv_ld_exported_symbols_list"; then + _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' + fi + if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x@S|@2 in + x) + ;; + *:) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" + ;; + x:*) + eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" + ;; + *) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + esac +} + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@ifdef __STDC__ +@%:@ include +@%:@else +@%:@ include +@%:@endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@ifdef __STDC__ +@%:@ include +@%:@else +@%:@ include +@%:@endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in dlfcn.h +do : + ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default +" +if test "x$ac_cv_header_dlfcn_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +@%:@define HAVE_DLFCN_H 1 +_ACEOF + +fi + +done + + + +func_stripname_cnf () +{ + case @S|@2 in + .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; + *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; + esac +} # func_stripname_cnf + + + + + +# Set options + + + + enable_dlopen=no + + + enable_win32_dll=no + + + @%:@ Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then : + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_shared=yes +fi + + + + + + + + + + @%:@ Check whether --enable-static was given. +if test "${enable_static+set}" = set; then : + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_static=yes +fi + + + + + + + + + + +@%:@ Check whether --with-pic was given. +if test "${with_pic+set}" = set; then : + withval=$with_pic; lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for lt_pkg in $withval; do + IFS=$lt_save_ifs + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + pic_mode=default +fi + + + + + + + + + @%:@ Check whether --enable-fast-install was given. +if test "${enable_fast_install+set}" = set; then : + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_fast_install=yes +fi + + + + + + + + + shared_archive_member_spec= +case $host,$enable_shared in +power*-*-aix[5-9]*,yes) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 +$as_echo_n "checking which variant of shared library versioning to provide... " >&6; } + +@%:@ Check whether --with-aix-soname was given. +if test "${with_aix_soname+set}" = set; then : + withval=$with_aix_soname; case $withval in + aix|svr4|both) + ;; + *) + as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 + ;; + esac + lt_cv_with_aix_soname=$with_aix_soname +else + if ${lt_cv_with_aix_soname+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_with_aix_soname=aix +fi + + with_aix_soname=$lt_cv_with_aix_soname +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 +$as_echo "$with_aix_soname" >&6; } + if test aix != "$with_aix_soname"; then + # For the AIX way of multilib, we name the shared archive member + # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', + # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. + # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, + # the AIX toolchain works better with OBJECT_MODE set (default 32). + if test 64 = "${OBJECT_MODE-32}"; then + shared_archive_member_spec=shr_64 + else + shared_archive_member_spec=shr + fi + fi + ;; +*) + with_aix_soname=aix + ;; +esac + + + + + + + + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS=$ltmain + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +test -z "$LN_S" && LN_S="ln -s" + + + + + + + + + + + + + + +if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +$as_echo_n "checking for objdir... " >&6; } +if ${lt_cv_objdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +$as_echo "$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir + + + + + +cat >>confdefs.h <<_ACEOF +@%:@define LT_OBJDIR "$lt_cv_objdir/" +_ACEOF + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a '.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld=$lt_cv_prog_gnu_ld + +old_CC=$CC +old_CFLAGS=$CFLAGS + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +func_cc_basename $compiler +cc_basename=$func_cc_basename_result + + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/${ac_tool_prefix}file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac +fi + +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +$as_echo_n "checking for file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac +fi + +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +# Use C for the default configuration in the libtool script + +lt_save_CC=$CC +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + +lt_prog_compiler_no_builtin_flag= + +if test yes = "$GCC"; then + case $cc_basename in + nvcc*) + lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; + *) + lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + + + + + + + lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + + + if test yes = "$GCC"; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + lt_prog_compiler_pic='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + lt_prog_compiler_wl='-Xlinker ' + if test -n "$lt_prog_compiler_pic"; then + lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + case $cc_basename in + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='$wl-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + # old Intel for x86_64, which still supported -KPIC. + ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-qpic' + lt_prog_compiler_static='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + *Sun\ F* | *Sun*Fortran*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Wl,' + ;; + *Intel*\ [CF]*Compiler*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + *Portland\ Group*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic@&t@ -DPIC" + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic=$lt_prog_compiler_pic +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 +$as_echo "$lt_cv_prog_compiler_pic" >&6; } +lt_prog_compiler_pic=$lt_cv_prog_compiler_pic + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if ${lt_cv_prog_compiler_pic_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic@&t@ -DPIC" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } + +if test yes = "$lt_cv_prog_compiler_pic_works"; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi + + + + + + + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works=yes + fi + else + lt_cv_prog_compiler_static_works=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +$as_echo "$lt_cv_prog_compiler_static_works" >&6; } + +if test yes = "$lt_cv_prog_compiler_static_works"; then + : +else + lt_prog_compiler_static= +fi + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + +hard_links=nottested +if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test no = "$hard_links"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag= + always_export_symbols=no + archive_cmds= + archive_expsym_cmds= + compiler_needs_object=no + enable_shared_with_static_runtimes=no + export_dynamic_flag_spec= + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + hardcode_automatic=no + hardcode_direct=no + hardcode_direct_absolute=no + hardcode_libdir_flag_spec= + hardcode_libdir_separator= + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + inherit_rpath=no + link_all_deplibs=unknown + module_cmds= + module_expsym_cmds= + old_archive_from_new_cmds= + old_archive_from_expsyms_cmds= + thread_safe_flag_spec= + whole_archive_flag_spec= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ' (' and ')$', so one must not match beginning or + # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', + # as well as any symbol that contains 'd'. + exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test yes != "$GCC"; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd* | bitrig*) + with_gnu_ld=no + ;; + linux* | k*bsd*-gnu | gnu*) + link_all_deplibs=no + ;; + esac + + ld_shlibs=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test yes = "$with_gnu_ld"; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; + *\ \(GNU\ Binutils\)\ [3-9]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test yes = "$lt_use_gnu_ld_interface"; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='$wl' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + export_dynamic_flag_spec='$wl--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test ia64 != "$host_cpu"; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + export_dynamic_flag_spec='$wl--export-all-symbols' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + haiku*) + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + link_all_deplibs=yes + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes + ;; + + interix[3-9]*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test linux-dietlibc = "$host_os"; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test no = "$tmp_diet" + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec= + tmp_sharedflag='--shared' ;; + nagfor*) # NAGFOR 5.3 + tmp_sharedflag='-Wl,-shared' ;; + xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + tcc*) + export_dynamic_flag_spec='-rdynamic' + ;; + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + ld_shlibs=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test no = "$ld_shlibs"; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix[4-9]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then + aix_use_runtimelinking=yes + break + fi + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_direct_absolute=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + file_list_spec='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # traditional, no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + hardcode_direct=no + hardcode_direct_absolute=no + ;; + esac + + if test yes = "$GCC"; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag="$shared_flag "'$wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + export_dynamic_flag_spec='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' $wl-bernotok' + allow_undefined_flag=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + fi + archive_cmds_need_lc=yes + archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + always_export_symbols=yes + file_list_spec='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, )='true' + enable_shared_with_static_runtimes=yes + exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + old_postinstall_cmds='chmod 644 $oldlib' + postlink_cmds='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' + enable_shared_with_static_runtimes=yes + ;; + esac + ;; + + darwin* | rhapsody*) + + + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + if test yes = "$lt_cv_ld_force_load"; then + whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + + else + whole_archive_flag_spec='' + fi + link_all_deplibs=yes + allow_undefined_flag=$_lt_dar_allow_undefined + case $cc_basename in + ifort*|nagfor*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test yes = "$_lt_dar_can_shared"; then + output_verbose_link_cmd=func_echo_all + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + + else + ld_shlibs=no + fi + + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test yes = "$GCC"; then + archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='$wl-E' + ;; + + hpux10*) + if test yes,no = "$GCC,$with_gnu_ld"; then + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='$wl-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test yes,no = "$GCC,$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 +$as_echo_n "checking if $CC understands -b... " >&6; } +if ${lt_cv_prog_compiler__b+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler__b=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -b" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler__b=yes + fi + else + lt_cv_prog_compiler__b=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 +$as_echo "$lt_cv_prog_compiler__b" >&6; } + +if test yes = "$lt_cv_prog_compiler__b"; then + archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +fi + + ;; + esac + fi + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='$wl-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test yes = "$GCC"; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 +$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } +if ${lt_cv_irix_exported_symbol+:} false; then : + $as_echo_n "(cached) " >&6 +else + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo (void) { return 0; } +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_irix_exported_symbol=yes +else + lt_cv_irix_exported_symbol=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 +$as_echo "$lt_cv_irix_exported_symbol" >&6; } + if test yes = "$lt_cv_irix_exported_symbol"; then + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' + fi + link_all_deplibs=no + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + inherit_rpath=yes + link_all_deplibs=yes + ;; + + linux*) + case $cc_basename in + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + ld_shlibs=yes + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + *nto* | *qnx*) + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + hardcode_shlibpath_var=no + hardcode_direct_absolute=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' + else + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + fi + else + ld_shlibs=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes + ;; + + osf3*) + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + archive_cmds_need_lc='no' + hardcode_libdir_separator=: + ;; + + solaris*) + no_undefined_flag=' -z defs' + if test yes = "$GCC"; then + wlarc='$wl' + archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='$wl' + archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. GCC discards it without '$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test yes = "$GCC"; then + whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + else + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test sequent = "$host_vendor"; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag='$wl-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='$wl-z,text' + allow_undefined_flag='$wl-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='$wl-R,$libdir' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + + if test sni = "$host_vendor"; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + export_dynamic_flag_spec='$wl-Blargedynsym' + ;; + esac + fi + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +$as_echo "$ld_shlibs" >&6; } +test no = "$ld_shlibs" && can_build_shared=no + +with_gnu_ld=$with_gnu_ld + + + + + + + + + + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test yes,yes = "$GCC,$enable_shared"; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +if ${lt_cv_archive_cmds_need_lc+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } + archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +if test yes = "$GCC"; then + case $host_os in + darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; + *) lt_awk_arg='/^libraries:/' ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; + *) lt_sed_strip_eq='s|=/|/|g' ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary... + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + # ...but if some path component already ends with the multilib dir we assume + # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). + case "$lt_multi_os_dir; $lt_search_path_spec " in + "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) + lt_multi_os_dir= + ;; + esac + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" + elif test -n "$lt_multi_os_dir"; then + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS = " "; FS = "/|\n";} { + lt_foo = ""; + lt_count = 0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo = "/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[lt_foo]++; } + if (lt_freq[lt_foo] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's|/\([A-Za-z]:\)|\1|g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=.so +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + + + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='$libname$release$shared_ext$major' + ;; + +aix[4-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test ia64 = "$host_cpu"; then + # AIX 5 supports IA64 + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a(lib.so.V)' + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='$libname$shared_ext' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec=$LIB + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[23].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 + fi + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test yes = "$lt_cv_prog_gnu_ld"; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + hardcode_libdir_flag_spec='-L$libdir' + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd* | bitrig*) + version_type=sunos + sys_lib_dlsearch_path_spec=/usr/lib + need_lib_prefix=no + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no + else + need_version=yes + fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +os2*) + libname_spec='$name' + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test yes = "$with_gnu_ld"; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec; then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=sco + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test yes = "$with_gnu_ld"; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test no = "$dynamic_linker" && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test yes = "$GCC"; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +fi + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +fi + +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || + test -n "$runpath_var" || + test yes = "$hardcode_automatic"; then + + # We can hardcode non-existent directories. + if test no != "$hardcode_direct" && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && + test no != "$hardcode_minus_L"; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +$as_echo "$hardcode_action" >&6; } + +if test relink = "$hardcode_action" || + test yes = "$inherit_rpath"; then + # Fast installation is not supported + enable_fast_install=no +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + if test yes != "$enable_dlopen"; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen=load_add_on + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen=LoadLibrary + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl +else + + lt_cv_dlopen=dyld + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + tpf*) + # Don't try to run any link tests for TPF. We know it's impossible + # because TPF is a cross-compiler, and we know how we open DSOs. + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + lt_cv_dlopen_self=no + ;; + + *) + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +if test "x$ac_cv_func_shl_load" = xyes; then : + lt_cv_dlopen=shl_load +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +$as_echo_n "checking for shl_load in -ldld... " >&6; } +if ${ac_cv_lib_dld_shl_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_shl_load=yes +else + ac_cv_lib_dld_shl_load=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +$as_echo "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes; then : + lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld +else + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = xyes; then : + lt_cv_dlopen=dlopen +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +$as_echo_n "checking for dlopen in -lsvld... " >&6; } +if ${ac_cv_lib_svld_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_svld_dlopen=yes +else + ac_cv_lib_svld_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +$as_echo "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = xyes; then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +$as_echo_n "checking for dld_link in -ldld... " >&6; } +if ${ac_cv_lib_dld_dld_link+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link (); +int +main () +{ +return dld_link (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_dld_link=yes +else + ac_cv_lib_dld_dld_link=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +$as_echo "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = xyes; then : + lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test no = "$lt_cv_dlopen"; then + enable_dlopen=no + else + enable_dlopen=yes + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS=$CPPFLAGS + test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS=$LDFLAGS + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS=$LIBS + LIBS="$lt_cv_dlopen_libs $LIBS" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +$as_echo_n "checking whether a program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test yes = "$cross_compiling"; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +$as_echo "$lt_cv_dlopen_self" >&6; } + + if test yes = "$lt_cv_dlopen_self"; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self_static+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test yes = "$cross_compiling"; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +$as_echo "$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS=$save_CPPFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + + + + + + + + + + + + + + + + +striplib= +old_striplib= +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +$as_echo_n "checking whether stripping libraries is possible... " >&6; } +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP"; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + ;; + esac +fi + + + + + + + + + + + + + # Report what library types will actually be built + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[4-9]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } + + + + +fi +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +CC=$lt_save_CC + + if test -n "$CXX" && ( test no != "$CXX" && + ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || + (test g++ != "$CXX"))); then + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 +$as_echo_n "checking how to run the C++ preprocessor... " >&6; } +if test -z "$CXXCPP"; then + if ${ac_cv_prog_CXXCPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@ifdef __STDC__ +@%:@ include +@%:@else +@%:@ include +@%:@endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 +$as_echo "$CXXCPP" >&6; } +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@ifdef __STDC__ +@%:@ include +@%:@else +@%:@ include +@%:@endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +else + _lt_caught_CXX_error=yes +fi + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +archive_cmds_need_lc_CXX=no +allow_undefined_flag_CXX= +always_export_symbols_CXX=no +archive_expsym_cmds_CXX= +compiler_needs_object_CXX=no +export_dynamic_flag_spec_CXX= +hardcode_direct_CXX=no +hardcode_direct_absolute_CXX=no +hardcode_libdir_flag_spec_CXX= +hardcode_libdir_separator_CXX= +hardcode_minus_L_CXX=no +hardcode_shlibpath_var_CXX=unsupported +hardcode_automatic_CXX=no +inherit_rpath_CXX=no +module_cmds_CXX= +module_expsym_cmds_CXX= +link_all_deplibs_CXX=unknown +old_archive_cmds_CXX=$old_archive_cmds +reload_flag_CXX=$reload_flag +reload_cmds_CXX=$reload_cmds +no_undefined_flag_CXX= +whole_archive_flag_spec_CXX= +enable_shared_with_static_runtimes_CXX=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +objext_CXX=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_caught_CXX_error"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + + # save warnings/boilerplate of simple test code + ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + + ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS + compiler=$CC + compiler_CXX=$CC + func_cc_basename $compiler +cc_basename=$func_cc_basename_result + + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test yes = "$GXX"; then + lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' + else + lt_prog_compiler_no_builtin_flag_CXX= + fi + + if test yes = "$GXX"; then + # Set up default GNU C++ configuration + + + +@%:@ Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return, which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD=$ac_prog + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test yes = "$with_gnu_ld"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD=$ac_dir/$ac_prog + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test yes = "$with_gnu_ld"; then + archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='$wl' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + whole_archive_flag_spec_CXX= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + ld_shlibs_CXX=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aix[4-9]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_CXX='' + hardcode_direct_CXX=yes + hardcode_direct_absolute_CXX=yes + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + file_list_spec_CXX='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + hardcode_direct_CXX=no + hardcode_direct_absolute_CXX=no + ;; + esac + + if test yes = "$GXX"; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct_CXX=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_CXX=yes + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_libdir_separator_CXX= + fi + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag=$shared_flag' $wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + export_dynamic_flag_spec_CXX='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + always_export_symbols_CXX=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + # The "-G" linker flag allows undefined symbols. + no_undefined_flag_CXX='-bernotok' + # Determine the default libpath from the value encoded in an empty + # executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath__CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath__CXX +fi + + hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" + + archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + hardcode_libdir_flag_spec_CXX='$wl-R $libdir:/usr/lib:/lib' + allow_undefined_flag_CXX="-z nodefs" + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath__CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath__CXX +fi + + hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_CXX=' $wl-bernotok' + allow_undefined_flag_CXX=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_CXX='$convenience' + fi + archive_cmds_need_lc_CXX=yes + archive_expsym_cmds_CXX='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared + # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. + archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_CXX=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + ld_shlibs_CXX=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_CXX=' ' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=yes + file_list_spec_CXX='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' + enable_shared_with_static_runtimes_CXX=yes + # Don't use ranlib + old_postinstall_cmds_CXX='chmod 644 $oldlib' + postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_CXX='-L$libdir' + export_dynamic_flag_spec_CXX='$wl--export-all-symbols' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=no + enable_shared_with_static_runtimes_CXX=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_CXX=no + fi + ;; + esac + ;; + darwin* | rhapsody*) + + + archive_cmds_need_lc_CXX=no + hardcode_direct_CXX=no + hardcode_automatic_CXX=yes + hardcode_shlibpath_var_CXX=unsupported + if test yes = "$lt_cv_ld_force_load"; then + whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + + else + whole_archive_flag_spec_CXX='' + fi + link_all_deplibs_CXX=yes + allow_undefined_flag_CXX=$_lt_dar_allow_undefined + case $cc_basename in + ifort*|nagfor*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test yes = "$_lt_dar_can_shared"; then + output_verbose_link_cmd=func_echo_all + archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + module_expsym_cmds_CXX="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + if test yes != "$lt_cv_apple_cc_single_mod"; then + archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" + archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" + fi + + else + ld_shlibs_CXX=no + fi + + ;; + + os2*) + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_minus_L_CXX=yes + allow_undefined_flag_CXX=unsupported + shrext_cmds=.dll + archive_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds_CXX='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes_CXX=yes + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + freebsd2.*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + ld_shlibs_CXX=no + ;; + + freebsd-elf*) + archive_cmds_need_lc_CXX=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + ld_shlibs_CXX=yes + ;; + + haiku*) + archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + link_all_deplibs_CXX=yes + ;; + + hpux9*) + hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='$wl-E' + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' + hardcode_libdir_separator_CXX=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + export_dynamic_flag_spec_CXX='$wl-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + ;; + *) + hardcode_direct_CXX=yes + hardcode_direct_absolute_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + interix[3-9]*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + export_dynamic_flag_spec_CXX='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_CXX='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' + fi + fi + link_all_deplibs_CXX=yes + ;; + esac + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + hardcode_libdir_separator_CXX=: + inherit_rpath_CXX=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [1-5].* | *pgcpp\ [1-5].*) + prelink_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + old_archive_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + archive_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 6 and above use weak symbols + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + + hardcode_libdir_flag_spec_CXX='$wl--rpath $wl$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + whole_archive_flag_spec_CXX='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + ;; + cxx*) + # Compaq C++ + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; + xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' + hardcode_libdir_flag_spec_CXX='-R$libdir' + whole_archive_flag_spec_CXX='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object_CXX=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + ld_shlibs_CXX=yes + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + hardcode_direct_absolute_CXX=yes + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' + export_dynamic_flag_spec_CXX='$wl-E' + whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + fi + output_verbose_link_cmd=func_echo_all + else + ld_shlibs_CXX=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + case $host in + osf3*) + allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' + archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + ;; + *) + allow_undefined_flag_CXX=' -expect_unresolved \*' + archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ + $RM $lib.exp' + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + ;; + esac + + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes,no = "$GXX,$with_gnu_ld"; then + allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' + case $host in + osf3*) + archive_cmds_CXX='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + *) + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + esac + + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + archive_cmds_need_lc_CXX=yes + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_shlibpath_var_CXX=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' + ;; + esac + link_all_deplibs_CXX=yes + + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test yes,no = "$GXX,$with_gnu_ld"; then + no_undefined_flag_CXX=' $wl-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' + else + # g++ 2.7 appears to require '-G' NOT '-shared' on this + # platform. + archive_cmds_CXX='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' + fi + + hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir' + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + whole_archive_flag_spec_CXX='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag_CXX='$wl-z,text' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag_CXX='$wl-z,text' + allow_undefined_flag_CXX='$wl-z,nodefs' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='$wl-R,$libdir' + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + export_dynamic_flag_spec_CXX='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ + '"$old_archive_cmds_CXX" + reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ + '"$reload_cmds_CXX" + ;; + *) + archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } + test no = "$ld_shlibs_CXX" && can_build_shared=no + + GCC_CXX=$GXX + LD_CXX=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + # Dependencies to place before and after the object being linked: +predep_objects_CXX= +postdep_objects_CXX= +predeps_CXX= +postdeps_CXX= +compiler_lib_search_path_CXX= + +cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF + + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; +esac + +if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case $prev$p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test x-L = "$p" || + test x-R = "$p"; then + prev=$p + continue + fi + + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac + if test no = "$pre_test_object_deps_done"; then + case $prev in + -L | -R) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$compiler_lib_search_path_CXX"; then + compiler_lib_search_path_CXX=$prev$p + else + compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} $prev$p" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$postdeps_CXX"; then + postdeps_CXX=$prev$p + else + postdeps_CXX="${postdeps_CXX} $prev$p" + fi + fi + prev= + ;; + + *.lto.$objext) ;; # Ignore GCC LTO objects + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test no = "$pre_test_object_deps_done"; then + if test -z "$predep_objects_CXX"; then + predep_objects_CXX=$p + else + predep_objects_CXX="$predep_objects_CXX $p" + fi + else + if test -z "$postdep_objects_CXX"; then + postdep_objects_CXX=$p + else + postdep_objects_CXX="$postdep_objects_CXX $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling CXX test program" +fi + +$RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS + +# PORTME: override above test on systems where it is broken +case $host_os in +interix[3-9]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + predep_objects_CXX= + postdep_objects_CXX= + postdeps_CXX= + ;; +esac + + +case " $postdeps_CXX " in +*" -lc "*) archive_cmds_need_lc_CXX=no ;; +esac + compiler_lib_search_dirs_CXX= +if test -n "${compiler_lib_search_path_CXX}"; then + compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | $SED -e 's! -L! !g' -e 's!^ !!'` +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + lt_prog_compiler_wl_CXX= +lt_prog_compiler_pic_CXX= +lt_prog_compiler_static_CXX= + + + # C++ specific cases for pic, static, wl, etc. + if test yes = "$GXX"; then + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + fi + lt_prog_compiler_pic_CXX='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic_CXX='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static_CXX='$wl-static' + ;; + esac + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_CXX='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + lt_prog_compiler_pic_CXX= + ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static_CXX= + ;; + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_CXX=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic_CXX='-fPIC -shared' + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + else + case $host_os in + aix[4-9]*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + else + lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; + dgux*) + case $cc_basename in + ec++*) + lt_prog_compiler_pic_CXX='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='$wl-a ${wl}archive' + if test ia64 != "$host_cpu"; then + lt_prog_compiler_pic_CXX='+Z' + fi + ;; + aCC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='$wl-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_CXX='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # KAI C++ Compiler + lt_prog_compiler_wl_CXX='--backend -Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64, which still supported -KPIC. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + lt_prog_compiler_static_CXX='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fpic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-qpic' + lt_prog_compiler_static_CXX='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + lt_prog_compiler_pic_CXX='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic_CXX='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + lt_prog_compiler_wl_CXX='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + lt_prog_compiler_pic_CXX='-pic' + ;; + cxx*) + # Digital/Compaq C++ + lt_prog_compiler_wl_CXX='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + lt_prog_compiler_pic_CXX='-pic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + lcc*) + # Lucid + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + lt_prog_compiler_pic_CXX='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + lt_prog_compiler_can_build_shared_CXX=no + ;; + esac + fi + +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_CXX= + ;; + *) + lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX@&t@ -DPIC" + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } +lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } +if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works_CXX=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_CXX@&t@ -DPIC" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works_CXX=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } + +if test yes = "$lt_cv_prog_compiler_pic_works_CXX"; then + case $lt_prog_compiler_pic_CXX in + "" | " "*) ;; + *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; + esac +else + lt_prog_compiler_pic_CXX= + lt_prog_compiler_can_build_shared_CXX=no +fi + +fi + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works_CXX=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works_CXX=yes + fi + else + lt_cv_prog_compiler_static_works_CXX=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } + +if test yes = "$lt_cv_prog_compiler_static_works_CXX"; then + : +else + lt_prog_compiler_static_CXX= +fi + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } + + + + +hard_links=nottested +if test no = "$lt_cv_prog_compiler_c_o_CXX" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test no = "$hard_links"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + case $host_os in + aix[4-9]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_CXX='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + export_symbols_cmds_CXX=$ltdll_cmds + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in + cl*) + exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + ;; + esac + ;; + linux* | k*bsd*-gnu | gnu*) + link_all_deplibs_CXX=no + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } +test no = "$ld_shlibs_CXX" && can_build_shared=no + +with_gnu_ld_CXX=$with_gnu_ld + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_CXX" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_CXX=yes + + if test yes,yes = "$GCC,$enable_shared"; then + case $archive_cmds_CXX in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_CXX + pic_flag=$lt_prog_compiler_pic_CXX + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_CXX + allow_undefined_flag_CXX= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc_CXX=no + else + lt_cv_archive_cmds_need_lc_CXX=yes + fi + allow_undefined_flag_CXX=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } + archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=.so +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + + + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='$libname$release$shared_ext$major' + ;; + +aix[4-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test ia64 = "$host_cpu"; then + # AIX 5 supports IA64 + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a(lib.so.V)' + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='$libname$shared_ext' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec=$LIB + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[23].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 + fi + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test yes = "$lt_cv_prog_gnu_ld"; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + hardcode_libdir_flag_spec_CXX='-L$libdir' + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd* | bitrig*) + version_type=sunos + sys_lib_dlsearch_path_spec=/usr/lib + need_lib_prefix=no + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no + else + need_version=yes + fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +os2*) + libname_spec='$name' + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test yes = "$with_gnu_ld"; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec; then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=sco + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test yes = "$with_gnu_ld"; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test no = "$dynamic_linker" && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test yes = "$GCC"; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +fi + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +fi + +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action_CXX= +if test -n "$hardcode_libdir_flag_spec_CXX" || + test -n "$runpath_var_CXX" || + test yes = "$hardcode_automatic_CXX"; then + + # We can hardcode non-existent directories. + if test no != "$hardcode_direct_CXX" && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" && + test no != "$hardcode_minus_L_CXX"; then + # Linking always hardcodes the temporary library directory. + hardcode_action_CXX=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_CXX=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_CXX=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 +$as_echo "$hardcode_action_CXX" >&6; } + +if test relink = "$hardcode_action_CXX" || + test yes = "$inherit_rpath_CXX"; then + # Fast installation is not supported + enable_fast_install=no +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + + fi # test -n "$compiler" + + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test yes != "$_lt_caught_CXX_error" + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + + + + + + + + + + + + + + ac_config_commands="$ac_config_commands libtool" + + + + +# Only expand once: + + + +# TODO(chandlerc@google.com): Currently we aren't running the Python tests +# against the interpreter detected by AM_PATH_PYTHON, and so we condition +# HAVE_PYTHON by requiring "python" to be in the PATH, and that interpreter's +# version to be >= 2.3. This will allow the scripts to use a "/usr/bin/env" +# hashbang. +PYTHON= # We *do not* allow the user to specify a python interpreter +# Extract the first word of "python", so it can be a program name with args. +set dummy python; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PYTHON+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PYTHON in + [\\/]* | ?:[\\/]*) + ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_PYTHON" && ac_cv_path_PYTHON=":" + ;; +esac +fi +PYTHON=$ac_cv_path_PYTHON +if test -n "$PYTHON"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5 +$as_echo "$PYTHON" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +if test "$PYTHON" != ":"; then : + prog="import sys +# split strings by '.' and convert to numeric. Append some zeros +# because we need at least 4 digits for the hex conversion. +# map returns an iterator in Python 3.0 and a list in 2.x +minver = list(map(int, '2.3'.split('.'))) + [0, 0, 0] +minverhex = 0 +# xrange is not present in Python 3.0 and range returns an iterator +for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i] +sys.exit(sys.hexversion < minverhex)" + if { echo "$as_me:$LINENO: $PYTHON -c "$prog"" >&5 + ($PYTHON -c "$prog") >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then : + : +else + PYTHON=":" +fi +fi + if test "$PYTHON" != ":"; then + HAVE_PYTHON_TRUE= + HAVE_PYTHON_FALSE='#' +else + HAVE_PYTHON_TRUE='#' + HAVE_PYTHON_FALSE= +fi + + +# Configure pthreads. + +@%:@ Check whether --with-pthreads was given. +if test "${with_pthreads+set}" = set; then : + withval=$with_pthreads; with_pthreads=$withval +else + with_pthreads=check +fi + + +have_pthreads=no +if test "x$with_pthreads" != "xno"; then : + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +acx_pthread_ok=no + +# We used to check for pthread.h first, but this fails if pthread.h +# requires special compiler flags (e.g. on True64 or Sequent). +# It gets checked for in the link test anyway. + +# First of all, check if the user has set any of the PTHREAD_LIBS, +# etcetera environment variables, and if threads linking works using +# them: +if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + save_LIBS="$LIBS" + LIBS="$PTHREAD_LIBS $LIBS" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5 +$as_echo_n "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char pthread_join (); +int +main () +{ +return pthread_join (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + acx_pthread_ok=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_ok" >&5 +$as_echo "$acx_pthread_ok" >&6; } + if test x"$acx_pthread_ok" = xno; then + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" + fi + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" +fi + +# We must check for the threads library under a number of different +# names; the ordering is very important because some systems +# (e.g. DEC) have both -lpthread and -lpthreads, where one of the +# libraries is broken (non-POSIX). + +# Create a list of thread flags to try. Items starting with a "-" are +# C compiler flags, and other items are library names, except for "none" +# which indicates that we try without any flags at all, and "pthread-config" +# which is a program returning the flags for the Pth emulation library. + +acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" + +# The ordering *is* (sometimes) important. Some notes on the +# individual items follow: + +# pthreads: AIX (must check this before -lpthread) +# none: in case threads are in libc; should be tried before -Kthread and +# other compiler flags to prevent continual compiler warnings +# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) +# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) +# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) +# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) +# -pthreads: Solaris/gcc +# -mthreads: Mingw32/gcc, Lynx/gcc +# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it +# doesn't hurt to check since this sometimes defines pthreads too; +# also defines -D_REENTRANT) +# ... -mt is also the pthreads flag for HP/aCC +# pthread: Linux, etcetera +# --thread-safe: KAI C++ +# pthread-config: use pthread-config program (for GNU Pth library) + +case "${host_cpu}-${host_os}" in + *solaris*) + + # On Solaris (at least, for some versions), libc contains stubbed + # (non-functional) versions of the pthreads routines, so link-based + # tests will erroneously succeed. (We need to link with -pthreads/-mt/ + # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather + # a function called by this macro, so we could check for that, but + # who knows whether they'll stub that too in a future libc.) So, + # we'll just look for -pthreads and -lpthread first: + + acx_pthread_flags="-pthreads pthread -mt -pthread $acx_pthread_flags" + ;; +esac + +if test x"$acx_pthread_ok" = xno; then +for flag in $acx_pthread_flags; do + + case $flag in + none) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5 +$as_echo_n "checking whether pthreads work without any flags... " >&6; } + ;; + + -*) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $flag" >&5 +$as_echo_n "checking whether pthreads work with $flag... " >&6; } + PTHREAD_CFLAGS="$flag" + ;; + + pthread-config) + # Extract the first word of "pthread-config", so it can be a program name with args. +set dummy pthread-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_acx_pthread_config+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$acx_pthread_config"; then + ac_cv_prog_acx_pthread_config="$acx_pthread_config" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_acx_pthread_config="yes" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_acx_pthread_config" && ac_cv_prog_acx_pthread_config="no" +fi +fi +acx_pthread_config=$ac_cv_prog_acx_pthread_config +if test -n "$acx_pthread_config"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_config" >&5 +$as_echo "$acx_pthread_config" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test x"$acx_pthread_config" = xno; then continue; fi + PTHREAD_CFLAGS="`pthread-config --cflags`" + PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" + ;; + + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$flag" >&5 +$as_echo_n "checking for the pthreads library -l$flag... " >&6; } + PTHREAD_LIBS="-l$flag" + ;; + esac + + save_LIBS="$LIBS" + save_CFLAGS="$CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + + # Check for various functions. We must include pthread.h, + # since some functions may be macros. (On the Sequent, we + # need a special flag -Kthread to make this header compile.) + # We check for pthread_join because it is in -lpthread on IRIX + # while pthread_create is in libc. We check for pthread_attr_init + # due to DEC craziness with -lpthreads. We check for + # pthread_cleanup_push because it is one of the few pthread + # functions on Solaris that doesn't have a non-functional libc stub. + # We try pthread_create on general principles. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +pthread_t th; pthread_join(th, 0); + pthread_attr_init(0); pthread_cleanup_push(0, 0); + pthread_create(0,0,0,0); pthread_cleanup_pop(0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + acx_pthread_ok=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_ok" >&5 +$as_echo "$acx_pthread_ok" >&6; } + if test "x$acx_pthread_ok" = xyes; then + break; + fi + + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" +done +fi + +# Various other checks: +if test "x$acx_pthread_ok" = xyes; then + save_LIBS="$LIBS" + LIBS="$PTHREAD_LIBS $LIBS" + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + + # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5 +$as_echo_n "checking for joinable pthread attribute... " >&6; } + attr_name=unknown + for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +int attr=$attr; return attr; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + attr_name=$attr; break +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + done + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $attr_name" >&5 +$as_echo "$attr_name" >&6; } + if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then + +cat >>confdefs.h <<_ACEOF +@%:@define PTHREAD_CREATE_JOINABLE $attr_name +_ACEOF + + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if more special flags are required for pthreads" >&5 +$as_echo_n "checking if more special flags are required for pthreads... " >&6; } + flag=no + case "${host_cpu}-${host_os}" in + *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";; + *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${flag}" >&5 +$as_echo "${flag}" >&6; } + if test "x$flag" != xno; then + PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" + fi + + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + # More AIX lossage: must compile with xlc_r or cc_r + if test x"$GCC" != xyes; then + for ac_prog in xlc_r cc_r +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_PTHREAD_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$PTHREAD_CC"; then + ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_PTHREAD_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +PTHREAD_CC=$ac_cv_prog_PTHREAD_CC +if test -n "$PTHREAD_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5 +$as_echo "$PTHREAD_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$PTHREAD_CC" && break +done +test -n "$PTHREAD_CC" || PTHREAD_CC="${CC}" + + else + PTHREAD_CC=$CC + fi + + # The next part tries to detect GCC inconsistency with -shared on some + # architectures and systems. The problem is that in certain + # configurations, when -shared is specified, GCC "forgets" to + # internally use various flags which are still necessary. + + # + # Prepare the flags + # + save_CFLAGS="$CFLAGS" + save_LIBS="$LIBS" + save_CC="$CC" + + # Try with the flags determined by the earlier checks. + # + # -Wl,-z,defs forces link-time symbol resolution, so that the + # linking checks with -shared actually have any value + # + # FIXME: -fPIC is required for -shared on many architectures, + # so we specify it here, but the right way would probably be to + # properly detect whether it is actually required. + CFLAGS="-shared -fPIC -Wl,-z,defs $CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + CC="$PTHREAD_CC" + + # In order not to create several levels of indentation, we test + # the value of "$done" until we find the cure or run out of ideas. + done="no" + + # First, make sure the CFLAGS we added are actually accepted by our + # compiler. If not (and OS X's ld, for instance, does not accept -z), + # then we can't do this test. + if test x"$done" = xno; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to check for GCC pthread/shared inconsistencies" >&5 +$as_echo_n "checking whether to check for GCC pthread/shared inconsistencies... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + +else + done=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + if test "x$done" = xyes ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + fi + fi + + if test x"$done" = xno; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -pthread is sufficient with -shared" >&5 +$as_echo_n "checking whether -pthread is sufficient with -shared... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +pthread_t th; pthread_join(th, 0); + pthread_attr_init(0); pthread_cleanup_push(0, 0); + pthread_create(0,0,0,0); pthread_cleanup_pop(0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + done=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + if test "x$done" = xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + fi + + # + # Linux gcc on some architectures such as mips/mipsel forgets + # about -lpthread + # + if test x"$done" = xno; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lpthread fixes that" >&5 +$as_echo_n "checking whether -lpthread fixes that... " >&6; } + LIBS="-lpthread $PTHREAD_LIBS $save_LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +pthread_t th; pthread_join(th, 0); + pthread_attr_init(0); pthread_cleanup_push(0, 0); + pthread_create(0,0,0,0); pthread_cleanup_pop(0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + done=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + if test "x$done" = xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + PTHREAD_LIBS="-lpthread $PTHREAD_LIBS" + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + fi + # + # FreeBSD 4.10 gcc forgets to use -lc_r instead of -lc + # + if test x"$done" = xno; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc_r fixes that" >&5 +$as_echo_n "checking whether -lc_r fixes that... " >&6; } + LIBS="-lc_r $PTHREAD_LIBS $save_LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +pthread_t th; pthread_join(th, 0); + pthread_attr_init(0); pthread_cleanup_push(0, 0); + pthread_create(0,0,0,0); pthread_cleanup_pop(0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + done=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + if test "x$done" = xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + PTHREAD_LIBS="-lc_r $PTHREAD_LIBS" + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + fi + if test x"$done" = xno; then + # OK, we have run out of ideas + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Impossible to determine how to use pthreads with shared libraries" >&5 +$as_echo "$as_me: WARNING: Impossible to determine how to use pthreads with shared libraries" >&2;} + + # so it's not safe to assume that we may use pthreads + acx_pthread_ok=no + fi + + CFLAGS="$save_CFLAGS" + LIBS="$save_LIBS" + CC="$save_CC" +else + PTHREAD_CC="$CC" +fi + + + + + +# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: +if test x"$acx_pthread_ok" = xyes; then + +$as_echo "@%:@define HAVE_PTHREAD 1" >>confdefs.h + + : +else + acx_pthread_ok=no + if test "x$with_pthreads" != "xcheck"; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "--with-pthreads was specified, but unable to be used +See \`config.log' for more details" "$LINENO" 5; } +fi +fi +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + have_pthreads="$acx_pthread_ok" +fi + if test "x$have_pthreads" == "xyes"; then + HAVE_PTHREADS_TRUE= + HAVE_PTHREADS_FALSE='#' +else + HAVE_PTHREADS_TRUE='#' + HAVE_PTHREADS_FALSE= +fi + + + + +# TODO(chandlerc@google.com) Check for the necessary system headers. + +# TODO(chandlerc@google.com) Check the types, structures, and other compiler +# and architecture characteristics. + +# Output the generated files. No further autoconf macros may be used. +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIB@&t@OBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +$as_echo_n "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 +$as_echo "done" >&6; } + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_PYTHON_TRUE}" && test -z "${HAVE_PYTHON_FALSE}"; then + as_fn_error $? "conditional \"HAVE_PYTHON\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_PTHREADS_TRUE}" && test -z "${HAVE_PTHREADS_FALSE}"; then + as_fn_error $? "conditional \"HAVE_PTHREADS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in @%:@( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in @%:@(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are +@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the +@%:@ script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} @%:@ as_fn_set_status + +@%:@ as_fn_exit STATUS +@%:@ ----------------- +@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} @%:@ as_fn_exit + +@%:@ as_fn_unset VAR +@%:@ --------------- +@%:@ Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +@%:@ as_fn_append VAR VALUE +@%:@ ---------------------- +@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take +@%:@ advantage of any shell optimizations that allow amortized linear growth over +@%:@ repeated appends, instead of the typical quadratic growth present in naive +@%:@ implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in @%:@((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +@%:@ as_fn_mkdir_p +@%:@ ------------- +@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} @%:@ as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +@%:@ as_fn_executable_p FILE +@%:@ ----------------------- +@%:@ Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} @%:@ as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by Google C++ Testing Framework $as_me 1.6.0, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +Google C++ Testing Framework config.status 1.6.0 +configured by $0, generated by GNU Autoconf 2.69, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX +@%:@@%:@ Running $as_me. @%:@@%:@ +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" + + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' +macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' +enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' +enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' +pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' +enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' +shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' +SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' +ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' +PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' +host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' +host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' +host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' +build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' +build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' +build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' +SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' +Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' +GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' +EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' +FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' +LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' +NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' +LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' +max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' +ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' +exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' +lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' +lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' +lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' +lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' +lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' +reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' +reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' +deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' +file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' +file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' +want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' +DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' +sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' +AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' +AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' +archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' +STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' +RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' +old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' +old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' +lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' +CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' +CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' +compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' +GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' +lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' +nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' +lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' +lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' +objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' +MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' +need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' +MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' +DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' +NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' +LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' +OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' +OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' +libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' +shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' +extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' +compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' +module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' +with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' +no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' +hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' +hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' +inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' +link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' +always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' +exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' +include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' +prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' +postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' +file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' +variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' +need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' +need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' +version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' +runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' +libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' +library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' +soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' +install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' +postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' +postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' +finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' +hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' +sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' +configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' +configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' +hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' +enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' +old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' +striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' +predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' +postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' +predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' +postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' +LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' +reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' +reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' +compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' +GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' +archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' +module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' +with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' +no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' +inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' +link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' +always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' +exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' +include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' +prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' +postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' +file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' +predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' +postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' +predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' +postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' + +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in SHELL \ +ECHO \ +PATH_SEPARATOR \ +SED \ +GREP \ +EGREP \ +FGREP \ +LD \ +NM \ +LN_S \ +lt_SP2NL \ +lt_NL2SP \ +reload_flag \ +OBJDUMP \ +deplibs_check_method \ +file_magic_cmd \ +file_magic_glob \ +want_nocaseglob \ +DLLTOOL \ +sharedlib_from_linklib_cmd \ +AR \ +AR_FLAGS \ +archiver_list_spec \ +STRIP \ +RANLIB \ +CC \ +CFLAGS \ +compiler \ +lt_cv_sys_global_symbol_pipe \ +lt_cv_sys_global_symbol_to_cdecl \ +lt_cv_sys_global_symbol_to_import \ +lt_cv_sys_global_symbol_to_c_name_address \ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ +lt_cv_nm_interface \ +nm_file_list_spec \ +lt_cv_truncate_bin \ +lt_prog_compiler_no_builtin_flag \ +lt_prog_compiler_pic \ +lt_prog_compiler_wl \ +lt_prog_compiler_static \ +lt_cv_prog_compiler_c_o \ +need_locks \ +MANIFEST_TOOL \ +DSYMUTIL \ +NMEDIT \ +LIPO \ +OTOOL \ +OTOOL64 \ +shrext_cmds \ +export_dynamic_flag_spec \ +whole_archive_flag_spec \ +compiler_needs_object \ +with_gnu_ld \ +allow_undefined_flag \ +no_undefined_flag \ +hardcode_libdir_flag_spec \ +hardcode_libdir_separator \ +exclude_expsyms \ +include_expsyms \ +file_list_spec \ +variables_saved_for_relink \ +libname_spec \ +library_names_spec \ +soname_spec \ +install_override_mode \ +finish_eval \ +old_striplib \ +striplib \ +compiler_lib_search_dirs \ +predep_objects \ +postdep_objects \ +predeps \ +postdeps \ +compiler_lib_search_path \ +LD_CXX \ +reload_flag_CXX \ +compiler_CXX \ +lt_prog_compiler_no_builtin_flag_CXX \ +lt_prog_compiler_pic_CXX \ +lt_prog_compiler_wl_CXX \ +lt_prog_compiler_static_CXX \ +lt_cv_prog_compiler_c_o_CXX \ +export_dynamic_flag_spec_CXX \ +whole_archive_flag_spec_CXX \ +compiler_needs_object_CXX \ +with_gnu_ld_CXX \ +allow_undefined_flag_CXX \ +no_undefined_flag_CXX \ +hardcode_libdir_flag_spec_CXX \ +hardcode_libdir_separator_CXX \ +exclude_expsyms_CXX \ +include_expsyms_CXX \ +file_list_spec_CXX \ +compiler_lib_search_dirs_CXX \ +predep_objects_CXX \ +postdep_objects_CXX \ +predeps_CXX \ +postdeps_CXX \ +compiler_lib_search_path_CXX; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds \ +old_postinstall_cmds \ +old_postuninstall_cmds \ +old_archive_cmds \ +extract_expsyms_cmds \ +old_archive_from_new_cmds \ +old_archive_from_expsyms_cmds \ +archive_cmds \ +archive_expsym_cmds \ +module_cmds \ +module_expsym_cmds \ +export_symbols_cmds \ +prelink_cmds \ +postlink_cmds \ +postinstall_cmds \ +postuninstall_cmds \ +finish_cmds \ +sys_lib_search_path_spec \ +configure_time_dlsearch_path \ +configure_time_lt_sys_library_path \ +reload_cmds_CXX \ +old_archive_cmds_CXX \ +old_archive_from_new_cmds_CXX \ +old_archive_from_expsyms_cmds_CXX \ +archive_cmds_CXX \ +archive_expsym_cmds_CXX \ +module_cmds_CXX \ +module_expsym_cmds_CXX \ +export_symbols_cmds_CXX \ +prelink_cmds_CXX \ +postlink_cmds_CXX; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +ac_aux_dir='$ac_aux_dir' + +# See if we are running on zsh, and set the options that allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='$PACKAGE' + VERSION='$VERSION' + RM='$RM' + ofile='$ofile' + + + + + + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "build-aux/config.h") CONFIG_HEADERS="$CONFIG_HEADERS build-aux/config.h" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "scripts/gtest-config") CONFIG_FILES="$CONFIG_FILES scripts/gtest-config" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "scripts/gtest-config":F) chmod +x scripts/gtest-config ;; + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + case $CONFIG_FILES in @%:@( + *\'*) : + eval set x "$CONFIG_FILES" ;; @%:@( + *) : + set x $CONFIG_FILES ;; @%:@( + *) : + ;; +esac + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`$as_dirname -- "$am_mf" || +$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$am_mf" : 'X\(//\)[^/]' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$am_mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + am_filepart=`$as_basename -- "$am_mf" || +$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$am_mf" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { echo "$as_me:$LINENO: cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles" >&5 + (cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } || am_rc=$? + done + if test $am_rc -ne 0; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. Try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking). +See \`config.log' for more details" "$LINENO" 5; } + fi + { am_dirpart=; unset am_dirpart;} + { am_filepart=; unset am_filepart;} + { am_mf=; unset am_mf;} + { am_rc=; unset am_rc;} + rm -f conftest-deps.mk +} + ;; + "libtool":C) + + # See if we are running on zsh, and set the options that allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST + fi + + cfgfile=${ofile}T + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL +# Generated automatically by $as_me ($PACKAGE) $VERSION +# NOTE: Changes made to this file will be lost: look at ltmain.sh. + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + +# Copyright (C) 2014 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +# The names of the tagged configurations supported by this script. +available_tags='CXX ' + +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + +# ### BEGIN LIBTOOL CONFIG + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# Shared archive member basename,for filename based shared library versioning on AIX. +shared_archive_member_spec=$shared_archive_member_spec + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that protects backslashes. +ECHO=$lt_ECHO + +# The PATH separator for the build system. +PATH_SEPARATOR=$lt_PATH_SEPARATOR + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# convert \$build file names to \$host format. +to_host_file_cmd=$lt_cv_to_host_file_cmd + +# convert \$build files to toolchain format. +to_tool_file_cmd=$lt_cv_to_tool_file_cmd + +# An object symbol dumper. +OBJDUMP=$lt_OBJDUMP + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method = "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# How to find potential files when deplibs_check_method = "file_magic". +file_magic_glob=$lt_file_magic_glob + +# Find potential files using nocaseglob when deplibs_check_method = "file_magic". +want_nocaseglob=$lt_want_nocaseglob + +# DLL creation program. +DLLTOOL=$lt_DLLTOOL + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd + +# The archiver. +AR=$lt_AR + +# Flags to create an archive. +AR_FLAGS=$lt_AR_FLAGS + +# How to feed a file listing to the archiver. +archiver_list_spec=$lt_archiver_list_spec + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=$lock_old_archive_extraction + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm into a list of symbols to manually relocate. +global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# The name lister interface. +nm_interface=$lt_lt_cv_nm_interface + +# Specify filename containing input files for \$NM. +nm_file_list_spec=$lt_nm_file_list_spec + +# The root where to search for dependent libraries,and where our libraries should be installed. +lt_sysroot=$lt_sysroot + +# Command to truncate a binary pipe. +lt_truncate_bin=$lt_lt_cv_truncate_bin + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Manifest tool. +MANIFEST_TOOL=$lt_MANIFEST_TOOL + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Permission mode override for installation of shared libraries. +install_override_mode=$lt_install_override_mode + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Detected run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path + +# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. +configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \$shlibpath_var if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects +postdep_objects=$lt_postdep_objects +predeps=$lt_predeps +postdeps=$lt_postdeps + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path + +# ### END LIBTOOL CONFIG + +_LT_EOF + + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x@S|@2 in + x) + ;; + *:) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" + ;; + x:*) + eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" + ;; + *) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + esac +} + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in @S|@*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + +ltmain=$ac_aux_dir/ltmain.sh + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + + cat <<_LT_EOF >> "$ofile" + +# ### BEGIN LIBTOOL TAG CONFIG: CXX + +# The linker used to build libraries. +LD=$lt_LD_CXX + +# How to create reloadable object files. +reload_flag=$lt_reload_flag_CXX +reload_cmds=$lt_reload_cmds_CXX + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds_CXX + +# A language specific compiler. +CC=$lt_compiler_CXX + +# Is the compiler the GNU compiler? +with_gcc=$GCC_CXX + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_CXX + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_CXX + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_CXX + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_CXX + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object_CXX + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds_CXX +archive_expsym_cmds=$lt_archive_expsym_cmds_CXX + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds_CXX +module_expsym_cmds=$lt_module_expsym_cmds_CXX + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld_CXX + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_CXX + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_CXX + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct_CXX + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \$shlibpath_var if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute_CXX + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L_CXX + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic_CXX + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath_CXX + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_CXX + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols_CXX + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_CXX + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_CXX + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_CXX + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds_CXX + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds_CXX + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec_CXX + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_CXX + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects_CXX +postdep_objects=$lt_postdep_objects_CXX +predeps=$lt_predeps_CXX +postdeps=$lt_postdeps_CXX + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_CXX + +# ### END LIBTOOL TAG CONFIG: CXX +_LT_EOF + + ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + diff --git a/thirdparty/protobuf-2.6.1/gtest/autom4te.cache/output.1 b/thirdparty/protobuf-2.6.1/gtest/autom4te.cache/output.1 new file mode 100644 index 00000000..99576859 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/autom4te.cache/output.1 @@ -0,0 +1,18941 @@ +@%:@! /bin/sh +@%:@ Guess values for system-dependent variables and create Makefiles. +@%:@ Generated by GNU Autoconf 2.69 for Google C++ Testing Framework 1.6.0. +@%:@ +@%:@ Report bugs to . +@%:@ +@%:@ +@%:@ Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +@%:@ +@%:@ +@%:@ This configure script is free software; the Free Software Foundation +@%:@ gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in @%:@( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in @%:@(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in @%:@ (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 + + test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ + || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in @%:@( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in @%:@ (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org and +$0: googletestframework@googlegroups.com about your system, +$0: including any error possibly output before this +$0: message. Then install a modern shell, or manually run +$0: the script under such a shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +@%:@ as_fn_unset VAR +@%:@ --------------- +@%:@ Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} @%:@ as_fn_set_status + +@%:@ as_fn_exit STATUS +@%:@ ----------------- +@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} @%:@ as_fn_exit + +@%:@ as_fn_mkdir_p +@%:@ ------------- +@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} @%:@ as_fn_mkdir_p + +@%:@ as_fn_executable_p FILE +@%:@ ----------------------- +@%:@ Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} @%:@ as_fn_executable_p +@%:@ as_fn_append VAR VALUE +@%:@ ---------------------- +@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take +@%:@ advantage of any shell optimizations that allow amortized linear growth over +@%:@ repeated appends, instead of the typical quadratic growth present in naive +@%:@ implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are +@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the +@%:@ script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in @%:@((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + +SHELL=${CONFIG_SHELL-/bin/sh} + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIB@&t@OBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='Google C++ Testing Framework' +PACKAGE_TARNAME='gtest' +PACKAGE_VERSION='1.6.0' +PACKAGE_STRING='Google C++ Testing Framework 1.6.0' +PACKAGE_BUGREPORT='googletestframework@googlegroups.com' +PACKAGE_URL='' + +ac_unique_file="./LICENSE" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +LIB@&t@OBJS +HAVE_PTHREADS_FALSE +HAVE_PTHREADS_TRUE +PTHREAD_CFLAGS +PTHREAD_LIBS +PTHREAD_CC +acx_pthread_config +HAVE_PYTHON_FALSE +HAVE_PYTHON_TRUE +PYTHON +CXXCPP +CPP +LT_SYS_LIBRARY_PATH +OTOOL64 +OTOOL +LIPO +NMEDIT +DSYMUTIL +MANIFEST_TOOL +RANLIB +ac_ct_AR +AR +DLLTOOL +OBJDUMP +LN_S +NM +ac_ct_DUMPBIN +DUMPBIN +LD +FGREP +EGREP +GREP +SED +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +LIBTOOL +am__fastdepCXX_FALSE +am__fastdepCXX_TRUE +CXXDEPMODE +ac_ct_CXX +CXXFLAGS +CXX +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +runstatedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL +am__quote' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_silent_rules +enable_dependency_tracking +enable_shared +enable_static +with_pic +enable_fast_install +with_aix_soname +with_gnu_ld +with_sysroot +enable_libtool_lock +with_pthreads +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CXX +CXXFLAGS +CCC +LT_SYS_LIBRARY_PATH +CPP +CXXCPP' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir runstatedir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures Google C++ Testing Framework 1.6.0 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + @<:@@S|@ac_default_prefix@:>@ + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + @<:@PREFIX@:>@ + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root @<:@DATAROOTDIR/doc/gtest@:>@ + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of Google C++ Testing Framework 1.6.0:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + --enable-shared@<:@=PKGS@:>@ build shared libraries @<:@default=yes@:>@ + --enable-static@<:@=PKGS@:>@ build static libraries @<:@default=yes@:>@ + --enable-fast-install@<:@=PKGS@:>@ + optimize for fast installation @<:@default=yes@:>@ + --disable-libtool-lock avoid locking (might break parallel builds) + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-pic@<:@=PKGS@:>@ try to use only PIC/non-PIC objects @<:@default=use + both@:>@ + --with-aix-soname=aix|svr4|both + shared library versioning (aka "SONAME") variant to + provide on AIX, @<:@default=aix@:>@. + --with-gnu-ld assume the C compiler uses GNU ld @<:@default=no@:>@ + --with-sysroot@<:@=DIR@:>@ Search for dependent libraries within DIR (or the + compiler's sysroot if not specified). + --with-pthreads use pthreads (default is yes) + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CXX C++ compiler command + CXXFLAGS C++ compiler flags + LT_SYS_LIBRARY_PATH + User-defined run-time library search path. + CPP C preprocessor + CXXCPP C++ preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +Google C++ Testing Framework configure 1.6.0 +generated by GNU Autoconf 2.69 + +Copyright (C) 2012 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +@%:@ ac_fn_c_try_compile LINENO +@%:@ -------------------------- +@%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_compile + +@%:@ ac_fn_cxx_try_compile LINENO +@%:@ ---------------------------- +@%:@ Try to compile conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_cxx_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_cxx_try_compile + +@%:@ ac_fn_c_try_link LINENO +@%:@ ----------------------- +@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_link + +@%:@ ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +@%:@ ------------------------------------------------------- +@%:@ Tests whether HEADER exists and can be compiled using the include files in +@%:@ INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +@%:@include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_header_compile + +@%:@ ac_fn_c_try_cpp LINENO +@%:@ ---------------------- +@%:@ Try to preprocess conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_cpp + +@%:@ ac_fn_c_try_run LINENO +@%:@ ---------------------- +@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. Assumes +@%:@ that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_c_try_run + +@%:@ ac_fn_c_check_func LINENO FUNC VAR +@%:@ ---------------------------------- +@%:@ Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} @%:@ ac_fn_c_check_func + +@%:@ ac_fn_cxx_try_cpp LINENO +@%:@ ------------------------ +@%:@ Try to preprocess conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_cxx_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_cxx_try_cpp + +@%:@ ac_fn_cxx_try_link LINENO +@%:@ ------------------------- +@%:@ Try to link conftest.@S|@ac_ext, and return whether this succeeded. +ac_fn_cxx_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} @%:@ ac_fn_cxx_try_link +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by Google C++ Testing Framework $as_me 1.6.0, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in @%:@(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +# Provide various options to initialize the Autoconf and configure processes. + + + +ac_aux_dir= +for ac_dir in build-aux "$srcdir"/build-aux; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + as_fn_error $? "cannot find install-sh, install.sh, or shtool in build-aux \"$srcdir\"/build-aux" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +ac_config_headers="$ac_config_headers build-aux/config.h" + +ac_config_files="$ac_config_files Makefile" + +ac_config_files="$ac_config_files scripts/gtest-config" + + +# Initialize Automake with various options. We require at least v1.9, prevent +# pedantic complaints about package files, and enable various distribution +# targets. +am__api_version='1.16' + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if ${ac_cv_path_install+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in @%:@(( + ./ | .// | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +$as_echo_n "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken + alias in your environment" "$LINENO" 5 + fi + if test "$2" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$2" = conftest.file + ) +then + # Ok. + : +else + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was `s,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` + +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` + +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if ${ac_cv_path_mkdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +@%:@ Check whether --enable-silent-rules was given. +if test "${enable_silent_rules+set}" = set; then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=1;; +esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='gtest' + VERSION='1.6.0' + + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +@%:@define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar pax cpio none' + +am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' + + + + + + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 + fi +fi + + +# Check for programs used in building Google Test. +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $@%:@ != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } +if ${am_cv_prog_cc_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +$as_echo "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 +$as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; } +cat > confinc.mk << 'END' +am__doit: + @echo this is the am__doit target >confinc.out +.PHONY: am__doit +END +am__include="#" +am__quote= +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 + (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + case $?:`cat confinc.out 2>/dev/null` in @%:@( + '0:this is the am__doit target') : + case $s in @%:@( + BSD) : + am__include='.include' am__quote='"' ;; @%:@( + *) : + am__include='include' am__quote='' ;; +esac ;; @%:@( + *) : + ;; +esac + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 +$as_echo "${_am_result}" >&6; } + +@%:@ Check whether --enable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then : + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + +depcc="$CC" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CC_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +$as_echo "$CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +if ${ac_cv_cxx_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } +if ${ac_cv_prog_cxx_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +else + CXXFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + +else + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +depcc="$CXX" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CXX_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +fi + + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +case `pwd` in + *\ * | *\ *) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; +esac + + + +macro_version='2.4.6' +macro_revision='2.4.6' + + + + + + + + + + + + + +ltmain=$ac_aux_dir/ltmain.sh + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if ${ac_cv_build+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if ${ac_cv_host+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 +$as_echo_n "checking how to print strings... " >&6; } +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "" +} + +case $ECHO in + printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 +$as_echo "printf" >&6; } ;; + print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 +$as_echo "print -r" >&6; } ;; + *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 +$as_echo "cat" >&6; } ;; +esac + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if ${ac_cv_path_SED+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +$as_echo "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +$as_echo_n "checking for fgrep... " >&6; } +if ${ac_cv_path_FGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 + then ac_cv_path_FGREP="$GREP -F" + else + if test -z "$FGREP"; then + ac_path_FGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in fgrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_FGREP" || continue +# Check for GNU ac_path_FGREP and select it if it is found. + # Check for GNU $ac_path_FGREP +case `"$ac_path_FGREP" --version 2>&1` in +*GNU*) + ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'FGREP' >> "conftest.nl" + "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_FGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_FGREP="$ac_path_FGREP" + ac_path_FGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_FGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_FGREP"; then + as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_FGREP=$FGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +$as_echo "$ac_cv_path_FGREP" >&6; } + FGREP="$ac_cv_path_FGREP" + + +test -z "$GREP" && GREP=grep + + + + + + + + + + + + + + + + + + + +@%:@ Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return, which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD=$ac_prog + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test yes = "$with_gnu_ld"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD=$ac_dir/$ac_prog + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +if ${lt_cv_path_NM+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM=$NM +else + lt_nm_to_check=${ac_tool_prefix}nm + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/$lt_tmp_nm + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the 'sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty + case $build_os in + mingw*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac + case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break 2 + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break 2 + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS=$lt_save_ifs + done + : ${lt_cv_path_NM=no} +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +$as_echo "$lt_cv_path_NM" >&6; } +if test no != "$lt_cv_path_NM"; then + NM=$lt_cv_path_NM +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + if test -n "$ac_tool_prefix"; then + for ac_prog in dumpbin "link -dump" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DUMPBIN"; then + ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DUMPBIN=$ac_cv_prog_DUMPBIN +if test -n "$DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +$as_echo "$DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$DUMPBIN" && break + done +fi +if test -z "$DUMPBIN"; then + ac_ct_DUMPBIN=$DUMPBIN + for ac_prog in dumpbin "link -dump" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DUMPBIN"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN +if test -n "$ac_ct_DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +$as_echo "$ac_ct_DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_DUMPBIN" && break +done + + if test "x$ac_ct_DUMPBIN" = x; then + DUMPBIN=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DUMPBIN=$ac_ct_DUMPBIN + fi +fi + + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols -headers" + ;; + *) + DUMPBIN=: + ;; + esac + fi + + if test : != "$DUMPBIN"; then + NM=$DUMPBIN + fi +fi +test -z "$NM" && NM=nm + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +$as_echo_n "checking the name lister ($NM) interface... " >&6; } +if ${lt_cv_nm_interface+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: output\"" >&5) + cat conftest.out >&5 + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +$as_echo "$lt_cv_nm_interface" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } +fi + +# find the maximum length of command line arguments +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +$as_echo_n "checking the maximum length of command line arguments... " >&6; } +if ${lt_cv_sys_max_cmd_len+:} false; then : + $as_echo_n "(cached) " >&6 +else + i=0 + teststring=ABCD + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test X`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test 17 != "$i" # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac + +fi + +if test -n "$lt_cv_sys_max_cmd_len"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +$as_echo "$lt_cv_sys_max_cmd_len" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 +$as_echo "none" >&6; } +fi +max_cmd_len=$lt_cv_sys_max_cmd_len + + + + + + +: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi + + + + + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 +$as_echo_n "checking how to convert $build file names to $host format... " >&6; } +if ${lt_cv_to_host_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac + +fi + +to_host_file_cmd=$lt_cv_to_host_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 +$as_echo "$lt_cv_to_host_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 +$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } +if ${lt_cv_to_tool_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + #assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac + +fi + +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 +$as_echo "$lt_cv_to_tool_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +$as_echo_n "checking for $LD option to reload object files... " >&6; } +if ${lt_cv_ld_reload_flag+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_reload_flag='-r' +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +$as_echo "$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + if test yes != "$GCC"; then + reload_cmds=false + fi + ;; + darwin*) + if test yes = "$GCC"; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +$as_echo_n "checking how to recognize dependent libraries... " >&6; } +if ${lt_cv_deplibs_check_method+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# 'unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# that responds to the $file_magic_cmd with a given extended regex. +# If you have 'file' or equivalent on your system and you're not sure +# whether 'pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[4-9]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[3-9]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd* | bitrig*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +os2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +$as_echo "$lt_cv_deplibs_check_method" >&6; } + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + + + + + + + + + + + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +$as_echo "$DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +$as_echo "$ac_ct_DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + +test -z "$DLLTOOL" && DLLTOOL=dlltool + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 +$as_echo_n "checking how to associate runtime and link libraries... " >&6; } +if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh; + # decide which one to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd=$ECHO + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 +$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + + + + + + + + +if test -n "$ac_tool_prefix"; then + for ac_prog in ar + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AR" && break + done +fi +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_AR" && break +done + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +fi + +: ${AR=ar} +: ${AR_FLAGS=cru} + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 +$as_echo_n "checking for archiver @FILE support... " >&6; } +if ${lt_cv_ar_at_file+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ar_at_file=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test 0 -eq "$ac_status"; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test 0 -ne "$ac_status"; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 +$as_echo "$lt_cv_ar_at_file" >&6; } + +if test no = "$lt_cv_ar_at_file"; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +test -z "$STRIP" && STRIP=: + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +test -z "$RANLIB" && RANLIB=: + + + + + + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + bitrig* | openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } +if ${lt_cv_sys_global_symbol_pipe+:} false; then : + $as_echo_n "(cached) " >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[ABCDGISTW]' + ;; +hpux*) + if test ia64 = "$host_cpu"; then + symcode='[ABCDEGRST]' + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Gets list of data symbols to import. + lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" + # Adjust the below global symbol transforms to fixup imported variables. + lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" + lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" + lt_c_name_lib_hook="\ + -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ + -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" +else + # Disable hooks by default. + lt_cv_sys_global_symbol_to_import= + lt_cdecl_hook= + lt_c_name_hook= + lt_c_name_lib_hook= +fi + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n"\ +$lt_cdecl_hook\ +" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ +$lt_c_name_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" + +# Transform an extracted symbol line into symbol name with lib prefix and +# symbol address. +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ +$lt_c_name_lib_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function, + # D for any global variable and I for any imported variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK '"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ +" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ +" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ +" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ +" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Now try to grab the symbols. + nlist=conftest.nm + $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&5 + if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&5 && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT@&t@_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT@&t@_DLSYM_CONST +#else +# define LT@&t@_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT@&t@_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS=conftstm.$ac_objext + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest$ac_exeext; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test yes = "$pipe_works"; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +$as_echo "failed" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 +$as_echo_n "checking for sysroot... " >&6; } + +@%:@ Check whether --with-sysroot was given. +if test "${with_sysroot+set}" = set; then : + withval=$with_sysroot; +else + with_sysroot=no +fi + + +lt_sysroot= +case $with_sysroot in #( + yes) + if test yes = "$GCC"; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 +$as_echo "$with_sysroot" >&6; } + as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 + ;; +esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 +$as_echo "${lt_sysroot:-no}" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 +$as_echo_n "checking for a working dd... " >&6; } +if ${ac_cv_path_lt_DD+:} false; then : + $as_echo_n "(cached) " >&6 +else + printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +: ${lt_DD:=$DD} +if test -z "$lt_DD"; then + ac_path_lt_DD_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in dd; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_lt_DD" || continue +if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: +fi + $ac_path_lt_DD_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_lt_DD"; then + : + fi +else + ac_cv_path_lt_DD=$lt_DD +fi + +rm -f conftest.i conftest2.i conftest.out +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 +$as_echo "$ac_cv_path_lt_DD" >&6; } + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 +$as_echo_n "checking how to truncate binary pipes... " >&6; } +if ${lt_cv_truncate_bin+:} false; then : + $as_echo_n "(cached) " >&6 +else + printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +lt_cv_truncate_bin= +if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" +fi +rm -f conftest.i conftest2.i conftest.out +test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 +$as_echo "$lt_cv_truncate_bin" >&6; } + + + + + + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in @S|@*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + + +@%:@ Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then : + enableval=$enable_libtool_lock; +fi + +test no = "$enable_libtool_lock" || enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out what ABI is being produced by ac_compile, and set mode + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE=32 + ;; + *ELF-64*) + HPUX_IA64_MODE=64 + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + if test yes = "$lt_cv_prog_gnu_ld"; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +mips64*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + emul=elf + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + emul="${emul}32" + ;; + *64-bit*) + emul="${emul}64" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *MSB*) + emul="${emul}btsmip" + ;; + *LSB*) + emul="${emul}ltsmip" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *N32*) + emul="${emul}n32" + ;; + esac + LD="${LD-ld} -m $emul" + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. Note that the listed cases only cover the + # situations where additional linker options are needed (such as when + # doing 32-bit compilation for a host where ld defaults to 64-bit, or + # vice versa); the common cases where no linker options are needed do + # not appear in the list. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + case `/usr/bin/file conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac + ;; + powerpc64le-*linux*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + powerpcle-*linux*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -belf" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +$as_echo_n "checking whether the C compiler needs -belf... " >&6; } +if ${lt_cv_cc_needs_belf+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_cc_needs_belf=yes +else + lt_cv_cc_needs_belf=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +$as_echo "$lt_cv_cc_needs_belf" >&6; } + if test yes != "$lt_cv_cc_needs_belf"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS=$SAVE_CFLAGS + fi + ;; +*-*solaris*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*|x86_64-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD=${LD-ld}_sol2 + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks=$enable_libtool_lock + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. +set dummy ${ac_tool_prefix}mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$MANIFEST_TOOL"; then + ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL +if test -n "$MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 +$as_echo "$MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_MANIFEST_TOOL"; then + ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL + # Extract the first word of "mt", so it can be a program name with args. +set dummy mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_MANIFEST_TOOL"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL +if test -n "$ac_ct_MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 +$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_MANIFEST_TOOL" = x; then + MANIFEST_TOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL + fi +else + MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" +fi + +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 +$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } +if ${lt_cv_path_mainfest_tool+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&5 + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 +$as_echo "$lt_cv_path_mainfest_tool" >&6; } +if test yes != "$lt_cv_path_mainfest_tool"; then + MANIFEST_TOOL=: +fi + + + + + + + case $host_os in + rhapsody* | darwin*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. +set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DSYMUTIL"; then + ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DSYMUTIL=$ac_cv_prog_DSYMUTIL +if test -n "$DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +$as_echo "$DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DSYMUTIL"; then + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. +set dummy dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DSYMUTIL"; then + ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL +if test -n "$ac_ct_DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +$as_echo "$ac_ct_DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DSYMUTIL" = x; then + DSYMUTIL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DSYMUTIL=$ac_ct_DSYMUTIL + fi +else + DSYMUTIL="$ac_cv_prog_DSYMUTIL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. +set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NMEDIT"; then + ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +NMEDIT=$ac_cv_prog_NMEDIT +if test -n "$NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +$as_echo "$NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_NMEDIT"; then + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. +set dummy nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_NMEDIT"; then + ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_NMEDIT="nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT +if test -n "$ac_ct_NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +$as_echo "$ac_ct_NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_NMEDIT" = x; then + NMEDIT=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + NMEDIT=$ac_ct_NMEDIT + fi +else + NMEDIT="$ac_cv_prog_NMEDIT" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. +set dummy ${ac_tool_prefix}lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$LIPO"; then + ac_cv_prog_LIPO="$LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_LIPO="${ac_tool_prefix}lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +LIPO=$ac_cv_prog_LIPO +if test -n "$LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +$as_echo "$LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_LIPO"; then + ac_ct_LIPO=$LIPO + # Extract the first word of "lipo", so it can be a program name with args. +set dummy lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_LIPO"; then + ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_LIPO="lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO +if test -n "$ac_ct_LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +$as_echo "$ac_ct_LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_LIPO" = x; then + LIPO=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + LIPO=$ac_ct_LIPO + fi +else + LIPO="$ac_cv_prog_LIPO" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL"; then + ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL="${ac_tool_prefix}otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL=$ac_cv_prog_OTOOL +if test -n "$OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +$as_echo "$OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL"; then + ac_ct_OTOOL=$OTOOL + # Extract the first word of "otool", so it can be a program name with args. +set dummy otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL"; then + ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL="otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL +if test -n "$ac_ct_OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +$as_echo "$ac_ct_OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL" = x; then + OTOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL=$ac_ct_OTOOL + fi +else + OTOOL="$ac_cv_prog_OTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL64"; then + ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL64=$ac_cv_prog_OTOOL64 +if test -n "$OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +$as_echo "$OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL64"; then + ac_ct_OTOOL64=$OTOOL64 + # Extract the first word of "otool64", so it can be a program name with args. +set dummy otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL64"; then + ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL64="otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 +if test -n "$ac_ct_OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +$as_echo "$ac_ct_OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL64" = x; then + OTOOL64=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL64=$ac_ct_OTOOL64 + fi +else + OTOOL64="$ac_cv_prog_OTOOL64" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +$as_echo_n "checking for -single_module linker flag... " >&6; } +if ${lt_cv_apple_cc_single_mod+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_apple_cc_single_mod=no + if test -z "$LT_MULTI_MODULE"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&5 + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test 0 = "$_lt_result"; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&5 + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +$as_echo "$lt_cv_apple_cc_single_mod" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } +if ${lt_cv_ld_exported_symbols_list+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_ld_exported_symbols_list=yes +else + lt_cv_ld_exported_symbols_list=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 +$as_echo_n "checking for -force_load linker flag... " >&6; } +if ${lt_cv_ld_force_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 + echo "$AR cru libconftest.a conftest.o" >&5 + $AR cru libconftest.a conftest.o 2>&5 + echo "$RANLIB libconftest.a" >&5 + $RANLIB libconftest.a 2>&5 + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&5 + elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&5 + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 +$as_echo "$lt_cv_ld_force_load" >&6; } + case $host_os in + rhapsody* | darwin1.[012]) + _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[91]*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + 10.[012][,.]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test yes = "$lt_cv_apple_cc_single_mod"; then + _lt_dar_single_mod='$single_module' + fi + if test yes = "$lt_cv_ld_exported_symbols_list"; then + _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' + fi + if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x@S|@2 in + x) + ;; + *:) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" + ;; + x:*) + eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" + ;; + *) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + esac +} + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@ifdef __STDC__ +@%:@ include +@%:@else +@%:@ include +@%:@endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@ifdef __STDC__ +@%:@ include +@%:@else +@%:@ include +@%:@endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "@%:@define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in dlfcn.h +do : + ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default +" +if test "x$ac_cv_header_dlfcn_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +@%:@define HAVE_DLFCN_H 1 +_ACEOF + +fi + +done + + + +func_stripname_cnf () +{ + case @S|@2 in + .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; + *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; + esac +} # func_stripname_cnf + + + + + +# Set options + + + + enable_dlopen=no + + + enable_win32_dll=no + + + @%:@ Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then : + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_shared=yes +fi + + + + + + + + + + @%:@ Check whether --enable-static was given. +if test "${enable_static+set}" = set; then : + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_static=yes +fi + + + + + + + + + + +@%:@ Check whether --with-pic was given. +if test "${with_pic+set}" = set; then : + withval=$with_pic; lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for lt_pkg in $withval; do + IFS=$lt_save_ifs + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + pic_mode=default +fi + + + + + + + + + @%:@ Check whether --enable-fast-install was given. +if test "${enable_fast_install+set}" = set; then : + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_fast_install=yes +fi + + + + + + + + + shared_archive_member_spec= +case $host,$enable_shared in +power*-*-aix[5-9]*,yes) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 +$as_echo_n "checking which variant of shared library versioning to provide... " >&6; } + +@%:@ Check whether --with-aix-soname was given. +if test "${with_aix_soname+set}" = set; then : + withval=$with_aix_soname; case $withval in + aix|svr4|both) + ;; + *) + as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 + ;; + esac + lt_cv_with_aix_soname=$with_aix_soname +else + if ${lt_cv_with_aix_soname+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_with_aix_soname=aix +fi + + with_aix_soname=$lt_cv_with_aix_soname +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 +$as_echo "$with_aix_soname" >&6; } + if test aix != "$with_aix_soname"; then + # For the AIX way of multilib, we name the shared archive member + # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', + # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. + # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, + # the AIX toolchain works better with OBJECT_MODE set (default 32). + if test 64 = "${OBJECT_MODE-32}"; then + shared_archive_member_spec=shr_64 + else + shared_archive_member_spec=shr + fi + fi + ;; +*) + with_aix_soname=aix + ;; +esac + + + + + + + + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS=$ltmain + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +test -z "$LN_S" && LN_S="ln -s" + + + + + + + + + + + + + + +if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +$as_echo_n "checking for objdir... " >&6; } +if ${lt_cv_objdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +$as_echo "$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir + + + + + +cat >>confdefs.h <<_ACEOF +@%:@define LT_OBJDIR "$lt_cv_objdir/" +_ACEOF + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a '.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld=$lt_cv_prog_gnu_ld + +old_CC=$CC +old_CFLAGS=$CFLAGS + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +func_cc_basename $compiler +cc_basename=$func_cc_basename_result + + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/${ac_tool_prefix}file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac +fi + +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +$as_echo_n "checking for file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac +fi + +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +# Use C for the default configuration in the libtool script + +lt_save_CC=$CC +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + +lt_prog_compiler_no_builtin_flag= + +if test yes = "$GCC"; then + case $cc_basename in + nvcc*) + lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; + *) + lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + + + + + + + lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + + + if test yes = "$GCC"; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + lt_prog_compiler_pic='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + lt_prog_compiler_wl='-Xlinker ' + if test -n "$lt_prog_compiler_pic"; then + lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + case $cc_basename in + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='$wl-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + # old Intel for x86_64, which still supported -KPIC. + ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-qpic' + lt_prog_compiler_static='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + *Sun\ F* | *Sun*Fortran*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Wl,' + ;; + *Intel*\ [CF]*Compiler*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + *Portland\ Group*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic@&t@ -DPIC" + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic=$lt_prog_compiler_pic +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 +$as_echo "$lt_cv_prog_compiler_pic" >&6; } +lt_prog_compiler_pic=$lt_cv_prog_compiler_pic + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if ${lt_cv_prog_compiler_pic_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic@&t@ -DPIC" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } + +if test yes = "$lt_cv_prog_compiler_pic_works"; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi + + + + + + + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works=yes + fi + else + lt_cv_prog_compiler_static_works=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +$as_echo "$lt_cv_prog_compiler_static_works" >&6; } + +if test yes = "$lt_cv_prog_compiler_static_works"; then + : +else + lt_prog_compiler_static= +fi + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + +hard_links=nottested +if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test no = "$hard_links"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag= + always_export_symbols=no + archive_cmds= + archive_expsym_cmds= + compiler_needs_object=no + enable_shared_with_static_runtimes=no + export_dynamic_flag_spec= + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + hardcode_automatic=no + hardcode_direct=no + hardcode_direct_absolute=no + hardcode_libdir_flag_spec= + hardcode_libdir_separator= + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + inherit_rpath=no + link_all_deplibs=unknown + module_cmds= + module_expsym_cmds= + old_archive_from_new_cmds= + old_archive_from_expsyms_cmds= + thread_safe_flag_spec= + whole_archive_flag_spec= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ' (' and ')$', so one must not match beginning or + # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', + # as well as any symbol that contains 'd'. + exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test yes != "$GCC"; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd* | bitrig*) + with_gnu_ld=no + ;; + linux* | k*bsd*-gnu | gnu*) + link_all_deplibs=no + ;; + esac + + ld_shlibs=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test yes = "$with_gnu_ld"; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; + *\ \(GNU\ Binutils\)\ [3-9]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test yes = "$lt_use_gnu_ld_interface"; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='$wl' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + export_dynamic_flag_spec='$wl--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test ia64 != "$host_cpu"; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + export_dynamic_flag_spec='$wl--export-all-symbols' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + haiku*) + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + link_all_deplibs=yes + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes + ;; + + interix[3-9]*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test linux-dietlibc = "$host_os"; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test no = "$tmp_diet" + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec= + tmp_sharedflag='--shared' ;; + nagfor*) # NAGFOR 5.3 + tmp_sharedflag='-Wl,-shared' ;; + xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + tcc*) + export_dynamic_flag_spec='-rdynamic' + ;; + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + ld_shlibs=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test no = "$ld_shlibs"; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix[4-9]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then + aix_use_runtimelinking=yes + break + fi + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_direct_absolute=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + file_list_spec='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # traditional, no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + hardcode_direct=no + hardcode_direct_absolute=no + ;; + esac + + if test yes = "$GCC"; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag="$shared_flag "'$wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + export_dynamic_flag_spec='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' $wl-bernotok' + allow_undefined_flag=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + fi + archive_cmds_need_lc=yes + archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + always_export_symbols=yes + file_list_spec='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, )='true' + enable_shared_with_static_runtimes=yes + exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + old_postinstall_cmds='chmod 644 $oldlib' + postlink_cmds='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' + enable_shared_with_static_runtimes=yes + ;; + esac + ;; + + darwin* | rhapsody*) + + + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + if test yes = "$lt_cv_ld_force_load"; then + whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + + else + whole_archive_flag_spec='' + fi + link_all_deplibs=yes + allow_undefined_flag=$_lt_dar_allow_undefined + case $cc_basename in + ifort*|nagfor*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test yes = "$_lt_dar_can_shared"; then + output_verbose_link_cmd=func_echo_all + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + + else + ld_shlibs=no + fi + + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test yes = "$GCC"; then + archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='$wl-E' + ;; + + hpux10*) + if test yes,no = "$GCC,$with_gnu_ld"; then + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='$wl-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test yes,no = "$GCC,$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 +$as_echo_n "checking if $CC understands -b... " >&6; } +if ${lt_cv_prog_compiler__b+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler__b=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -b" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler__b=yes + fi + else + lt_cv_prog_compiler__b=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 +$as_echo "$lt_cv_prog_compiler__b" >&6; } + +if test yes = "$lt_cv_prog_compiler__b"; then + archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +fi + + ;; + esac + fi + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='$wl-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test yes = "$GCC"; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 +$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } +if ${lt_cv_irix_exported_symbol+:} false; then : + $as_echo_n "(cached) " >&6 +else + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo (void) { return 0; } +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_irix_exported_symbol=yes +else + lt_cv_irix_exported_symbol=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 +$as_echo "$lt_cv_irix_exported_symbol" >&6; } + if test yes = "$lt_cv_irix_exported_symbol"; then + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' + fi + link_all_deplibs=no + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + inherit_rpath=yes + link_all_deplibs=yes + ;; + + linux*) + case $cc_basename in + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + ld_shlibs=yes + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + *nto* | *qnx*) + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + hardcode_shlibpath_var=no + hardcode_direct_absolute=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' + else + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + fi + else + ld_shlibs=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes + ;; + + osf3*) + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + archive_cmds_need_lc='no' + hardcode_libdir_separator=: + ;; + + solaris*) + no_undefined_flag=' -z defs' + if test yes = "$GCC"; then + wlarc='$wl' + archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='$wl' + archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. GCC discards it without '$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test yes = "$GCC"; then + whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + else + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test sequent = "$host_vendor"; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag='$wl-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='$wl-z,text' + allow_undefined_flag='$wl-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='$wl-R,$libdir' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + + if test sni = "$host_vendor"; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + export_dynamic_flag_spec='$wl-Blargedynsym' + ;; + esac + fi + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +$as_echo "$ld_shlibs" >&6; } +test no = "$ld_shlibs" && can_build_shared=no + +with_gnu_ld=$with_gnu_ld + + + + + + + + + + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test yes,yes = "$GCC,$enable_shared"; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +if ${lt_cv_archive_cmds_need_lc+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } + archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +if test yes = "$GCC"; then + case $host_os in + darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; + *) lt_awk_arg='/^libraries:/' ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; + *) lt_sed_strip_eq='s|=/|/|g' ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary... + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + # ...but if some path component already ends with the multilib dir we assume + # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). + case "$lt_multi_os_dir; $lt_search_path_spec " in + "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) + lt_multi_os_dir= + ;; + esac + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" + elif test -n "$lt_multi_os_dir"; then + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS = " "; FS = "/|\n";} { + lt_foo = ""; + lt_count = 0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo = "/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[lt_foo]++; } + if (lt_freq[lt_foo] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's|/\([A-Za-z]:\)|\1|g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=.so +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + + + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='$libname$release$shared_ext$major' + ;; + +aix[4-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test ia64 = "$host_cpu"; then + # AIX 5 supports IA64 + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a(lib.so.V)' + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='$libname$shared_ext' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec=$LIB + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[23].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 + fi + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test yes = "$lt_cv_prog_gnu_ld"; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + hardcode_libdir_flag_spec='-L$libdir' + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd* | bitrig*) + version_type=sunos + sys_lib_dlsearch_path_spec=/usr/lib + need_lib_prefix=no + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no + else + need_version=yes + fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +os2*) + libname_spec='$name' + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test yes = "$with_gnu_ld"; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec; then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=sco + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test yes = "$with_gnu_ld"; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test no = "$dynamic_linker" && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test yes = "$GCC"; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +fi + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +fi + +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || + test -n "$runpath_var" || + test yes = "$hardcode_automatic"; then + + # We can hardcode non-existent directories. + if test no != "$hardcode_direct" && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && + test no != "$hardcode_minus_L"; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +$as_echo "$hardcode_action" >&6; } + +if test relink = "$hardcode_action" || + test yes = "$inherit_rpath"; then + # Fast installation is not supported + enable_fast_install=no +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + if test yes != "$enable_dlopen"; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen=load_add_on + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen=LoadLibrary + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl +else + + lt_cv_dlopen=dyld + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + tpf*) + # Don't try to run any link tests for TPF. We know it's impossible + # because TPF is a cross-compiler, and we know how we open DSOs. + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + lt_cv_dlopen_self=no + ;; + + *) + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +if test "x$ac_cv_func_shl_load" = xyes; then : + lt_cv_dlopen=shl_load +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +$as_echo_n "checking for shl_load in -ldld... " >&6; } +if ${ac_cv_lib_dld_shl_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_shl_load=yes +else + ac_cv_lib_dld_shl_load=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +$as_echo "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes; then : + lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld +else + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = xyes; then : + lt_cv_dlopen=dlopen +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +$as_echo_n "checking for dlopen in -lsvld... " >&6; } +if ${ac_cv_lib_svld_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_svld_dlopen=yes +else + ac_cv_lib_svld_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +$as_echo "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = xyes; then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +$as_echo_n "checking for dld_link in -ldld... " >&6; } +if ${ac_cv_lib_dld_dld_link+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link (); +int +main () +{ +return dld_link (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_dld_link=yes +else + ac_cv_lib_dld_dld_link=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +$as_echo "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = xyes; then : + lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test no = "$lt_cv_dlopen"; then + enable_dlopen=no + else + enable_dlopen=yes + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS=$CPPFLAGS + test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS=$LDFLAGS + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS=$LIBS + LIBS="$lt_cv_dlopen_libs $LIBS" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +$as_echo_n "checking whether a program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test yes = "$cross_compiling"; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +$as_echo "$lt_cv_dlopen_self" >&6; } + + if test yes = "$lt_cv_dlopen_self"; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self_static+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test yes = "$cross_compiling"; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +$as_echo "$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS=$save_CPPFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + + + + + + + + + + + + + + + + +striplib= +old_striplib= +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +$as_echo_n "checking whether stripping libraries is possible... " >&6; } +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP"; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + ;; + esac +fi + + + + + + + + + + + + + # Report what library types will actually be built + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[4-9]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } + + + + +fi +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +CC=$lt_save_CC + + if test -n "$CXX" && ( test no != "$CXX" && + ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || + (test g++ != "$CXX"))); then + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 +$as_echo_n "checking how to run the C++ preprocessor... " >&6; } +if test -z "$CXXCPP"; then + if ${ac_cv_prog_CXXCPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@ifdef __STDC__ +@%:@ include +@%:@else +@%:@ include +@%:@endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 +$as_echo "$CXXCPP" >&6; } +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@ifdef __STDC__ +@%:@ include +@%:@else +@%:@ include +@%:@endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +@%:@include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +else + _lt_caught_CXX_error=yes +fi + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +archive_cmds_need_lc_CXX=no +allow_undefined_flag_CXX= +always_export_symbols_CXX=no +archive_expsym_cmds_CXX= +compiler_needs_object_CXX=no +export_dynamic_flag_spec_CXX= +hardcode_direct_CXX=no +hardcode_direct_absolute_CXX=no +hardcode_libdir_flag_spec_CXX= +hardcode_libdir_separator_CXX= +hardcode_minus_L_CXX=no +hardcode_shlibpath_var_CXX=unsupported +hardcode_automatic_CXX=no +inherit_rpath_CXX=no +module_cmds_CXX= +module_expsym_cmds_CXX= +link_all_deplibs_CXX=unknown +old_archive_cmds_CXX=$old_archive_cmds +reload_flag_CXX=$reload_flag +reload_cmds_CXX=$reload_cmds +no_undefined_flag_CXX= +whole_archive_flag_spec_CXX= +enable_shared_with_static_runtimes_CXX=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +objext_CXX=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_caught_CXX_error"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + + # save warnings/boilerplate of simple test code + ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + + ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS + compiler=$CC + compiler_CXX=$CC + func_cc_basename $compiler +cc_basename=$func_cc_basename_result + + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test yes = "$GXX"; then + lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' + else + lt_prog_compiler_no_builtin_flag_CXX= + fi + + if test yes = "$GXX"; then + # Set up default GNU C++ configuration + + + +@%:@ Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return, which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD=$ac_prog + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test yes = "$with_gnu_ld"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD=$ac_dir/$ac_prog + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test yes = "$with_gnu_ld"; then + archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='$wl' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + whole_archive_flag_spec_CXX= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + ld_shlibs_CXX=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aix[4-9]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_CXX='' + hardcode_direct_CXX=yes + hardcode_direct_absolute_CXX=yes + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + file_list_spec_CXX='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + hardcode_direct_CXX=no + hardcode_direct_absolute_CXX=no + ;; + esac + + if test yes = "$GXX"; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct_CXX=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_CXX=yes + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_libdir_separator_CXX= + fi + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag=$shared_flag' $wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + export_dynamic_flag_spec_CXX='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + always_export_symbols_CXX=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + # The "-G" linker flag allows undefined symbols. + no_undefined_flag_CXX='-bernotok' + # Determine the default libpath from the value encoded in an empty + # executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath__CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath__CXX +fi + + hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" + + archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + hardcode_libdir_flag_spec_CXX='$wl-R $libdir:/usr/lib:/lib' + allow_undefined_flag_CXX="-z nodefs" + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath__CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath__CXX +fi + + hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_CXX=' $wl-bernotok' + allow_undefined_flag_CXX=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_CXX='$convenience' + fi + archive_cmds_need_lc_CXX=yes + archive_expsym_cmds_CXX='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared + # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. + archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_CXX=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + ld_shlibs_CXX=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_CXX=' ' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=yes + file_list_spec_CXX='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' + enable_shared_with_static_runtimes_CXX=yes + # Don't use ranlib + old_postinstall_cmds_CXX='chmod 644 $oldlib' + postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_CXX='-L$libdir' + export_dynamic_flag_spec_CXX='$wl--export-all-symbols' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=no + enable_shared_with_static_runtimes_CXX=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_CXX=no + fi + ;; + esac + ;; + darwin* | rhapsody*) + + + archive_cmds_need_lc_CXX=no + hardcode_direct_CXX=no + hardcode_automatic_CXX=yes + hardcode_shlibpath_var_CXX=unsupported + if test yes = "$lt_cv_ld_force_load"; then + whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + + else + whole_archive_flag_spec_CXX='' + fi + link_all_deplibs_CXX=yes + allow_undefined_flag_CXX=$_lt_dar_allow_undefined + case $cc_basename in + ifort*|nagfor*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test yes = "$_lt_dar_can_shared"; then + output_verbose_link_cmd=func_echo_all + archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + module_expsym_cmds_CXX="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + if test yes != "$lt_cv_apple_cc_single_mod"; then + archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" + archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" + fi + + else + ld_shlibs_CXX=no + fi + + ;; + + os2*) + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_minus_L_CXX=yes + allow_undefined_flag_CXX=unsupported + shrext_cmds=.dll + archive_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds_CXX='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes_CXX=yes + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + freebsd2.*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + ld_shlibs_CXX=no + ;; + + freebsd-elf*) + archive_cmds_need_lc_CXX=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + ld_shlibs_CXX=yes + ;; + + haiku*) + archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + link_all_deplibs_CXX=yes + ;; + + hpux9*) + hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='$wl-E' + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' + hardcode_libdir_separator_CXX=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + export_dynamic_flag_spec_CXX='$wl-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + ;; + *) + hardcode_direct_CXX=yes + hardcode_direct_absolute_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + interix[3-9]*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + export_dynamic_flag_spec_CXX='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_CXX='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' + fi + fi + link_all_deplibs_CXX=yes + ;; + esac + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + hardcode_libdir_separator_CXX=: + inherit_rpath_CXX=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [1-5].* | *pgcpp\ [1-5].*) + prelink_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + old_archive_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + archive_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 6 and above use weak symbols + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + + hardcode_libdir_flag_spec_CXX='$wl--rpath $wl$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + whole_archive_flag_spec_CXX='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + ;; + cxx*) + # Compaq C++ + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; + xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' + hardcode_libdir_flag_spec_CXX='-R$libdir' + whole_archive_flag_spec_CXX='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object_CXX=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + ld_shlibs_CXX=yes + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + hardcode_direct_absolute_CXX=yes + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' + export_dynamic_flag_spec_CXX='$wl-E' + whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + fi + output_verbose_link_cmd=func_echo_all + else + ld_shlibs_CXX=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + case $host in + osf3*) + allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' + archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + ;; + *) + allow_undefined_flag_CXX=' -expect_unresolved \*' + archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ + $RM $lib.exp' + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + ;; + esac + + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes,no = "$GXX,$with_gnu_ld"; then + allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' + case $host in + osf3*) + archive_cmds_CXX='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + *) + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + esac + + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + archive_cmds_need_lc_CXX=yes + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_shlibpath_var_CXX=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' + ;; + esac + link_all_deplibs_CXX=yes + + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test yes,no = "$GXX,$with_gnu_ld"; then + no_undefined_flag_CXX=' $wl-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' + else + # g++ 2.7 appears to require '-G' NOT '-shared' on this + # platform. + archive_cmds_CXX='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' + fi + + hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir' + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + whole_archive_flag_spec_CXX='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag_CXX='$wl-z,text' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag_CXX='$wl-z,text' + allow_undefined_flag_CXX='$wl-z,nodefs' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='$wl-R,$libdir' + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + export_dynamic_flag_spec_CXX='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ + '"$old_archive_cmds_CXX" + reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ + '"$reload_cmds_CXX" + ;; + *) + archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } + test no = "$ld_shlibs_CXX" && can_build_shared=no + + GCC_CXX=$GXX + LD_CXX=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + # Dependencies to place before and after the object being linked: +predep_objects_CXX= +postdep_objects_CXX= +predeps_CXX= +postdeps_CXX= +compiler_lib_search_path_CXX= + +cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF + + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; +esac + +if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case $prev$p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test x-L = "$p" || + test x-R = "$p"; then + prev=$p + continue + fi + + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac + if test no = "$pre_test_object_deps_done"; then + case $prev in + -L | -R) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$compiler_lib_search_path_CXX"; then + compiler_lib_search_path_CXX=$prev$p + else + compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} $prev$p" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$postdeps_CXX"; then + postdeps_CXX=$prev$p + else + postdeps_CXX="${postdeps_CXX} $prev$p" + fi + fi + prev= + ;; + + *.lto.$objext) ;; # Ignore GCC LTO objects + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test no = "$pre_test_object_deps_done"; then + if test -z "$predep_objects_CXX"; then + predep_objects_CXX=$p + else + predep_objects_CXX="$predep_objects_CXX $p" + fi + else + if test -z "$postdep_objects_CXX"; then + postdep_objects_CXX=$p + else + postdep_objects_CXX="$postdep_objects_CXX $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling CXX test program" +fi + +$RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS + +# PORTME: override above test on systems where it is broken +case $host_os in +interix[3-9]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + predep_objects_CXX= + postdep_objects_CXX= + postdeps_CXX= + ;; +esac + + +case " $postdeps_CXX " in +*" -lc "*) archive_cmds_need_lc_CXX=no ;; +esac + compiler_lib_search_dirs_CXX= +if test -n "${compiler_lib_search_path_CXX}"; then + compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | $SED -e 's! -L! !g' -e 's!^ !!'` +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + lt_prog_compiler_wl_CXX= +lt_prog_compiler_pic_CXX= +lt_prog_compiler_static_CXX= + + + # C++ specific cases for pic, static, wl, etc. + if test yes = "$GXX"; then + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + fi + lt_prog_compiler_pic_CXX='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic_CXX='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static_CXX='$wl-static' + ;; + esac + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_CXX='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + lt_prog_compiler_pic_CXX= + ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static_CXX= + ;; + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_CXX=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic_CXX='-fPIC -shared' + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + else + case $host_os in + aix[4-9]*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + else + lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; + dgux*) + case $cc_basename in + ec++*) + lt_prog_compiler_pic_CXX='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='$wl-a ${wl}archive' + if test ia64 != "$host_cpu"; then + lt_prog_compiler_pic_CXX='+Z' + fi + ;; + aCC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='$wl-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_CXX='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # KAI C++ Compiler + lt_prog_compiler_wl_CXX='--backend -Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64, which still supported -KPIC. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + lt_prog_compiler_static_CXX='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fpic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-qpic' + lt_prog_compiler_static_CXX='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + lt_prog_compiler_pic_CXX='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic_CXX='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + lt_prog_compiler_wl_CXX='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + lt_prog_compiler_pic_CXX='-pic' + ;; + cxx*) + # Digital/Compaq C++ + lt_prog_compiler_wl_CXX='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + lt_prog_compiler_pic_CXX='-pic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + lcc*) + # Lucid + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + lt_prog_compiler_pic_CXX='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + lt_prog_compiler_can_build_shared_CXX=no + ;; + esac + fi + +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_CXX= + ;; + *) + lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX@&t@ -DPIC" + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } +lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } +if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works_CXX=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_CXX@&t@ -DPIC" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works_CXX=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } + +if test yes = "$lt_cv_prog_compiler_pic_works_CXX"; then + case $lt_prog_compiler_pic_CXX in + "" | " "*) ;; + *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; + esac +else + lt_prog_compiler_pic_CXX= + lt_prog_compiler_can_build_shared_CXX=no +fi + +fi + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works_CXX=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works_CXX=yes + fi + else + lt_cv_prog_compiler_static_works_CXX=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } + +if test yes = "$lt_cv_prog_compiler_static_works_CXX"; then + : +else + lt_prog_compiler_static_CXX= +fi + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } + + + + +hard_links=nottested +if test no = "$lt_cv_prog_compiler_c_o_CXX" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test no = "$hard_links"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + case $host_os in + aix[4-9]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_CXX='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + export_symbols_cmds_CXX=$ltdll_cmds + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in + cl*) + exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + ;; + esac + ;; + linux* | k*bsd*-gnu | gnu*) + link_all_deplibs_CXX=no + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } +test no = "$ld_shlibs_CXX" && can_build_shared=no + +with_gnu_ld_CXX=$with_gnu_ld + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_CXX" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_CXX=yes + + if test yes,yes = "$GCC,$enable_shared"; then + case $archive_cmds_CXX in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_CXX + pic_flag=$lt_prog_compiler_pic_CXX + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_CXX + allow_undefined_flag_CXX= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc_CXX=no + else + lt_cv_archive_cmds_need_lc_CXX=yes + fi + allow_undefined_flag_CXX=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } + archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=.so +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + + + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='$libname$release$shared_ext$major' + ;; + +aix[4-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test ia64 = "$host_cpu"; then + # AIX 5 supports IA64 + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a(lib.so.V)' + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='$libname$shared_ext' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec=$LIB + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[23].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 + fi + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test yes = "$lt_cv_prog_gnu_ld"; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + hardcode_libdir_flag_spec_CXX='-L$libdir' + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd* | bitrig*) + version_type=sunos + sys_lib_dlsearch_path_spec=/usr/lib + need_lib_prefix=no + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no + else + need_version=yes + fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +os2*) + libname_spec='$name' + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test yes = "$with_gnu_ld"; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec; then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=sco + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test yes = "$with_gnu_ld"; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test no = "$dynamic_linker" && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test yes = "$GCC"; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +fi + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +fi + +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action_CXX= +if test -n "$hardcode_libdir_flag_spec_CXX" || + test -n "$runpath_var_CXX" || + test yes = "$hardcode_automatic_CXX"; then + + # We can hardcode non-existent directories. + if test no != "$hardcode_direct_CXX" && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" && + test no != "$hardcode_minus_L_CXX"; then + # Linking always hardcodes the temporary library directory. + hardcode_action_CXX=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_CXX=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_CXX=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 +$as_echo "$hardcode_action_CXX" >&6; } + +if test relink = "$hardcode_action_CXX" || + test yes = "$inherit_rpath_CXX"; then + # Fast installation is not supported + enable_fast_install=no +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + + fi # test -n "$compiler" + + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test yes != "$_lt_caught_CXX_error" + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + + + + + + + + + + + + + + ac_config_commands="$ac_config_commands libtool" + + + + +# Only expand once: + + + +# TODO(chandlerc@google.com): Currently we aren't running the Python tests +# against the interpreter detected by AM_PATH_PYTHON, and so we condition +# HAVE_PYTHON by requiring "python" to be in the PATH, and that interpreter's +# version to be >= 2.3. This will allow the scripts to use a "/usr/bin/env" +# hashbang. +PYTHON= # We *do not* allow the user to specify a python interpreter +# Extract the first word of "python", so it can be a program name with args. +set dummy python; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PYTHON+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PYTHON in + [\\/]* | ?:[\\/]*) + ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_PYTHON" && ac_cv_path_PYTHON=":" + ;; +esac +fi +PYTHON=$ac_cv_path_PYTHON +if test -n "$PYTHON"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5 +$as_echo "$PYTHON" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +if test "$PYTHON" != ":"; then : + prog="import sys +# split strings by '.' and convert to numeric. Append some zeros +# because we need at least 4 digits for the hex conversion. +# map returns an iterator in Python 3.0 and a list in 2.x +minver = list(map(int, '2.3'.split('.'))) + [0, 0, 0] +minverhex = 0 +# xrange is not present in Python 3.0 and range returns an iterator +for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i] +sys.exit(sys.hexversion < minverhex)" + if { echo "$as_me:$LINENO: $PYTHON -c "$prog"" >&5 + ($PYTHON -c "$prog") >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then : + : +else + PYTHON=":" +fi +fi + if test "$PYTHON" != ":"; then + HAVE_PYTHON_TRUE= + HAVE_PYTHON_FALSE='#' +else + HAVE_PYTHON_TRUE='#' + HAVE_PYTHON_FALSE= +fi + + +# Configure pthreads. + +@%:@ Check whether --with-pthreads was given. +if test "${with_pthreads+set}" = set; then : + withval=$with_pthreads; with_pthreads=$withval +else + with_pthreads=check +fi + + +have_pthreads=no +if test "x$with_pthreads" != "xno"; then : + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +acx_pthread_ok=no + +# We used to check for pthread.h first, but this fails if pthread.h +# requires special compiler flags (e.g. on True64 or Sequent). +# It gets checked for in the link test anyway. + +# First of all, check if the user has set any of the PTHREAD_LIBS, +# etcetera environment variables, and if threads linking works using +# them: +if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + save_LIBS="$LIBS" + LIBS="$PTHREAD_LIBS $LIBS" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5 +$as_echo_n "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char pthread_join (); +int +main () +{ +return pthread_join (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + acx_pthread_ok=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_ok" >&5 +$as_echo "$acx_pthread_ok" >&6; } + if test x"$acx_pthread_ok" = xno; then + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" + fi + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" +fi + +# We must check for the threads library under a number of different +# names; the ordering is very important because some systems +# (e.g. DEC) have both -lpthread and -lpthreads, where one of the +# libraries is broken (non-POSIX). + +# Create a list of thread flags to try. Items starting with a "-" are +# C compiler flags, and other items are library names, except for "none" +# which indicates that we try without any flags at all, and "pthread-config" +# which is a program returning the flags for the Pth emulation library. + +acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" + +# The ordering *is* (sometimes) important. Some notes on the +# individual items follow: + +# pthreads: AIX (must check this before -lpthread) +# none: in case threads are in libc; should be tried before -Kthread and +# other compiler flags to prevent continual compiler warnings +# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) +# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) +# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) +# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) +# -pthreads: Solaris/gcc +# -mthreads: Mingw32/gcc, Lynx/gcc +# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it +# doesn't hurt to check since this sometimes defines pthreads too; +# also defines -D_REENTRANT) +# ... -mt is also the pthreads flag for HP/aCC +# pthread: Linux, etcetera +# --thread-safe: KAI C++ +# pthread-config: use pthread-config program (for GNU Pth library) + +case "${host_cpu}-${host_os}" in + *solaris*) + + # On Solaris (at least, for some versions), libc contains stubbed + # (non-functional) versions of the pthreads routines, so link-based + # tests will erroneously succeed. (We need to link with -pthreads/-mt/ + # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather + # a function called by this macro, so we could check for that, but + # who knows whether they'll stub that too in a future libc.) So, + # we'll just look for -pthreads and -lpthread first: + + acx_pthread_flags="-pthreads pthread -mt -pthread $acx_pthread_flags" + ;; +esac + +if test x"$acx_pthread_ok" = xno; then +for flag in $acx_pthread_flags; do + + case $flag in + none) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5 +$as_echo_n "checking whether pthreads work without any flags... " >&6; } + ;; + + -*) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $flag" >&5 +$as_echo_n "checking whether pthreads work with $flag... " >&6; } + PTHREAD_CFLAGS="$flag" + ;; + + pthread-config) + # Extract the first word of "pthread-config", so it can be a program name with args. +set dummy pthread-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_acx_pthread_config+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$acx_pthread_config"; then + ac_cv_prog_acx_pthread_config="$acx_pthread_config" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_acx_pthread_config="yes" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_acx_pthread_config" && ac_cv_prog_acx_pthread_config="no" +fi +fi +acx_pthread_config=$ac_cv_prog_acx_pthread_config +if test -n "$acx_pthread_config"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_config" >&5 +$as_echo "$acx_pthread_config" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test x"$acx_pthread_config" = xno; then continue; fi + PTHREAD_CFLAGS="`pthread-config --cflags`" + PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" + ;; + + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$flag" >&5 +$as_echo_n "checking for the pthreads library -l$flag... " >&6; } + PTHREAD_LIBS="-l$flag" + ;; + esac + + save_LIBS="$LIBS" + save_CFLAGS="$CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + + # Check for various functions. We must include pthread.h, + # since some functions may be macros. (On the Sequent, we + # need a special flag -Kthread to make this header compile.) + # We check for pthread_join because it is in -lpthread on IRIX + # while pthread_create is in libc. We check for pthread_attr_init + # due to DEC craziness with -lpthreads. We check for + # pthread_cleanup_push because it is one of the few pthread + # functions on Solaris that doesn't have a non-functional libc stub. + # We try pthread_create on general principles. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +pthread_t th; pthread_join(th, 0); + pthread_attr_init(0); pthread_cleanup_push(0, 0); + pthread_create(0,0,0,0); pthread_cleanup_pop(0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + acx_pthread_ok=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_ok" >&5 +$as_echo "$acx_pthread_ok" >&6; } + if test "x$acx_pthread_ok" = xyes; then + break; + fi + + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" +done +fi + +# Various other checks: +if test "x$acx_pthread_ok" = xyes; then + save_LIBS="$LIBS" + LIBS="$PTHREAD_LIBS $LIBS" + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + + # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5 +$as_echo_n "checking for joinable pthread attribute... " >&6; } + attr_name=unknown + for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +int attr=$attr; return attr; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + attr_name=$attr; break +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + done + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $attr_name" >&5 +$as_echo "$attr_name" >&6; } + if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then + +cat >>confdefs.h <<_ACEOF +@%:@define PTHREAD_CREATE_JOINABLE $attr_name +_ACEOF + + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if more special flags are required for pthreads" >&5 +$as_echo_n "checking if more special flags are required for pthreads... " >&6; } + flag=no + case "${host_cpu}-${host_os}" in + *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";; + *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${flag}" >&5 +$as_echo "${flag}" >&6; } + if test "x$flag" != xno; then + PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" + fi + + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + # More AIX lossage: must compile with xlc_r or cc_r + if test x"$GCC" != xyes; then + for ac_prog in xlc_r cc_r +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_PTHREAD_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$PTHREAD_CC"; then + ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_PTHREAD_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +PTHREAD_CC=$ac_cv_prog_PTHREAD_CC +if test -n "$PTHREAD_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5 +$as_echo "$PTHREAD_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$PTHREAD_CC" && break +done +test -n "$PTHREAD_CC" || PTHREAD_CC="${CC}" + + else + PTHREAD_CC=$CC + fi + + # The next part tries to detect GCC inconsistency with -shared on some + # architectures and systems. The problem is that in certain + # configurations, when -shared is specified, GCC "forgets" to + # internally use various flags which are still necessary. + + # + # Prepare the flags + # + save_CFLAGS="$CFLAGS" + save_LIBS="$LIBS" + save_CC="$CC" + + # Try with the flags determined by the earlier checks. + # + # -Wl,-z,defs forces link-time symbol resolution, so that the + # linking checks with -shared actually have any value + # + # FIXME: -fPIC is required for -shared on many architectures, + # so we specify it here, but the right way would probably be to + # properly detect whether it is actually required. + CFLAGS="-shared -fPIC -Wl,-z,defs $CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + CC="$PTHREAD_CC" + + # In order not to create several levels of indentation, we test + # the value of "$done" until we find the cure or run out of ideas. + done="no" + + # First, make sure the CFLAGS we added are actually accepted by our + # compiler. If not (and OS X's ld, for instance, does not accept -z), + # then we can't do this test. + if test x"$done" = xno; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to check for GCC pthread/shared inconsistencies" >&5 +$as_echo_n "checking whether to check for GCC pthread/shared inconsistencies... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + +else + done=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + if test "x$done" = xyes ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + fi + fi + + if test x"$done" = xno; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -pthread is sufficient with -shared" >&5 +$as_echo_n "checking whether -pthread is sufficient with -shared... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +pthread_t th; pthread_join(th, 0); + pthread_attr_init(0); pthread_cleanup_push(0, 0); + pthread_create(0,0,0,0); pthread_cleanup_pop(0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + done=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + if test "x$done" = xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + fi + + # + # Linux gcc on some architectures such as mips/mipsel forgets + # about -lpthread + # + if test x"$done" = xno; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lpthread fixes that" >&5 +$as_echo_n "checking whether -lpthread fixes that... " >&6; } + LIBS="-lpthread $PTHREAD_LIBS $save_LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +pthread_t th; pthread_join(th, 0); + pthread_attr_init(0); pthread_cleanup_push(0, 0); + pthread_create(0,0,0,0); pthread_cleanup_pop(0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + done=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + if test "x$done" = xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + PTHREAD_LIBS="-lpthread $PTHREAD_LIBS" + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + fi + # + # FreeBSD 4.10 gcc forgets to use -lc_r instead of -lc + # + if test x"$done" = xno; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc_r fixes that" >&5 +$as_echo_n "checking whether -lc_r fixes that... " >&6; } + LIBS="-lc_r $PTHREAD_LIBS $save_LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +pthread_t th; pthread_join(th, 0); + pthread_attr_init(0); pthread_cleanup_push(0, 0); + pthread_create(0,0,0,0); pthread_cleanup_pop(0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + done=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + if test "x$done" = xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + PTHREAD_LIBS="-lc_r $PTHREAD_LIBS" + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + fi + if test x"$done" = xno; then + # OK, we have run out of ideas + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Impossible to determine how to use pthreads with shared libraries" >&5 +$as_echo "$as_me: WARNING: Impossible to determine how to use pthreads with shared libraries" >&2;} + + # so it's not safe to assume that we may use pthreads + acx_pthread_ok=no + fi + + CFLAGS="$save_CFLAGS" + LIBS="$save_LIBS" + CC="$save_CC" +else + PTHREAD_CC="$CC" +fi + + + + + +# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: +if test x"$acx_pthread_ok" = xyes; then + +$as_echo "@%:@define HAVE_PTHREAD 1" >>confdefs.h + + : +else + acx_pthread_ok=no + if test "x$with_pthreads" != "xcheck"; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "--with-pthreads was specified, but unable to be used +See \`config.log' for more details" "$LINENO" 5; } +fi +fi +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + have_pthreads="$acx_pthread_ok" +fi + if test "x$have_pthreads" == "xyes"; then + HAVE_PTHREADS_TRUE= + HAVE_PTHREADS_FALSE='#' +else + HAVE_PTHREADS_TRUE='#' + HAVE_PTHREADS_FALSE= +fi + + + + +# TODO(chandlerc@google.com) Check for the necessary system headers. + +# TODO(chandlerc@google.com) Check the types, structures, and other compiler +# and architecture characteristics. + +# Output the generated files. No further autoconf macros may be used. +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIB@&t@OBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +$as_echo_n "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 +$as_echo "done" >&6; } + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_PYTHON_TRUE}" && test -z "${HAVE_PYTHON_FALSE}"; then + as_fn_error $? "conditional \"HAVE_PYTHON\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_PTHREADS_TRUE}" && test -z "${HAVE_PTHREADS_FALSE}"; then + as_fn_error $? "conditional \"HAVE_PTHREADS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in @%:@( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in @%:@(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@0`: error: ERROR" to stderr. If LINENO and LOG_FD are +@%:@ provided, also output the error to LOG_FD, referencing LINENO. Then exit the +@%:@ script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} @%:@ as_fn_set_status + +@%:@ as_fn_exit STATUS +@%:@ ----------------- +@%:@ Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} @%:@ as_fn_exit + +@%:@ as_fn_unset VAR +@%:@ --------------- +@%:@ Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +@%:@ as_fn_append VAR VALUE +@%:@ ---------------------- +@%:@ Append the text in VALUE to the end of the definition contained in VAR. Take +@%:@ advantage of any shell optimizations that allow amortized linear growth over +@%:@ repeated appends, instead of the typical quadratic growth present in naive +@%:@ implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in @%:@((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +@%:@ as_fn_mkdir_p +@%:@ ------------- +@%:@ Create "@S|@as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} @%:@ as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +@%:@ as_fn_executable_p FILE +@%:@ ----------------------- +@%:@ Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} @%:@ as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by Google C++ Testing Framework $as_me 1.6.0, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +Google C++ Testing Framework config.status 1.6.0 +configured by $0, generated by GNU Autoconf 2.69, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX +@%:@@%:@ Running $as_me. @%:@@%:@ +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" + + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' +macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' +enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' +enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' +pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' +enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' +shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' +SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' +ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' +PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' +host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' +host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' +host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' +build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' +build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' +build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' +SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' +Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' +GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' +EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' +FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' +LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' +NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' +LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' +max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' +ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' +exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' +lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' +lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' +lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' +lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' +lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' +reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' +reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' +deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' +file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' +file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' +want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' +DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' +sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' +AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' +AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' +archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' +STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' +RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' +old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' +old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' +lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' +CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' +CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' +compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' +GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' +lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' +nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' +lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' +lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' +objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' +MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' +need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' +MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' +DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' +NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' +LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' +OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' +OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' +libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' +shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' +extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' +compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' +module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' +with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' +no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' +hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' +hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' +inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' +link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' +always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' +exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' +include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' +prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' +postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' +file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' +variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' +need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' +need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' +version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' +runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' +libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' +library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' +soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' +install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' +postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' +postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' +finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' +hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' +sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' +configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' +configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' +hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' +enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' +old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' +striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' +predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' +postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' +predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' +postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' +LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' +reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' +reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' +compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' +GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' +archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' +module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' +with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' +no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' +inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' +link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' +always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' +exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' +include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' +prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' +postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' +file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' +predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' +postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' +predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' +postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' + +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in SHELL \ +ECHO \ +PATH_SEPARATOR \ +SED \ +GREP \ +EGREP \ +FGREP \ +LD \ +NM \ +LN_S \ +lt_SP2NL \ +lt_NL2SP \ +reload_flag \ +OBJDUMP \ +deplibs_check_method \ +file_magic_cmd \ +file_magic_glob \ +want_nocaseglob \ +DLLTOOL \ +sharedlib_from_linklib_cmd \ +AR \ +AR_FLAGS \ +archiver_list_spec \ +STRIP \ +RANLIB \ +CC \ +CFLAGS \ +compiler \ +lt_cv_sys_global_symbol_pipe \ +lt_cv_sys_global_symbol_to_cdecl \ +lt_cv_sys_global_symbol_to_import \ +lt_cv_sys_global_symbol_to_c_name_address \ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ +lt_cv_nm_interface \ +nm_file_list_spec \ +lt_cv_truncate_bin \ +lt_prog_compiler_no_builtin_flag \ +lt_prog_compiler_pic \ +lt_prog_compiler_wl \ +lt_prog_compiler_static \ +lt_cv_prog_compiler_c_o \ +need_locks \ +MANIFEST_TOOL \ +DSYMUTIL \ +NMEDIT \ +LIPO \ +OTOOL \ +OTOOL64 \ +shrext_cmds \ +export_dynamic_flag_spec \ +whole_archive_flag_spec \ +compiler_needs_object \ +with_gnu_ld \ +allow_undefined_flag \ +no_undefined_flag \ +hardcode_libdir_flag_spec \ +hardcode_libdir_separator \ +exclude_expsyms \ +include_expsyms \ +file_list_spec \ +variables_saved_for_relink \ +libname_spec \ +library_names_spec \ +soname_spec \ +install_override_mode \ +finish_eval \ +old_striplib \ +striplib \ +compiler_lib_search_dirs \ +predep_objects \ +postdep_objects \ +predeps \ +postdeps \ +compiler_lib_search_path \ +LD_CXX \ +reload_flag_CXX \ +compiler_CXX \ +lt_prog_compiler_no_builtin_flag_CXX \ +lt_prog_compiler_pic_CXX \ +lt_prog_compiler_wl_CXX \ +lt_prog_compiler_static_CXX \ +lt_cv_prog_compiler_c_o_CXX \ +export_dynamic_flag_spec_CXX \ +whole_archive_flag_spec_CXX \ +compiler_needs_object_CXX \ +with_gnu_ld_CXX \ +allow_undefined_flag_CXX \ +no_undefined_flag_CXX \ +hardcode_libdir_flag_spec_CXX \ +hardcode_libdir_separator_CXX \ +exclude_expsyms_CXX \ +include_expsyms_CXX \ +file_list_spec_CXX \ +compiler_lib_search_dirs_CXX \ +predep_objects_CXX \ +postdep_objects_CXX \ +predeps_CXX \ +postdeps_CXX \ +compiler_lib_search_path_CXX; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds \ +old_postinstall_cmds \ +old_postuninstall_cmds \ +old_archive_cmds \ +extract_expsyms_cmds \ +old_archive_from_new_cmds \ +old_archive_from_expsyms_cmds \ +archive_cmds \ +archive_expsym_cmds \ +module_cmds \ +module_expsym_cmds \ +export_symbols_cmds \ +prelink_cmds \ +postlink_cmds \ +postinstall_cmds \ +postuninstall_cmds \ +finish_cmds \ +sys_lib_search_path_spec \ +configure_time_dlsearch_path \ +configure_time_lt_sys_library_path \ +reload_cmds_CXX \ +old_archive_cmds_CXX \ +old_archive_from_new_cmds_CXX \ +old_archive_from_expsyms_cmds_CXX \ +archive_cmds_CXX \ +archive_expsym_cmds_CXX \ +module_cmds_CXX \ +module_expsym_cmds_CXX \ +export_symbols_cmds_CXX \ +prelink_cmds_CXX \ +postlink_cmds_CXX; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +ac_aux_dir='$ac_aux_dir' + +# See if we are running on zsh, and set the options that allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='$PACKAGE' + VERSION='$VERSION' + RM='$RM' + ofile='$ofile' + + + + + + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "build-aux/config.h") CONFIG_HEADERS="$CONFIG_HEADERS build-aux/config.h" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "scripts/gtest-config") CONFIG_FILES="$CONFIG_FILES scripts/gtest-config" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "scripts/gtest-config":F) chmod +x scripts/gtest-config ;; + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + case $CONFIG_FILES in @%:@( + *\'*) : + eval set x "$CONFIG_FILES" ;; @%:@( + *) : + set x $CONFIG_FILES ;; @%:@( + *) : + ;; +esac + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`$as_dirname -- "$am_mf" || +$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$am_mf" : 'X\(//\)[^/]' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$am_mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + am_filepart=`$as_basename -- "$am_mf" || +$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$am_mf" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { echo "$as_me:$LINENO: cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles" >&5 + (cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } || am_rc=$? + done + if test $am_rc -ne 0; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. Try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking). +See \`config.log' for more details" "$LINENO" 5; } + fi + { am_dirpart=; unset am_dirpart;} + { am_filepart=; unset am_filepart;} + { am_mf=; unset am_mf;} + { am_rc=; unset am_rc;} + rm -f conftest-deps.mk +} + ;; + "libtool":C) + + # See if we are running on zsh, and set the options that allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST + fi + + cfgfile=${ofile}T + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL +# Generated automatically by $as_me ($PACKAGE) $VERSION +# NOTE: Changes made to this file will be lost: look at ltmain.sh. + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + +# Copyright (C) 2014 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +# The names of the tagged configurations supported by this script. +available_tags='CXX ' + +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + +# ### BEGIN LIBTOOL CONFIG + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# Shared archive member basename,for filename based shared library versioning on AIX. +shared_archive_member_spec=$shared_archive_member_spec + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that protects backslashes. +ECHO=$lt_ECHO + +# The PATH separator for the build system. +PATH_SEPARATOR=$lt_PATH_SEPARATOR + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# convert \$build file names to \$host format. +to_host_file_cmd=$lt_cv_to_host_file_cmd + +# convert \$build files to toolchain format. +to_tool_file_cmd=$lt_cv_to_tool_file_cmd + +# An object symbol dumper. +OBJDUMP=$lt_OBJDUMP + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method = "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# How to find potential files when deplibs_check_method = "file_magic". +file_magic_glob=$lt_file_magic_glob + +# Find potential files using nocaseglob when deplibs_check_method = "file_magic". +want_nocaseglob=$lt_want_nocaseglob + +# DLL creation program. +DLLTOOL=$lt_DLLTOOL + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd + +# The archiver. +AR=$lt_AR + +# Flags to create an archive. +AR_FLAGS=$lt_AR_FLAGS + +# How to feed a file listing to the archiver. +archiver_list_spec=$lt_archiver_list_spec + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=$lock_old_archive_extraction + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm into a list of symbols to manually relocate. +global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# The name lister interface. +nm_interface=$lt_lt_cv_nm_interface + +# Specify filename containing input files for \$NM. +nm_file_list_spec=$lt_nm_file_list_spec + +# The root where to search for dependent libraries,and where our libraries should be installed. +lt_sysroot=$lt_sysroot + +# Command to truncate a binary pipe. +lt_truncate_bin=$lt_lt_cv_truncate_bin + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Manifest tool. +MANIFEST_TOOL=$lt_MANIFEST_TOOL + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Permission mode override for installation of shared libraries. +install_override_mode=$lt_install_override_mode + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Detected run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path + +# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. +configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \$shlibpath_var if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects +postdep_objects=$lt_postdep_objects +predeps=$lt_predeps +postdeps=$lt_postdeps + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path + +# ### END LIBTOOL CONFIG + +_LT_EOF + + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x@S|@2 in + x) + ;; + *:) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" + ;; + x:*) + eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" + ;; + *) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + esac +} + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in @S|@*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + +ltmain=$ac_aux_dir/ltmain.sh + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + + cat <<_LT_EOF >> "$ofile" + +# ### BEGIN LIBTOOL TAG CONFIG: CXX + +# The linker used to build libraries. +LD=$lt_LD_CXX + +# How to create reloadable object files. +reload_flag=$lt_reload_flag_CXX +reload_cmds=$lt_reload_cmds_CXX + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds_CXX + +# A language specific compiler. +CC=$lt_compiler_CXX + +# Is the compiler the GNU compiler? +with_gcc=$GCC_CXX + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_CXX + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_CXX + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_CXX + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_CXX + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object_CXX + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds_CXX +archive_expsym_cmds=$lt_archive_expsym_cmds_CXX + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds_CXX +module_expsym_cmds=$lt_module_expsym_cmds_CXX + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld_CXX + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_CXX + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_CXX + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct_CXX + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \$shlibpath_var if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute_CXX + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L_CXX + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic_CXX + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath_CXX + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_CXX + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols_CXX + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_CXX + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_CXX + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_CXX + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds_CXX + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds_CXX + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec_CXX + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_CXX + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects_CXX +postdep_objects=$lt_postdep_objects_CXX +predeps=$lt_predeps_CXX +postdeps=$lt_postdeps_CXX + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_CXX + +# ### END LIBTOOL TAG CONFIG: CXX +_LT_EOF + + ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + diff --git a/thirdparty/protobuf-2.6.1/gtest/autom4te.cache/requests b/thirdparty/protobuf-2.6.1/gtest/autom4te.cache/requests new file mode 100644 index 00000000..4e399481 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/autom4te.cache/requests @@ -0,0 +1,304 @@ +# This file was generated by Autom4te Sun Aug 20 18:29:13 UTC 2017. +# It contains the lists of macros which have been traced. +# It can be safely removed. + +@request = ( + bless( [ + '0', + 1, + [ + '/usr/share/autoconf' + ], + [ + '/usr/share/autoconf/autoconf/autoconf.m4f', + '-', + '/usr/share/aclocal-1.16/internal/ac-config-macro-dirs.m4', + '/usr/share/aclocal/ltargz.m4', + '/usr/share/aclocal/ltdl.m4', + '/usr/share/aclocal-1.16/amversion.m4', + '/usr/share/aclocal-1.16/auxdir.m4', + '/usr/share/aclocal-1.16/cond.m4', + '/usr/share/aclocal-1.16/depend.m4', + '/usr/share/aclocal-1.16/depout.m4', + '/usr/share/aclocal-1.16/init.m4', + '/usr/share/aclocal-1.16/install-sh.m4', + '/usr/share/aclocal-1.16/lead-dot.m4', + '/usr/share/aclocal-1.16/make.m4', + '/usr/share/aclocal-1.16/missing.m4', + '/usr/share/aclocal-1.16/options.m4', + '/usr/share/aclocal-1.16/prog-cc-c-o.m4', + '/usr/share/aclocal-1.16/python.m4', + '/usr/share/aclocal-1.16/runlog.m4', + '/usr/share/aclocal-1.16/sanity.m4', + '/usr/share/aclocal-1.16/silent.m4', + '/usr/share/aclocal-1.16/strip.m4', + '/usr/share/aclocal-1.16/substnot.m4', + '/usr/share/aclocal-1.16/tar.m4', + 'm4/libtool.m4', + 'm4/ltoptions.m4', + 'm4/ltsugar.m4', + 'm4/ltversion.m4', + 'm4/lt~obsolete.m4', + 'configure.ac' + ], + { + 'LT_SYS_DLSEARCH_PATH' => 1, + 'AM_RUN_LOG' => 1, + 'AC_LIBTOOL_SYS_LIB_STRIP' => 1, + 'AC_LIBTOOL_OBJDIR' => 1, + 'AM_INIT_AUTOMAKE' => 1, + 'AC_ENABLE_FAST_INSTALL' => 1, + 'AC_LIBLTDL_INSTALLABLE' => 1, + 'LT_WITH_LTDL' => 1, + 'AC_DEFUN' => 1, + '_LT_AC_PROG_CXXCPP' => 1, + 'LT_CONFIG_LTDL_DIR' => 1, + 'AM_PROG_INSTALL_SH' => 1, + 'AC_LTDL_SHLIBPATH' => 1, + 'AC_LIBTOOL_LANG_CXX_CONFIG' => 1, + 'AC_PATH_TOOL_PREFIX' => 1, + 'AC_LIBTOOL_SETUP' => 1, + 'AC_LIBTOOL_F77' => 1, + 'AC_PROG_LD_GNU' => 1, + '_LT_AC_LANG_RC_CONFIG' => 1, + 'AU_DEFUN' => 1, + 'LTDL_CONVENIENCE' => 1, + 'AC_LTDL_ENABLE_INSTALL' => 1, + 'LT_PATH_NM' => 1, + 'AC_PROG_LIBTOOL' => 1, + 'AC_LIBTOOL_FC' => 1, + '_LT_COMPILER_OPTION' => 1, + 'AC_PROG_LD' => 1, + '_AM_AUTOCONF_VERSION' => 1, + '_LT_REQUIRED_DARWIN_CHECKS' => 1, + '_LT_DLL_DEF_P' => 1, + '_LT_AC_PROG_ECHO_BACKSLASH' => 1, + '_m4_warn' => 1, + 'AC_WITH_LTDL' => 1, + 'LT_AC_PROG_EGREP' => 1, + 'AC_PATH_MAGIC' => 1, + '_LT_AC_SHELL_INIT' => 1, + 'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1, + 'AC_LIBTOOL_COMPILER_OPTION' => 1, + 'AM_MAKE_INCLUDE' => 1, + 'AM_MISSING_HAS_RUN' => 1, + '_LT_AC_LOCK' => 1, + 'AC_PROG_LD_RELOAD_FLAG' => 1, + 'AM_SET_LEADING_DOT' => 1, + '_AM_PROG_TAR' => 1, + 'AC_LTDL_DLLIB' => 1, + 'AC_CONFIG_MACRO_DIR_TRACE' => 1, + 'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1, + '_LT_LINKER_BOILERPLATE' => 1, + 'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1, + '_LT_PATH_TOOL_PREFIX' => 1, + 'AC_LIB_LTDL' => 1, + '_LT_AC_TRY_DLOPEN_SELF' => 1, + 'AM_SET_DEPDIR' => 1, + '_LT_AC_LANG_GCJ_CONFIG' => 1, + '_LT_AC_LANG_C_CONFIG' => 1, + '_LT_AC_LANG_F77' => 1, + 'LT_PROG_RC' => 1, + 'LT_FUNC_ARGZ' => 1, + 'AC_LIBTOOL_GCJ' => 1, + 'AC_LIBTOOL_RC' => 1, + '_LT_AC_LANG_CXX_CONFIG' => 1, + 'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1, + 'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1, + '_LT_AC_TAGCONFIG' => 1, + 'AC_LIBTOOL_PROG_CC_C_O' => 1, + 'LT_SYS_DLOPEN_SELF' => 1, + 'AC_LIBTOOL_PICMODE' => 1, + 'AM_PROG_LD' => 1, + 'AC_LIBLTDL_CONVENIENCE' => 1, + '_LT_WITH_SYSROOT' => 1, + 'AC_LIBTOOL_DLOPEN_SELF' => 1, + 'AC_DEFUN_ONCE' => 1, + '_LT_AC_LANG_GCJ' => 1, + 'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1, + 'm4_pattern_allow' => 1, + '_LT_AC_LANG_F77_CONFIG' => 1, + '_AM_SET_OPTION' => 1, + 'AM_PROG_LIBTOOL' => 1, + '_LT_LIBOBJ' => 1, + 'AC_LIBTOOL_PROG_LD_SHLIBS' => 1, + 'LT_OUTPUT' => 1, + '_LT_AC_LANG_CXX' => 1, + 'AC_DISABLE_STATIC' => 1, + 'AM_MISSING_PROG' => 1, + 'AC_LTDL_SHLIBEXT' => 1, + 'AM_SANITY_CHECK' => 1, + '_LT_LINKER_OPTION' => 1, + 'LTOBSOLETE_VERSION' => 1, + 'LTVERSION_VERSION' => 1, + 'AM_DEP_TRACK' => 1, + 'LT_AC_PROG_RC' => 1, + 'AC_LIBTOOL_POSTDEP_PREDEP' => 1, + 'LTDL_INIT' => 1, + 'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1, + 'LT_AC_PROG_GCJ' => 1, + '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, + '_LT_AC_SYS_LIBPATH_AIX' => 1, + '_LT_PROG_CXX' => 1, + '_AM_PROG_CC_C_O' => 1, + '_LT_AC_CHECK_DLFCN' => 1, + 'AM_ENABLE_SHARED' => 1, + 'AC_CHECK_LIBM' => 1, + 'AC_LIBTOOL_LINKER_OPTION' => 1, + 'AC_LIBTOOL_LANG_F77_CONFIG' => 1, + 'AM_ENABLE_STATIC' => 1, + '_LT_AC_SYS_COMPILER' => 1, + 'LT_SUPPORTED_TAG' => 1, + 'AM_PYTHON_CHECK_VERSION' => 1, + '_LT_PREPARE_SED_QUOTE_VARS' => 1, + 'AC_LIBTOOL_LANG_C_CONFIG' => 1, + 'LTDL_INSTALLABLE' => 1, + 'AM_PROG_NM' => 1, + 'AM_DISABLE_SHARED' => 1, + 'LTOPTIONS_VERSION' => 1, + '_LT_PROG_ECHO_BACKSLASH' => 1, + 'LT_SYS_DLOPEN_DEPLIBS' => 1, + 'LT_PROG_GO' => 1, + '_LT_CC_BASENAME' => 1, + 'm4_pattern_forbid' => 1, + '_LT_AC_FILE_LTDLL_C' => 1, + '_AM_DEPENDENCIES' => 1, + 'AM_SUBST_NOTMAKE' => 1, + '_LT_PROG_FC' => 1, + 'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1, + 'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, + 'LT_LIB_DLLOAD' => 1, + 'AC_LIBTOOL_WIN32_DLL' => 1, + 'AC_LTDL_DLSYM_USCORE' => 1, + 'AM_AUX_DIR_EXPAND' => 1, + '_LT_PROG_F77' => 1, + 'LT_CMD_MAX_LEN' => 1, + '_AC_AM_CONFIG_HEADER_HOOK' => 1, + 'AC_ENABLE_SHARED' => 1, + '_AC_PROG_LIBTOOL' => 1, + 'include' => 1, + 'AC_LTDL_OBJDIR' => 1, + 'AM_PROG_INSTALL_STRIP' => 1, + '_AM_SET_OPTIONS' => 1, + 'LT_FUNC_DLSYM_USCORE' => 1, + 'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1, + 'AM_AUTOMAKE_VERSION' => 1, + 'LT_SYS_MODULE_PATH' => 1, + 'AM_PROG_CC_C_O' => 1, + 'AC_LIBTOOL_PROG_COMPILER_PIC' => 1, + 'AM_SILENT_RULES' => 1, + 'AM_DISABLE_STATIC' => 1, + 'AC_LTDL_SYMBOL_USCORE' => 1, + 'AC_LIBTOOL_DLOPEN' => 1, + '_LT_PROG_LTMAIN' => 1, + 'LT_PROG_GCJ' => 1, + 'AC_LIBTOOL_CXX' => 1, + '_LT_COMPILER_BOILERPLATE' => 1, + 'ACX_PTHREAD' => 1, + 'AC_LIBTOOL_LANG_RC_CONFIG' => 1, + '_AM_IF_OPTION' => 1, + 'AC_DISABLE_FAST_INSTALL' => 1, + 'LT_LIB_M' => 1, + '_AM_MANGLE_OPTION' => 1, + 'LT_LANG' => 1, + 'AC_LIBTOOL_CONFIG' => 1, + 'LT_SYS_MODULE_EXT' => 1, + 'm4_include' => 1, + 'AC_DEPLIBS_CHECK_METHOD' => 1, + '_AM_CONFIG_MACRO_DIRS' => 1, + 'AC_LTDL_SYSSEARCHPATH' => 1, + 'AC_PROG_NM' => 1, + 'AM_PATH_PYTHON' => 1, + 'AC_PROG_EGREP' => 1, + 'AC_DISABLE_SHARED' => 1, + 'LT_SYS_SYMBOL_USCORE' => 1, + 'LTSUGAR_VERSION' => 1, + 'LT_INIT' => 1, + '_LT_AC_TAGVAR' => 1, + 'LT_AC_PROG_SED' => 1, + '_LTDL_SETUP' => 1, + 'AC_CONFIG_MACRO_DIR' => 1, + '_AM_SUBST_NOTMAKE' => 1, + 'AC_LTDL_PREOPEN' => 1, + 'LT_PATH_LD' => 1, + 'AC_ENABLE_STATIC' => 1, + 'AM_CONDITIONAL' => 1, + 'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1 + } + ], 'Autom4te::Request' ), + bless( [ + '1', + 1, + [ + '/usr/share/autoconf' + ], + [ + '/usr/share/autoconf/autoconf/autoconf.m4f', + 'aclocal.m4', + 'configure.ac' + ], + { + 'AC_SUBST' => 1, + 'AM_PATH_GUILE' => 1, + 'AM_PROG_MOC' => 1, + 'AM_AUTOMAKE_VERSION' => 1, + 'AM_GNU_GETTEXT' => 1, + 'AM_PROG_F77_C_O' => 1, + 'AM_PROG_CC_C_O' => 1, + 'AC_FC_PP_SRCEXT' => 1, + 'AM_SILENT_RULES' => 1, + 'AC_CANONICAL_TARGET' => 1, + 'AM_MAINTAINER_MODE' => 1, + 'AC_INIT' => 1, + 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, + 'LT_CONFIG_LTDL_DIR' => 1, + 'AC_CANONICAL_BUILD' => 1, + '_AM_COND_ENDIF' => 1, + 'AC_CONFIG_AUX_DIR' => 1, + 'AC_CONFIG_HEADERS' => 1, + 'm4_sinclude' => 1, + 'AC_CANONICAL_HOST' => 1, + 'AM_POT_TOOLS' => 1, + 'AM_INIT_AUTOMAKE' => 1, + 'AC_REQUIRE_AUX_FILE' => 1, + 'AM_PROG_FC_C_O' => 1, + 'AC_DEFINE_TRACE_LITERAL' => 1, + 'AM_XGETTEXT_OPTION' => 1, + '_AM_COND_ELSE' => 1, + 'AM_PROG_AR' => 1, + 'AH_OUTPUT' => 1, + 'AM_EXTRA_RECURSIVE_TARGETS' => 1, + 'AM_PROG_CXX_C_O' => 1, + 'include' => 1, + 'AM_MAKEFILE_INCLUDE' => 1, + 'AC_CONFIG_SUBDIRS' => 1, + '_LT_AC_TAGCONFIG' => 1, + 'm4_pattern_forbid' => 1, + 'AM_ENABLE_MULTILIB' => 1, + 'LT_INIT' => 1, + 'AC_CANONICAL_SYSTEM' => 1, + 'AM_PROG_LIBTOOL' => 1, + 'AC_SUBST_TRACE' => 1, + 'm4_pattern_allow' => 1, + '_AM_SUBST_NOTMAKE' => 1, + '_m4_warn' => 1, + 'AC_CONFIG_LIBOBJ_DIR' => 1, + 'AM_CONDITIONAL' => 1, + '_AM_MAKEFILE_INCLUDE' => 1, + 'AC_FC_FREEFORM' => 1, + 'AM_PROG_MKDIR_P' => 1, + 'AC_FC_SRCEXT' => 1, + 'AM_NLS' => 1, + 'LT_SUPPORTED_TAG' => 1, + 'sinclude' => 1, + 'AC_CONFIG_FILES' => 1, + 'AC_PROG_LIBTOOL' => 1, + 'AC_LIBSOURCE' => 1, + '_AM_COND_IF' => 1, + 'AC_CONFIG_LINKS' => 1, + 'AC_FC_PP_DEFINE' => 1, + 'm4_include' => 1 + } + ], 'Autom4te::Request' ) + ); + diff --git a/thirdparty/protobuf-2.6.1/gtest/autom4te.cache/traces.0 b/thirdparty/protobuf-2.6.1/gtest/autom4te.cache/traces.0 new file mode 100644 index 00000000..6a514616 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/autom4te.cache/traces.0 @@ -0,0 +1,3299 @@ +m4trace:/usr/share/aclocal/ltargz.m4:12: -1- AC_DEFUN([LT_FUNC_ARGZ], [ +AC_CHECK_HEADERS([argz.h], [], [], [AC_INCLUDES_DEFAULT]) + +AC_CHECK_TYPES([error_t], + [], + [AC_DEFINE([error_t], [int], + [Define to a type to use for 'error_t' if it is not otherwise available.]) + AC_DEFINE([__error_t_defined], [1], [Define so that glibc/gnulib argp.h + does not typedef error_t.])], + [#if defined(HAVE_ARGZ_H) +# include +#endif]) + +LT_ARGZ_H= +AC_CHECK_FUNCS([argz_add argz_append argz_count argz_create_sep argz_insert \ + argz_next argz_stringify], [], [LT_ARGZ_H=lt__argz.h; AC_LIBOBJ([lt__argz])]) + +dnl if have system argz functions, allow forced use of +dnl libltdl-supplied implementation (and default to do so +dnl on "known bad" systems). Could use a runtime check, but +dnl (a) detecting malloc issues is notoriously unreliable +dnl (b) only known system that declares argz functions, +dnl provides them, yet they are broken, is cygwin +dnl releases prior to 16-Mar-2007 (1.5.24 and earlier) +dnl So, it's more straightforward simply to special case +dnl this for known bad systems. +AS_IF([test -z "$LT_ARGZ_H"], + [AC_CACHE_CHECK( + [if argz actually works], + [lt_cv_sys_argz_works], + [[case $host_os in #( + *cygwin*) + lt_cv_sys_argz_works=no + if test no != "$cross_compiling"; then + lt_cv_sys_argz_works="guessing no" + else + lt_sed_extract_leading_digits='s/^\([0-9\.]*\).*/\1/' + save_IFS=$IFS + IFS=-. + set x `uname -r | sed -e "$lt_sed_extract_leading_digits"` + IFS=$save_IFS + lt_os_major=${2-0} + lt_os_minor=${3-0} + lt_os_micro=${4-0} + if test 1 -lt "$lt_os_major" \ + || { test 1 -eq "$lt_os_major" \ + && { test 5 -lt "$lt_os_minor" \ + || { test 5 -eq "$lt_os_minor" \ + && test 24 -lt "$lt_os_micro"; }; }; }; then + lt_cv_sys_argz_works=yes + fi + fi + ;; #( + *) lt_cv_sys_argz_works=yes ;; + esac]]) + AS_IF([test yes = "$lt_cv_sys_argz_works"], + [AC_DEFINE([HAVE_WORKING_ARGZ], 1, + [This value is set to 1 to indicate that the system argz facility works])], + [LT_ARGZ_H=lt__argz.h + AC_LIBOBJ([lt__argz])])]) + +AC_SUBST([LT_ARGZ_H]) +]) +m4trace:/usr/share/aclocal/ltdl.m4:16: -1- AC_DEFUN([LT_CONFIG_LTDL_DIR], [AC_BEFORE([$0], [LTDL_INIT]) +_$0($*) +]) +m4trace:/usr/share/aclocal/ltdl.m4:68: -1- AC_DEFUN([LTDL_CONVENIENCE], [AC_BEFORE([$0], [LTDL_INIT])dnl +dnl Although the argument is deprecated and no longer documented, +dnl LTDL_CONVENIENCE used to take a DIRECTORY orgument, if we have one +dnl here make sure it is the same as any other declaration of libltdl's +dnl location! This also ensures lt_ltdl_dir is set when configure.ac is +dnl not yet using an explicit LT_CONFIG_LTDL_DIR. +m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl +_$0() +]) +m4trace:/usr/share/aclocal/ltdl.m4:81: -1- AU_DEFUN([AC_LIBLTDL_CONVENIENCE], [_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])]) +_LTDL_CONVENIENCE]) +m4trace:/usr/share/aclocal/ltdl.m4:81: -1- AC_DEFUN([AC_LIBLTDL_CONVENIENCE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBLTDL_CONVENIENCE' is obsolete. +You should run autoupdate.])dnl +_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])]) +_LTDL_CONVENIENCE]) +m4trace:/usr/share/aclocal/ltdl.m4:124: -1- AC_DEFUN([LTDL_INSTALLABLE], [AC_BEFORE([$0], [LTDL_INIT])dnl +dnl Although the argument is deprecated and no longer documented, +dnl LTDL_INSTALLABLE used to take a DIRECTORY orgument, if we have one +dnl here make sure it is the same as any other declaration of libltdl's +dnl location! This also ensures lt_ltdl_dir is set when configure.ac is +dnl not yet using an explicit LT_CONFIG_LTDL_DIR. +m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl +_$0() +]) +m4trace:/usr/share/aclocal/ltdl.m4:137: -1- AU_DEFUN([AC_LIBLTDL_INSTALLABLE], [_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])]) +_LTDL_INSTALLABLE]) +m4trace:/usr/share/aclocal/ltdl.m4:137: -1- AC_DEFUN([AC_LIBLTDL_INSTALLABLE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBLTDL_INSTALLABLE' is obsolete. +You should run autoupdate.])dnl +_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])]) +_LTDL_INSTALLABLE]) +m4trace:/usr/share/aclocal/ltdl.m4:213: -1- AC_DEFUN([_LT_LIBOBJ], [ + m4_pattern_allow([^_LT_LIBOBJS$]) + _LT_LIBOBJS="$_LT_LIBOBJS $1.$ac_objext" +]) +m4trace:/usr/share/aclocal/ltdl.m4:226: -1- AC_DEFUN([LTDL_INIT], [dnl Parse OPTIONS +_LT_SET_OPTIONS([$0], [$1]) + +dnl We need to keep our own list of libobjs separate from our parent project, +dnl and the easiest way to do that is redefine the AC_LIBOBJs macro while +dnl we look for our own LIBOBJs. +m4_pushdef([AC_LIBOBJ], m4_defn([_LT_LIBOBJ])) +m4_pushdef([AC_LIBSOURCES]) + +dnl If not otherwise defined, default to the 1.5.x compatible subproject mode: +m4_if(_LTDL_MODE, [], + [m4_define([_LTDL_MODE], m4_default([$2], [subproject])) + m4_if([-1], [m4_bregexp(_LTDL_MODE, [\(subproject\|\(non\)?recursive\)])], + [m4_fatal([unknown libltdl mode: ]_LTDL_MODE)])]) + +AC_ARG_WITH([included_ltdl], + [AS_HELP_STRING([--with-included-ltdl], + [use the GNU ltdl sources included here])]) + +if test yes != "$with_included_ltdl"; then + # We are not being forced to use the included libltdl sources, so + # decide whether there is a useful installed version we can use. + AC_CHECK_HEADER([ltdl.h], + [AC_CHECK_DECL([lt_dlinterface_register], + [AC_CHECK_LIB([ltdl], [lt_dladvise_preload], + [with_included_ltdl=no], + [with_included_ltdl=yes])], + [with_included_ltdl=yes], + [AC_INCLUDES_DEFAULT + #include ])], + [with_included_ltdl=yes], + [AC_INCLUDES_DEFAULT] + ) +fi + +dnl If neither LT_CONFIG_LTDL_DIR, LTDL_CONVENIENCE nor LTDL_INSTALLABLE +dnl was called yet, then for old times' sake, we assume libltdl is in an +dnl eponymous directory: +AC_PROVIDE_IFELSE([LT_CONFIG_LTDL_DIR], [], [_LT_CONFIG_LTDL_DIR([libltdl])]) + +AC_ARG_WITH([ltdl_include], + [AS_HELP_STRING([--with-ltdl-include=DIR], + [use the ltdl headers installed in DIR])]) + +if test -n "$with_ltdl_include"; then + if test -f "$with_ltdl_include/ltdl.h"; then : + else + AC_MSG_ERROR([invalid ltdl include directory: '$with_ltdl_include']) + fi +else + with_ltdl_include=no +fi + +AC_ARG_WITH([ltdl_lib], + [AS_HELP_STRING([--with-ltdl-lib=DIR], + [use the libltdl.la installed in DIR])]) + +if test -n "$with_ltdl_lib"; then + if test -f "$with_ltdl_lib/libltdl.la"; then : + else + AC_MSG_ERROR([invalid ltdl library directory: '$with_ltdl_lib']) + fi +else + with_ltdl_lib=no +fi + +case ,$with_included_ltdl,$with_ltdl_include,$with_ltdl_lib, in + ,yes,no,no,) + m4_case(m4_default(_LTDL_TYPE, [convenience]), + [convenience], [_LTDL_CONVENIENCE], + [installable], [_LTDL_INSTALLABLE], + [m4_fatal([unknown libltdl build type: ]_LTDL_TYPE)]) + ;; + ,no,no,no,) + # If the included ltdl is not to be used, then use the + # preinstalled libltdl we found. + AC_DEFINE([HAVE_LTDL], [1], + [Define this if a modern libltdl is already installed]) + LIBLTDL=-lltdl + LTDLDEPS= + LTDLINCL= + ;; + ,no*,no,*) + AC_MSG_ERROR(['--with-ltdl-include' and '--with-ltdl-lib' options must be used together]) + ;; + *) with_included_ltdl=no + LIBLTDL="-L$with_ltdl_lib -lltdl" + LTDLDEPS= + LTDLINCL=-I$with_ltdl_include + ;; +esac +INCLTDL=$LTDLINCL + +# Report our decision... +AC_MSG_CHECKING([where to find libltdl headers]) +AC_MSG_RESULT([$LTDLINCL]) +AC_MSG_CHECKING([where to find libltdl library]) +AC_MSG_RESULT([$LIBLTDL]) + +_LTDL_SETUP + +dnl restore autoconf definition. +m4_popdef([AC_LIBOBJ]) +m4_popdef([AC_LIBSOURCES]) + +AC_CONFIG_COMMANDS_PRE([ + _ltdl_libobjs= + _ltdl_ltlibobjs= + if test -n "$_LT_LIBOBJS"; then + # Remove the extension. + _lt_sed_drop_objext='s/\.o$//;s/\.obj$//' + for i in `for i in $_LT_LIBOBJS; do echo "$i"; done | sed "$_lt_sed_drop_objext" | sort -u`; do + _ltdl_libobjs="$_ltdl_libobjs $lt_libobj_prefix$i.$ac_objext" + _ltdl_ltlibobjs="$_ltdl_ltlibobjs $lt_libobj_prefix$i.lo" + done + fi + AC_SUBST([ltdl_LIBOBJS], [$_ltdl_libobjs]) + AC_SUBST([ltdl_LTLIBOBJS], [$_ltdl_ltlibobjs]) +]) + +# Only expand once: +m4_define([LTDL_INIT]) +]) +m4trace:/usr/share/aclocal/ltdl.m4:352: -1- AU_DEFUN([AC_LIB_LTDL], [LTDL_INIT($@)]) +m4trace:/usr/share/aclocal/ltdl.m4:352: -1- AC_DEFUN([AC_LIB_LTDL], [AC_DIAGNOSE([obsolete], [The macro `AC_LIB_LTDL' is obsolete. +You should run autoupdate.])dnl +LTDL_INIT($@)]) +m4trace:/usr/share/aclocal/ltdl.m4:353: -1- AU_DEFUN([AC_WITH_LTDL], [LTDL_INIT($@)]) +m4trace:/usr/share/aclocal/ltdl.m4:353: -1- AC_DEFUN([AC_WITH_LTDL], [AC_DIAGNOSE([obsolete], [The macro `AC_WITH_LTDL' is obsolete. +You should run autoupdate.])dnl +LTDL_INIT($@)]) +m4trace:/usr/share/aclocal/ltdl.m4:354: -1- AU_DEFUN([LT_WITH_LTDL], [LTDL_INIT($@)]) +m4trace:/usr/share/aclocal/ltdl.m4:354: -1- AC_DEFUN([LT_WITH_LTDL], [AC_DIAGNOSE([obsolete], [The macro `LT_WITH_LTDL' is obsolete. +You should run autoupdate.])dnl +LTDL_INIT($@)]) +m4trace:/usr/share/aclocal/ltdl.m4:367: -1- AC_DEFUN([_LTDL_SETUP], [AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([LT_SYS_MODULE_EXT])dnl +AC_REQUIRE([LT_SYS_MODULE_PATH])dnl +AC_REQUIRE([LT_SYS_DLSEARCH_PATH])dnl +AC_REQUIRE([LT_LIB_DLLOAD])dnl +AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl +AC_REQUIRE([LT_FUNC_DLSYM_USCORE])dnl +AC_REQUIRE([LT_SYS_DLOPEN_DEPLIBS])dnl +AC_REQUIRE([LT_FUNC_ARGZ])dnl + +m4_require([_LT_CHECK_OBJDIR])dnl +m4_require([_LT_HEADER_DLFCN])dnl +m4_require([_LT_CHECK_DLPREOPEN])dnl +m4_require([_LT_DECL_SED])dnl + +dnl Don't require this, or it will be expanded earlier than the code +dnl that sets the variables it relies on: +_LT_ENABLE_INSTALL + +dnl _LTDL_MODE specific code must be called at least once: +_LTDL_MODE_DISPATCH + +# In order that ltdl.c can compile, find out the first AC_CONFIG_HEADERS +# the user used. This is so that ltdl.h can pick up the parent projects +# config.h file, The first file in AC_CONFIG_HEADERS must contain the +# definitions required by ltdl.c. +# FIXME: Remove use of undocumented AC_LIST_HEADERS (2.59 compatibility). +AC_CONFIG_COMMANDS_PRE([dnl +m4_pattern_allow([^LT_CONFIG_H$])dnl +m4_ifset([AH_HEADER], + [LT_CONFIG_H=AH_HEADER], + [m4_ifset([AC_LIST_HEADERS], + [LT_CONFIG_H=`echo "AC_LIST_HEADERS" | $SED 's|^[[ ]]*||;s|[[ :]].*$||'`], + [])])]) +AC_SUBST([LT_CONFIG_H]) + +AC_CHECK_HEADERS([unistd.h dl.h sys/dl.h dld.h mach-o/dyld.h dirent.h], + [], [], [AC_INCLUDES_DEFAULT]) + +AC_CHECK_FUNCS([closedir opendir readdir], [], [AC_LIBOBJ([lt__dirent])]) +AC_CHECK_FUNCS([strlcat strlcpy], [], [AC_LIBOBJ([lt__strl])]) + +m4_pattern_allow([LT_LIBEXT])dnl +AC_DEFINE_UNQUOTED([LT_LIBEXT],["$libext"],[The archive extension]) + +name= +eval "lt_libprefix=\"$libname_spec\"" +m4_pattern_allow([LT_LIBPREFIX])dnl +AC_DEFINE_UNQUOTED([LT_LIBPREFIX],["$lt_libprefix"],[The archive prefix]) + +name=ltdl +eval "LTDLOPEN=\"$libname_spec\"" +AC_SUBST([LTDLOPEN]) +]) +m4trace:/usr/share/aclocal/ltdl.m4:443: -1- AC_DEFUN([LT_SYS_DLOPEN_DEPLIBS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_CACHE_CHECK([whether deplibs are loaded by dlopen], + [lt_cv_sys_dlopen_deplibs], + [# PORTME does your system automatically load deplibs for dlopen? + # or its logical equivalent (e.g. shl_load for HP-UX < 11) + # For now, we just catch OSes we know something about -- in the + # future, we'll try test this programmatically. + lt_cv_sys_dlopen_deplibs=unknown + case $host_os in + aix3*|aix4.1.*|aix4.2.*) + # Unknown whether this is true for these versions of AIX, but + # we want this 'case' here to explicitly catch those versions. + lt_cv_sys_dlopen_deplibs=unknown + ;; + aix[[4-9]]*) + lt_cv_sys_dlopen_deplibs=yes + ;; + amigaos*) + case $host_cpu in + powerpc) + lt_cv_sys_dlopen_deplibs=no + ;; + esac + ;; + bitrig*) + lt_cv_sys_dlopen_deplibs=yes + ;; + darwin*) + # Assuming the user has installed a libdl from somewhere, this is true + # If you are looking for one http://www.opendarwin.org/projects/dlcompat + lt_cv_sys_dlopen_deplibs=yes + ;; + freebsd* | dragonfly*) + lt_cv_sys_dlopen_deplibs=yes + ;; + gnu* | linux* | k*bsd*-gnu | kopensolaris*-gnu) + # GNU and its variants, using gnu ld.so (Glibc) + lt_cv_sys_dlopen_deplibs=yes + ;; + hpux10*|hpux11*) + lt_cv_sys_dlopen_deplibs=yes + ;; + interix*) + lt_cv_sys_dlopen_deplibs=yes + ;; + irix[[12345]]*|irix6.[[01]]*) + # Catch all versions of IRIX before 6.2, and indicate that we don't + # know how it worked for any of those versions. + lt_cv_sys_dlopen_deplibs=unknown + ;; + irix*) + # The case above catches anything before 6.2, and it's known that + # at 6.2 and later dlopen does load deplibs. + lt_cv_sys_dlopen_deplibs=yes + ;; + netbsd* | netbsdelf*-gnu) + lt_cv_sys_dlopen_deplibs=yes + ;; + openbsd*) + lt_cv_sys_dlopen_deplibs=yes + ;; + osf[[1234]]*) + # dlopen did load deplibs (at least at 4.x), but until the 5.x series, + # it did *not* use an RPATH in a shared library to find objects the + # library depends on, so we explicitly say 'no'. + lt_cv_sys_dlopen_deplibs=no + ;; + osf5.0|osf5.0a|osf5.1) + # dlopen *does* load deplibs and with the right loader patch applied + # it even uses RPATH in a shared library to search for shared objects + # that the library depends on, but there's no easy way to know if that + # patch is installed. Since this is the case, all we can really + # say is unknown -- it depends on the patch being installed. If + # it is, this changes to 'yes'. Without it, it would be 'no'. + lt_cv_sys_dlopen_deplibs=unknown + ;; + osf*) + # the two cases above should catch all versions of osf <= 5.1. Read + # the comments above for what we know about them. + # At > 5.1, deplibs are loaded *and* any RPATH in a shared library + # is used to find them so we can finally say 'yes'. + lt_cv_sys_dlopen_deplibs=yes + ;; + qnx*) + lt_cv_sys_dlopen_deplibs=yes + ;; + solaris*) + lt_cv_sys_dlopen_deplibs=yes + ;; + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + libltdl_cv_sys_dlopen_deplibs=yes + ;; + esac + ]) +if test yes != "$lt_cv_sys_dlopen_deplibs"; then + AC_DEFINE([LTDL_DLOPEN_DEPLIBS], [1], + [Define if the OS needs help to load dependent libraries for dlopen().]) +fi +]) +m4trace:/usr/share/aclocal/ltdl.m4:545: -1- AU_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], [m4_if($#, 0, [LT_SYS_DLOPEN_DEPLIBS], [LT_SYS_DLOPEN_DEPLIBS($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:545: -1- AC_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYS_DLOPEN_DEPLIBS' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_SYS_DLOPEN_DEPLIBS], [LT_SYS_DLOPEN_DEPLIBS($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:552: -1- AC_DEFUN([LT_SYS_MODULE_EXT], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl +AC_CACHE_CHECK([what extension is used for runtime loadable modules], + [libltdl_cv_shlibext], +[ +module=yes +eval libltdl_cv_shlibext=$shrext_cmds +module=no +eval libltdl_cv_shrext=$shrext_cmds + ]) +if test -n "$libltdl_cv_shlibext"; then + m4_pattern_allow([LT_MODULE_EXT])dnl + AC_DEFINE_UNQUOTED([LT_MODULE_EXT], ["$libltdl_cv_shlibext"], + [Define to the extension used for runtime loadable modules, say, ".so".]) +fi +if test "$libltdl_cv_shrext" != "$libltdl_cv_shlibext"; then + m4_pattern_allow([LT_SHARED_EXT])dnl + AC_DEFINE_UNQUOTED([LT_SHARED_EXT], ["$libltdl_cv_shrext"], + [Define to the shared library suffix, say, ".dylib".]) +fi +if test -n "$shared_archive_member_spec"; then + m4_pattern_allow([LT_SHARED_LIB_MEMBER])dnl + AC_DEFINE_UNQUOTED([LT_SHARED_LIB_MEMBER], ["($shared_archive_member_spec.o)"], + [Define to the shared archive member specification, say "(shr.o)".]) +fi +]) +m4trace:/usr/share/aclocal/ltdl.m4:580: -1- AU_DEFUN([AC_LTDL_SHLIBEXT], [m4_if($#, 0, [LT_SYS_MODULE_EXT], [LT_SYS_MODULE_EXT($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:580: -1- AC_DEFUN([AC_LTDL_SHLIBEXT], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SHLIBEXT' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_SYS_MODULE_EXT], [LT_SYS_MODULE_EXT($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:587: -1- AC_DEFUN([LT_SYS_MODULE_PATH], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl +AC_CACHE_CHECK([what variable specifies run-time module search path], + [lt_cv_module_path_var], [lt_cv_module_path_var=$shlibpath_var]) +if test -n "$lt_cv_module_path_var"; then + m4_pattern_allow([LT_MODULE_PATH_VAR])dnl + AC_DEFINE_UNQUOTED([LT_MODULE_PATH_VAR], ["$lt_cv_module_path_var"], + [Define to the name of the environment variable that determines the run-time module search path.]) +fi +]) +m4trace:/usr/share/aclocal/ltdl.m4:599: -1- AU_DEFUN([AC_LTDL_SHLIBPATH], [m4_if($#, 0, [LT_SYS_MODULE_PATH], [LT_SYS_MODULE_PATH($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:599: -1- AC_DEFUN([AC_LTDL_SHLIBPATH], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SHLIBPATH' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_SYS_MODULE_PATH], [LT_SYS_MODULE_PATH($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:606: -1- AC_DEFUN([LT_SYS_DLSEARCH_PATH], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl +AC_CACHE_CHECK([for the default library search path], + [lt_cv_sys_dlsearch_path], + [lt_cv_sys_dlsearch_path=$sys_lib_dlsearch_path_spec]) +if test -n "$lt_cv_sys_dlsearch_path"; then + sys_dlsearch_path= + for dir in $lt_cv_sys_dlsearch_path; do + if test -z "$sys_dlsearch_path"; then + sys_dlsearch_path=$dir + else + sys_dlsearch_path=$sys_dlsearch_path$PATH_SEPARATOR$dir + fi + done + m4_pattern_allow([LT_DLSEARCH_PATH])dnl + AC_DEFINE_UNQUOTED([LT_DLSEARCH_PATH], ["$sys_dlsearch_path"], + [Define to the system default library search path.]) +fi +]) +m4trace:/usr/share/aclocal/ltdl.m4:627: -1- AU_DEFUN([AC_LTDL_SYSSEARCHPATH], [m4_if($#, 0, [LT_SYS_DLSEARCH_PATH], [LT_SYS_DLSEARCH_PATH($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:627: -1- AC_DEFUN([AC_LTDL_SYSSEARCHPATH], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYSSEARCHPATH' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_SYS_DLSEARCH_PATH], [LT_SYS_DLSEARCH_PATH($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:653: -1- AC_DEFUN([LT_LIB_DLLOAD], [m4_pattern_allow([^LT_DLLOADERS$]) +LT_DLLOADERS= +AC_SUBST([LT_DLLOADERS]) + +AC_LANG_PUSH([C]) +lt_dlload_save_LIBS=$LIBS + +LIBADD_DLOPEN= +AC_SEARCH_LIBS([dlopen], [dl], + [AC_DEFINE([HAVE_LIBDL], [1], + [Define if you have the libdl library or equivalent.]) + if test "$ac_cv_search_dlopen" != "none required"; then + LIBADD_DLOPEN=-ldl + fi + libltdl_cv_lib_dl_dlopen=yes + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"], + [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#if HAVE_DLFCN_H +# include +#endif + ]], [[dlopen(0, 0);]])], + [AC_DEFINE([HAVE_LIBDL], [1], + [Define if you have the libdl library or equivalent.]) + libltdl_cv_func_dlopen=yes + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"], + [AC_CHECK_LIB([svld], [dlopen], + [AC_DEFINE([HAVE_LIBDL], [1], + [Define if you have the libdl library or equivalent.]) + LIBADD_DLOPEN=-lsvld libltdl_cv_func_dlopen=yes + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"])])]) +if test yes = "$libltdl_cv_func_dlopen" || test yes = "$libltdl_cv_lib_dl_dlopen" +then + lt_save_LIBS=$LIBS + LIBS="$LIBS $LIBADD_DLOPEN" + AC_CHECK_FUNCS([dlerror]) + LIBS=$lt_save_LIBS +fi +AC_SUBST([LIBADD_DLOPEN]) + +LIBADD_SHL_LOAD= +AC_CHECK_FUNC([shl_load], + [AC_DEFINE([HAVE_SHL_LOAD], [1], + [Define if you have the shl_load function.]) + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la"], + [AC_CHECK_LIB([dld], [shl_load], + [AC_DEFINE([HAVE_SHL_LOAD], [1], + [Define if you have the shl_load function.]) + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la" + LIBADD_SHL_LOAD=-ldld])]) +AC_SUBST([LIBADD_SHL_LOAD]) + +case $host_os in +darwin[[1567]].*) +# We only want this for pre-Mac OS X 10.4. + AC_CHECK_FUNC([_dyld_func_lookup], + [AC_DEFINE([HAVE_DYLD], [1], + [Define if you have the _dyld_func_lookup function.]) + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dyld.la"]) + ;; +beos*) + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}load_add_on.la" + ;; +cygwin* | mingw* | pw32*) + AC_CHECK_DECLS([cygwin_conv_path], [], [], [[#include ]]) + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}loadlibrary.la" + ;; +esac + +AC_CHECK_LIB([dld], [dld_link], + [AC_DEFINE([HAVE_DLD], [1], + [Define if you have the GNU dld library.]) + LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dld_link.la"]) +AC_SUBST([LIBADD_DLD_LINK]) + +m4_pattern_allow([^LT_DLPREOPEN$]) +LT_DLPREOPEN= +if test -n "$LT_DLLOADERS" +then + for lt_loader in $LT_DLLOADERS; do + LT_DLPREOPEN="$LT_DLPREOPEN-dlpreopen $lt_loader " + done + AC_DEFINE([HAVE_LIBDLLOADER], [1], + [Define if libdlloader will be built on this platform]) +fi +AC_SUBST([LT_DLPREOPEN]) + +dnl This isn't used anymore, but set it for backwards compatibility +LIBADD_DL="$LIBADD_DLOPEN $LIBADD_SHL_LOAD" +AC_SUBST([LIBADD_DL]) + +LIBS=$lt_dlload_save_LIBS +AC_LANG_POP +]) +m4trace:/usr/share/aclocal/ltdl.m4:748: -1- AU_DEFUN([AC_LTDL_DLLIB], [m4_if($#, 0, [LT_LIB_DLLOAD], [LT_LIB_DLLOAD($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:748: -1- AC_DEFUN([AC_LTDL_DLLIB], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_DLLIB' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_LIB_DLLOAD], [LT_LIB_DLLOAD($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:756: -1- AC_DEFUN([LT_SYS_SYMBOL_USCORE], [m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +AC_CACHE_CHECK([for _ prefix in compiled symbols], + [lt_cv_sys_symbol_underscore], + [lt_cv_sys_symbol_underscore=no + cat > conftest.$ac_ext <<_LT_EOF +void nm_test_func(){} +int main(){nm_test_func;return 0;} +_LT_EOF + if AC_TRY_EVAL(ac_compile); then + # Now try to grab the symbols. + ac_nlist=conftest.nm + if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist) && test -s "$ac_nlist"; then + # See whether the symbols have a leading underscore. + if grep '^. _nm_test_func' "$ac_nlist" >/dev/null; then + lt_cv_sys_symbol_underscore=yes + else + if grep '^. nm_test_func ' "$ac_nlist" >/dev/null; then + : + else + echo "configure: cannot find nm_test_func in $ac_nlist" >&AS_MESSAGE_LOG_FD + fi + fi + else + echo "configure: cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.c >&AS_MESSAGE_LOG_FD + fi + rm -rf conftest* + ]) + sys_symbol_underscore=$lt_cv_sys_symbol_underscore + AC_SUBST([sys_symbol_underscore]) +]) +m4trace:/usr/share/aclocal/ltdl.m4:793: -1- AU_DEFUN([AC_LTDL_SYMBOL_USCORE], [m4_if($#, 0, [LT_SYS_SYMBOL_USCORE], [LT_SYS_SYMBOL_USCORE($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:793: -1- AC_DEFUN([AC_LTDL_SYMBOL_USCORE], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYMBOL_USCORE' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_SYS_SYMBOL_USCORE], [LT_SYS_SYMBOL_USCORE($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:800: -1- AC_DEFUN([LT_FUNC_DLSYM_USCORE], [AC_REQUIRE([_LT_COMPILER_PIC])dnl for lt_prog_compiler_wl +AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl for lt_cv_sys_symbol_underscore +AC_REQUIRE([LT_SYS_MODULE_EXT])dnl for libltdl_cv_shlibext +if test yes = "$lt_cv_sys_symbol_underscore"; then + if test yes = "$libltdl_cv_func_dlopen" || test yes = "$libltdl_cv_lib_dl_dlopen"; then + AC_CACHE_CHECK([whether we have to add an underscore for dlsym], + [libltdl_cv_need_uscore], + [libltdl_cv_need_uscore=unknown + dlsym_uscore_save_LIBS=$LIBS + LIBS="$LIBS $LIBADD_DLOPEN" + libname=conftmod # stay within 8.3 filename limits! + cat >$libname.$ac_ext <<_LT_EOF +[#line $LINENO "configure" +#include "confdefs.h" +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif +int fnord () { return 42; }] +_LT_EOF + + # ltfn_module_cmds module_cmds + # Execute tilde-delimited MODULE_CMDS with environment primed for + # $module_cmds or $archive_cmds type content. + ltfn_module_cmds () + {( # subshell avoids polluting parent global environment + module_cmds_save_ifs=$IFS; IFS='~' + for cmd in @S|@1; do + IFS=$module_cmds_save_ifs + libobjs=$libname.$ac_objext; lib=$libname$libltdl_cv_shlibext + rpath=/not-exists; soname=$libname$libltdl_cv_shlibext; output_objdir=. + major=; versuffix=; verstring=; deplibs= + ECHO=echo; wl=$lt_prog_compiler_wl; allow_undefined_flag= + eval $cmd + done + IFS=$module_cmds_save_ifs + )} + + # Compile a loadable module using libtool macro expansion results. + $CC $pic_flag -c $libname.$ac_ext + ltfn_module_cmds "${module_cmds:-$archive_cmds}" + + # Try to fetch fnord with dlsym(). + libltdl_dlunknown=0; libltdl_dlnouscore=1; libltdl_dluscore=2 + cat >conftest.$ac_ext <<_LT_EOF +[#line $LINENO "configure" +#include "confdefs.h" +#if HAVE_DLFCN_H +#include +#endif +#include +#ifndef RTLD_GLOBAL +# ifdef DL_GLOBAL +# define RTLD_GLOBAL DL_GLOBAL +# else +# define RTLD_GLOBAL 0 +# endif +#endif +#ifndef RTLD_NOW +# ifdef DL_NOW +# define RTLD_NOW DL_NOW +# else +# define RTLD_NOW 0 +# endif +#endif +int main () { + void *handle = dlopen ("`pwd`/$libname$libltdl_cv_shlibext", RTLD_GLOBAL|RTLD_NOW); + int status = $libltdl_dlunknown; + if (handle) { + if (dlsym (handle, "fnord")) + status = $libltdl_dlnouscore; + else { + if (dlsym (handle, "_fnord")) + status = $libltdl_dluscore; + else + puts (dlerror ()); + } + dlclose (handle); + } else + puts (dlerror ()); + return status; +}] +_LT_EOF + if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + libltdl_status=$? + case x$libltdl_status in + x$libltdl_dlnouscore) libltdl_cv_need_uscore=no ;; + x$libltdl_dluscore) libltdl_cv_need_uscore=yes ;; + x*) libltdl_cv_need_uscore=unknown ;; + esac + fi + rm -rf conftest* $libname* + LIBS=$dlsym_uscore_save_LIBS + ]) + fi +fi + +if test yes = "$libltdl_cv_need_uscore"; then + AC_DEFINE([NEED_USCORE], [1], + [Define if dlsym() requires a leading underscore in symbol names.]) +fi +]) +m4trace:/usr/share/aclocal/ltdl.m4:907: -1- AU_DEFUN([AC_LTDL_DLSYM_USCORE], [m4_if($#, 0, [LT_FUNC_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE($@)])]) +m4trace:/usr/share/aclocal/ltdl.m4:907: -1- AC_DEFUN([AC_LTDL_DLSYM_USCORE], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_DLSYM_USCORE' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_FUNC_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE($@)])]) +m4trace:/usr/share/aclocal-1.16/amversion.m4:14: -1- AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.16' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.16.1], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) +m4trace:/usr/share/aclocal-1.16/amversion.m4:33: -1- AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.16.1])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) +m4trace:/usr/share/aclocal-1.16/auxdir.m4:47: -1- AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` +]) +m4trace:/usr/share/aclocal-1.16/cond.m4:12: -1- AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) +m4trace:/usr/share/aclocal-1.16/depend.m4:26: -1- AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], + [$1], [CXX], [depcc="$CXX" am_compiler_list=], + [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], + [$1], [UPC], [depcc="$UPC" am_compiler_list=], + [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) +m4trace:/usr/share/aclocal-1.16/depend.m4:163: -1- AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) +m4trace:/usr/share/aclocal-1.16/depend.m4:171: -1- AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl +AS_HELP_STRING( + [--enable-dependency-tracking], + [do not reject slow dependency extractors]) +AS_HELP_STRING( + [--disable-dependency-tracking], + [speeds up one-time build])]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +AC_SUBST([am__nodep])dnl +_AM_SUBST_NOTMAKE([am__nodep])dnl +]) +m4trace:/usr/share/aclocal-1.16/depout.m4:11: -1- AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + AS_CASE([$CONFIG_FILES], + [*\'*], [eval set x "$CONFIG_FILES"], + [*], [set x $CONFIG_FILES]) + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`AS_DIRNAME(["$am_mf"])` + am_filepart=`AS_BASENAME(["$am_mf"])` + AM_RUN_LOG([cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles]) || am_rc=$? + done + if test $am_rc -ne 0; then + AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. Try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking).]) + fi + AS_UNSET([am_dirpart]) + AS_UNSET([am_filepart]) + AS_UNSET([am_mf]) + AS_UNSET([am_rc]) + rm -f conftest-deps.mk +} +]) +m4trace:/usr/share/aclocal-1.16/depout.m4:62: -1- AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])]) +m4trace:/usr/share/aclocal-1.16/init.m4:29: -1- AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if( + m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +AM_MISSING_PROG([AUTOCONF], [autoconf]) +AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +AM_MISSING_PROG([AUTOHEADER], [autoheader]) +AM_MISSING_PROG([MAKEINFO], [makeinfo]) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl +]) +AC_REQUIRE([AM_SILENT_RULES])dnl +dnl The testsuite driver may need to know about EXEEXT, so add the +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) + fi +fi +dnl The trailing newline in this macro's definition is deliberate, for +dnl backward compatibility and to allow trailing 'dnl'-style comments +dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. +]) +m4trace:/usr/share/aclocal-1.16/init.m4:186: -1- AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) +m4trace:/usr/share/aclocal-1.16/install-sh.m4:11: -1- AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST([install_sh])]) +m4trace:/usr/share/aclocal-1.16/lead-dot.m4:10: -1- AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) +m4trace:/usr/share/aclocal-1.16/make.m4:13: -1- AC_DEFUN([AM_MAKE_INCLUDE], [AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive]) +cat > confinc.mk << 'END' +am__doit: + @echo this is the am__doit target >confinc.out +.PHONY: am__doit +END +am__include="#" +am__quote= +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out]) + AS_CASE([$?:`cat confinc.out 2>/dev/null`], + ['0:this is the am__doit target'], + [AS_CASE([$s], + [BSD], [am__include='.include' am__quote='"'], + [am__include='include' am__quote=''])]) + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +AC_MSG_RESULT([${_am_result}]) +AC_SUBST([am__include])]) +m4trace:/usr/share/aclocal-1.16/make.m4:42: -1- m4_pattern_allow([^am__quote$]) +m4trace:/usr/share/aclocal-1.16/missing.m4:11: -1- AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) +m4trace:/usr/share/aclocal-1.16/missing.m4:20: -1- AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + AC_MSG_WARN(['missing' script is too old or missing]) +fi +]) +m4trace:/usr/share/aclocal-1.16/options.m4:11: -1- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) +m4trace:/usr/share/aclocal-1.16/options.m4:17: -1- AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) +m4trace:/usr/share/aclocal-1.16/options.m4:23: -1- AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) +m4trace:/usr/share/aclocal-1.16/options.m4:29: -1- AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) +m4trace:/usr/share/aclocal-1.16/prog-cc-c-o.m4:12: -1- AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +AC_LANG_PUSH([C])dnl +AC_CACHE_CHECK( + [whether $CC understands -c and -o together], + [am_cv_prog_cc_c_o], + [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i]) +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +AC_LANG_POP([C])]) +m4trace:/usr/share/aclocal-1.16/prog-cc-c-o.m4:47: -1- AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) +m4trace:/usr/share/aclocal-1.16/python.m4:35: -1- AC_DEFUN([AM_PATH_PYTHON], [ + dnl Find a Python interpreter. Python versions prior to 2.0 are not + dnl supported. (2.0 was released on October 16, 2000). + m4_define_default([_AM_PYTHON_INTERPRETER_LIST], +[python python2 python3 dnl + python3.9 python3.8 python3.7 python3.6 python3.5 python3.4 python3.3 dnl + python3.2 python3.1 python3.0 dnl + python2.7 python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 dnl + python2.0]) + + AC_ARG_VAR([PYTHON], [the Python interpreter]) + + m4_if([$1],[],[ + dnl No version check is needed. + # Find any Python interpreter. + if test -z "$PYTHON"; then + AC_PATH_PROGS([PYTHON], _AM_PYTHON_INTERPRETER_LIST, :) + fi + am_display_PYTHON=python + ], [ + dnl A version check is needed. + if test -n "$PYTHON"; then + # If the user set $PYTHON, use it and don't search something else. + AC_MSG_CHECKING([whether $PYTHON version is >= $1]) + AM_PYTHON_CHECK_VERSION([$PYTHON], [$1], + [AC_MSG_RESULT([yes])], + [AC_MSG_RESULT([no]) + AC_MSG_ERROR([Python interpreter is too old])]) + am_display_PYTHON=$PYTHON + else + # Otherwise, try each interpreter until we find one that satisfies + # VERSION. + AC_CACHE_CHECK([for a Python interpreter with version >= $1], + [am_cv_pathless_PYTHON],[ + for am_cv_pathless_PYTHON in _AM_PYTHON_INTERPRETER_LIST none; do + test "$am_cv_pathless_PYTHON" = none && break + AM_PYTHON_CHECK_VERSION([$am_cv_pathless_PYTHON], [$1], [break]) + done]) + # Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON. + if test "$am_cv_pathless_PYTHON" = none; then + PYTHON=: + else + AC_PATH_PROG([PYTHON], [$am_cv_pathless_PYTHON]) + fi + am_display_PYTHON=$am_cv_pathless_PYTHON + fi + ]) + + if test "$PYTHON" = :; then + dnl Run any user-specified action, or abort. + m4_default([$3], [AC_MSG_ERROR([no suitable Python interpreter found])]) + else + + dnl Query Python for its version number. Getting [:3] seems to be + dnl the best way to do this; it's what "site.py" does in the standard + dnl library. + + AC_CACHE_CHECK([for $am_display_PYTHON version], [am_cv_python_version], + [am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[[:3]])"`]) + AC_SUBST([PYTHON_VERSION], [$am_cv_python_version]) + + dnl Use the values of $prefix and $exec_prefix for the corresponding + dnl values of PYTHON_PREFIX and PYTHON_EXEC_PREFIX. These are made + dnl distinct variables so they can be overridden if need be. However, + dnl general consensus is that you shouldn't need this ability. + + AC_SUBST([PYTHON_PREFIX], ['${prefix}']) + AC_SUBST([PYTHON_EXEC_PREFIX], ['${exec_prefix}']) + + dnl At times (like when building shared libraries) you may want + dnl to know which OS platform Python thinks this is. + + AC_CACHE_CHECK([for $am_display_PYTHON platform], [am_cv_python_platform], + [am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`]) + AC_SUBST([PYTHON_PLATFORM], [$am_cv_python_platform]) + + # Just factor out some code duplication. + am_python_setup_sysconfig="\ +import sys +# Prefer sysconfig over distutils.sysconfig, for better compatibility +# with python 3.x. See automake bug#10227. +try: + import sysconfig +except ImportError: + can_use_sysconfig = 0 +else: + can_use_sysconfig = 1 +# Can't use sysconfig in CPython 2.7, since it's broken in virtualenvs: +# +try: + from platform import python_implementation + if python_implementation() == 'CPython' and sys.version[[:3]] == '2.7': + can_use_sysconfig = 0 +except ImportError: + pass" + + dnl Set up 4 directories: + + dnl pythondir -- where to install python scripts. This is the + dnl site-packages directory, not the python standard library + dnl directory like in previous automake betas. This behavior + dnl is more consistent with lispdir.m4 for example. + dnl Query distutils for this directory. + AC_CACHE_CHECK([for $am_display_PYTHON script directory], + [am_cv_python_pythondir], + [if test "x$prefix" = xNONE + then + am_py_prefix=$ac_default_prefix + else + am_py_prefix=$prefix + fi + am_cv_python_pythondir=`$PYTHON -c " +$am_python_setup_sysconfig +if can_use_sysconfig: + sitedir = sysconfig.get_path('purelib', vars={'base':'$am_py_prefix'}) +else: + from distutils import sysconfig + sitedir = sysconfig.get_python_lib(0, 0, prefix='$am_py_prefix') +sys.stdout.write(sitedir)"` + case $am_cv_python_pythondir in + $am_py_prefix*) + am__strip_prefix=`echo "$am_py_prefix" | sed 's|.|.|g'` + am_cv_python_pythondir=`echo "$am_cv_python_pythondir" | sed "s,^$am__strip_prefix,$PYTHON_PREFIX,"` + ;; + *) + case $am_py_prefix in + /usr|/System*) ;; + *) + am_cv_python_pythondir=$PYTHON_PREFIX/lib/python$PYTHON_VERSION/site-packages + ;; + esac + ;; + esac + ]) + AC_SUBST([pythondir], [$am_cv_python_pythondir]) + + dnl pkgpythondir -- $PACKAGE directory under pythondir. Was + dnl PYTHON_SITE_PACKAGE in previous betas, but this naming is + dnl more consistent with the rest of automake. + + AC_SUBST([pkgpythondir], [\${pythondir}/$PACKAGE]) + + dnl pyexecdir -- directory for installing python extension modules + dnl (shared libraries) + dnl Query distutils for this directory. + AC_CACHE_CHECK([for $am_display_PYTHON extension module directory], + [am_cv_python_pyexecdir], + [if test "x$exec_prefix" = xNONE + then + am_py_exec_prefix=$am_py_prefix + else + am_py_exec_prefix=$exec_prefix + fi + am_cv_python_pyexecdir=`$PYTHON -c " +$am_python_setup_sysconfig +if can_use_sysconfig: + sitedir = sysconfig.get_path('platlib', vars={'platbase':'$am_py_prefix'}) +else: + from distutils import sysconfig + sitedir = sysconfig.get_python_lib(1, 0, prefix='$am_py_prefix') +sys.stdout.write(sitedir)"` + case $am_cv_python_pyexecdir in + $am_py_exec_prefix*) + am__strip_prefix=`echo "$am_py_exec_prefix" | sed 's|.|.|g'` + am_cv_python_pyexecdir=`echo "$am_cv_python_pyexecdir" | sed "s,^$am__strip_prefix,$PYTHON_EXEC_PREFIX,"` + ;; + *) + case $am_py_exec_prefix in + /usr|/System*) ;; + *) + am_cv_python_pyexecdir=$PYTHON_EXEC_PREFIX/lib/python$PYTHON_VERSION/site-packages + ;; + esac + ;; + esac + ]) + AC_SUBST([pyexecdir], [$am_cv_python_pyexecdir]) + + dnl pkgpyexecdir -- $(pyexecdir)/$(PACKAGE) + + AC_SUBST([pkgpyexecdir], [\${pyexecdir}/$PACKAGE]) + + dnl Run any user-specified action. + $2 + fi + +]) +m4trace:/usr/share/aclocal-1.16/python.m4:232: -1- AC_DEFUN([AM_PYTHON_CHECK_VERSION], [prog="import sys +# split strings by '.' and convert to numeric. Append some zeros +# because we need at least 4 digits for the hex conversion. +# map returns an iterator in Python 3.0 and a list in 2.x +minver = list(map(int, '$2'.split('.'))) + [[0, 0, 0]] +minverhex = 0 +# xrange is not present in Python 3.0 and range returns an iterator +for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[[i]] +sys.exit(sys.hexversion < minverhex)" + AS_IF([AM_RUN_LOG([$1 -c "$prog"])], [$3], [$4])]) +m4trace:/usr/share/aclocal-1.16/runlog.m4:12: -1- AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) +m4trace:/usr/share/aclocal-1.16/sanity.m4:11: -1- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken + alias in your environment]) + fi + if test "$[2]" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT([yes]) +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file +]) +m4trace:/usr/share/aclocal-1.16/silent.m4:12: -1- AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; +esac +dnl +dnl A few 'make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi]) +if test $am_cv_make_support_nested_variables = yes; then + dnl Using '$V' instead of '$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_DEFAULT_V])dnl +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl +AC_SUBST([AM_DEFAULT_VERBOSITY])dnl +AM_BACKSLASH='\' +AC_SUBST([AM_BACKSLASH])dnl +_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +]) +m4trace:/usr/share/aclocal-1.16/strip.m4:17: -1- AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) +m4trace:/usr/share/aclocal-1.16/substnot.m4:12: -1- AC_DEFUN([_AM_SUBST_NOTMAKE]) +m4trace:/usr/share/aclocal-1.16/substnot.m4:17: -1- AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) +m4trace:/usr/share/aclocal-1.16/tar.m4:23: -1- AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' + +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], + + [pax], + [], + + [m4_fatal([Unknown tar format])]) + + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) +m4trace:m4/libtool.m4:61: -1- AC_DEFUN([LT_INIT], [AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK +AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +AC_BEFORE([$0], [LT_LANG])dnl +AC_BEFORE([$0], [LT_OUTPUT])dnl +AC_BEFORE([$0], [LTDL_INIT])dnl +m4_require([_LT_CHECK_BUILDDIR])dnl + +dnl Autoconf doesn't catch unexpanded LT_ macros by default: +m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl +m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl +dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 +dnl unless we require an AC_DEFUNed macro: +AC_REQUIRE([LTOPTIONS_VERSION])dnl +AC_REQUIRE([LTSUGAR_VERSION])dnl +AC_REQUIRE([LTVERSION_VERSION])dnl +AC_REQUIRE([LTOBSOLETE_VERSION])dnl +m4_require([_LT_PROG_LTMAIN])dnl + +_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) + +dnl Parse OPTIONS +_LT_SET_OPTIONS([$0], [$1]) + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS=$ltmain + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +_LT_SETUP + +# Only expand once: +m4_define([LT_INIT]) +]) +m4trace:m4/libtool.m4:99: -1- AU_DEFUN([AC_PROG_LIBTOOL], [m4_if($#, 0, [LT_INIT], [LT_INIT($@)])]) +m4trace:m4/libtool.m4:99: -1- AC_DEFUN([AC_PROG_LIBTOOL], [AC_DIAGNOSE([obsolete], [The macro `AC_PROG_LIBTOOL' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_INIT], [LT_INIT($@)])]) +m4trace:m4/libtool.m4:100: -1- AU_DEFUN([AM_PROG_LIBTOOL], [m4_if($#, 0, [LT_INIT], [LT_INIT($@)])]) +m4trace:m4/libtool.m4:100: -1- AC_DEFUN([AM_PROG_LIBTOOL], [AC_DIAGNOSE([obsolete], [The macro `AM_PROG_LIBTOOL' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_INIT], [LT_INIT($@)])]) +m4trace:m4/libtool.m4:619: -1- AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} +AC_MSG_NOTICE([creating $CONFIG_LT]) +_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], +[# Run this file to recreate a libtool stub with the current configuration.]) + +cat >>"$CONFIG_LT" <<\_LTEOF +lt_cl_silent=false +exec AS_MESSAGE_LOG_FD>>config.log +{ + echo + AS_BOX([Running $as_me.]) +} >&AS_MESSAGE_LOG_FD + +lt_cl_help="\ +'$as_me' creates a local libtool stub from the current configuration, +for use in further configure time tests before the real libtool is +generated. + +Usage: $[0] [[OPTIONS]] + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + +Report bugs to ." + +lt_cl_version="\ +m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl +m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) +configured by $[0], generated by m4_PACKAGE_STRING. + +Copyright (C) 2011 Free Software Foundation, Inc. +This config.lt script is free software; the Free Software Foundation +gives unlimited permision to copy, distribute and modify it." + +while test 0 != $[#] +do + case $[1] in + --version | --v* | -V ) + echo "$lt_cl_version"; exit 0 ;; + --help | --h* | -h ) + echo "$lt_cl_help"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --quiet | --q* | --silent | --s* | -q ) + lt_cl_silent=: ;; + + -*) AC_MSG_ERROR([unrecognized option: $[1] +Try '$[0] --help' for more information.]) ;; + + *) AC_MSG_ERROR([unrecognized argument: $[1] +Try '$[0] --help' for more information.]) ;; + esac + shift +done + +if $lt_cl_silent; then + exec AS_MESSAGE_FD>/dev/null +fi +_LTEOF + +cat >>"$CONFIG_LT" <<_LTEOF +_LT_OUTPUT_LIBTOOL_COMMANDS_INIT +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +AC_MSG_NOTICE([creating $ofile]) +_LT_OUTPUT_LIBTOOL_COMMANDS +AS_EXIT(0) +_LTEOF +chmod +x "$CONFIG_LT" + +# configure is writing to config.log, but config.lt does its own redirection, +# appending to config.log, which fails on DOS, as config.log is still kept +# open by configure. Here we exec the FD to /dev/null, effectively closing +# config.log, so it can be properly (re)opened and appended to by config.lt. +lt_cl_success=: +test yes = "$silent" && + lt_config_lt_args="$lt_config_lt_args --quiet" +exec AS_MESSAGE_LOG_FD>/dev/null +$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false +exec AS_MESSAGE_LOG_FD>>config.log +$lt_cl_success || AS_EXIT(1) +]) +m4trace:m4/libtool.m4:811: -1- AC_DEFUN([LT_SUPPORTED_TAG], []) +m4trace:m4/libtool.m4:822: -1- AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl +m4_case([$1], + [C], [_LT_LANG(C)], + [C++], [_LT_LANG(CXX)], + [Go], [_LT_LANG(GO)], + [Java], [_LT_LANG(GCJ)], + [Fortran 77], [_LT_LANG(F77)], + [Fortran], [_LT_LANG(FC)], + [Windows Resource], [_LT_LANG(RC)], + [m4_ifdef([_LT_LANG_]$1[_CONFIG], + [_LT_LANG($1)], + [m4_fatal([$0: unsupported language: "$1"])])])dnl +]) +m4trace:m4/libtool.m4:914: -1- AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) +m4trace:m4/libtool.m4:914: -1- AC_DEFUN([AC_LIBTOOL_CXX], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_CXX' is obsolete. +You should run autoupdate.])dnl +LT_LANG(C++)]) +m4trace:m4/libtool.m4:915: -1- AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) +m4trace:m4/libtool.m4:915: -1- AC_DEFUN([AC_LIBTOOL_F77], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_F77' is obsolete. +You should run autoupdate.])dnl +LT_LANG(Fortran 77)]) +m4trace:m4/libtool.m4:916: -1- AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) +m4trace:m4/libtool.m4:916: -1- AC_DEFUN([AC_LIBTOOL_FC], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_FC' is obsolete. +You should run autoupdate.])dnl +LT_LANG(Fortran)]) +m4trace:m4/libtool.m4:917: -1- AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) +m4trace:m4/libtool.m4:917: -1- AC_DEFUN([AC_LIBTOOL_GCJ], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_GCJ' is obsolete. +You should run autoupdate.])dnl +LT_LANG(Java)]) +m4trace:m4/libtool.m4:918: -1- AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) +m4trace:m4/libtool.m4:918: -1- AC_DEFUN([AC_LIBTOOL_RC], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_RC' is obsolete. +You should run autoupdate.])dnl +LT_LANG(Windows Resource)]) +m4trace:m4/libtool.m4:1246: -1- AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot]) +AC_ARG_WITH([sysroot], +[AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], + [Search for dependent libraries within DIR (or the compiler's sysroot + if not specified).])], +[], [with_sysroot=no]) + +dnl lt_sysroot will always be passed unquoted. We quote it here +dnl in case the user passed a directory name. +lt_sysroot= +case $with_sysroot in #( + yes) + if test yes = "$GCC"; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + AC_MSG_RESULT([$with_sysroot]) + AC_MSG_ERROR([The sysroot must be an absolute path.]) + ;; +esac + + AC_MSG_RESULT([${lt_sysroot:-no}]) +_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl +[dependent libraries, and where our libraries should be installed.])]) +m4trace:m4/libtool.m4:1577: -1- AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $RM conftest* +]) + +if test yes = "[$]$2"; then + m4_if([$5], , :, [$5]) +else + m4_if([$6], , :, [$6]) +fi +]) +m4trace:m4/libtool.m4:1619: -1- AU_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [m4_if($#, 0, [_LT_COMPILER_OPTION], [_LT_COMPILER_OPTION($@)])]) +m4trace:m4/libtool.m4:1619: -1- AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_COMPILER_OPTION' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [_LT_COMPILER_OPTION], [_LT_COMPILER_OPTION($@)])]) +m4trace:m4/libtool.m4:1628: -1- AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $3" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS +]) + +if test yes = "[$]$2"; then + m4_if([$4], , :, [$4]) +else + m4_if([$5], , :, [$5]) +fi +]) +m4trace:m4/libtool.m4:1663: -1- AU_DEFUN([AC_LIBTOOL_LINKER_OPTION], [m4_if($#, 0, [_LT_LINKER_OPTION], [_LT_LINKER_OPTION($@)])]) +m4trace:m4/libtool.m4:1663: -1- AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_LINKER_OPTION' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [_LT_LINKER_OPTION], [_LT_LINKER_OPTION($@)])]) +m4trace:m4/libtool.m4:1670: -1- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl +# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring=ABCD + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test X`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test 17 != "$i" # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac +]) +if test -n "$lt_cv_sys_max_cmd_len"; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +max_cmd_len=$lt_cv_sys_max_cmd_len +_LT_DECL([], [max_cmd_len], [0], + [What is the maximum length of a command?]) +]) +m4trace:m4/libtool.m4:1809: -1- AU_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [m4_if($#, 0, [LT_CMD_MAX_LEN], [LT_CMD_MAX_LEN($@)])]) +m4trace:m4/libtool.m4:1809: -1- AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_SYS_MAX_CMD_LEN' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_CMD_MAX_LEN], [LT_CMD_MAX_LEN($@)])]) +m4trace:m4/libtool.m4:1920: -1- AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl +if test yes != "$enable_dlopen"; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen=load_add_on + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen=LoadLibrary + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[ + lt_cv_dlopen=dyld + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + tpf*) + # Don't try to run any link tests for TPF. We know it's impossible + # because TPF is a cross-compiler, and we know how we open DSOs. + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + lt_cv_dlopen_self=no + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen=shl_load], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen=dlopen], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test no = "$lt_cv_dlopen"; then + enable_dlopen=no + else + enable_dlopen=yes + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS=$CPPFLAGS + test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS=$LDFLAGS + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS=$LIBS + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test yes = "$lt_cv_dlopen_self"; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS=$save_CPPFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +_LT_DECL([dlopen_support], [enable_dlopen], [0], + [Whether dlopen is supported]) +_LT_DECL([dlopen_self], [enable_dlopen_self], [0], + [Whether dlopen of programs is supported]) +_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], + [Whether dlopen of statically linked programs is supported]) +]) +m4trace:m4/libtool.m4:2045: -1- AU_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [m4_if($#, 0, [LT_SYS_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF($@)])]) +m4trace:m4/libtool.m4:2045: -1- AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_DLOPEN_SELF' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_SYS_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF($@)])]) +m4trace:m4/libtool.m4:3166: -1- AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="m4_if([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$1"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac]) +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +_LT_DECL([], [MAGIC_CMD], [0], + [Used to examine libraries when file_magic_cmd begins with "file"])dnl +]) +m4trace:m4/libtool.m4:3228: -1- AU_DEFUN([AC_PATH_TOOL_PREFIX], [m4_if($#, 0, [_LT_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX($@)])]) +m4trace:m4/libtool.m4:3228: -1- AC_DEFUN([AC_PATH_TOOL_PREFIX], [AC_DIAGNOSE([obsolete], [The macro `AC_PATH_TOOL_PREFIX' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [_LT_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX($@)])]) +m4trace:m4/libtool.m4:3251: -1- AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PROG_ECHO_BACKSLASH])dnl + +AC_ARG_WITH([gnu-ld], + [AS_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test no = "$withval" || with_gnu_ld=yes], + [with_gnu_ld=no])dnl + +ac_prog=ld +if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return, which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD=$ac_prog + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test yes = "$with_gnu_ld"; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD=$ac_dir/$ac_prog + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 | sed '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break 2 + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break 2 + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS=$lt_save_ifs + done + : ${lt_cv_path_NM=no} +fi]) +if test no != "$lt_cv_path_NM"; then + NM=$lt_cv_path_NM +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols -headers" + ;; + *) + DUMPBIN=: + ;; + esac + fi + AC_SUBST([DUMPBIN]) + if test : != "$DUMPBIN"; then + NM=$DUMPBIN + fi +fi +test -z "$NM" && NM=nm +AC_SUBST([NM]) +_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl + +AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], + [lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) + cat conftest.out >&AS_MESSAGE_LOG_FD + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest*]) +]) +m4trace:m4/libtool.m4:3765: -1- AU_DEFUN([AM_PROG_NM], [m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])]) +m4trace:m4/libtool.m4:3765: -1- AC_DEFUN([AM_PROG_NM], [AC_DIAGNOSE([obsolete], [The macro `AM_PROG_NM' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])]) +m4trace:m4/libtool.m4:3766: -1- AU_DEFUN([AC_PROG_NM], [m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])]) +m4trace:m4/libtool.m4:3766: -1- AC_DEFUN([AC_PROG_NM], [AC_DIAGNOSE([obsolete], [The macro `AC_PROG_NM' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])]) +m4trace:m4/libtool.m4:3837: -1- AC_DEFUN([_LT_DLL_DEF_P], [dnl + test DEF = "`$SED -n dnl + -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace + -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments + -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl + -e q dnl Only consider the first "real" line + $1`" dnl +]) +m4trace:m4/libtool.m4:3851: -1- AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM=-lm) + ;; +esac +AC_SUBST([LIBM]) +]) +m4trace:m4/libtool.m4:3870: -1- AU_DEFUN([AC_CHECK_LIBM], [m4_if($#, 0, [LT_LIB_M], [LT_LIB_M($@)])]) +m4trace:m4/libtool.m4:3870: -1- AC_DEFUN([AC_CHECK_LIBM], [AC_DIAGNOSE([obsolete], [The macro `AC_CHECK_LIBM' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_LIB_M], [LT_LIB_M($@)])]) +m4trace:m4/libtool.m4:8141: -1- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], + [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], + [AC_CHECK_TOOL(GCJ, gcj,) + test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS)])])[]dnl +]) +m4trace:m4/libtool.m4:8150: -1- AU_DEFUN([LT_AC_PROG_GCJ], [m4_if($#, 0, [LT_PROG_GCJ], [LT_PROG_GCJ($@)])]) +m4trace:m4/libtool.m4:8150: -1- AC_DEFUN([LT_AC_PROG_GCJ], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_GCJ' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_PROG_GCJ], [LT_PROG_GCJ($@)])]) +m4trace:m4/libtool.m4:8157: -1- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,) +]) +m4trace:m4/libtool.m4:8164: -1- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) +]) +m4trace:m4/libtool.m4:8169: -1- AU_DEFUN([LT_AC_PROG_RC], [m4_if($#, 0, [LT_PROG_RC], [LT_PROG_RC($@)])]) +m4trace:m4/libtool.m4:8169: -1- AC_DEFUN([LT_AC_PROG_RC], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_RC' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [LT_PROG_RC], [LT_PROG_RC($@)])]) +m4trace:m4/libtool.m4:8289: -1- AU_DEFUN([LT_AC_PROG_SED], [m4_if($#, 0, [AC_PROG_SED], [AC_PROG_SED($@)])]) +m4trace:m4/libtool.m4:8289: -1- AC_DEFUN([LT_AC_PROG_SED], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_SED' is obsolete. +You should run autoupdate.])dnl +m4_if($#, 0, [AC_PROG_SED], [AC_PROG_SED($@)])]) +m4trace:m4/ltoptions.m4:14: -1- AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) +m4trace:m4/ltoptions.m4:113: -1- AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'dlopen' option into LT_INIT's first parameter.]) +]) +m4trace:m4/ltoptions.m4:113: -1- AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_DLOPEN' is obsolete. +You should run autoupdate.])dnl +_LT_SET_OPTION([LT_INIT], [dlopen]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'dlopen' option into LT_INIT's first parameter.]) +]) +m4trace:m4/ltoptions.m4:148: -1- AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl +_LT_SET_OPTION([LT_INIT], [win32-dll]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'win32-dll' option into LT_INIT's first parameter.]) +]) +m4trace:m4/ltoptions.m4:148: -1- AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_WIN32_DLL' is obsolete. +You should run autoupdate.])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +_LT_SET_OPTION([LT_INIT], [win32-dll]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'win32-dll' option into LT_INIT's first parameter.]) +]) +m4trace:m4/ltoptions.m4:197: -1- AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) +]) +m4trace:m4/ltoptions.m4:201: -1- AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) +]) +m4trace:m4/ltoptions.m4:205: -1- AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +m4trace:m4/ltoptions.m4:205: -1- AC_DEFUN([AM_ENABLE_SHARED], [AC_DIAGNOSE([obsolete], [The macro `AM_ENABLE_SHARED' is obsolete. +You should run autoupdate.])dnl +AC_ENABLE_SHARED($@)]) +m4trace:m4/ltoptions.m4:206: -1- AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) +m4trace:m4/ltoptions.m4:206: -1- AC_DEFUN([AM_DISABLE_SHARED], [AC_DIAGNOSE([obsolete], [The macro `AM_DISABLE_SHARED' is obsolete. +You should run autoupdate.])dnl +AC_DISABLE_SHARED($@)]) +m4trace:m4/ltoptions.m4:251: -1- AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) +]) +m4trace:m4/ltoptions.m4:255: -1- AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) +]) +m4trace:m4/ltoptions.m4:259: -1- AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +m4trace:m4/ltoptions.m4:259: -1- AC_DEFUN([AM_ENABLE_STATIC], [AC_DIAGNOSE([obsolete], [The macro `AM_ENABLE_STATIC' is obsolete. +You should run autoupdate.])dnl +AC_ENABLE_STATIC($@)]) +m4trace:m4/ltoptions.m4:260: -1- AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) +m4trace:m4/ltoptions.m4:260: -1- AC_DEFUN([AM_DISABLE_STATIC], [AC_DIAGNOSE([obsolete], [The macro `AM_DISABLE_STATIC' is obsolete. +You should run autoupdate.])dnl +AC_DISABLE_STATIC($@)]) +m4trace:m4/ltoptions.m4:305: -1- AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the 'fast-install' option into LT_INIT's first parameter.]) +]) +m4trace:m4/ltoptions.m4:305: -1- AC_DEFUN([AC_ENABLE_FAST_INSTALL], [AC_DIAGNOSE([obsolete], [The macro `AC_ENABLE_FAST_INSTALL' is obsolete. +You should run autoupdate.])dnl +_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the 'fast-install' option into LT_INIT's first parameter.]) +]) +m4trace:m4/ltoptions.m4:312: -1- AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the 'disable-fast-install' option into LT_INIT's first parameter.]) +]) +m4trace:m4/ltoptions.m4:312: -1- AC_DEFUN([AC_DISABLE_FAST_INSTALL], [AC_DIAGNOSE([obsolete], [The macro `AC_DISABLE_FAST_INSTALL' is obsolete. +You should run autoupdate.])dnl +_LT_SET_OPTION([LT_INIT], [disable-fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the 'disable-fast-install' option into LT_INIT's first parameter.]) +]) +m4trace:m4/ltoptions.m4:411: -1- AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'pic-only' option into LT_INIT's first parameter.]) +]) +m4trace:m4/ltoptions.m4:411: -1- AC_DEFUN([AC_LIBTOOL_PICMODE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_PICMODE' is obsolete. +You should run autoupdate.])dnl +_LT_SET_OPTION([LT_INIT], [pic-only]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'pic-only' option into LT_INIT's first parameter.]) +]) +m4trace:m4/ltsugar.m4:14: -1- AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) +m4trace:m4/ltversion.m4:18: -1- AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4.6' +macro_revision='2.4.6' +_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) +_LT_DECL(, macro_revision, 0) +]) +m4trace:m4/lt~obsolete.m4:37: -1- AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) +m4trace:m4/lt~obsolete.m4:41: -1- AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH]) +m4trace:m4/lt~obsolete.m4:42: -1- AC_DEFUN([_LT_AC_SHELL_INIT]) +m4trace:m4/lt~obsolete.m4:43: -1- AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX]) +m4trace:m4/lt~obsolete.m4:45: -1- AC_DEFUN([_LT_AC_TAGVAR]) +m4trace:m4/lt~obsolete.m4:46: -1- AC_DEFUN([AC_LTDL_ENABLE_INSTALL]) +m4trace:m4/lt~obsolete.m4:47: -1- AC_DEFUN([AC_LTDL_PREOPEN]) +m4trace:m4/lt~obsolete.m4:48: -1- AC_DEFUN([_LT_AC_SYS_COMPILER]) +m4trace:m4/lt~obsolete.m4:49: -1- AC_DEFUN([_LT_AC_LOCK]) +m4trace:m4/lt~obsolete.m4:50: -1- AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE]) +m4trace:m4/lt~obsolete.m4:51: -1- AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF]) +m4trace:m4/lt~obsolete.m4:52: -1- AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O]) +m4trace:m4/lt~obsolete.m4:53: -1- AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS]) +m4trace:m4/lt~obsolete.m4:54: -1- AC_DEFUN([AC_LIBTOOL_OBJDIR]) +m4trace:m4/lt~obsolete.m4:55: -1- AC_DEFUN([AC_LTDL_OBJDIR]) +m4trace:m4/lt~obsolete.m4:56: -1- AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH]) +m4trace:m4/lt~obsolete.m4:57: -1- AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP]) +m4trace:m4/lt~obsolete.m4:58: -1- AC_DEFUN([AC_PATH_MAGIC]) +m4trace:m4/lt~obsolete.m4:59: -1- AC_DEFUN([AC_PROG_LD_GNU]) +m4trace:m4/lt~obsolete.m4:60: -1- AC_DEFUN([AC_PROG_LD_RELOAD_FLAG]) +m4trace:m4/lt~obsolete.m4:61: -1- AC_DEFUN([AC_DEPLIBS_CHECK_METHOD]) +m4trace:m4/lt~obsolete.m4:62: -1- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI]) +m4trace:m4/lt~obsolete.m4:63: -1- AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE]) +m4trace:m4/lt~obsolete.m4:64: -1- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC]) +m4trace:m4/lt~obsolete.m4:65: -1- AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS]) +m4trace:m4/lt~obsolete.m4:66: -1- AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP]) +m4trace:m4/lt~obsolete.m4:67: -1- AC_DEFUN([LT_AC_PROG_EGREP]) +m4trace:m4/lt~obsolete.m4:72: -1- AC_DEFUN([_AC_PROG_LIBTOOL]) +m4trace:m4/lt~obsolete.m4:73: -1- AC_DEFUN([AC_LIBTOOL_SETUP]) +m4trace:m4/lt~obsolete.m4:74: -1- AC_DEFUN([_LT_AC_CHECK_DLFCN]) +m4trace:m4/lt~obsolete.m4:75: -1- AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER]) +m4trace:m4/lt~obsolete.m4:76: -1- AC_DEFUN([_LT_AC_TAGCONFIG]) +m4trace:m4/lt~obsolete.m4:78: -1- AC_DEFUN([_LT_AC_LANG_CXX]) +m4trace:m4/lt~obsolete.m4:79: -1- AC_DEFUN([_LT_AC_LANG_F77]) +m4trace:m4/lt~obsolete.m4:80: -1- AC_DEFUN([_LT_AC_LANG_GCJ]) +m4trace:m4/lt~obsolete.m4:81: -1- AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG]) +m4trace:m4/lt~obsolete.m4:82: -1- AC_DEFUN([_LT_AC_LANG_C_CONFIG]) +m4trace:m4/lt~obsolete.m4:83: -1- AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG]) +m4trace:m4/lt~obsolete.m4:84: -1- AC_DEFUN([_LT_AC_LANG_CXX_CONFIG]) +m4trace:m4/lt~obsolete.m4:85: -1- AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG]) +m4trace:m4/lt~obsolete.m4:86: -1- AC_DEFUN([_LT_AC_LANG_F77_CONFIG]) +m4trace:m4/lt~obsolete.m4:87: -1- AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG]) +m4trace:m4/lt~obsolete.m4:88: -1- AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG]) +m4trace:m4/lt~obsolete.m4:89: -1- AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG]) +m4trace:m4/lt~obsolete.m4:90: -1- AC_DEFUN([_LT_AC_LANG_RC_CONFIG]) +m4trace:m4/lt~obsolete.m4:91: -1- AC_DEFUN([AC_LIBTOOL_CONFIG]) +m4trace:m4/lt~obsolete.m4:92: -1- AC_DEFUN([_LT_AC_FILE_LTDLL_C]) +m4trace:m4/lt~obsolete.m4:94: -1- AC_DEFUN([_LT_AC_PROG_CXXCPP]) +m4trace:m4/lt~obsolete.m4:97: -1- AC_DEFUN([_LT_PROG_F77]) +m4trace:m4/lt~obsolete.m4:98: -1- AC_DEFUN([_LT_PROG_FC]) +m4trace:m4/lt~obsolete.m4:99: -1- AC_DEFUN([_LT_PROG_CXX]) +m4trace:configure.ac:1: -1- m4_include([m4/acx_pthread.m4]) +m4trace:m4/acx_pthread.m4:63: -1- AC_DEFUN([ACX_PTHREAD], [ +AC_REQUIRE([AC_CANONICAL_HOST]) +AC_LANG_SAVE +AC_LANG_C +acx_pthread_ok=no + +# We used to check for pthread.h first, but this fails if pthread.h +# requires special compiler flags (e.g. on True64 or Sequent). +# It gets checked for in the link test anyway. + +# First of all, check if the user has set any of the PTHREAD_LIBS, +# etcetera environment variables, and if threads linking works using +# them: +if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + save_LIBS="$LIBS" + LIBS="$PTHREAD_LIBS $LIBS" + AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS]) + AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes) + AC_MSG_RESULT($acx_pthread_ok) + if test x"$acx_pthread_ok" = xno; then + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" + fi + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" +fi + +# We must check for the threads library under a number of different +# names; the ordering is very important because some systems +# (e.g. DEC) have both -lpthread and -lpthreads, where one of the +# libraries is broken (non-POSIX). + +# Create a list of thread flags to try. Items starting with a "-" are +# C compiler flags, and other items are library names, except for "none" +# which indicates that we try without any flags at all, and "pthread-config" +# which is a program returning the flags for the Pth emulation library. + +acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" + +# The ordering *is* (sometimes) important. Some notes on the +# individual items follow: + +# pthreads: AIX (must check this before -lpthread) +# none: in case threads are in libc; should be tried before -Kthread and +# other compiler flags to prevent continual compiler warnings +# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) +# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) +# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) +# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) +# -pthreads: Solaris/gcc +# -mthreads: Mingw32/gcc, Lynx/gcc +# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it +# doesn't hurt to check since this sometimes defines pthreads too; +# also defines -D_REENTRANT) +# ... -mt is also the pthreads flag for HP/aCC +# pthread: Linux, etcetera +# --thread-safe: KAI C++ +# pthread-config: use pthread-config program (for GNU Pth library) + +case "${host_cpu}-${host_os}" in + *solaris*) + + # On Solaris (at least, for some versions), libc contains stubbed + # (non-functional) versions of the pthreads routines, so link-based + # tests will erroneously succeed. (We need to link with -pthreads/-mt/ + # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather + # a function called by this macro, so we could check for that, but + # who knows whether they'll stub that too in a future libc.) So, + # we'll just look for -pthreads and -lpthread first: + + acx_pthread_flags="-pthreads pthread -mt -pthread $acx_pthread_flags" + ;; +esac + +if test x"$acx_pthread_ok" = xno; then +for flag in $acx_pthread_flags; do + + case $flag in + none) + AC_MSG_CHECKING([whether pthreads work without any flags]) + ;; + + -*) + AC_MSG_CHECKING([whether pthreads work with $flag]) + PTHREAD_CFLAGS="$flag" + ;; + + pthread-config) + AC_CHECK_PROG(acx_pthread_config, pthread-config, yes, no) + if test x"$acx_pthread_config" = xno; then continue; fi + PTHREAD_CFLAGS="`pthread-config --cflags`" + PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" + ;; + + *) + AC_MSG_CHECKING([for the pthreads library -l$flag]) + PTHREAD_LIBS="-l$flag" + ;; + esac + + save_LIBS="$LIBS" + save_CFLAGS="$CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + + # Check for various functions. We must include pthread.h, + # since some functions may be macros. (On the Sequent, we + # need a special flag -Kthread to make this header compile.) + # We check for pthread_join because it is in -lpthread on IRIX + # while pthread_create is in libc. We check for pthread_attr_init + # due to DEC craziness with -lpthreads. We check for + # pthread_cleanup_push because it is one of the few pthread + # functions on Solaris that doesn't have a non-functional libc stub. + # We try pthread_create on general principles. + AC_TRY_LINK([#include ], + [pthread_t th; pthread_join(th, 0); + pthread_attr_init(0); pthread_cleanup_push(0, 0); + pthread_create(0,0,0,0); pthread_cleanup_pop(0); ], + [acx_pthread_ok=yes]) + + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + + AC_MSG_RESULT($acx_pthread_ok) + if test "x$acx_pthread_ok" = xyes; then + break; + fi + + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" +done +fi + +# Various other checks: +if test "x$acx_pthread_ok" = xyes; then + save_LIBS="$LIBS" + LIBS="$PTHREAD_LIBS $LIBS" + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + + # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. + AC_MSG_CHECKING([for joinable pthread attribute]) + attr_name=unknown + for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do + AC_TRY_LINK([#include ], [int attr=$attr; return attr;], + [attr_name=$attr; break]) + done + AC_MSG_RESULT($attr_name) + if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then + AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name, + [Define to necessary symbol if this constant + uses a non-standard name on your system.]) + fi + + AC_MSG_CHECKING([if more special flags are required for pthreads]) + flag=no + case "${host_cpu}-${host_os}" in + *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";; + *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; + esac + AC_MSG_RESULT(${flag}) + if test "x$flag" != xno; then + PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" + fi + + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + # More AIX lossage: must compile with xlc_r or cc_r + if test x"$GCC" != xyes; then + AC_CHECK_PROGS(PTHREAD_CC, xlc_r cc_r, ${CC}) + else + PTHREAD_CC=$CC + fi + + # The next part tries to detect GCC inconsistency with -shared on some + # architectures and systems. The problem is that in certain + # configurations, when -shared is specified, GCC "forgets" to + # internally use various flags which are still necessary. + + # + # Prepare the flags + # + save_CFLAGS="$CFLAGS" + save_LIBS="$LIBS" + save_CC="$CC" + + # Try with the flags determined by the earlier checks. + # + # -Wl,-z,defs forces link-time symbol resolution, so that the + # linking checks with -shared actually have any value + # + # FIXME: -fPIC is required for -shared on many architectures, + # so we specify it here, but the right way would probably be to + # properly detect whether it is actually required. + CFLAGS="-shared -fPIC -Wl,-z,defs $CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + CC="$PTHREAD_CC" + + # In order not to create several levels of indentation, we test + # the value of "$done" until we find the cure or run out of ideas. + done="no" + + # First, make sure the CFLAGS we added are actually accepted by our + # compiler. If not (and OS X's ld, for instance, does not accept -z), + # then we can't do this test. + if test x"$done" = xno; then + AC_MSG_CHECKING([whether to check for GCC pthread/shared inconsistencies]) + AC_TRY_LINK(,, , [done=yes]) + + if test "x$done" = xyes ; then + AC_MSG_RESULT([no]) + else + AC_MSG_RESULT([yes]) + fi + fi + + if test x"$done" = xno; then + AC_MSG_CHECKING([whether -pthread is sufficient with -shared]) + AC_TRY_LINK([#include ], + [pthread_t th; pthread_join(th, 0); + pthread_attr_init(0); pthread_cleanup_push(0, 0); + pthread_create(0,0,0,0); pthread_cleanup_pop(0); ], + [done=yes]) + + if test "x$done" = xyes; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + fi + + # + # Linux gcc on some architectures such as mips/mipsel forgets + # about -lpthread + # + if test x"$done" = xno; then + AC_MSG_CHECKING([whether -lpthread fixes that]) + LIBS="-lpthread $PTHREAD_LIBS $save_LIBS" + AC_TRY_LINK([#include ], + [pthread_t th; pthread_join(th, 0); + pthread_attr_init(0); pthread_cleanup_push(0, 0); + pthread_create(0,0,0,0); pthread_cleanup_pop(0); ], + [done=yes]) + + if test "x$done" = xyes; then + AC_MSG_RESULT([yes]) + PTHREAD_LIBS="-lpthread $PTHREAD_LIBS" + else + AC_MSG_RESULT([no]) + fi + fi + # + # FreeBSD 4.10 gcc forgets to use -lc_r instead of -lc + # + if test x"$done" = xno; then + AC_MSG_CHECKING([whether -lc_r fixes that]) + LIBS="-lc_r $PTHREAD_LIBS $save_LIBS" + AC_TRY_LINK([#include ], + [pthread_t th; pthread_join(th, 0); + pthread_attr_init(0); pthread_cleanup_push(0, 0); + pthread_create(0,0,0,0); pthread_cleanup_pop(0); ], + [done=yes]) + + if test "x$done" = xyes; then + AC_MSG_RESULT([yes]) + PTHREAD_LIBS="-lc_r $PTHREAD_LIBS" + else + AC_MSG_RESULT([no]) + fi + fi + if test x"$done" = xno; then + # OK, we have run out of ideas + AC_MSG_WARN([Impossible to determine how to use pthreads with shared libraries]) + + # so it's not safe to assume that we may use pthreads + acx_pthread_ok=no + fi + + CFLAGS="$save_CFLAGS" + LIBS="$save_LIBS" + CC="$save_CC" +else + PTHREAD_CC="$CC" +fi + +AC_SUBST(PTHREAD_LIBS) +AC_SUBST(PTHREAD_CFLAGS) +AC_SUBST(PTHREAD_CC) + +# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: +if test x"$acx_pthread_ok" = xyes; then + ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1]) + : +else + acx_pthread_ok=no + $2 +fi +AC_LANG_RESTORE +]) +m4trace:configure.ac:7: -1- m4_pattern_forbid([^_?A[CHUM]_]) +m4trace:configure.ac:7: -1- m4_pattern_forbid([_AC_]) +m4trace:configure.ac:7: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) +m4trace:configure.ac:7: -1- m4_pattern_allow([^AS_FLAGS$]) +m4trace:configure.ac:7: -1- m4_pattern_forbid([^_?m4_]) +m4trace:configure.ac:7: -1- m4_pattern_forbid([^dnl$]) +m4trace:configure.ac:7: -1- m4_pattern_forbid([^_?AS_]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^SHELL$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^PATH_SEPARATOR$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^exec_prefix$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^prefix$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^program_transform_name$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^bindir$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^sbindir$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^libexecdir$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^datarootdir$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^datadir$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^sysconfdir$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^sharedstatedir$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^localstatedir$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^runstatedir$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^includedir$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^oldincludedir$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^docdir$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^infodir$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^htmldir$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^dvidir$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^pdfdir$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^psdir$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^libdir$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^localedir$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^mandir$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^DEFS$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^ECHO_C$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^ECHO_N$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^ECHO_T$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^build_alias$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^host_alias$]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^target_alias$]) +m4trace:configure.ac:15: -1- AC_CONFIG_MACRO_DIR([m4]) +m4trace:configure.ac:24: -1- AM_INIT_AUTOMAKE([1.9 dist-bzip2 dist-zip foreign subdir-objects]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$]) +m4trace:configure.ac:24: -1- AM_SET_CURRENT_AUTOMAKE_VERSION +m4trace:configure.ac:24: -1- AM_AUTOMAKE_VERSION([1.16.1]) +m4trace:configure.ac:24: -1- _AM_AUTOCONF_VERSION([2.69]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^INSTALL_DATA$]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^am__isrc$]) +m4trace:configure.ac:24: -1- _AM_SUBST_NOTMAKE([am__isrc]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^CYGPATH_W$]) +m4trace:configure.ac:24: -1- _AM_SET_OPTIONS([1.9 dist-bzip2 dist-zip foreign subdir-objects]) +m4trace:configure.ac:24: -1- _AM_SET_OPTION([1.9]) +m4trace:configure.ac:24: -2- _AM_MANGLE_OPTION([1.9]) +m4trace:configure.ac:24: -1- _AM_SET_OPTION([dist-bzip2]) +m4trace:configure.ac:24: -2- _AM_MANGLE_OPTION([dist-bzip2]) +m4trace:configure.ac:24: -1- _AM_SET_OPTION([dist-zip]) +m4trace:configure.ac:24: -2- _AM_MANGLE_OPTION([dist-zip]) +m4trace:configure.ac:24: -1- _AM_SET_OPTION([foreign]) +m4trace:configure.ac:24: -2- _AM_MANGLE_OPTION([foreign]) +m4trace:configure.ac:24: -1- _AM_SET_OPTION([subdir-objects]) +m4trace:configure.ac:24: -2- _AM_MANGLE_OPTION([subdir-objects]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^PACKAGE$]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^VERSION$]) +m4trace:configure.ac:24: -1- _AM_IF_OPTION([no-define], [], [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])]) +m4trace:configure.ac:24: -2- _AM_MANGLE_OPTION([no-define]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^PACKAGE$]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^VERSION$]) +m4trace:configure.ac:24: -1- AM_SANITY_CHECK +m4trace:configure.ac:24: -1- AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +m4trace:configure.ac:24: -1- AM_MISSING_HAS_RUN +m4trace:configure.ac:24: -1- AM_AUX_DIR_EXPAND +m4trace:configure.ac:24: -1- m4_pattern_allow([^ACLOCAL$]) +m4trace:configure.ac:24: -1- AM_MISSING_PROG([AUTOCONF], [autoconf]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^AUTOCONF$]) +m4trace:configure.ac:24: -1- AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^AUTOMAKE$]) +m4trace:configure.ac:24: -1- AM_MISSING_PROG([AUTOHEADER], [autoheader]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^AUTOHEADER$]) +m4trace:configure.ac:24: -1- AM_MISSING_PROG([MAKEINFO], [makeinfo]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^MAKEINFO$]) +m4trace:configure.ac:24: -1- AM_PROG_INSTALL_SH +m4trace:configure.ac:24: -1- m4_pattern_allow([^install_sh$]) +m4trace:configure.ac:24: -1- AM_PROG_INSTALL_STRIP +m4trace:configure.ac:24: -1- m4_pattern_allow([^STRIP$]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^MKDIR_P$]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^mkdir_p$]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^AWK$]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^SET_MAKE$]) +m4trace:configure.ac:24: -1- AM_SET_LEADING_DOT +m4trace:configure.ac:24: -1- m4_pattern_allow([^am__leading_dot$]) +m4trace:configure.ac:24: -1- _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +m4trace:configure.ac:24: -2- _AM_MANGLE_OPTION([tar-ustar]) +m4trace:configure.ac:24: -1- _AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])]) +m4trace:configure.ac:24: -2- _AM_MANGLE_OPTION([tar-pax]) +m4trace:configure.ac:24: -1- _AM_PROG_TAR([v7]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^AMTAR$]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^am__tar$]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^am__untar$]) +m4trace:configure.ac:24: -1- _AM_IF_OPTION([no-dependencies], [], [AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl +]) +m4trace:configure.ac:24: -2- _AM_MANGLE_OPTION([no-dependencies]) +m4trace:configure.ac:24: -1- AM_SILENT_RULES +m4trace:configure.ac:24: -1- m4_pattern_allow([^AM_V$]) +m4trace:configure.ac:24: -1- AM_SUBST_NOTMAKE([AM_V]) +m4trace:configure.ac:24: -1- _AM_SUBST_NOTMAKE([AM_V]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^AM_DEFAULT_V$]) +m4trace:configure.ac:24: -1- AM_SUBST_NOTMAKE([AM_DEFAULT_V]) +m4trace:configure.ac:24: -1- _AM_SUBST_NOTMAKE([AM_DEFAULT_V]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^AM_DEFAULT_VERBOSITY$]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^AM_BACKSLASH$]) +m4trace:configure.ac:24: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^CFLAGS$]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^LDFLAGS$]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^ac_ct_CC$]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^EXEEXT$]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^OBJEXT$]) +m4trace:configure.ac:27: -1- _AM_PROG_CC_C_O +m4trace:configure.ac:27: -1- AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) +m4trace:configure.ac:27: -1- _AM_DEPENDENCIES([CC]) +m4trace:configure.ac:27: -1- AM_SET_DEPDIR +m4trace:configure.ac:27: -1- m4_pattern_allow([^DEPDIR$]) +m4trace:configure.ac:27: -1- AM_OUTPUT_DEPENDENCY_COMMANDS +m4trace:configure.ac:27: -1- AM_MAKE_INCLUDE +m4trace:configure.ac:27: -1- AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^am__include$]) +m4trace:configure.ac:27: -1- AM_DEP_TRACK +m4trace:configure.ac:27: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^AMDEP_TRUE$]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^AMDEP_FALSE$]) +m4trace:configure.ac:27: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE]) +m4trace:configure.ac:27: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^AMDEPBACKSLASH$]) +m4trace:configure.ac:27: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^am__nodep$]) +m4trace:configure.ac:27: -1- _AM_SUBST_NOTMAKE([am__nodep]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^CCDEPMODE$]) +m4trace:configure.ac:27: -1- AM_CONDITIONAL([am__fastdepCC], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^am__fastdepCC_TRUE$]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^am__fastdepCC_FALSE$]) +m4trace:configure.ac:27: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE]) +m4trace:configure.ac:27: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE]) +m4trace:configure.ac:28: -1- m4_pattern_allow([^CXX$]) +m4trace:configure.ac:28: -1- m4_pattern_allow([^CXXFLAGS$]) +m4trace:configure.ac:28: -1- m4_pattern_allow([^LDFLAGS$]) +m4trace:configure.ac:28: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:28: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:28: -1- m4_pattern_allow([^CXX$]) +m4trace:configure.ac:28: -1- m4_pattern_allow([^ac_ct_CXX$]) +m4trace:configure.ac:28: -1- _AM_DEPENDENCIES([CXX]) +m4trace:configure.ac:28: -1- m4_pattern_allow([^CXXDEPMODE$]) +m4trace:configure.ac:28: -1- AM_CONDITIONAL([am__fastdepCXX], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3]) +m4trace:configure.ac:28: -1- m4_pattern_allow([^am__fastdepCXX_TRUE$]) +m4trace:configure.ac:28: -1- m4_pattern_allow([^am__fastdepCXX_FALSE$]) +m4trace:configure.ac:28: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_TRUE]) +m4trace:configure.ac:28: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_FALSE]) +m4trace:configure.ac:30: -1- AC_PROG_LIBTOOL +m4trace:configure.ac:30: -1- _m4_warn([obsolete], [The macro `AC_PROG_LIBTOOL' is obsolete. +You should run autoupdate.], [m4/libtool.m4:99: AC_PROG_LIBTOOL is expanded from... +configure.ac:30: the top level]) +m4trace:configure.ac:30: -1- LT_INIT +m4trace:configure.ac:30: -1- m4_pattern_forbid([^_?LT_[A-Z_]+$]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$]) +m4trace:configure.ac:30: -1- LTOPTIONS_VERSION +m4trace:configure.ac:30: -1- LTSUGAR_VERSION +m4trace:configure.ac:30: -1- LTVERSION_VERSION +m4trace:configure.ac:30: -1- LTOBSOLETE_VERSION +m4trace:configure.ac:30: -1- _LT_PROG_LTMAIN +m4trace:configure.ac:30: -1- m4_pattern_allow([^LIBTOOL$]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^build$]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^build_cpu$]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^build_vendor$]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^build_os$]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^host$]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^host_cpu$]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^host_vendor$]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^host_os$]) +m4trace:configure.ac:30: -1- _LT_PREPARE_SED_QUOTE_VARS +m4trace:configure.ac:30: -1- _LT_PROG_ECHO_BACKSLASH +m4trace:configure.ac:30: -1- LT_PATH_LD +m4trace:configure.ac:30: -1- m4_pattern_allow([^SED$]) +m4trace:configure.ac:30: -1- AC_PROG_EGREP +m4trace:configure.ac:30: -1- m4_pattern_allow([^GREP$]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^EGREP$]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^FGREP$]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^GREP$]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^LD$]) +m4trace:configure.ac:30: -1- LT_PATH_NM +m4trace:configure.ac:30: -1- m4_pattern_allow([^DUMPBIN$]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^ac_ct_DUMPBIN$]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^DUMPBIN$]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^NM$]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^LN_S$]) +m4trace:configure.ac:30: -1- LT_CMD_MAX_LEN +m4trace:configure.ac:30: -1- m4_pattern_allow([^OBJDUMP$]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^OBJDUMP$]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^DLLTOOL$]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^DLLTOOL$]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^AR$]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^ac_ct_AR$]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^STRIP$]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^RANLIB$]) +m4trace:configure.ac:30: -1- _LT_WITH_SYSROOT +m4trace:configure.ac:30: -1- m4_pattern_allow([LT_OBJDIR]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^LT_OBJDIR$]) +m4trace:configure.ac:30: -1- _LT_CC_BASENAME([$compiler]) +m4trace:configure.ac:30: -1- _LT_PATH_TOOL_PREFIX([${ac_tool_prefix}file], [/usr/bin$PATH_SEPARATOR$PATH]) +m4trace:configure.ac:30: -1- _LT_PATH_TOOL_PREFIX([file], [/usr/bin$PATH_SEPARATOR$PATH]) +m4trace:configure.ac:30: -1- LT_SUPPORTED_TAG([CC]) +m4trace:configure.ac:30: -1- _LT_COMPILER_BOILERPLATE +m4trace:configure.ac:30: -1- _LT_LINKER_BOILERPLATE +m4trace:configure.ac:30: -1- _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], [lt_cv_prog_compiler_rtti_exceptions], [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, )="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, ) -fno-rtti -fno-exceptions"]) +m4trace:configure.ac:30: -1- _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, ) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, )], [$_LT_TAGVAR(lt_prog_compiler_pic, )@&t@m4_if([],[],[ -DPIC],[m4_if([],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, ) in + "" | " "*) ;; + *) _LT_TAGVAR(lt_prog_compiler_pic, )=" $_LT_TAGVAR(lt_prog_compiler_pic, )" ;; + esac], [_LT_TAGVAR(lt_prog_compiler_pic, )= + _LT_TAGVAR(lt_prog_compiler_can_build_shared, )=no]) +m4trace:configure.ac:30: -1- _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], [lt_cv_prog_compiler_static_works], [$lt_tmp_static_flag], [], [_LT_TAGVAR(lt_prog_compiler_static, )=]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^MANIFEST_TOOL$]) +m4trace:configure.ac:30: -1- _LT_DLL_DEF_P([$export_symbols]) +m4trace:configure.ac:30: -1- _LT_DLL_DEF_P([$export_symbols]) +m4trace:configure.ac:30: -1- _LT_REQUIRED_DARWIN_CHECKS +m4trace:configure.ac:30: -1- m4_pattern_allow([^DSYMUTIL$]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^NMEDIT$]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^LIPO$]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^OTOOL$]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^OTOOL64$]) +m4trace:configure.ac:30: -1- _LT_LINKER_OPTION([if $CC understands -b], [lt_cv_prog_compiler__b], [-b], [_LT_TAGVAR(archive_cmds, )='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, )='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags']) +m4trace:configure.ac:30: -1- m4_pattern_allow([^LT_SYS_LIBRARY_PATH$]) +m4trace:configure.ac:30: -1- LT_SYS_DLOPEN_SELF +m4trace:configure.ac:30: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^STDC_HEADERS$]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^HAVE_DLFCN_H$]) +m4trace:configure.ac:30: -1- LT_LANG([CXX]) +m4trace:configure.ac:30: -1- LT_SUPPORTED_TAG([CXX]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^CXXCPP$]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^CXXCPP$]) +m4trace:configure.ac:30: -1- _LT_COMPILER_BOILERPLATE +m4trace:configure.ac:30: -1- _LT_LINKER_BOILERPLATE +m4trace:configure.ac:30: -1- _LT_CC_BASENAME([$compiler]) +m4trace:configure.ac:30: -1- LT_PATH_LD +m4trace:configure.ac:30: -1- m4_pattern_allow([^LD$]) +m4trace:configure.ac:30: -1- _LT_DLL_DEF_P([$export_symbols]) +m4trace:configure.ac:30: -1- _LT_DLL_DEF_P([$export_symbols]) +m4trace:configure.ac:30: -1- _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, CXX) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, CXX)], [$_LT_TAGVAR(lt_prog_compiler_pic, CXX)@&t@m4_if([CXX],[],[ -DPIC],[m4_if([CXX],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, CXX) in + "" | " "*) ;; + *) _LT_TAGVAR(lt_prog_compiler_pic, CXX)=" $_LT_TAGVAR(lt_prog_compiler_pic, CXX)" ;; + esac], [_LT_TAGVAR(lt_prog_compiler_pic, CXX)= + _LT_TAGVAR(lt_prog_compiler_can_build_shared, CXX)=no]) +m4trace:configure.ac:30: -1- _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], [lt_cv_prog_compiler_static_works_CXX], [$lt_tmp_static_flag], [], [_LT_TAGVAR(lt_prog_compiler_static, CXX)=]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^LT_SYS_LIBRARY_PATH$]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^PYTHON$]) +m4trace:configure.ac:39: -1- AM_PYTHON_CHECK_VERSION([$PYTHON], [2.3], [:], [PYTHON=":"]) +m4trace:configure.ac:39: -1- AM_RUN_LOG([$PYTHON -c "$prog"]) +m4trace:configure.ac:41: -1- AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != ":"]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^HAVE_PYTHON_TRUE$]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^HAVE_PYTHON_FALSE$]) +m4trace:configure.ac:41: -1- _AM_SUBST_NOTMAKE([HAVE_PYTHON_TRUE]) +m4trace:configure.ac:41: -1- _AM_SUBST_NOTMAKE([HAVE_PYTHON_FALSE]) +m4trace:configure.ac:51: -1- ACX_PTHREAD([], [AS_IF([test "x$with_pthreads" != "xcheck"], + [AC_MSG_FAILURE( + [--with-pthreads was specified, but unable to be used])])]) +m4trace:configure.ac:51: -1- _m4_warn([obsolete], [The macro `AC_LANG_SAVE' is obsolete. +You should run autoupdate.], [../../lib/autoconf/lang.m4:125: AC_LANG_SAVE is expanded from... +m4/acx_pthread.m4:63: ACX_PTHREAD is expanded from... +../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... +configure.ac:51: the top level]) +m4trace:configure.ac:51: -1- _m4_warn([obsolete], [The macro `AC_LANG_C' is obsolete. +You should run autoupdate.], [../../lib/autoconf/c.m4:72: AC_LANG_C is expanded from... +m4/acx_pthread.m4:63: ACX_PTHREAD is expanded from... +../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... +configure.ac:51: the top level]) +m4trace:configure.ac:51: -1- m4_pattern_allow([^acx_pthread_config$]) +m4trace:configure.ac:51: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [../../lib/autoconf/general.m4:2698: AC_TRY_LINK is expanded from... +m4/acx_pthread.m4:63: ACX_PTHREAD is expanded from... +../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... +configure.ac:51: the top level]) +m4trace:configure.ac:51: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [../../lib/autoconf/general.m4:2698: AC_TRY_LINK is expanded from... +m4/acx_pthread.m4:63: ACX_PTHREAD is expanded from... +../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... +configure.ac:51: the top level]) +m4trace:configure.ac:51: -1- m4_pattern_allow([^PTHREAD_CREATE_JOINABLE$]) +m4trace:configure.ac:51: -1- m4_pattern_allow([^PTHREAD_CC$]) +m4trace:configure.ac:51: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [../../lib/autoconf/general.m4:2698: AC_TRY_LINK is expanded from... +m4/acx_pthread.m4:63: ACX_PTHREAD is expanded from... +../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... +configure.ac:51: the top level]) +m4trace:configure.ac:51: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [../../lib/autoconf/general.m4:2698: AC_TRY_LINK is expanded from... +m4/acx_pthread.m4:63: ACX_PTHREAD is expanded from... +../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... +configure.ac:51: the top level]) +m4trace:configure.ac:51: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [../../lib/autoconf/general.m4:2698: AC_TRY_LINK is expanded from... +m4/acx_pthread.m4:63: ACX_PTHREAD is expanded from... +../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... +configure.ac:51: the top level]) +m4trace:configure.ac:51: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [../../lib/autoconf/general.m4:2698: AC_TRY_LINK is expanded from... +m4/acx_pthread.m4:63: ACX_PTHREAD is expanded from... +../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... +configure.ac:51: the top level]) +m4trace:configure.ac:51: -1- m4_pattern_allow([^PTHREAD_LIBS$]) +m4trace:configure.ac:51: -1- m4_pattern_allow([^PTHREAD_CFLAGS$]) +m4trace:configure.ac:51: -1- m4_pattern_allow([^PTHREAD_CC$]) +m4trace:configure.ac:51: -2- m4_pattern_allow([^HAVE_PTHREAD$]) +m4trace:configure.ac:51: -1- _m4_warn([obsolete], [The macro `AC_LANG_RESTORE' is obsolete. +You should run autoupdate.], [../../lib/autoconf/lang.m4:134: AC_LANG_RESTORE is expanded from... +m4/acx_pthread.m4:63: ACX_PTHREAD is expanded from... +../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... +configure.ac:51: the top level]) +m4trace:configure.ac:58: -1- AM_CONDITIONAL([HAVE_PTHREADS], [test "x$have_pthreads" == "xyes"]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_PTHREADS_TRUE$]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_PTHREADS_FALSE$]) +m4trace:configure.ac:58: -1- _AM_SUBST_NOTMAKE([HAVE_PTHREADS_TRUE]) +m4trace:configure.ac:58: -1- _AM_SUBST_NOTMAKE([HAVE_PTHREADS_FALSE]) +m4trace:configure.ac:59: -1- m4_pattern_allow([^PTHREAD_CFLAGS$]) +m4trace:configure.ac:60: -1- m4_pattern_allow([^PTHREAD_LIBS$]) +m4trace:configure.ac:68: -1- m4_pattern_allow([^LIB@&t@OBJS$]) +m4trace:configure.ac:68: -1- m4_pattern_allow([^LTLIBOBJS$]) +m4trace:configure.ac:68: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"]) +m4trace:configure.ac:68: -1- m4_pattern_allow([^am__EXEEXT_TRUE$]) +m4trace:configure.ac:68: -1- m4_pattern_allow([^am__EXEEXT_FALSE$]) +m4trace:configure.ac:68: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE]) +m4trace:configure.ac:68: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE]) +m4trace:configure.ac:68: -1- _AC_AM_CONFIG_HEADER_HOOK(["$ac_file"]) +m4trace:configure.ac:68: -1- _AM_OUTPUT_DEPENDENCY_COMMANDS +m4trace:configure.ac:68: -1- AM_RUN_LOG([cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles]) +m4trace:configure.ac:68: -1- _LT_PROG_LTMAIN diff --git a/thirdparty/protobuf-2.6.1/gtest/autom4te.cache/traces.1 b/thirdparty/protobuf-2.6.1/gtest/autom4te.cache/traces.1 new file mode 100644 index 00000000..935de583 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/autom4te.cache/traces.1 @@ -0,0 +1,670 @@ +m4trace:aclocal.m4:679: -1- AC_SUBST([am__quote]) +m4trace:aclocal.m4:679: -1- AC_SUBST_TRACE([am__quote]) +m4trace:aclocal.m4:679: -1- m4_pattern_allow([^am__quote$]) +m4trace:aclocal.m4:1374: -1- m4_include([m4/libtool.m4]) +m4trace:aclocal.m4:1375: -1- m4_include([m4/ltoptions.m4]) +m4trace:aclocal.m4:1376: -1- m4_include([m4/ltsugar.m4]) +m4trace:aclocal.m4:1377: -1- m4_include([m4/ltversion.m4]) +m4trace:aclocal.m4:1378: -1- m4_include([m4/lt~obsolete.m4]) +m4trace:configure.ac:1: -1- m4_include([m4/acx_pthread.m4]) +m4trace:configure.ac:7: -1- AC_INIT([Google C++ Testing Framework], [1.6.0], [googletestframework@googlegroups.com], [gtest]) +m4trace:configure.ac:7: -1- m4_pattern_forbid([^_?A[CHUM]_]) +m4trace:configure.ac:7: -1- m4_pattern_forbid([_AC_]) +m4trace:configure.ac:7: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) +m4trace:configure.ac:7: -1- m4_pattern_allow([^AS_FLAGS$]) +m4trace:configure.ac:7: -1- m4_pattern_forbid([^_?m4_]) +m4trace:configure.ac:7: -1- m4_pattern_forbid([^dnl$]) +m4trace:configure.ac:7: -1- m4_pattern_forbid([^_?AS_]) +m4trace:configure.ac:7: -1- AC_SUBST([SHELL]) +m4trace:configure.ac:7: -1- AC_SUBST_TRACE([SHELL]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^SHELL$]) +m4trace:configure.ac:7: -1- AC_SUBST([PATH_SEPARATOR]) +m4trace:configure.ac:7: -1- AC_SUBST_TRACE([PATH_SEPARATOR]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^PATH_SEPARATOR$]) +m4trace:configure.ac:7: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])]) +m4trace:configure.ac:7: -1- AC_SUBST_TRACE([PACKAGE_NAME]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:7: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])]) +m4trace:configure.ac:7: -1- AC_SUBST_TRACE([PACKAGE_TARNAME]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:7: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])]) +m4trace:configure.ac:7: -1- AC_SUBST_TRACE([PACKAGE_VERSION]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:7: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])]) +m4trace:configure.ac:7: -1- AC_SUBST_TRACE([PACKAGE_STRING]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:7: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])]) +m4trace:configure.ac:7: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:7: -1- AC_SUBST([PACKAGE_URL], [m4_ifdef([AC_PACKAGE_URL], ['AC_PACKAGE_URL'])]) +m4trace:configure.ac:7: -1- AC_SUBST_TRACE([PACKAGE_URL]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:7: -1- AC_SUBST([exec_prefix], [NONE]) +m4trace:configure.ac:7: -1- AC_SUBST_TRACE([exec_prefix]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^exec_prefix$]) +m4trace:configure.ac:7: -1- AC_SUBST([prefix], [NONE]) +m4trace:configure.ac:7: -1- AC_SUBST_TRACE([prefix]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^prefix$]) +m4trace:configure.ac:7: -1- AC_SUBST([program_transform_name], [s,x,x,]) +m4trace:configure.ac:7: -1- AC_SUBST_TRACE([program_transform_name]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^program_transform_name$]) +m4trace:configure.ac:7: -1- AC_SUBST([bindir], ['${exec_prefix}/bin']) +m4trace:configure.ac:7: -1- AC_SUBST_TRACE([bindir]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^bindir$]) +m4trace:configure.ac:7: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin']) +m4trace:configure.ac:7: -1- AC_SUBST_TRACE([sbindir]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^sbindir$]) +m4trace:configure.ac:7: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec']) +m4trace:configure.ac:7: -1- AC_SUBST_TRACE([libexecdir]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^libexecdir$]) +m4trace:configure.ac:7: -1- AC_SUBST([datarootdir], ['${prefix}/share']) +m4trace:configure.ac:7: -1- AC_SUBST_TRACE([datarootdir]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^datarootdir$]) +m4trace:configure.ac:7: -1- AC_SUBST([datadir], ['${datarootdir}']) +m4trace:configure.ac:7: -1- AC_SUBST_TRACE([datadir]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^datadir$]) +m4trace:configure.ac:7: -1- AC_SUBST([sysconfdir], ['${prefix}/etc']) +m4trace:configure.ac:7: -1- AC_SUBST_TRACE([sysconfdir]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^sysconfdir$]) +m4trace:configure.ac:7: -1- AC_SUBST([sharedstatedir], ['${prefix}/com']) +m4trace:configure.ac:7: -1- AC_SUBST_TRACE([sharedstatedir]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^sharedstatedir$]) +m4trace:configure.ac:7: -1- AC_SUBST([localstatedir], ['${prefix}/var']) +m4trace:configure.ac:7: -1- AC_SUBST_TRACE([localstatedir]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^localstatedir$]) +m4trace:configure.ac:7: -1- AC_SUBST([runstatedir], ['${localstatedir}/run']) +m4trace:configure.ac:7: -1- AC_SUBST_TRACE([runstatedir]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^runstatedir$]) +m4trace:configure.ac:7: -1- AC_SUBST([includedir], ['${prefix}/include']) +m4trace:configure.ac:7: -1- AC_SUBST_TRACE([includedir]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^includedir$]) +m4trace:configure.ac:7: -1- AC_SUBST([oldincludedir], ['/usr/include']) +m4trace:configure.ac:7: -1- AC_SUBST_TRACE([oldincludedir]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^oldincludedir$]) +m4trace:configure.ac:7: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME], + ['${datarootdir}/doc/${PACKAGE_TARNAME}'], + ['${datarootdir}/doc/${PACKAGE}'])]) +m4trace:configure.ac:7: -1- AC_SUBST_TRACE([docdir]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^docdir$]) +m4trace:configure.ac:7: -1- AC_SUBST([infodir], ['${datarootdir}/info']) +m4trace:configure.ac:7: -1- AC_SUBST_TRACE([infodir]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^infodir$]) +m4trace:configure.ac:7: -1- AC_SUBST([htmldir], ['${docdir}']) +m4trace:configure.ac:7: -1- AC_SUBST_TRACE([htmldir]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^htmldir$]) +m4trace:configure.ac:7: -1- AC_SUBST([dvidir], ['${docdir}']) +m4trace:configure.ac:7: -1- AC_SUBST_TRACE([dvidir]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^dvidir$]) +m4trace:configure.ac:7: -1- AC_SUBST([pdfdir], ['${docdir}']) +m4trace:configure.ac:7: -1- AC_SUBST_TRACE([pdfdir]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^pdfdir$]) +m4trace:configure.ac:7: -1- AC_SUBST([psdir], ['${docdir}']) +m4trace:configure.ac:7: -1- AC_SUBST_TRACE([psdir]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^psdir$]) +m4trace:configure.ac:7: -1- AC_SUBST([libdir], ['${exec_prefix}/lib']) +m4trace:configure.ac:7: -1- AC_SUBST_TRACE([libdir]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^libdir$]) +m4trace:configure.ac:7: -1- AC_SUBST([localedir], ['${datarootdir}/locale']) +m4trace:configure.ac:7: -1- AC_SUBST_TRACE([localedir]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^localedir$]) +m4trace:configure.ac:7: -1- AC_SUBST([mandir], ['${datarootdir}/man']) +m4trace:configure.ac:7: -1- AC_SUBST_TRACE([mandir]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^mandir$]) +m4trace:configure.ac:7: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:7: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */ +@%:@undef PACKAGE_NAME]) +m4trace:configure.ac:7: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:7: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */ +@%:@undef PACKAGE_TARNAME]) +m4trace:configure.ac:7: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:7: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */ +@%:@undef PACKAGE_VERSION]) +m4trace:configure.ac:7: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:7: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */ +@%:@undef PACKAGE_STRING]) +m4trace:configure.ac:7: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:7: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */ +@%:@undef PACKAGE_BUGREPORT]) +m4trace:configure.ac:7: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_URL]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:7: -1- AH_OUTPUT([PACKAGE_URL], [/* Define to the home page for this package. */ +@%:@undef PACKAGE_URL]) +m4trace:configure.ac:7: -1- AC_SUBST([DEFS]) +m4trace:configure.ac:7: -1- AC_SUBST_TRACE([DEFS]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^DEFS$]) +m4trace:configure.ac:7: -1- AC_SUBST([ECHO_C]) +m4trace:configure.ac:7: -1- AC_SUBST_TRACE([ECHO_C]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^ECHO_C$]) +m4trace:configure.ac:7: -1- AC_SUBST([ECHO_N]) +m4trace:configure.ac:7: -1- AC_SUBST_TRACE([ECHO_N]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^ECHO_N$]) +m4trace:configure.ac:7: -1- AC_SUBST([ECHO_T]) +m4trace:configure.ac:7: -1- AC_SUBST_TRACE([ECHO_T]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^ECHO_T$]) +m4trace:configure.ac:7: -1- AC_SUBST([LIBS]) +m4trace:configure.ac:7: -1- AC_SUBST_TRACE([LIBS]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:7: -1- AC_SUBST([build_alias]) +m4trace:configure.ac:7: -1- AC_SUBST_TRACE([build_alias]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^build_alias$]) +m4trace:configure.ac:7: -1- AC_SUBST([host_alias]) +m4trace:configure.ac:7: -1- AC_SUBST_TRACE([host_alias]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^host_alias$]) +m4trace:configure.ac:7: -1- AC_SUBST([target_alias]) +m4trace:configure.ac:7: -1- AC_SUBST_TRACE([target_alias]) +m4trace:configure.ac:7: -1- m4_pattern_allow([^target_alias$]) +m4trace:configure.ac:16: -1- AC_CONFIG_AUX_DIR([build-aux]) +m4trace:configure.ac:17: -1- AC_CONFIG_HEADERS([build-aux/config.h]) +m4trace:configure.ac:18: -1- AC_CONFIG_FILES([Makefile]) +m4trace:configure.ac:19: -1- AC_CONFIG_FILES([scripts/gtest-config], [chmod +x scripts/gtest-config]) +m4trace:configure.ac:24: -1- AM_INIT_AUTOMAKE([1.9 dist-bzip2 dist-zip foreign subdir-objects]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$]) +m4trace:configure.ac:24: -1- AM_AUTOMAKE_VERSION([1.16.1]) +m4trace:configure.ac:24: -1- AC_REQUIRE_AUX_FILE([install-sh]) +m4trace:configure.ac:24: -1- AC_SUBST([INSTALL_PROGRAM]) +m4trace:configure.ac:24: -1- AC_SUBST_TRACE([INSTALL_PROGRAM]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) +m4trace:configure.ac:24: -1- AC_SUBST([INSTALL_SCRIPT]) +m4trace:configure.ac:24: -1- AC_SUBST_TRACE([INSTALL_SCRIPT]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) +m4trace:configure.ac:24: -1- AC_SUBST([INSTALL_DATA]) +m4trace:configure.ac:24: -1- AC_SUBST_TRACE([INSTALL_DATA]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^INSTALL_DATA$]) +m4trace:configure.ac:24: -1- AC_SUBST([am__isrc], [' -I$(srcdir)']) +m4trace:configure.ac:24: -1- AC_SUBST_TRACE([am__isrc]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^am__isrc$]) +m4trace:configure.ac:24: -1- _AM_SUBST_NOTMAKE([am__isrc]) +m4trace:configure.ac:24: -1- AC_SUBST([CYGPATH_W]) +m4trace:configure.ac:24: -1- AC_SUBST_TRACE([CYGPATH_W]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^CYGPATH_W$]) +m4trace:configure.ac:24: -1- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME']) +m4trace:configure.ac:24: -1- AC_SUBST_TRACE([PACKAGE]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^PACKAGE$]) +m4trace:configure.ac:24: -1- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION']) +m4trace:configure.ac:24: -1- AC_SUBST_TRACE([VERSION]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^VERSION$]) +m4trace:configure.ac:24: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^PACKAGE$]) +m4trace:configure.ac:24: -1- AH_OUTPUT([PACKAGE], [/* Name of package */ +@%:@undef PACKAGE]) +m4trace:configure.ac:24: -1- AC_DEFINE_TRACE_LITERAL([VERSION]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^VERSION$]) +m4trace:configure.ac:24: -1- AH_OUTPUT([VERSION], [/* Version number of package */ +@%:@undef VERSION]) +m4trace:configure.ac:24: -1- AC_REQUIRE_AUX_FILE([missing]) +m4trace:configure.ac:24: -1- AC_SUBST([ACLOCAL]) +m4trace:configure.ac:24: -1- AC_SUBST_TRACE([ACLOCAL]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^ACLOCAL$]) +m4trace:configure.ac:24: -1- AC_SUBST([AUTOCONF]) +m4trace:configure.ac:24: -1- AC_SUBST_TRACE([AUTOCONF]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^AUTOCONF$]) +m4trace:configure.ac:24: -1- AC_SUBST([AUTOMAKE]) +m4trace:configure.ac:24: -1- AC_SUBST_TRACE([AUTOMAKE]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^AUTOMAKE$]) +m4trace:configure.ac:24: -1- AC_SUBST([AUTOHEADER]) +m4trace:configure.ac:24: -1- AC_SUBST_TRACE([AUTOHEADER]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^AUTOHEADER$]) +m4trace:configure.ac:24: -1- AC_SUBST([MAKEINFO]) +m4trace:configure.ac:24: -1- AC_SUBST_TRACE([MAKEINFO]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^MAKEINFO$]) +m4trace:configure.ac:24: -1- AC_SUBST([install_sh]) +m4trace:configure.ac:24: -1- AC_SUBST_TRACE([install_sh]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^install_sh$]) +m4trace:configure.ac:24: -1- AC_SUBST([STRIP]) +m4trace:configure.ac:24: -1- AC_SUBST_TRACE([STRIP]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^STRIP$]) +m4trace:configure.ac:24: -1- AC_SUBST([INSTALL_STRIP_PROGRAM]) +m4trace:configure.ac:24: -1- AC_SUBST_TRACE([INSTALL_STRIP_PROGRAM]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$]) +m4trace:configure.ac:24: -1- AC_REQUIRE_AUX_FILE([install-sh]) +m4trace:configure.ac:24: -1- AC_SUBST([MKDIR_P]) +m4trace:configure.ac:24: -1- AC_SUBST_TRACE([MKDIR_P]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^MKDIR_P$]) +m4trace:configure.ac:24: -1- AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +m4trace:configure.ac:24: -1- AC_SUBST_TRACE([mkdir_p]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^mkdir_p$]) +m4trace:configure.ac:24: -1- AC_SUBST([AWK]) +m4trace:configure.ac:24: -1- AC_SUBST_TRACE([AWK]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^AWK$]) +m4trace:configure.ac:24: -1- AC_SUBST([SET_MAKE]) +m4trace:configure.ac:24: -1- AC_SUBST_TRACE([SET_MAKE]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^SET_MAKE$]) +m4trace:configure.ac:24: -1- AC_SUBST([am__leading_dot]) +m4trace:configure.ac:24: -1- AC_SUBST_TRACE([am__leading_dot]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^am__leading_dot$]) +m4trace:configure.ac:24: -1- AC_SUBST([AMTAR], ['$${TAR-tar}']) +m4trace:configure.ac:24: -1- AC_SUBST_TRACE([AMTAR]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^AMTAR$]) +m4trace:configure.ac:24: -1- AC_SUBST([am__tar]) +m4trace:configure.ac:24: -1- AC_SUBST_TRACE([am__tar]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^am__tar$]) +m4trace:configure.ac:24: -1- AC_SUBST([am__untar]) +m4trace:configure.ac:24: -1- AC_SUBST_TRACE([am__untar]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^am__untar$]) +m4trace:configure.ac:24: -1- AM_SILENT_RULES +m4trace:configure.ac:24: -1- AC_SUBST([AM_V]) +m4trace:configure.ac:24: -1- AC_SUBST_TRACE([AM_V]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^AM_V$]) +m4trace:configure.ac:24: -1- _AM_SUBST_NOTMAKE([AM_V]) +m4trace:configure.ac:24: -1- AC_SUBST([AM_DEFAULT_V]) +m4trace:configure.ac:24: -1- AC_SUBST_TRACE([AM_DEFAULT_V]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^AM_DEFAULT_V$]) +m4trace:configure.ac:24: -1- _AM_SUBST_NOTMAKE([AM_DEFAULT_V]) +m4trace:configure.ac:24: -1- AC_SUBST([AM_DEFAULT_VERBOSITY]) +m4trace:configure.ac:24: -1- AC_SUBST_TRACE([AM_DEFAULT_VERBOSITY]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^AM_DEFAULT_VERBOSITY$]) +m4trace:configure.ac:24: -1- AC_SUBST([AM_BACKSLASH]) +m4trace:configure.ac:24: -1- AC_SUBST_TRACE([AM_BACKSLASH]) +m4trace:configure.ac:24: -1- m4_pattern_allow([^AM_BACKSLASH$]) +m4trace:configure.ac:24: -1- _AM_SUBST_NOTMAKE([AM_BACKSLASH]) +m4trace:configure.ac:27: -1- AC_SUBST([CC]) +m4trace:configure.ac:27: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:27: -1- AC_SUBST([CFLAGS]) +m4trace:configure.ac:27: -1- AC_SUBST_TRACE([CFLAGS]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^CFLAGS$]) +m4trace:configure.ac:27: -1- AC_SUBST([LDFLAGS]) +m4trace:configure.ac:27: -1- AC_SUBST_TRACE([LDFLAGS]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^LDFLAGS$]) +m4trace:configure.ac:27: -1- AC_SUBST([LIBS]) +m4trace:configure.ac:27: -1- AC_SUBST_TRACE([LIBS]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:27: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:27: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:27: -1- AC_SUBST([CC]) +m4trace:configure.ac:27: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:27: -1- AC_SUBST([CC]) +m4trace:configure.ac:27: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:27: -1- AC_SUBST([CC]) +m4trace:configure.ac:27: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:27: -1- AC_SUBST([CC]) +m4trace:configure.ac:27: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:27: -1- AC_SUBST([ac_ct_CC]) +m4trace:configure.ac:27: -1- AC_SUBST_TRACE([ac_ct_CC]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^ac_ct_CC$]) +m4trace:configure.ac:27: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext]) +m4trace:configure.ac:27: -1- AC_SUBST_TRACE([EXEEXT]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^EXEEXT$]) +m4trace:configure.ac:27: -1- AC_SUBST([OBJEXT], [$ac_cv_objext]) +m4trace:configure.ac:27: -1- AC_SUBST_TRACE([OBJEXT]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^OBJEXT$]) +m4trace:configure.ac:27: -1- AC_REQUIRE_AUX_FILE([compile]) +m4trace:configure.ac:27: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"]) +m4trace:configure.ac:27: -1- AC_SUBST_TRACE([DEPDIR]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^DEPDIR$]) +m4trace:configure.ac:27: -1- AC_SUBST([am__include]) +m4trace:configure.ac:27: -1- AC_SUBST_TRACE([am__include]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^am__include$]) +m4trace:configure.ac:27: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +m4trace:configure.ac:27: -1- AC_SUBST([AMDEP_TRUE]) +m4trace:configure.ac:27: -1- AC_SUBST_TRACE([AMDEP_TRUE]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^AMDEP_TRUE$]) +m4trace:configure.ac:27: -1- AC_SUBST([AMDEP_FALSE]) +m4trace:configure.ac:27: -1- AC_SUBST_TRACE([AMDEP_FALSE]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^AMDEP_FALSE$]) +m4trace:configure.ac:27: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE]) +m4trace:configure.ac:27: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE]) +m4trace:configure.ac:27: -1- AC_SUBST([AMDEPBACKSLASH]) +m4trace:configure.ac:27: -1- AC_SUBST_TRACE([AMDEPBACKSLASH]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^AMDEPBACKSLASH$]) +m4trace:configure.ac:27: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH]) +m4trace:configure.ac:27: -1- AC_SUBST([am__nodep]) +m4trace:configure.ac:27: -1- AC_SUBST_TRACE([am__nodep]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^am__nodep$]) +m4trace:configure.ac:27: -1- _AM_SUBST_NOTMAKE([am__nodep]) +m4trace:configure.ac:27: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type]) +m4trace:configure.ac:27: -1- AC_SUBST_TRACE([CCDEPMODE]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^CCDEPMODE$]) +m4trace:configure.ac:27: -1- AM_CONDITIONAL([am__fastdepCC], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) +m4trace:configure.ac:27: -1- AC_SUBST([am__fastdepCC_TRUE]) +m4trace:configure.ac:27: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^am__fastdepCC_TRUE$]) +m4trace:configure.ac:27: -1- AC_SUBST([am__fastdepCC_FALSE]) +m4trace:configure.ac:27: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE]) +m4trace:configure.ac:27: -1- m4_pattern_allow([^am__fastdepCC_FALSE$]) +m4trace:configure.ac:27: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE]) +m4trace:configure.ac:27: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE]) +m4trace:configure.ac:28: -1- AC_SUBST([CXX]) +m4trace:configure.ac:28: -1- AC_SUBST_TRACE([CXX]) +m4trace:configure.ac:28: -1- m4_pattern_allow([^CXX$]) +m4trace:configure.ac:28: -1- AC_SUBST([CXXFLAGS]) +m4trace:configure.ac:28: -1- AC_SUBST_TRACE([CXXFLAGS]) +m4trace:configure.ac:28: -1- m4_pattern_allow([^CXXFLAGS$]) +m4trace:configure.ac:28: -1- AC_SUBST([LDFLAGS]) +m4trace:configure.ac:28: -1- AC_SUBST_TRACE([LDFLAGS]) +m4trace:configure.ac:28: -1- m4_pattern_allow([^LDFLAGS$]) +m4trace:configure.ac:28: -1- AC_SUBST([LIBS]) +m4trace:configure.ac:28: -1- AC_SUBST_TRACE([LIBS]) +m4trace:configure.ac:28: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:28: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:28: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:28: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:28: -1- AC_SUBST([CXX]) +m4trace:configure.ac:28: -1- AC_SUBST_TRACE([CXX]) +m4trace:configure.ac:28: -1- m4_pattern_allow([^CXX$]) +m4trace:configure.ac:28: -1- AC_SUBST([ac_ct_CXX]) +m4trace:configure.ac:28: -1- AC_SUBST_TRACE([ac_ct_CXX]) +m4trace:configure.ac:28: -1- m4_pattern_allow([^ac_ct_CXX$]) +m4trace:configure.ac:28: -1- AC_SUBST([CXXDEPMODE], [depmode=$am_cv_CXX_dependencies_compiler_type]) +m4trace:configure.ac:28: -1- AC_SUBST_TRACE([CXXDEPMODE]) +m4trace:configure.ac:28: -1- m4_pattern_allow([^CXXDEPMODE$]) +m4trace:configure.ac:28: -1- AM_CONDITIONAL([am__fastdepCXX], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3]) +m4trace:configure.ac:28: -1- AC_SUBST([am__fastdepCXX_TRUE]) +m4trace:configure.ac:28: -1- AC_SUBST_TRACE([am__fastdepCXX_TRUE]) +m4trace:configure.ac:28: -1- m4_pattern_allow([^am__fastdepCXX_TRUE$]) +m4trace:configure.ac:28: -1- AC_SUBST([am__fastdepCXX_FALSE]) +m4trace:configure.ac:28: -1- AC_SUBST_TRACE([am__fastdepCXX_FALSE]) +m4trace:configure.ac:28: -1- m4_pattern_allow([^am__fastdepCXX_FALSE$]) +m4trace:configure.ac:28: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_TRUE]) +m4trace:configure.ac:28: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_FALSE]) +m4trace:configure.ac:30: -1- AC_PROG_LIBTOOL +m4trace:configure.ac:30: -1- _m4_warn([obsolete], [The macro `AC_PROG_LIBTOOL' is obsolete. +You should run autoupdate.], [m4/libtool.m4:99: AC_PROG_LIBTOOL is expanded from... +configure.ac:30: the top level]) +m4trace:configure.ac:30: -1- LT_INIT +m4trace:configure.ac:30: -1- m4_pattern_forbid([^_?LT_[A-Z_]+$]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$]) +m4trace:configure.ac:30: -1- AC_REQUIRE_AUX_FILE([ltmain.sh]) +m4trace:configure.ac:30: -1- AC_SUBST([LIBTOOL]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([LIBTOOL]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^LIBTOOL$]) +m4trace:configure.ac:30: -1- AC_CANONICAL_HOST +m4trace:configure.ac:30: -1- AC_CANONICAL_BUILD +m4trace:configure.ac:30: -1- AC_REQUIRE_AUX_FILE([config.sub]) +m4trace:configure.ac:30: -1- AC_REQUIRE_AUX_FILE([config.guess]) +m4trace:configure.ac:30: -1- AC_SUBST([build], [$ac_cv_build]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([build]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^build$]) +m4trace:configure.ac:30: -1- AC_SUBST([build_cpu], [$[1]]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([build_cpu]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^build_cpu$]) +m4trace:configure.ac:30: -1- AC_SUBST([build_vendor], [$[2]]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([build_vendor]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^build_vendor$]) +m4trace:configure.ac:30: -1- AC_SUBST([build_os]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([build_os]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^build_os$]) +m4trace:configure.ac:30: -1- AC_SUBST([host], [$ac_cv_host]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([host]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^host$]) +m4trace:configure.ac:30: -1- AC_SUBST([host_cpu], [$[1]]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([host_cpu]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^host_cpu$]) +m4trace:configure.ac:30: -1- AC_SUBST([host_vendor], [$[2]]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([host_vendor]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^host_vendor$]) +m4trace:configure.ac:30: -1- AC_SUBST([host_os]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([host_os]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^host_os$]) +m4trace:configure.ac:30: -1- AC_SUBST([SED]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([SED]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^SED$]) +m4trace:configure.ac:30: -1- AC_SUBST([GREP]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([GREP]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^GREP$]) +m4trace:configure.ac:30: -1- AC_SUBST([EGREP]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([EGREP]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^EGREP$]) +m4trace:configure.ac:30: -1- AC_SUBST([FGREP]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([FGREP]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^FGREP$]) +m4trace:configure.ac:30: -1- AC_SUBST([GREP]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([GREP]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^GREP$]) +m4trace:configure.ac:30: -1- AC_SUBST([LD]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([LD]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^LD$]) +m4trace:configure.ac:30: -1- AC_SUBST([DUMPBIN]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([DUMPBIN]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^DUMPBIN$]) +m4trace:configure.ac:30: -1- AC_SUBST([ac_ct_DUMPBIN]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([ac_ct_DUMPBIN]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^ac_ct_DUMPBIN$]) +m4trace:configure.ac:30: -1- AC_SUBST([DUMPBIN]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([DUMPBIN]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^DUMPBIN$]) +m4trace:configure.ac:30: -1- AC_SUBST([NM]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([NM]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^NM$]) +m4trace:configure.ac:30: -1- AC_SUBST([LN_S], [$as_ln_s]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([LN_S]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^LN_S$]) +m4trace:configure.ac:30: -1- AC_SUBST([OBJDUMP]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([OBJDUMP]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^OBJDUMP$]) +m4trace:configure.ac:30: -1- AC_SUBST([OBJDUMP]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([OBJDUMP]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^OBJDUMP$]) +m4trace:configure.ac:30: -1- AC_SUBST([DLLTOOL]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([DLLTOOL]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^DLLTOOL$]) +m4trace:configure.ac:30: -1- AC_SUBST([DLLTOOL]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([DLLTOOL]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^DLLTOOL$]) +m4trace:configure.ac:30: -1- AC_SUBST([AR]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([AR]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^AR$]) +m4trace:configure.ac:30: -1- AC_SUBST([ac_ct_AR]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([ac_ct_AR]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^ac_ct_AR$]) +m4trace:configure.ac:30: -1- AC_SUBST([STRIP]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([STRIP]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^STRIP$]) +m4trace:configure.ac:30: -1- AC_SUBST([RANLIB]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([RANLIB]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^RANLIB$]) +m4trace:configure.ac:30: -1- m4_pattern_allow([LT_OBJDIR]) +m4trace:configure.ac:30: -1- AC_DEFINE_TRACE_LITERAL([LT_OBJDIR]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^LT_OBJDIR$]) +m4trace:configure.ac:30: -1- AH_OUTPUT([LT_OBJDIR], [/* Define to the sub-directory where libtool stores uninstalled libraries. */ +@%:@undef LT_OBJDIR]) +m4trace:configure.ac:30: -1- LT_SUPPORTED_TAG([CC]) +m4trace:configure.ac:30: -1- AC_SUBST([MANIFEST_TOOL]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([MANIFEST_TOOL]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^MANIFEST_TOOL$]) +m4trace:configure.ac:30: -1- AC_SUBST([DSYMUTIL]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([DSYMUTIL]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^DSYMUTIL$]) +m4trace:configure.ac:30: -1- AC_SUBST([NMEDIT]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([NMEDIT]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^NMEDIT$]) +m4trace:configure.ac:30: -1- AC_SUBST([LIPO]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([LIPO]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^LIPO$]) +m4trace:configure.ac:30: -1- AC_SUBST([OTOOL]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([OTOOL]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^OTOOL$]) +m4trace:configure.ac:30: -1- AC_SUBST([OTOOL64]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([OTOOL64]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^OTOOL64$]) +m4trace:configure.ac:30: -1- AC_SUBST([LT_SYS_LIBRARY_PATH]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([LT_SYS_LIBRARY_PATH]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^LT_SYS_LIBRARY_PATH$]) +m4trace:configure.ac:30: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_DLFCN_H]) +m4trace:configure.ac:30: -1- AC_SUBST([CPP]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([CPP]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:30: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:30: -1- AC_SUBST([CPP]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([CPP]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:30: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^STDC_HEADERS$]) +m4trace:configure.ac:30: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */ +@%:@undef STDC_HEADERS]) +m4trace:configure.ac:30: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_TYPES_H]) +m4trace:configure.ac:30: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_SYS_STAT_H]) +m4trace:configure.ac:30: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STDLIB_H]) +m4trace:configure.ac:30: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STRING_H]) +m4trace:configure.ac:30: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_MEMORY_H]) +m4trace:configure.ac:30: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STRINGS_H]) +m4trace:configure.ac:30: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_INTTYPES_H]) +m4trace:configure.ac:30: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_STDINT_H]) +m4trace:configure.ac:30: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +@%:@undef HAVE_UNISTD_H]) +m4trace:configure.ac:30: -1- AC_DEFINE_TRACE_LITERAL([HAVE_DLFCN_H]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^HAVE_DLFCN_H$]) +m4trace:configure.ac:30: -1- LT_SUPPORTED_TAG([CXX]) +m4trace:configure.ac:30: -1- AC_SUBST([CXXCPP]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([CXXCPP]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^CXXCPP$]) +m4trace:configure.ac:30: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:30: -1- AC_SUBST([CXXCPP]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([CXXCPP]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^CXXCPP$]) +m4trace:configure.ac:30: -1- AC_SUBST([LD]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([LD]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^LD$]) +m4trace:configure.ac:30: -1- AC_SUBST([LT_SYS_LIBRARY_PATH]) +m4trace:configure.ac:30: -1- AC_SUBST_TRACE([LT_SYS_LIBRARY_PATH]) +m4trace:configure.ac:30: -1- m4_pattern_allow([^LT_SYS_LIBRARY_PATH$]) +m4trace:configure.ac:38: -1- AC_SUBST([PYTHON]) +m4trace:configure.ac:38: -1- AC_SUBST_TRACE([PYTHON]) +m4trace:configure.ac:38: -1- m4_pattern_allow([^PYTHON$]) +m4trace:configure.ac:41: -1- AM_CONDITIONAL([HAVE_PYTHON], [test "$PYTHON" != ":"]) +m4trace:configure.ac:41: -1- AC_SUBST([HAVE_PYTHON_TRUE]) +m4trace:configure.ac:41: -1- AC_SUBST_TRACE([HAVE_PYTHON_TRUE]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^HAVE_PYTHON_TRUE$]) +m4trace:configure.ac:41: -1- AC_SUBST([HAVE_PYTHON_FALSE]) +m4trace:configure.ac:41: -1- AC_SUBST_TRACE([HAVE_PYTHON_FALSE]) +m4trace:configure.ac:41: -1- m4_pattern_allow([^HAVE_PYTHON_FALSE$]) +m4trace:configure.ac:41: -1- _AM_SUBST_NOTMAKE([HAVE_PYTHON_TRUE]) +m4trace:configure.ac:41: -1- _AM_SUBST_NOTMAKE([HAVE_PYTHON_FALSE]) +m4trace:configure.ac:51: -1- _m4_warn([obsolete], [The macro `AC_LANG_SAVE' is obsolete. +You should run autoupdate.], [../../lib/autoconf/lang.m4:125: AC_LANG_SAVE is expanded from... +m4/acx_pthread.m4:63: ACX_PTHREAD is expanded from... +../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... +configure.ac:51: the top level]) +m4trace:configure.ac:51: -1- _m4_warn([obsolete], [The macro `AC_LANG_C' is obsolete. +You should run autoupdate.], [../../lib/autoconf/c.m4:72: AC_LANG_C is expanded from... +m4/acx_pthread.m4:63: ACX_PTHREAD is expanded from... +../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... +configure.ac:51: the top level]) +m4trace:configure.ac:51: -1- AC_SUBST([acx_pthread_config]) +m4trace:configure.ac:51: -1- AC_SUBST_TRACE([acx_pthread_config]) +m4trace:configure.ac:51: -1- m4_pattern_allow([^acx_pthread_config$]) +m4trace:configure.ac:51: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [../../lib/autoconf/general.m4:2698: AC_TRY_LINK is expanded from... +m4/acx_pthread.m4:63: ACX_PTHREAD is expanded from... +../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... +configure.ac:51: the top level]) +m4trace:configure.ac:51: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [../../lib/autoconf/general.m4:2698: AC_TRY_LINK is expanded from... +m4/acx_pthread.m4:63: ACX_PTHREAD is expanded from... +../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... +configure.ac:51: the top level]) +m4trace:configure.ac:51: -1- AC_DEFINE_TRACE_LITERAL([PTHREAD_CREATE_JOINABLE]) +m4trace:configure.ac:51: -1- m4_pattern_allow([^PTHREAD_CREATE_JOINABLE$]) +m4trace:configure.ac:51: -1- AH_OUTPUT([PTHREAD_CREATE_JOINABLE], [/* Define to necessary symbol if this constant uses a non-standard name on + your system. */ +@%:@undef PTHREAD_CREATE_JOINABLE]) +m4trace:configure.ac:51: -1- AC_SUBST([PTHREAD_CC]) +m4trace:configure.ac:51: -1- AC_SUBST_TRACE([PTHREAD_CC]) +m4trace:configure.ac:51: -1- m4_pattern_allow([^PTHREAD_CC$]) +m4trace:configure.ac:51: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [../../lib/autoconf/general.m4:2698: AC_TRY_LINK is expanded from... +m4/acx_pthread.m4:63: ACX_PTHREAD is expanded from... +../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... +configure.ac:51: the top level]) +m4trace:configure.ac:51: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [../../lib/autoconf/general.m4:2698: AC_TRY_LINK is expanded from... +m4/acx_pthread.m4:63: ACX_PTHREAD is expanded from... +../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... +configure.ac:51: the top level]) +m4trace:configure.ac:51: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [../../lib/autoconf/general.m4:2698: AC_TRY_LINK is expanded from... +m4/acx_pthread.m4:63: ACX_PTHREAD is expanded from... +../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... +configure.ac:51: the top level]) +m4trace:configure.ac:51: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [../../lib/autoconf/general.m4:2698: AC_TRY_LINK is expanded from... +m4/acx_pthread.m4:63: ACX_PTHREAD is expanded from... +../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... +configure.ac:51: the top level]) +m4trace:configure.ac:51: -1- AC_SUBST([PTHREAD_LIBS]) +m4trace:configure.ac:51: -1- AC_SUBST_TRACE([PTHREAD_LIBS]) +m4trace:configure.ac:51: -1- m4_pattern_allow([^PTHREAD_LIBS$]) +m4trace:configure.ac:51: -1- AC_SUBST([PTHREAD_CFLAGS]) +m4trace:configure.ac:51: -1- AC_SUBST_TRACE([PTHREAD_CFLAGS]) +m4trace:configure.ac:51: -1- m4_pattern_allow([^PTHREAD_CFLAGS$]) +m4trace:configure.ac:51: -1- AC_SUBST([PTHREAD_CC]) +m4trace:configure.ac:51: -1- AC_SUBST_TRACE([PTHREAD_CC]) +m4trace:configure.ac:51: -1- m4_pattern_allow([^PTHREAD_CC$]) +m4trace:configure.ac:51: -2- AC_DEFINE_TRACE_LITERAL([HAVE_PTHREAD]) +m4trace:configure.ac:51: -2- m4_pattern_allow([^HAVE_PTHREAD$]) +m4trace:configure.ac:51: -2- AH_OUTPUT([HAVE_PTHREAD], [/* Define if you have POSIX threads libraries and header files. */ +@%:@undef HAVE_PTHREAD]) +m4trace:configure.ac:51: -1- _m4_warn([obsolete], [The macro `AC_LANG_RESTORE' is obsolete. +You should run autoupdate.], [../../lib/autoconf/lang.m4:134: AC_LANG_RESTORE is expanded from... +m4/acx_pthread.m4:63: ACX_PTHREAD is expanded from... +../../lib/m4sugar/m4sh.m4:639: AS_IF is expanded from... +configure.ac:51: the top level]) +m4trace:configure.ac:58: -1- AM_CONDITIONAL([HAVE_PTHREADS], [test "x$have_pthreads" == "xyes"]) +m4trace:configure.ac:58: -1- AC_SUBST([HAVE_PTHREADS_TRUE]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([HAVE_PTHREADS_TRUE]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_PTHREADS_TRUE$]) +m4trace:configure.ac:58: -1- AC_SUBST([HAVE_PTHREADS_FALSE]) +m4trace:configure.ac:58: -1- AC_SUBST_TRACE([HAVE_PTHREADS_FALSE]) +m4trace:configure.ac:58: -1- m4_pattern_allow([^HAVE_PTHREADS_FALSE$]) +m4trace:configure.ac:58: -1- _AM_SUBST_NOTMAKE([HAVE_PTHREADS_TRUE]) +m4trace:configure.ac:58: -1- _AM_SUBST_NOTMAKE([HAVE_PTHREADS_FALSE]) +m4trace:configure.ac:59: -1- AC_SUBST([PTHREAD_CFLAGS]) +m4trace:configure.ac:59: -1- AC_SUBST_TRACE([PTHREAD_CFLAGS]) +m4trace:configure.ac:59: -1- m4_pattern_allow([^PTHREAD_CFLAGS$]) +m4trace:configure.ac:60: -1- AC_SUBST([PTHREAD_LIBS]) +m4trace:configure.ac:60: -1- AC_SUBST_TRACE([PTHREAD_LIBS]) +m4trace:configure.ac:60: -1- m4_pattern_allow([^PTHREAD_LIBS$]) +m4trace:configure.ac:68: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs]) +m4trace:configure.ac:68: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) +m4trace:configure.ac:68: -1- m4_pattern_allow([^LIB@&t@OBJS$]) +m4trace:configure.ac:68: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) +m4trace:configure.ac:68: -1- AC_SUBST_TRACE([LTLIBOBJS]) +m4trace:configure.ac:68: -1- m4_pattern_allow([^LTLIBOBJS$]) +m4trace:configure.ac:68: -1- AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"]) +m4trace:configure.ac:68: -1- AC_SUBST([am__EXEEXT_TRUE]) +m4trace:configure.ac:68: -1- AC_SUBST_TRACE([am__EXEEXT_TRUE]) +m4trace:configure.ac:68: -1- m4_pattern_allow([^am__EXEEXT_TRUE$]) +m4trace:configure.ac:68: -1- AC_SUBST([am__EXEEXT_FALSE]) +m4trace:configure.ac:68: -1- AC_SUBST_TRACE([am__EXEEXT_FALSE]) +m4trace:configure.ac:68: -1- m4_pattern_allow([^am__EXEEXT_FALSE$]) +m4trace:configure.ac:68: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_TRUE]) +m4trace:configure.ac:68: -1- _AM_SUBST_NOTMAKE([am__EXEEXT_FALSE]) +m4trace:configure.ac:68: -1- AC_SUBST_TRACE([top_builddir]) +m4trace:configure.ac:68: -1- AC_SUBST_TRACE([top_build_prefix]) +m4trace:configure.ac:68: -1- AC_SUBST_TRACE([srcdir]) +m4trace:configure.ac:68: -1- AC_SUBST_TRACE([abs_srcdir]) +m4trace:configure.ac:68: -1- AC_SUBST_TRACE([top_srcdir]) +m4trace:configure.ac:68: -1- AC_SUBST_TRACE([abs_top_srcdir]) +m4trace:configure.ac:68: -1- AC_SUBST_TRACE([builddir]) +m4trace:configure.ac:68: -1- AC_SUBST_TRACE([abs_builddir]) +m4trace:configure.ac:68: -1- AC_SUBST_TRACE([abs_top_builddir]) +m4trace:configure.ac:68: -1- AC_SUBST_TRACE([INSTALL]) +m4trace:configure.ac:68: -1- AC_SUBST_TRACE([MKDIR_P]) +m4trace:configure.ac:68: -1- AC_REQUIRE_AUX_FILE([ltmain.sh]) diff --git a/thirdparty/protobuf-2.6.1/gtest/build-aux/compile b/thirdparty/protobuf-2.6.1/gtest/build-aux/compile new file mode 100755 index 00000000..99e50524 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/build-aux/compile @@ -0,0 +1,348 @@ +#! /bin/sh +# Wrapper for compilers which do not understand '-c -o'. + +scriptversion=2018-03-07.03; # UTC + +# Copyright (C) 1999-2018 Free Software Foundation, Inc. +# Written by Tom Tromey . +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +nl=' +' + +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent tools from complaining about whitespace usage. +IFS=" "" $nl" + +file_conv= + +# func_file_conv build_file lazy +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. If the determined conversion +# type is listed in (the comma separated) LAZY, no conversion will +# take place. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + file_conv=mingw + ;; + CYGWIN*) + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv/,$2, in + *,$file_conv,*) + ;; + mingw/*) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin/*) + file=`cygpath -m "$file" || echo "$file"` + ;; + wine/*) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_cl_dashL linkdir +# Make cl look for libraries in LINKDIR +func_cl_dashL () +{ + func_file_conv "$1" + if test -z "$lib_path"; then + lib_path=$file + else + lib_path="$lib_path;$file" + fi + linker_opts="$linker_opts -LIBPATH:$file" +} + +# func_cl_dashl library +# Do a library search-path lookup for cl +func_cl_dashl () +{ + lib=$1 + found=no + save_IFS=$IFS + IFS=';' + for dir in $lib_path $LIB + do + IFS=$save_IFS + if $shared && test -f "$dir/$lib.dll.lib"; then + found=yes + lib=$dir/$lib.dll.lib + break + fi + if test -f "$dir/$lib.lib"; then + found=yes + lib=$dir/$lib.lib + break + fi + if test -f "$dir/lib$lib.a"; then + found=yes + lib=$dir/lib$lib.a + break + fi + done + IFS=$save_IFS + + if test "$found" != yes; then + lib=$lib.lib + fi +} + +# func_cl_wrapper cl arg... +# Adjust compile command to suit cl +func_cl_wrapper () +{ + # Assume a capable shell + lib_path= + shared=: + linker_opts= + for arg + do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + eat=1 + case $2 in + *.o | *.[oO][bB][jJ]) + func_file_conv "$2" + set x "$@" -Fo"$file" + shift + ;; + *) + func_file_conv "$2" + set x "$@" -Fe"$file" + shift + ;; + esac + ;; + -I) + eat=1 + func_file_conv "$2" mingw + set x "$@" -I"$file" + shift + ;; + -I*) + func_file_conv "${1#-I}" mingw + set x "$@" -I"$file" + shift + ;; + -l) + eat=1 + func_cl_dashl "$2" + set x "$@" "$lib" + shift + ;; + -l*) + func_cl_dashl "${1#-l}" + set x "$@" "$lib" + shift + ;; + -L) + eat=1 + func_cl_dashL "$2" + ;; + -L*) + func_cl_dashL "${1#-L}" + ;; + -static) + shared=false + ;; + -Wl,*) + arg=${1#-Wl,} + save_ifs="$IFS"; IFS=',' + for flag in $arg; do + IFS="$save_ifs" + linker_opts="$linker_opts $flag" + done + IFS="$save_ifs" + ;; + -Xlinker) + eat=1 + linker_opts="$linker_opts $2" + ;; + -*) + set x "$@" "$1" + shift + ;; + *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) + func_file_conv "$1" + set x "$@" -Tp"$file" + shift + ;; + *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) + func_file_conv "$1" mingw + set x "$@" "$file" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift + done + if test -n "$linker_opts"; then + linker_opts="-link$linker_opts" + fi + exec "$@" $linker_opts + exit 1 +} + +eat= + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: compile [--help] [--version] PROGRAM [ARGS] + +Wrapper for compilers which do not understand '-c -o'. +Remove '-o dest.o' from ARGS, run PROGRAM with the remaining +arguments, and rename the output as expected. + +If you are trying to build a whole package this is not the +right script to run: please start by reading the file 'INSTALL'. + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "compile $scriptversion" + exit $? + ;; + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ + icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) + func_cl_wrapper "$@" # Doesn't return... + ;; +esac + +ofile= +cfile= + +for arg +do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + # So we strip '-o arg' only if arg is an object. + eat=1 + case $2 in + *.o | *.obj) + ofile=$2 + ;; + *) + set x "$@" -o "$2" + shift + ;; + esac + ;; + *.c) + cfile=$1 + set x "$@" "$1" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift +done + +if test -z "$ofile" || test -z "$cfile"; then + # If no '-o' option was seen then we might have been invoked from a + # pattern rule where we don't need one. That is ok -- this is a + # normal compilation that the losing compiler can handle. If no + # '.c' file was seen then we are probably linking. That is also + # ok. + exec "$@" +fi + +# Name of file we expect compiler to create. +cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` + +# Create the lock directory. +# Note: use '[/\\:.-]' here to ensure that we don't use the same name +# that we are using for the .o file. Also, base the name on the expected +# object file name, since that is what matters with a parallel build. +lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d +while true; do + if mkdir "$lockdir" >/dev/null 2>&1; then + break + fi + sleep 1 +done +# FIXME: race condition here if user kills between mkdir and trap. +trap "rmdir '$lockdir'; exit 1" 1 2 15 + +# Run the compile. +"$@" +ret=$? + +if test -f "$cofile"; then + test "$cofile" = "$ofile" || mv "$cofile" "$ofile" +elif test -f "${cofile}bj"; then + test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" +fi + +rmdir "$lockdir" +exit $ret + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/thirdparty/protobuf-2.6.1/gtest/build-aux/config.guess b/thirdparty/protobuf-2.6.1/gtest/build-aux/config.guess new file mode 100755 index 00000000..f50dcdb6 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/build-aux/config.guess @@ -0,0 +1,1480 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright 1992-2018 Free Software Foundation, Inc. + +timestamp='2018-02-24' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). +# +# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. +# +# You can get the latest version of this script from: +# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess +# +# Please send patches to . + + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright 1992-2018 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > "$dummy.c" ; + for c in cc gcc c89 c99 ; do + if ($c -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +case "$UNAME_SYSTEM" in +Linux|GNU|GNU/*) + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + LIBC=gnu + + eval "$set_cc_for_build" + cat <<-EOF > "$dummy.c" + #include + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #else + LIBC=gnu + #endif + EOF + eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`" + + # If ldd exists, use it to detect musl libc. + if command -v ldd >/dev/null && \ + ldd --version 2>&1 | grep -q ^musl + then + LIBC=musl + fi + ;; +esac + +# Note: order is significant - the case branches are not exclusive. + +case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + "/sbin/$sysctl" 2>/dev/null || \ + "/usr/sbin/$sysctl" 2>/dev/null || \ + echo unknown)` + case "$UNAME_MACHINE_ARCH" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + earmv*) + arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` + machine="${arch}${endian}"-unknown + ;; + *) machine="$UNAME_MACHINE_ARCH"-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently (or will in the future) and ABI. + case "$UNAME_MACHINE_ARCH" in + earm*) + os=netbsdelf + ;; + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval "$set_cc_for_build" + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # Determine ABI tags. + case "$UNAME_MACHINE_ARCH" in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "$UNAME_VERSION" in + Debian*) + release='-gnu' + ;; + *) + release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "$machine-${os}${release}${abi}" + exit ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE" + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE" + exit ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" + exit ;; + *:MidnightBSD:*:*) + echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE" + exit ;; + *:ekkoBSD:*:*) + echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE" + exit ;; + *:SolidBSD:*:*) + echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE" + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd"$UNAME_RELEASE" + exit ;; + *:MirBSD:*:*) + echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE" + exit ;; + *:Sortix:*:*) + echo "$UNAME_MACHINE"-unknown-sortix + exit ;; + *:Redox:*:*) + echo "$UNAME_MACHINE"-unknown-redox + exit ;; + mips:OSF1:*.*) + echo mips-dec-osf1 + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE=alpha ;; + "EV4.5 (21064)") + UNAME_MACHINE=alpha ;; + "LCA4 (21066/21068)") + UNAME_MACHINE=alpha ;; + "EV5 (21164)") + UNAME_MACHINE=alphaev5 ;; + "EV5.6 (21164A)") + UNAME_MACHINE=alphaev56 ;; + "EV5.6 (21164PC)") + UNAME_MACHINE=alphapca56 ;; + "EV5.7 (21164PC)") + UNAME_MACHINE=alphapca57 ;; + "EV6 (21264)") + UNAME_MACHINE=alphaev6 ;; + "EV6.7 (21264A)") + UNAME_MACHINE=alphaev67 ;; + "EV6.8CB (21264C)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8AL (21264B)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8CX (21264D)") + UNAME_MACHINE=alphaev68 ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE=alphaev69 ;; + "EV7 (21364)") + UNAME_MACHINE=alphaev7 ;; + "EV7.9 (21364A)") + UNAME_MACHINE=alphaev79 ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`" + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + exitcode=$? + trap '' 0 + exit $exitcode ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo "$UNAME_MACHINE"-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo "$UNAME_MACHINE"-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix"$UNAME_RELEASE" + exit ;; + arm*:riscos:*:*|arm*:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + s390x:SunOS:*:*) + echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" + exit ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" + exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux"$UNAME_RELEASE" + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + eval "$set_cc_for_build" + SUN_ARCH=i386 + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH=x86_64 + fi + fi + echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`" + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos"$UNAME_RELEASE" + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos"$UNAME_RELEASE" + ;; + sun4) + echo sparc-sun-sunos"$UNAME_RELEASE" + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos"$UNAME_RELEASE" + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint"$UNAME_RELEASE" + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint"$UNAME_RELEASE" + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint"$UNAME_RELEASE" + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint"$UNAME_RELEASE" + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint"$UNAME_RELEASE" + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint"$UNAME_RELEASE" + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten"$UNAME_RELEASE" + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten"$UNAME_RELEASE" + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix"$UNAME_RELEASE" + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix"$UNAME_RELEASE" + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix"$UNAME_RELEASE" + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval "$set_cc_for_build" + sed 's/^ //' << EOF > "$dummy.c" +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && + dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`"$dummy" "$dummyarg"` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos"$UNAME_RELEASE" + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ] + then + if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \ + [ "$TARGET_BINARY_INTERFACE"x = x ] + then + echo m88k-dg-dgux"$UNAME_RELEASE" + else + echo m88k-dg-dguxbcs"$UNAME_RELEASE" + fi + else + echo i586-dg-dgux"$UNAME_RELEASE" + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`" + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + fi + echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV" + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval "$set_cc_for_build" + sed 's/^ //' << EOF > "$dummy.c" + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[4567]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/lslpp ] ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` + else + IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" + fi + echo "$IBM_ARCH"-ibm-aix"$IBM_REV" + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` + case "$UNAME_MACHINE" in + 9000/31?) HP_ARCH=m68000 ;; + 9000/[34]??) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "$sc_cpu_version" in + 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 + 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "$sc_kernel_bits" in + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "$HP_ARCH" = "" ]; then + eval "$set_cc_for_build" + sed 's/^ //' << EOF > "$dummy.c" + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ "$HP_ARCH" = hppa2.0w ] + then + eval "$set_cc_for_build" + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH=hppa2.0w + else + HP_ARCH=hppa64 + fi + fi + echo "$HP_ARCH"-hp-hpux"$HPUX_REV" + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux"$HPUX_REV" + exit ;; + 3050*:HI-UX:*:*) + eval "$set_cc_for_build" + sed 's/^ //' << EOF > "$dummy.c" + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo "$UNAME_MACHINE"-unknown-osf1mk + else + echo "$UNAME_MACHINE"-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE" + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi"$UNAME_RELEASE" + exit ;; + *:BSD/OS:*:*) + echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE" + exit ;; + *:FreeBSD:*:*) + UNAME_PROCESSOR=`/usr/bin/uname -p` + case "$UNAME_PROCESSOR" in + amd64) + UNAME_PROCESSOR=x86_64 ;; + i386) + UNAME_PROCESSOR=i586 ;; + esac + echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" + exit ;; + i*:CYGWIN*:*) + echo "$UNAME_MACHINE"-pc-cygwin + exit ;; + *:MINGW64*:*) + echo "$UNAME_MACHINE"-pc-mingw64 + exit ;; + *:MINGW*:*) + echo "$UNAME_MACHINE"-pc-mingw32 + exit ;; + *:MSYS*:*) + echo "$UNAME_MACHINE"-pc-msys + exit ;; + i*:PW*:*) + echo "$UNAME_MACHINE"-pc-pw32 + exit ;; + *:Interix*:*) + case "$UNAME_MACHINE" in + x86) + echo i586-pc-interix"$UNAME_RELEASE" + exit ;; + authenticamd | genuineintel | EM64T) + echo x86_64-unknown-interix"$UNAME_RELEASE" + exit ;; + IA64) + echo ia64-unknown-interix"$UNAME_RELEASE" + exit ;; + esac ;; + i*:UWIN*:*) + echo "$UNAME_MACHINE"-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" + exit ;; + *:GNU:*:*) + # the GNU system + echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`" + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC" + exit ;; + i*86:Minix:*:*) + echo "$UNAME_MACHINE"-pc-minix + exit ;; + aarch64:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + arc:Linux:*:* | arceb:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + arm*:Linux:*:*) + eval "$set_cc_for_build" + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi + else + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf + fi + fi + exit ;; + avr32*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + cris:Linux:*:*) + echo "$UNAME_MACHINE"-axis-linux-"$LIBC" + exit ;; + crisv32:Linux:*:*) + echo "$UNAME_MACHINE"-axis-linux-"$LIBC" + exit ;; + e2k:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + frv:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + hexagon:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + i*86:Linux:*:*) + echo "$UNAME_MACHINE"-pc-linux-"$LIBC" + exit ;; + ia64:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + k1om:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + m32r*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + m68*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + mips:Linux:*:* | mips64:Linux:*:*) + eval "$set_cc_for_build" + sed 's/^ //' << EOF > "$dummy.c" + #undef CPU + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=${UNAME_MACHINE}el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=${UNAME_MACHINE} + #else + CPU= + #endif + #endif +EOF + eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU'`" + test "x$CPU" != x && { echo "$CPU-unknown-linux-$LIBC"; exit; } + ;; + mips64el:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + openrisc*:Linux:*:*) + echo or1k-unknown-linux-"$LIBC" + exit ;; + or32:Linux:*:* | or1k*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-"$LIBC" + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-"$LIBC" + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;; + PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;; + *) echo hppa-unknown-linux-"$LIBC" ;; + esac + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-"$LIBC" + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-"$LIBC" + exit ;; + ppc64le:Linux:*:*) + echo powerpc64le-unknown-linux-"$LIBC" + exit ;; + ppcle:Linux:*:*) + echo powerpcle-unknown-linux-"$LIBC" + exit ;; + riscv32:Linux:*:* | riscv64:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo "$UNAME_MACHINE"-ibm-linux-"$LIBC" + exit ;; + sh64*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + sh*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + tile*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + vax:Linux:*:*) + echo "$UNAME_MACHINE"-dec-linux-"$LIBC" + exit ;; + x86_64:Linux:*:*) + if objdump -f /bin/sh | grep -q elf32-x86-64; then + echo "$UNAME_MACHINE"-pc-linux-"$LIBC"x32 + else + echo "$UNAME_MACHINE"-pc-linux-"$LIBC" + fi + exit ;; + xtensa*:Linux:*:*) + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" + exit ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION" + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo "$UNAME_MACHINE"-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo "$UNAME_MACHINE"-unknown-stop + exit ;; + i*86:atheos:*:*) + echo "$UNAME_MACHINE"-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo "$UNAME_MACHINE"-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + echo i386-unknown-lynxos"$UNAME_RELEASE" + exit ;; + i*86:*DOS:*:*) + echo "$UNAME_MACHINE"-pc-msdosdjgpp + exit ;; + i*86:*:4.*:*) + UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL" + else + echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL" + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}{$UNAME_VERSION}" + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL" + else + echo "$UNAME_MACHINE"-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configure will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos"$UNAME_RELEASE" + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos"$UNAME_RELEASE" + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos"$UNAME_RELEASE" + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + echo powerpc-unknown-lynxos"$UNAME_RELEASE" + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv"$UNAME_RELEASE" + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo "$UNAME_MACHINE"-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo "$UNAME_MACHINE"-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux"$UNAME_RELEASE" + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv"$UNAME_RELEASE" + else + echo mips-unknown-sysv"$UNAME_RELEASE" + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; + x86_64:Haiku:*:*) + echo x86_64-unknown-haiku + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux"$UNAME_RELEASE" + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux"$UNAME_RELEASE" + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux"$UNAME_RELEASE" + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux"$UNAME_RELEASE" + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux"$UNAME_RELEASE" + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux"$UNAME_RELEASE" + exit ;; + SX-ACE:SUPER-UX:*:*) + echo sxace-nec-superux"$UNAME_RELEASE" + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody"$UNAME_RELEASE" + exit ;; + *:Rhapsody:*:*) + echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + eval "$set_cc_for_build" + if test "$UNAME_PROCESSOR" = unknown ; then + UNAME_PROCESSOR=powerpc + fi + if test "`echo "$UNAME_RELEASE" | sed -e 's/\..*//'`" -le 10 ; then + if [ "$CC_FOR_BUILD" != no_compiler_found ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc + if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_PPC >/dev/null + then + UNAME_PROCESSOR=powerpc + fi + fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # Avoid executing cc on OS X 10.9, as it ships with a stub + # that puts up a graphical alert prompting to install + # developer tools. Any system running Mac OS X 10.7 or + # later (Darwin 11 and later) is required to have a 64-bit + # processor. This is not true of the ARM version of Darwin + # that Apple uses in portable devices. + UNAME_PROCESSOR=x86_64 + fi + echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = x86; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE" + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NEO-*:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSE-*:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSR-*:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSV-*:NONSTOP_KERNEL:*:*) + echo nsv-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSX-*:NONSTOP_KERNEL:*:*) + echo nsx-tandem-nsk"$UNAME_RELEASE" + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE" + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = 386; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo "$UNAME_MACHINE"-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux"$UNAME_RELEASE" + exit ;; + *:DragonFly:*:*) + echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "$UNAME_MACHINE" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`" + exit ;; + i*86:rdos:*:*) + echo "$UNAME_MACHINE"-pc-rdos + exit ;; + i*86:AROS:*:*) + echo "$UNAME_MACHINE"-pc-aros + exit ;; + x86_64:VMkernel:*:*) + echo "$UNAME_MACHINE"-unknown-esx + exit ;; + amd64:Isilon\ OneFS:*:*) + echo x86_64-unknown-onefs + exit ;; +esac + +echo "$0: unable to guess system type" >&2 + +case "$UNAME_MACHINE:$UNAME_SYSTEM" in + mips:Linux | mips64:Linux) + # If we got here on MIPS GNU/Linux, output extra information. + cat >&2 <&2 </dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = "$UNAME_MACHINE" +UNAME_RELEASE = "$UNAME_RELEASE" +UNAME_SYSTEM = "$UNAME_SYSTEM" +UNAME_VERSION = "$UNAME_VERSION" +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-functions 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/thirdparty/protobuf-2.6.1/gtest/build-aux/config.h b/thirdparty/protobuf-2.6.1/gtest/build-aux/config.h new file mode 100644 index 00000000..433af26e --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/build-aux/config.h @@ -0,0 +1,69 @@ +/* build-aux/config.h. Generated from config.h.in by configure. */ +/* build-aux/config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define if you have POSIX threads libraries and header files. */ +#define HAVE_PTHREAD 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define to the sub-directory where libtool stores uninstalled libraries. */ +#define LT_OBJDIR ".libs/" + +/* Name of package */ +#define PACKAGE "gtest" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "googletestframework@googlegroups.com" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "Google C++ Testing Framework" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "Google C++ Testing Framework 1.6.0" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "gtest" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "1.6.0" + +/* Define to necessary symbol if this constant uses a non-standard name on + your system. */ +/* #undef PTHREAD_CREATE_JOINABLE */ + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Version number of package */ +#define VERSION "1.6.0" diff --git a/thirdparty/protobuf-2.6.1/gtest/build-aux/config.h.in b/thirdparty/protobuf-2.6.1/gtest/build-aux/config.h.in new file mode 100644 index 00000000..6ea2e690 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/build-aux/config.h.in @@ -0,0 +1,68 @@ +/* build-aux/config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define if you have POSIX threads libraries and header files. */ +#undef HAVE_PTHREAD + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to the sub-directory where libtool stores uninstalled libraries. */ +#undef LT_OBJDIR + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define to necessary symbol if this constant uses a non-standard name on + your system. */ +#undef PTHREAD_CREATE_JOINABLE + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Version number of package */ +#undef VERSION diff --git a/thirdparty/protobuf-2.6.1/gtest/build-aux/config.h.in~ b/thirdparty/protobuf-2.6.1/gtest/build-aux/config.h.in~ new file mode 100644 index 00000000..843b5b10 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/build-aux/config.h.in~ @@ -0,0 +1,69 @@ +/* build-aux/config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define if you have POSIX threads libraries and header files. */ +#undef HAVE_PTHREAD + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#undef LT_OBJDIR + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define to necessary symbol if this constant uses a non-standard name on + your system. */ +#undef PTHREAD_CREATE_JOINABLE + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Version number of package */ +#undef VERSION diff --git a/thirdparty/protobuf-2.6.1/gtest/build-aux/config.sub b/thirdparty/protobuf-2.6.1/gtest/build-aux/config.sub new file mode 100755 index 00000000..1d8e98bc --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/build-aux/config.sub @@ -0,0 +1,1801 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright 1992-2018 Free Software Foundation, Inc. + +timestamp='2018-02-22' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). + + +# Please send patches to . +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS + +Canonicalize a configuration name. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright 1992-2018 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo "$1" + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ + linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ + kopensolaris*-gnu* | cloudabi*-eabi* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + android-linux) + os=-linux-android + basic_machine=`echo "$1" | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown + ;; + *) + basic_machine=`echo "$1" | sed 's/-[^-]*$//'` + if [ "$basic_machine" != "$1" ] + then os=`echo "$1" | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray | -microblaze*) + os= + basic_machine=$1 + ;; + -bluegene*) + os=-cnk + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*178) + os=-lynxos178 + ;; + -lynx*5) + os=-lynxos5 + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo "$1" | sed -e 's/86-.*/86-sequent/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | aarch64 | aarch64_be \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arceb \ + | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ + | avr | avr32 \ + | ba \ + | be32 | be64 \ + | bfin \ + | c4x | c8051 | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | e2k | epiphany \ + | fido | fr30 | frv | ft32 \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | hexagon \ + | i370 | i860 | i960 | ia16 | ia64 \ + | ip2k | iq2000 \ + | k1om \ + | le32 | le64 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa32r6 | mipsisa32r6el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64r6 | mipsisa64r6el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipsr5900 | mipsr5900el \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nds32 | nds32le | nds32be \ + | nios | nios2 | nios2eb | nios2el \ + | ns16k | ns32k \ + | open8 | or1k | or1knd | or32 \ + | pdp10 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle \ + | pru \ + | pyramid \ + | riscv32 | riscv64 \ + | rl78 | rx \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu \ + | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ + | ubicom32 \ + | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ + | visium \ + | wasm32 \ + | x86 | xc16x | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + c54x) + basic_machine=tic54x-unknown + ;; + c55x) + basic_machine=tic55x-unknown + ;; + c6x) + basic_machine=tic6x-unknown + ;; + leon|leon[3-9]) + basic_machine=sparc-$basic_machine + ;; + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65) + ;; + ms1) + basic_machine=mt-unknown + ;; + + strongarm | thumb | xscale) + basic_machine=arm-unknown + ;; + xgate) + basic_machine=$basic_machine-unknown + os=-none + ;; + xscaleeb) + basic_machine=armeb-unknown + ;; + + xscaleel) + basic_machine=armel-unknown + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | aarch64-* | aarch64_be-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | ba-* \ + | be32-* | be64-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* \ + | c8051-* | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | e2k-* | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | hexagon-* \ + | i*86-* | i860-* | i960-* | ia16-* | ia64-* \ + | ip2k-* | iq2000-* \ + | k1om-* \ + | le32-* | le64-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ + | microblaze-* | microblazeel-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa32r6-* | mipsisa32r6el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64r6-* | mipsisa64r6el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipsr5900-* | mipsr5900el-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nds32-* | nds32le-* | nds32be-* \ + | nios-* | nios2-* | nios2eb-* | nios2el-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | open8-* \ + | or1k*-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ + | pru-* \ + | pyramid-* \ + | riscv32-* | riscv64-* \ + | rl78-* | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ + | tahoe-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tile*-* \ + | tron-* \ + | ubicom32-* \ + | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ + | vax-* \ + | visium-* \ + | wasm32-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-pc + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aros) + basic_machine=i386-pc + os=-aros + ;; + asmjs) + basic_machine=asmjs-unknown + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo "$basic_machine" | sed 's/^[^-]*-//'` + os=-linux + ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; + c54x-*) + basic_machine=tic54x-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + c55x-*) + basic_machine=tic55x-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + c6x-*) + basic_machine=tic6x-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16 | cr16-*) + basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2*) + basic_machine=m68k-bull + os=-sysv3 + ;; + e500v[12]) + basic_machine=powerpc-unknown + os=$os"spe" + ;; + e500v[12]-*) + basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'` + os=$os"spe" + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; + i*86v32) + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + leon-*|leon[3-9]-*) + basic_machine=sparc-`echo "$basic_machine" | sed 's/-.*//'` + ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo "$basic_machine" | sed 's/^[^-]*-//'` + os=-linux + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + microblaze*) + basic_machine=microblaze-xilinx + ;; + mingw64) + basic_machine=x86_64-pc + os=-mingw64 + ;; + mingw32) + basic_machine=i686-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + moxiebox) + basic_machine=moxie-unknown + os=-moxiebox + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo "$basic_machine" | sed -e 's/ms1-/mt-/'` + ;; + msys) + basic_machine=i686-pc + os=-msys + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + nacl) + basic_machine=le32-unknown + os=-nacl + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + neo-tandem) + basic_machine=neo-tandem + ;; + nse-tandem) + basic_machine=nse-tandem + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + nsv-tandem) + basic_machine=nsv-tandem + ;; + nsx-tandem) + basic_machine=nsx-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo "$basic_machine" | sed 's/^[^-]*-//'` + os=-linux + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc | ppcbe) basic_machine=powerpc-unknown + ;; + ppc-* | ppcbe-*) + basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + os=-rdos + ;; + rdos32) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh5el) + basic_machine=sh5le-unknown + ;; + simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + strongarm-* | thumb-*) + basic_machine=arm-`echo "$basic_machine" | sed 's/^[^-]*-//'` + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tile*) + basic_machine=$basic_machine-unknown + os=-linux-gnu + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + x64) + basic_machine=x86_64-pc + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + xscale-* | xscalee[bl]-*) + basic_machine=`echo "$basic_machine" | sed 's/^xscale/arm/'` + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo "$basic_machine" | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo "$basic_machine" | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases that might get confused + # with valid system types. + # -solaris* is a basic system type, with this one exception. + -auroraux) + os=-auroraux + ;; + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # es1800 is here to avoid being matched by es* (a different OS) + -es1800*) + os=-ose + ;; + # Now accept the basic system types. + # The portable systems comes first. + # Each alternative MUST end in a * to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* | -plan9* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* | -cloudabi* | -sortix* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -knetbsd* | -mirbsd* | -netbsd* \ + | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* | -cegcc* | -glidix* \ + | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-musl* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ + | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox* | -bme* \ + | -midnightbsd*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -xray | -os68k* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo "$os" | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo "$os" | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo "$os" | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4*) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -zvmoe) + os=-zvmoe + ;; + -dicos*) + os=-dicos + ;; + -pikeos*) + # Until real need of OS specific support for + # particular features comes up, bare metal + # configurations are quite functional. + case $basic_machine in + arm*) + os=-eabi + ;; + *) + os=-elf + ;; + esac + ;; + -nacl*) + ;; + -ios) + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + c8051-*) + os=-elf + ;; + hexagon-*) + os=-elf + ;; + tic54x-*) + os=-coff + ;; + tic55x-*) + os=-coff + ;; + tic6x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + ;; + m68*-cisco) + os=-aout + ;; + mep-*) + os=-elf + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + pru-*) + os=-elf + ;; + *-be) + os=-beos + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -cnk*|-aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo "$basic_machine" | sed "s/unknown/$vendor/"` + ;; +esac + +echo "$basic_machine$os" +exit + +# Local variables: +# eval: (add-hook 'write-file-functions 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/thirdparty/protobuf-2.6.1/gtest/build-aux/depcomp b/thirdparty/protobuf-2.6.1/gtest/build-aux/depcomp new file mode 100755 index 00000000..65cbf709 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/build-aux/depcomp @@ -0,0 +1,791 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2018-03-07.03; # UTC + +# Copyright (C) 1999-2018 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by 'PROGRAMS ARGS'. + object Object file output by 'PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputting dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +# Get the directory component of the given path, and save it in the +# global variables '$dir'. Note that this directory component will +# be either empty or ending with a '/' character. This is deliberate. +set_dir_from () +{ + case $1 in + */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; + *) dir=;; + esac +} + +# Get the suffix-stripped basename of the given path, and save it the +# global variable '$base'. +set_base_from () +{ + base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` +} + +# If no dependency file was actually created by the compiler invocation, +# we still have to create a dummy depfile, to avoid errors with the +# Makefile "include basename.Plo" scheme. +make_dummy_depfile () +{ + echo "#dummy" > "$depfile" +} + +# Factor out some common post-processing of the generated depfile. +# Requires the auxiliary global variable '$tmpdepfile' to be set. +aix_post_process_depfile () +{ + # If the compiler actually managed to produce a dependency file, + # post-process it. + if test -f "$tmpdepfile"; then + # Each line is of the form 'foo.o: dependency.h'. + # Do two passes, one to just change these to + # $object: dependency.h + # and one to simply output + # dependency.h: + # which is needed to avoid the deleted-header problem. + { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" + sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" + } > "$depfile" + rm -f "$tmpdepfile" + else + make_dummy_depfile + fi +} + +# A tabulation character. +tab=' ' +# A newline character. +nl=' +' +# Character ranges might be problematic outside the C locale. +# These definitions help. +upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ +lower=abcdefghijklmnopqrstuvwxyz +digits=0123456789 +alpha=${upper}${lower} + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Avoid interferences from the environment. +gccflag= dashmflag= + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +cygpath_u="cygpath -u -f -" +if test "$depmode" = msvcmsys; then + # This is just like msvisualcpp but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvisualcpp +fi + +if test "$depmode" = msvc7msys; then + # This is just like msvc7 but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvc7 +fi + +if test "$depmode" = xlc; then + # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. + gccflag=-qmakedep=gcc,-MF + depmode=gcc +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. +## Unfortunately, FreeBSD c89 acceptance of flags depends upon +## the command line argument order; so add the flags where they +## appear in depend2.am. Note that the slowdown incurred here +## affects only configure: in makefiles, %FASTDEP% shortcuts this. + for arg + do + case $arg in + -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; + *) set fnord "$@" "$arg" ;; + esac + shift # fnord + shift # $arg + done + "$@" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. +## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. +## (see the conditional assignment to $gccflag above). +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). Also, it might not be +## supported by the other compilers which use the 'gcc' depmode. +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The second -e expression handles DOS-style file names with drive + # letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the "deleted header file" problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. +## Some versions of gcc put a space before the ':'. On the theory +## that the space means something, we add a space to the output as +## well. hp depmode also adds that space, but also prefixes the VPATH +## to the object. Take care to not repeat it in the output. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like '#:fec' to the end of the + # dependency line. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ + | tr "$nl" ' ' >> "$depfile" + echo >> "$depfile" + # The second pass generates a dummy entry for each header file. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" + ;; + +xlc) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts '$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.u + tmpdepfile2=$base.u + tmpdepfile3=$dir.libs/$base.u + "$@" -Wc,-M + else + tmpdepfile1=$dir$base.u + tmpdepfile2=$dir$base.u + tmpdepfile3=$dir$base.u + "$@" -M + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + aix_post_process_depfile + ;; + +tcc) + # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 + # FIXME: That version still under development at the moment of writing. + # Make that this statement remains true also for stable, released + # versions. + # It will wrap lines (doesn't matter whether long or short) with a + # trailing '\', as in: + # + # foo.o : \ + # foo.c \ + # foo.h \ + # + # It will put a trailing '\' even on the last line, and will use leading + # spaces rather than leading tabs (at least since its commit 0394caf7 + # "Emit spaces for -MD"). + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. + # We have to change lines of the first kind to '$object: \'. + sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" + # And for each line of the second kind, we have to emit a 'dep.h:' + # dummy dependency, to avoid the deleted-header problem. + sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" + rm -f "$tmpdepfile" + ;; + +## The order of this option in the case statement is important, since the +## shell code in configure will try each of these formats in the order +## listed in this file. A plain '-MD' option would be understood by many +## compilers, so we must ensure this comes after the gcc and icc options. +pgcc) + # Portland's C compiler understands '-MD'. + # Will always output deps to 'file.d' where file is the root name of the + # source file under compilation, even if file resides in a subdirectory. + # The object file name does not affect the name of the '.d' file. + # pgcc 10.2 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using '\' : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + set_dir_from "$object" + # Use the source, not the object, to determine the base name, since + # that's sadly what pgcc will do too. + set_base_from "$source" + tmpdepfile=$base.d + + # For projects that build the same source file twice into different object + # files, the pgcc approach of using the *source* file root name can cause + # problems in parallel builds. Use a locking strategy to avoid stomping on + # the same $tmpdepfile. + lockdir=$base.d-lock + trap " + echo '$0: caught signal, cleaning up...' >&2 + rmdir '$lockdir' + exit 1 + " 1 2 13 15 + numtries=100 + i=$numtries + while test $i -gt 0; do + # mkdir is a portable test-and-set. + if mkdir "$lockdir" 2>/dev/null; then + # This process acquired the lock. + "$@" -MD + stat=$? + # Release the lock. + rmdir "$lockdir" + break + else + # If the lock is being held by a different process, wait + # until the winning process is done or we timeout. + while test -d "$lockdir" && test $i -gt 0; do + sleep 1 + i=`expr $i - 1` + done + fi + i=`expr $i - 1` + done + trap - 1 2 13 15 + if test $i -le 0; then + echo "$0: failed to acquire lock after $numtries attempts" >&2 + echo "$0: check lockdir '$lockdir'" >&2 + exit 1 + fi + + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp2) + # The "hp" stanza above does not work with aCC (C++) and HP's ia64 + # compilers, which have integrated preprocessors. The correct option + # to use with these is +Maked; it writes dependencies to a file named + # 'foo.d', which lands next to the object file, wherever that + # happens to be. + # Much of this is similar to the tru64 case; see comments there. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir.libs/$base.d + "$@" -Wc,+Maked + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + "$@" +Maked + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" + # Add 'dependent.h:' lines. + sed -ne '2,${ + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" "$tmpdepfile2" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in 'foo.d' instead, so we check for that too. + # Subdirectories are respected. + set_dir_from "$object" + set_base_from "$object" + + if test "$libtool" = yes; then + # Libtool generates 2 separate objects for the 2 libraries. These + # two compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir$base.o.d # libtool 1.5 + tmpdepfile2=$dir.libs/$base.o.d # Likewise. + tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + # Same post-processing that is required for AIX mode. + aix_post_process_depfile + ;; + +msvc7) + if test "$libtool" = yes; then + showIncludes=-Wc,-showIncludes + else + showIncludes=-showIncludes + fi + "$@" $showIncludes > "$tmpdepfile" + stat=$? + grep -v '^Note: including file: ' "$tmpdepfile" + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The first sed program below extracts the file names and escapes + # backslashes for cygpath. The second sed program outputs the file + # name when reading, but also accumulates all include files in the + # hold buffer in order to output them again at the end. This only + # works with sed implementations that can handle large buffers. + sed < "$tmpdepfile" -n ' +/^Note: including file: *\(.*\)/ { + s//\1/ + s/\\/\\\\/g + p +}' | $cygpath_u | sort -u | sed -n ' +s/ /\\ /g +s/\(.*\)/'"$tab"'\1 \\/p +s/.\(.*\) \\/\1:/ +H +$ { + s/.*/'"$tab"'/ + G + p +}' >> "$depfile" + echo >> "$depfile" # make sure the fragment doesn't end with a backslash + rm -f "$tmpdepfile" + ;; + +msvc7msys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for ':' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. + "$@" $dashmflag | + sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this sed invocation + # correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no eat=no + for arg + do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + if test $eat = yes; then + eat=no + continue + fi + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -arch) + eat=yes ;; + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix=`echo "$object" | sed 's/^.*\././'` + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + # makedepend may prepend the VPATH from the source file name to the object. + # No need to regex-escape $object, excess matching of '.' is harmless. + sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process the last invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed '1,2d' "$tmpdepfile" \ + | tr ' ' "$nl" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E \ + | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + | sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + IFS=" " + for arg + do + case "$arg" in + -o) + shift + ;; + $object) + shift + ;; + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E 2>/dev/null | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" + echo "$tab" >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvcmsys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/thirdparty/protobuf-2.6.1/gtest/build-aux/install-sh b/thirdparty/protobuf-2.6.1/gtest/build-aux/install-sh new file mode 100755 index 00000000..8175c640 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/build-aux/install-sh @@ -0,0 +1,518 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2018-03-11.20; # UTC + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# 'make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. + +tab=' ' +nl=' +' +IFS=" $tab$nl" + +# Set DOITPROG to "echo" to test this script. + +doit=${DOITPROG-} +doit_exec=${doit:-exec} + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} + +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +chgrpcmd= +chmodcmd=$chmodprog +chowncmd= +mvcmd=$mvprog +rmcmd="$rmprog -f" +stripcmd= + +src= +dst= +dir_arg= +dst_arg= + +copy_on_change=false +is_target_a_directory=possibly + +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: + --help display this help and exit. + --version display version info and exit. + + -c (ignored) + -C install only if different (preserve the last data modification time) + -d create directories instead of installing files. + -g GROUP $chgrpprog installed files to GROUP. + -m MODE $chmodprog installed files to MODE. + -o USER $chownprog installed files to USER. + -s $stripprog installed files. + -t DIRECTORY install into DIRECTORY. + -T report an error if DSTFILE is a directory. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG + RMPROG STRIPPROG +" + +while test $# -ne 0; do + case $1 in + -c) ;; + + -C) copy_on_change=true;; + + -d) dir_arg=true;; + + -g) chgrpcmd="$chgrpprog $2" + shift;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + case $mode in + *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; + + -o) chowncmd="$chownprog $2" + shift;; + + -s) stripcmd=$stripprog;; + + -t) + is_target_a_directory=always + dst_arg=$2 + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + shift;; + + -T) is_target_a_directory=never;; + + --version) echo "$0 $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac + shift +done + +# We allow the use of options -d and -T together, by making -d +# take the precedence; this is for compatibility with GNU install. + +if test -n "$dir_arg"; then + if test -n "$dst_arg"; then + echo "$0: target directory not allowed when installing a directory." >&2 + exit 1 + fi +fi + +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call 'install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + if test $# -gt 1 || test "$is_target_a_directory" = always; then + if test ! -d "$dst_arg"; then + echo "$0: $dst_arg: Is not a directory." >&2 + exit 1 + fi + fi +fi + +if test -z "$dir_arg"; then + do_exit='(exit $ret); exit $ret' + trap "ret=129; $do_exit" 1 + trap "ret=130; $do_exit" 2 + trap "ret=141; $do_exit" 13 + trap "ret=143; $do_exit" 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names problematic for 'test' and other utilities. + case $src in + -* | [=\(\)!]) src=./$src;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dst_arg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + dst=$dst_arg + + # If destination is a directory, append the input filename. + if test -d "$dst"; then + if test "$is_target_a_directory" = never; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dstbase=`basename "$src"` + case $dst in + */) dst=$dst$dstbase;; + *) dst=$dst/$dstbase;; + esac + dstdir_status=0 + else + dstdir=`dirname "$dst"` + test -d "$dstdir" + dstdir_status=$? + fi + fi + + case $dstdir in + */) dstdirslash=$dstdir;; + *) dstdirslash=$dstdir/;; + esac + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + # Note that $RANDOM variable is not portable (e.g. dash); Use it + # here however when possible just to lower collision chance. + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + + trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 + + # Because "mkdir -p" follows existing symlinks and we likely work + # directly in world-writeable /tmp, make sure that the '$tmpdir' + # directory is successfully created first before we actually test + # 'mkdir -p' feature. + if (umask $mkdir_umask && + $mkdirprog $mkdir_mode "$tmpdir" && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + test_tmpdir="$tmpdir/a" + ls_ld_tmpdir=`ls -ld "$test_tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null + fi + trap '' 0;; + esac;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # The umask is ridiculous, or mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix='/';; + [-=\(\)!]*) prefix='./';; + *) prefix='';; + esac + + oIFS=$IFS + IFS=/ + set -f + set fnord $dstdir + shift + set +f + IFS=$oIFS + + prefixes= + + for d + do + test X"$d" = X && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=${dstdirslash}_inst.$$_ + rmtmp=${dstdirslash}_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + set +f && + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + then + rm -f "$dsttmp" + else + # Rename the file to the real destination. + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || + + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/thirdparty/protobuf-2.6.1/gtest/build-aux/ltmain.sh b/thirdparty/protobuf-2.6.1/gtest/build-aux/ltmain.sh new file mode 100644 index 00000000..c12c197b --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/build-aux/ltmain.sh @@ -0,0 +1,11249 @@ +#! /bin/sh +## DO NOT EDIT - This file generated from ./build-aux/ltmain.in +## by inline-source v2014-01-03.01 + +# libtool (GNU libtool) 2.4.6 +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit , 1996 + +# Copyright (C) 1996-2015 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +PROGRAM=libtool +PACKAGE=libtool +VERSION="2.4.6 Debian-2.4.6-9" +package_revision=2.4.6 + + +## ------ ## +## Usage. ## +## ------ ## + +# Run './libtool --help' for help with using this script from the +# command line. + + +## ------------------------------- ## +## User overridable command paths. ## +## ------------------------------- ## + +# After configure completes, it has a better idea of some of the +# shell tools we need than the defaults used by the functions shared +# with bootstrap, so set those here where they can still be over- +# ridden by the user, but otherwise take precedence. + +: ${AUTOCONF="autoconf"} +: ${AUTOMAKE="automake"} + + +## -------------------------- ## +## Source external libraries. ## +## -------------------------- ## + +# Much of our low-level functionality needs to be sourced from external +# libraries, which are installed to $pkgauxdir. + +# Set a version string for this script. +scriptversion=2015-01-20.17; # UTC + +# General shell script boiler plate, and helper functions. +# Written by Gary V. Vaughan, 2004 + +# Copyright (C) 2004-2015 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# As a special exception to the GNU General Public License, if you distribute +# this file as part of a program or library that is built using GNU Libtool, +# you may include this file under the same distribution terms that you use +# for the rest of that program. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Please report bugs or propose patches to gary@gnu.org. + + +## ------ ## +## Usage. ## +## ------ ## + +# Evaluate this file near the top of your script to gain access to +# the functions and variables defined here: +# +# . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh +# +# If you need to override any of the default environment variable +# settings, do that before evaluating this file. + + +## -------------------- ## +## Shell normalisation. ## +## -------------------- ## + +# Some shells need a little help to be as Bourne compatible as possible. +# Before doing anything else, make sure all that help has been provided! + +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac +fi + +# NLS nuisances: We save the old values in case they are required later. +_G_user_locale= +_G_safe_locale= +for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES +do + eval "if test set = \"\${$_G_var+set}\"; then + save_$_G_var=\$$_G_var + $_G_var=C + export $_G_var + _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" + _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" + fi" +done + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Make sure IFS has a sensible default +sp=' ' +nl=' +' +IFS="$sp $nl" + +# There are apparently some retarded systems that use ';' as a PATH separator! +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + + +## ------------------------- ## +## Locate command utilities. ## +## ------------------------- ## + + +# func_executable_p FILE +# ---------------------- +# Check that FILE is an executable regular file. +func_executable_p () +{ + test -f "$1" && test -x "$1" +} + + +# func_path_progs PROGS_LIST CHECK_FUNC [PATH] +# -------------------------------------------- +# Search for either a program that responds to --version with output +# containing "GNU", or else returned by CHECK_FUNC otherwise, by +# trying all the directories in PATH with each of the elements of +# PROGS_LIST. +# +# CHECK_FUNC should accept the path to a candidate program, and +# set $func_check_prog_result if it truncates its output less than +# $_G_path_prog_max characters. +func_path_progs () +{ + _G_progs_list=$1 + _G_check_func=$2 + _G_PATH=${3-"$PATH"} + + _G_path_prog_max=0 + _G_path_prog_found=false + _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} + for _G_dir in $_G_PATH; do + IFS=$_G_save_IFS + test -z "$_G_dir" && _G_dir=. + for _G_prog_name in $_G_progs_list; do + for _exeext in '' .EXE; do + _G_path_prog=$_G_dir/$_G_prog_name$_exeext + func_executable_p "$_G_path_prog" || continue + case `"$_G_path_prog" --version 2>&1` in + *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; + *) $_G_check_func $_G_path_prog + func_path_progs_result=$func_check_prog_result + ;; + esac + $_G_path_prog_found && break 3 + done + done + done + IFS=$_G_save_IFS + test -z "$func_path_progs_result" && { + echo "no acceptable sed could be found in \$PATH" >&2 + exit 1 + } +} + + +# We want to be able to use the functions in this file before configure +# has figured out where the best binaries are kept, which means we have +# to search for them ourselves - except when the results are already set +# where we skip the searches. + +# Unless the user overrides by setting SED, search the path for either GNU +# sed, or the sed that truncates its output the least. +test -z "$SED" && { + _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for _G_i in 1 2 3 4 5 6 7; do + _G_sed_script=$_G_sed_script$nl$_G_sed_script + done + echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed + _G_sed_script= + + func_check_prog_sed () + { + _G_path_prog=$1 + + _G_count=0 + printf 0123456789 >conftest.in + while : + do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo '' >> conftest.nl + "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break + diff conftest.out conftest.nl >/dev/null 2>&1 || break + _G_count=`expr $_G_count + 1` + if test "$_G_count" -gt "$_G_path_prog_max"; then + # Best one so far, save it but keep looking for a better one + func_check_prog_result=$_G_path_prog + _G_path_prog_max=$_G_count + fi + # 10*(2^10) chars as input seems more than enough + test 10 -lt "$_G_count" && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out + } + + func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin + rm -f conftest.sed + SED=$func_path_progs_result +} + + +# Unless the user overrides by setting GREP, search the path for either GNU +# grep, or the grep that truncates its output the least. +test -z "$GREP" && { + func_check_prog_grep () + { + _G_path_prog=$1 + + _G_count=0 + _G_path_prog_max=0 + printf 0123456789 >conftest.in + while : + do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo 'GREP' >> conftest.nl + "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break + diff conftest.out conftest.nl >/dev/null 2>&1 || break + _G_count=`expr $_G_count + 1` + if test "$_G_count" -gt "$_G_path_prog_max"; then + # Best one so far, save it but keep looking for a better one + func_check_prog_result=$_G_path_prog + _G_path_prog_max=$_G_count + fi + # 10*(2^10) chars as input seems more than enough + test 10 -lt "$_G_count" && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out + } + + func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin + GREP=$func_path_progs_result +} + + +## ------------------------------- ## +## User overridable command paths. ## +## ------------------------------- ## + +# All uppercase variable names are used for environment variables. These +# variables can be overridden by the user before calling a script that +# uses them if a suitable command of that name is not already available +# in the command search PATH. + +: ${CP="cp -f"} +: ${ECHO="printf %s\n"} +: ${EGREP="$GREP -E"} +: ${FGREP="$GREP -F"} +: ${LN_S="ln -s"} +: ${MAKE="make"} +: ${MKDIR="mkdir"} +: ${MV="mv -f"} +: ${RM="rm -f"} +: ${SHELL="${CONFIG_SHELL-/bin/sh}"} + + +## -------------------- ## +## Useful sed snippets. ## +## -------------------- ## + +sed_dirname='s|/[^/]*$||' +sed_basename='s|^.*/||' + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s|\([`"$\\]\)|\\\1|g' + +# Same as above, but do not quote variable references. +sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution that turns a string into a regex matching for the +# string literally. +sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' + +# Sed substitution that converts a w32 file name or path +# that contains forward slashes, into one that contains +# (escaped) backslashes. A very naive implementation. +sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + +# Re-'\' parameter expansions in output of sed_double_quote_subst that +# were '\'-ed in input to the same. If an odd number of '\' preceded a +# '$' in input to sed_double_quote_subst, that '$' was protected from +# expansion. Since each input '\' is now two '\'s, look for any number +# of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. +_G_bs='\\' +_G_bs2='\\\\' +_G_bs4='\\\\\\\\' +_G_dollar='\$' +sed_double_backslash="\ + s/$_G_bs4/&\\ +/g + s/^$_G_bs2$_G_dollar/$_G_bs&/ + s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g + s/\n//g" + + +## ----------------- ## +## Global variables. ## +## ----------------- ## + +# Except for the global variables explicitly listed below, the following +# functions in the '^func_' namespace, and the '^require_' namespace +# variables initialised in the 'Resource management' section, sourcing +# this file will not pollute your global namespace with anything +# else. There's no portable way to scope variables in Bourne shell +# though, so actually running these functions will sometimes place +# results into a variable named after the function, and often use +# temporary variables in the '^_G_' namespace. If you are careful to +# avoid using those namespaces casually in your sourcing script, things +# should continue to work as you expect. And, of course, you can freely +# overwrite any of the functions or variables defined here before +# calling anything to customize them. + +EXIT_SUCCESS=0 +EXIT_FAILURE=1 +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. + +# Allow overriding, eg assuming that you follow the convention of +# putting '$debug_cmd' at the start of all your functions, you can get +# bash to show function call trace with: +# +# debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name +debug_cmd=${debug_cmd-":"} +exit_cmd=: + +# By convention, finish your script with: +# +# exit $exit_status +# +# so that you can set exit_status to non-zero if you want to indicate +# something went wrong during execution without actually bailing out at +# the point of failure. +exit_status=$EXIT_SUCCESS + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath=$0 + +# The name of this program. +progname=`$ECHO "$progpath" |$SED "$sed_basename"` + +# Make sure we have an absolute progpath for reexecution: +case $progpath in + [\\/]*|[A-Za-z]:\\*) ;; + *[\\/]*) + progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` + progdir=`cd "$progdir" && pwd` + progpath=$progdir/$progname + ;; + *) + _G_IFS=$IFS + IFS=${PATH_SEPARATOR-:} + for progdir in $PATH; do + IFS=$_G_IFS + test -x "$progdir/$progname" && break + done + IFS=$_G_IFS + test -n "$progdir" || progdir=`pwd` + progpath=$progdir/$progname + ;; +esac + + +## ----------------- ## +## Standard options. ## +## ----------------- ## + +# The following options affect the operation of the functions defined +# below, and should be set appropriately depending on run-time para- +# meters passed on the command line. + +opt_dry_run=false +opt_quiet=false +opt_verbose=false + +# Categories 'all' and 'none' are always available. Append any others +# you will pass as the first argument to func_warning from your own +# code. +warning_categories= + +# By default, display warnings according to 'opt_warning_types'. Set +# 'warning_func' to ':' to elide all warnings, or func_fatal_error to +# treat the next displayed warning as a fatal error. +warning_func=func_warn_and_continue + +# Set to 'all' to display all warnings, 'none' to suppress all +# warnings, or a space delimited list of some subset of +# 'warning_categories' to display only the listed warnings. +opt_warning_types=all + + +## -------------------- ## +## Resource management. ## +## -------------------- ## + +# This section contains definitions for functions that each ensure a +# particular resource (a file, or a non-empty configuration variable for +# example) is available, and if appropriate to extract default values +# from pertinent package files. Call them using their associated +# 'require_*' variable to ensure that they are executed, at most, once. +# +# It's entirely deliberate that calling these functions can set +# variables that don't obey the namespace limitations obeyed by the rest +# of this file, in order that that they be as useful as possible to +# callers. + + +# require_term_colors +# ------------------- +# Allow display of bold text on terminals that support it. +require_term_colors=func_require_term_colors +func_require_term_colors () +{ + $debug_cmd + + test -t 1 && { + # COLORTERM and USE_ANSI_COLORS environment variables take + # precedence, because most terminfo databases neglect to describe + # whether color sequences are supported. + test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} + + if test 1 = "$USE_ANSI_COLORS"; then + # Standard ANSI escape sequences + tc_reset='' + tc_bold=''; tc_standout='' + tc_red=''; tc_green='' + tc_blue=''; tc_cyan='' + else + # Otherwise trust the terminfo database after all. + test -n "`tput sgr0 2>/dev/null`" && { + tc_reset=`tput sgr0` + test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` + tc_standout=$tc_bold + test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` + test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` + test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` + test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` + test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` + } + fi + } + + require_term_colors=: +} + + +## ----------------- ## +## Function library. ## +## ----------------- ## + +# This section contains a variety of useful functions to call in your +# scripts. Take note of the portable wrappers for features provided by +# some modern shells, which will fall back to slower equivalents on +# less featureful shells. + + +# func_append VAR VALUE +# --------------------- +# Append VALUE onto the existing contents of VAR. + + # We should try to minimise forks, especially on Windows where they are + # unreasonably slow, so skip the feature probes when bash or zsh are + # being used: + if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then + : ${_G_HAVE_ARITH_OP="yes"} + : ${_G_HAVE_XSI_OPS="yes"} + # The += operator was introduced in bash 3.1 + case $BASH_VERSION in + [12].* | 3.0 | 3.0*) ;; + *) + : ${_G_HAVE_PLUSEQ_OP="yes"} + ;; + esac + fi + + # _G_HAVE_PLUSEQ_OP + # Can be empty, in which case the shell is probed, "yes" if += is + # useable or anything else if it does not work. + test -z "$_G_HAVE_PLUSEQ_OP" \ + && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ + && _G_HAVE_PLUSEQ_OP=yes + +if test yes = "$_G_HAVE_PLUSEQ_OP" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_append () + { + $debug_cmd + + eval "$1+=\$2" + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_append () + { + $debug_cmd + + eval "$1=\$$1\$2" + } +fi + + +# func_append_quoted VAR VALUE +# ---------------------------- +# Quote VALUE and append to the end of shell variable VAR, separated +# by a space. +if test yes = "$_G_HAVE_PLUSEQ_OP"; then + eval 'func_append_quoted () + { + $debug_cmd + + func_quote_for_eval "$2" + eval "$1+=\\ \$func_quote_for_eval_result" + }' +else + func_append_quoted () + { + $debug_cmd + + func_quote_for_eval "$2" + eval "$1=\$$1\\ \$func_quote_for_eval_result" + } +fi + + +# func_append_uniq VAR VALUE +# -------------------------- +# Append unique VALUE onto the existing contents of VAR, assuming +# entries are delimited by the first character of VALUE. For example: +# +# func_append_uniq options " --another-option option-argument" +# +# will only append to $options if " --another-option option-argument " +# is not already present somewhere in $options already (note spaces at +# each end implied by leading space in second argument). +func_append_uniq () +{ + $debug_cmd + + eval _G_current_value='`$ECHO $'$1'`' + _G_delim=`expr "$2" : '\(.\)'` + + case $_G_delim$_G_current_value$_G_delim in + *"$2$_G_delim"*) ;; + *) func_append "$@" ;; + esac +} + + +# func_arith TERM... +# ------------------ +# Set func_arith_result to the result of evaluating TERMs. + test -z "$_G_HAVE_ARITH_OP" \ + && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ + && _G_HAVE_ARITH_OP=yes + +if test yes = "$_G_HAVE_ARITH_OP"; then + eval 'func_arith () + { + $debug_cmd + + func_arith_result=$(( $* )) + }' +else + func_arith () + { + $debug_cmd + + func_arith_result=`expr "$@"` + } +fi + + +# func_basename FILE +# ------------------ +# Set func_basename_result to FILE with everything up to and including +# the last / stripped. +if test yes = "$_G_HAVE_XSI_OPS"; then + # If this shell supports suffix pattern removal, then use it to avoid + # forking. Hide the definitions single quotes in case the shell chokes + # on unsupported syntax... + _b='func_basename_result=${1##*/}' + _d='case $1 in + */*) func_dirname_result=${1%/*}$2 ;; + * ) func_dirname_result=$3 ;; + esac' + +else + # ...otherwise fall back to using sed. + _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' + _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` + if test "X$func_dirname_result" = "X$1"; then + func_dirname_result=$3 + else + func_append func_dirname_result "$2" + fi' +fi + +eval 'func_basename () +{ + $debug_cmd + + '"$_b"' +}' + + +# func_dirname FILE APPEND NONDIR_REPLACEMENT +# ------------------------------------------- +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +eval 'func_dirname () +{ + $debug_cmd + + '"$_d"' +}' + + +# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT +# -------------------------------------------------------- +# Perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# For efficiency, we do not delegate to the functions above but instead +# duplicate the functionality here. +eval 'func_dirname_and_basename () +{ + $debug_cmd + + '"$_b"' + '"$_d"' +}' + + +# func_echo ARG... +# ---------------- +# Echo program name prefixed message. +func_echo () +{ + $debug_cmd + + _G_message=$* + + func_echo_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_IFS + $ECHO "$progname: $_G_line" + done + IFS=$func_echo_IFS +} + + +# func_echo_all ARG... +# -------------------- +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + + +# func_echo_infix_1 INFIX ARG... +# ------------------------------ +# Echo program name, followed by INFIX on the first line, with any +# additional lines not showing INFIX. +func_echo_infix_1 () +{ + $debug_cmd + + $require_term_colors + + _G_infix=$1; shift + _G_indent=$_G_infix + _G_prefix="$progname: $_G_infix: " + _G_message=$* + + # Strip color escape sequences before counting printable length + for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" + do + test -n "$_G_tc" && { + _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` + _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` + } + done + _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes + + func_echo_infix_1_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_infix_1_IFS + $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 + _G_prefix=$_G_indent + done + IFS=$func_echo_infix_1_IFS +} + + +# func_error ARG... +# ----------------- +# Echo program name prefixed message to standard error. +func_error () +{ + $debug_cmd + + $require_term_colors + + func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 +} + + +# func_fatal_error ARG... +# ----------------------- +# Echo program name prefixed message to standard error, and exit. +func_fatal_error () +{ + $debug_cmd + + func_error "$*" + exit $EXIT_FAILURE +} + + +# func_grep EXPRESSION FILENAME +# ----------------------------- +# Check whether EXPRESSION matches any line of FILENAME, without output. +func_grep () +{ + $debug_cmd + + $GREP "$1" "$2" >/dev/null 2>&1 +} + + +# func_len STRING +# --------------- +# Set func_len_result to the length of STRING. STRING may not +# start with a hyphen. + test -z "$_G_HAVE_XSI_OPS" \ + && (eval 'x=a/b/c; + test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ + && _G_HAVE_XSI_OPS=yes + +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_len () + { + $debug_cmd + + func_len_result=${#1} + }' +else + func_len () + { + $debug_cmd + + func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` + } +fi + + +# func_mkdir_p DIRECTORY-PATH +# --------------------------- +# Make sure the entire path to DIRECTORY-PATH is available. +func_mkdir_p () +{ + $debug_cmd + + _G_directory_path=$1 + _G_dir_list= + + if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then + + # Protect directory names starting with '-' + case $_G_directory_path in + -*) _G_directory_path=./$_G_directory_path ;; + esac + + # While some portion of DIR does not yet exist... + while test ! -d "$_G_directory_path"; do + # ...make a list in topmost first order. Use a colon delimited + # list incase some portion of path contains whitespace. + _G_dir_list=$_G_directory_path:$_G_dir_list + + # If the last portion added has no slash in it, the list is done + case $_G_directory_path in */*) ;; *) break ;; esac + + # ...otherwise throw away the child directory and loop + _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` + done + _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` + + func_mkdir_p_IFS=$IFS; IFS=: + for _G_dir in $_G_dir_list; do + IFS=$func_mkdir_p_IFS + # mkdir can fail with a 'File exist' error if two processes + # try to create one of the directories concurrently. Don't + # stop in that case! + $MKDIR "$_G_dir" 2>/dev/null || : + done + IFS=$func_mkdir_p_IFS + + # Bail out if we (or some other process) failed to create a directory. + test -d "$_G_directory_path" || \ + func_fatal_error "Failed to create '$1'" + fi +} + + +# func_mktempdir [BASENAME] +# ------------------------- +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, BASENAME is the basename for that directory. +func_mktempdir () +{ + $debug_cmd + + _G_template=${TMPDIR-/tmp}/${1-$progname} + + if test : = "$opt_dry_run"; then + # Return a directory name, but don't create it in dry-run mode + _G_tmpdir=$_G_template-$$ + else + + # If mktemp works, use that first and foremost + _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` + + if test ! -d "$_G_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + _G_tmpdir=$_G_template-${RANDOM-0}$$ + + func_mktempdir_umask=`umask` + umask 0077 + $MKDIR "$_G_tmpdir" + umask $func_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$_G_tmpdir" || \ + func_fatal_error "cannot create temporary directory '$_G_tmpdir'" + fi + + $ECHO "$_G_tmpdir" +} + + +# func_normal_abspath PATH +# ------------------------ +# Remove doubled-up and trailing slashes, "." path components, +# and cancel out any ".." path components in PATH after making +# it an absolute path. +func_normal_abspath () +{ + $debug_cmd + + # These SED scripts presuppose an absolute path with a trailing slash. + _G_pathcar='s|^/\([^/]*\).*$|\1|' + _G_pathcdr='s|^/[^/]*||' + _G_removedotparts=':dotsl + s|/\./|/|g + t dotsl + s|/\.$|/|' + _G_collapseslashes='s|/\{1,\}|/|g' + _G_finalslash='s|/*$|/|' + + # Start from root dir and reassemble the path. + func_normal_abspath_result= + func_normal_abspath_tpath=$1 + func_normal_abspath_altnamespace= + case $func_normal_abspath_tpath in + "") + # Empty path, that just means $cwd. + func_stripname '' '/' "`pwd`" + func_normal_abspath_result=$func_stripname_result + return + ;; + # The next three entries are used to spot a run of precisely + # two leading slashes without using negated character classes; + # we take advantage of case's first-match behaviour. + ///*) + # Unusual form of absolute path, do nothing. + ;; + //*) + # Not necessarily an ordinary path; POSIX reserves leading '//' + # and for example Cygwin uses it to access remote file shares + # over CIFS/SMB, so we conserve a leading double slash if found. + func_normal_abspath_altnamespace=/ + ;; + /*) + # Absolute path, do nothing. + ;; + *) + # Relative path, prepend $cwd. + func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath + ;; + esac + + # Cancel out all the simple stuff to save iterations. We also want + # the path to end with a slash for ease of parsing, so make sure + # there is one (and only one) here. + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` + while :; do + # Processed it all yet? + if test / = "$func_normal_abspath_tpath"; then + # If we ascended to the root using ".." the result may be empty now. + if test -z "$func_normal_abspath_result"; then + func_normal_abspath_result=/ + fi + break + fi + func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_pathcar"` + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_pathcdr"` + # Figure out what to do with it + case $func_normal_abspath_tcomponent in + "") + # Trailing empty path component, ignore it. + ;; + ..) + # Parent dir; strip last assembled component from result. + func_dirname "$func_normal_abspath_result" + func_normal_abspath_result=$func_dirname_result + ;; + *) + # Actual path component, append it. + func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" + ;; + esac + done + # Restore leading double-slash if one was found on entry. + func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result +} + + +# func_notquiet ARG... +# -------------------- +# Echo program name prefixed message only when not in quiet mode. +func_notquiet () +{ + $debug_cmd + + $opt_quiet || func_echo ${1+"$@"} + + # A bug in bash halts the script if the last line of a function + # fails when set -e is in force, so we need another command to + # work around that: + : +} + + +# func_relative_path SRCDIR DSTDIR +# -------------------------------- +# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. +func_relative_path () +{ + $debug_cmd + + func_relative_path_result= + func_normal_abspath "$1" + func_relative_path_tlibdir=$func_normal_abspath_result + func_normal_abspath "$2" + func_relative_path_tbindir=$func_normal_abspath_result + + # Ascend the tree starting from libdir + while :; do + # check if we have found a prefix of bindir + case $func_relative_path_tbindir in + $func_relative_path_tlibdir) + # found an exact match + func_relative_path_tcancelled= + break + ;; + $func_relative_path_tlibdir*) + # found a matching prefix + func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" + func_relative_path_tcancelled=$func_stripname_result + if test -z "$func_relative_path_result"; then + func_relative_path_result=. + fi + break + ;; + *) + func_dirname $func_relative_path_tlibdir + func_relative_path_tlibdir=$func_dirname_result + if test -z "$func_relative_path_tlibdir"; then + # Have to descend all the way to the root! + func_relative_path_result=../$func_relative_path_result + func_relative_path_tcancelled=$func_relative_path_tbindir + break + fi + func_relative_path_result=../$func_relative_path_result + ;; + esac + done + + # Now calculate path; take care to avoid doubling-up slashes. + func_stripname '' '/' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + func_stripname '/' '/' "$func_relative_path_tcancelled" + if test -n "$func_stripname_result"; then + func_append func_relative_path_result "/$func_stripname_result" + fi + + # Normalisation. If bindir is libdir, return '.' else relative path. + if test -n "$func_relative_path_result"; then + func_stripname './' '' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + fi + + test -n "$func_relative_path_result" || func_relative_path_result=. + + : +} + + +# func_quote_for_eval ARG... +# -------------------------- +# Aesthetically quote ARGs to be evaled later. +# This function returns two values: +# i) func_quote_for_eval_result +# double-quoted, suitable for a subsequent eval +# ii) func_quote_for_eval_unquoted_result +# has all characters that are still active within double +# quotes backslashified. +func_quote_for_eval () +{ + $debug_cmd + + func_quote_for_eval_unquoted_result= + func_quote_for_eval_result= + while test 0 -lt $#; do + case $1 in + *[\\\`\"\$]*) + _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; + *) + _G_unquoted_arg=$1 ;; + esac + if test -n "$func_quote_for_eval_unquoted_result"; then + func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" + else + func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" + fi + + case $_G_unquoted_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting, command substitution and variable expansion + # for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + _G_quoted_arg=\"$_G_unquoted_arg\" + ;; + *) + _G_quoted_arg=$_G_unquoted_arg + ;; + esac + + if test -n "$func_quote_for_eval_result"; then + func_append func_quote_for_eval_result " $_G_quoted_arg" + else + func_append func_quote_for_eval_result "$_G_quoted_arg" + fi + shift + done +} + + +# func_quote_for_expand ARG +# ------------------------- +# Aesthetically quote ARG to be evaled later; same as above, +# but do not quote variable references. +func_quote_for_expand () +{ + $debug_cmd + + case $1 in + *[\\\`\"]*) + _G_arg=`$ECHO "$1" | $SED \ + -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; + *) + _G_arg=$1 ;; + esac + + case $_G_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting and command substitution for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + _G_arg=\"$_G_arg\" + ;; + esac + + func_quote_for_expand_result=$_G_arg +} + + +# func_stripname PREFIX SUFFIX NAME +# --------------------------------- +# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_stripname () + { + $debug_cmd + + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary variable first. + func_stripname_result=$3 + func_stripname_result=${func_stripname_result#"$1"} + func_stripname_result=${func_stripname_result%"$2"} + }' +else + func_stripname () + { + $debug_cmd + + case $2 in + .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; + *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; + esac + } +fi + + +# func_show_eval CMD [FAIL_EXP] +# ----------------------------- +# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. +func_show_eval () +{ + $debug_cmd + + _G_cmd=$1 + _G_fail_exp=${2-':'} + + func_quote_for_expand "$_G_cmd" + eval "func_notquiet $func_quote_for_expand_result" + + $opt_dry_run || { + eval "$_G_cmd" + _G_status=$? + if test 0 -ne "$_G_status"; then + eval "(exit $_G_status); $_G_fail_exp" + fi + } +} + + +# func_show_eval_locale CMD [FAIL_EXP] +# ------------------------------------ +# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. Use the saved locale for evaluation. +func_show_eval_locale () +{ + $debug_cmd + + _G_cmd=$1 + _G_fail_exp=${2-':'} + + $opt_quiet || { + func_quote_for_expand "$_G_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + $opt_dry_run || { + eval "$_G_user_locale + $_G_cmd" + _G_status=$? + eval "$_G_safe_locale" + if test 0 -ne "$_G_status"; then + eval "(exit $_G_status); $_G_fail_exp" + fi + } +} + + +# func_tr_sh +# ---------- +# Turn $1 into a string suitable for a shell variable name. +# Result is stored in $func_tr_sh_result. All characters +# not in the set a-zA-Z0-9_ are replaced with '_'. Further, +# if $1 begins with a digit, a '_' is prepended as well. +func_tr_sh () +{ + $debug_cmd + + case $1 in + [0-9]* | *[!a-zA-Z0-9_]*) + func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` + ;; + * ) + func_tr_sh_result=$1 + ;; + esac +} + + +# func_verbose ARG... +# ------------------- +# Echo program name prefixed message in verbose mode only. +func_verbose () +{ + $debug_cmd + + $opt_verbose && func_echo "$*" + + : +} + + +# func_warn_and_continue ARG... +# ----------------------------- +# Echo program name prefixed warning message to standard error. +func_warn_and_continue () +{ + $debug_cmd + + $require_term_colors + + func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 +} + + +# func_warning CATEGORY ARG... +# ---------------------------- +# Echo program name prefixed warning message to standard error. Warning +# messages can be filtered according to CATEGORY, where this function +# elides messages where CATEGORY is not listed in the global variable +# 'opt_warning_types'. +func_warning () +{ + $debug_cmd + + # CATEGORY must be in the warning_categories list! + case " $warning_categories " in + *" $1 "*) ;; + *) func_internal_error "invalid warning category '$1'" ;; + esac + + _G_category=$1 + shift + + case " $opt_warning_types " in + *" $_G_category "*) $warning_func ${1+"$@"} ;; + esac +} + + +# func_sort_ver VER1 VER2 +# ----------------------- +# 'sort -V' is not generally available. +# Note this deviates from the version comparison in automake +# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a +# but this should suffice as we won't be specifying old +# version formats or redundant trailing .0 in bootstrap.conf. +# If we did want full compatibility then we should probably +# use m4_version_compare from autoconf. +func_sort_ver () +{ + $debug_cmd + + printf '%s\n%s\n' "$1" "$2" \ + | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n +} + +# func_lt_ver PREV CURR +# --------------------- +# Return true if PREV and CURR are in the correct order according to +# func_sort_ver, otherwise false. Use it like this: +# +# func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." +func_lt_ver () +{ + $debug_cmd + + test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` +} + + +# Local variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" +# time-stamp-time-zone: "UTC" +# End: +#! /bin/sh + +# Set a version string for this script. +scriptversion=2015-10-07.11; # UTC + +# A portable, pluggable option parser for Bourne shell. +# Written by Gary V. Vaughan, 2010 + +# Copyright (C) 2010-2015 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Please report bugs or propose patches to gary@gnu.org. + + +## ------ ## +## Usage. ## +## ------ ## + +# This file is a library for parsing options in your shell scripts along +# with assorted other useful supporting features that you can make use +# of too. +# +# For the simplest scripts you might need only: +# +# #!/bin/sh +# . relative/path/to/funclib.sh +# . relative/path/to/options-parser +# scriptversion=1.0 +# func_options ${1+"$@"} +# eval set dummy "$func_options_result"; shift +# ...rest of your script... +# +# In order for the '--version' option to work, you will need to have a +# suitably formatted comment like the one at the top of this file +# starting with '# Written by ' and ending with '# warranty; '. +# +# For '-h' and '--help' to work, you will also need a one line +# description of your script's purpose in a comment directly above the +# '# Written by ' line, like the one at the top of this file. +# +# The default options also support '--debug', which will turn on shell +# execution tracing (see the comment above debug_cmd below for another +# use), and '--verbose' and the func_verbose function to allow your script +# to display verbose messages only when your user has specified +# '--verbose'. +# +# After sourcing this file, you can plug processing for additional +# options by amending the variables from the 'Configuration' section +# below, and following the instructions in the 'Option parsing' +# section further down. + +## -------------- ## +## Configuration. ## +## -------------- ## + +# You should override these variables in your script after sourcing this +# file so that they reflect the customisations you have added to the +# option parser. + +# The usage line for option parsing errors and the start of '-h' and +# '--help' output messages. You can embed shell variables for delayed +# expansion at the time the message is displayed, but you will need to +# quote other shell meta-characters carefully to prevent them being +# expanded when the contents are evaled. +usage='$progpath [OPTION]...' + +# Short help message in response to '-h' and '--help'. Add to this or +# override it after sourcing this library to reflect the full set of +# options your script accepts. +usage_message="\ + --debug enable verbose shell tracing + -W, --warnings=CATEGORY + report the warnings falling in CATEGORY [all] + -v, --verbose verbosely report processing + --version print version information and exit + -h, --help print short or long help message and exit +" + +# Additional text appended to 'usage_message' in response to '--help'. +long_help_message=" +Warning categories include: + 'all' show all warnings + 'none' turn off all the warnings + 'error' warnings are treated as fatal errors" + +# Help message printed before fatal option parsing errors. +fatal_help="Try '\$progname --help' for more information." + + + +## ------------------------- ## +## Hook function management. ## +## ------------------------- ## + +# This section contains functions for adding, removing, and running hooks +# to the main code. A hook is just a named list of of function, that can +# be run in order later on. + +# func_hookable FUNC_NAME +# ----------------------- +# Declare that FUNC_NAME will run hooks added with +# 'func_add_hook FUNC_NAME ...'. +func_hookable () +{ + $debug_cmd + + func_append hookable_fns " $1" +} + + +# func_add_hook FUNC_NAME HOOK_FUNC +# --------------------------------- +# Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must +# first have been declared "hookable" by a call to 'func_hookable'. +func_add_hook () +{ + $debug_cmd + + case " $hookable_fns " in + *" $1 "*) ;; + *) func_fatal_error "'$1' does not accept hook functions." ;; + esac + + eval func_append ${1}_hooks '" $2"' +} + + +# func_remove_hook FUNC_NAME HOOK_FUNC +# ------------------------------------ +# Remove HOOK_FUNC from the list of functions called by FUNC_NAME. +func_remove_hook () +{ + $debug_cmd + + eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' +} + + +# func_run_hooks FUNC_NAME [ARG]... +# --------------------------------- +# Run all hook functions registered to FUNC_NAME. +# It is assumed that the list of hook functions contains nothing more +# than a whitespace-delimited list of legal shell function names, and +# no effort is wasted trying to catch shell meta-characters or preserve +# whitespace. +func_run_hooks () +{ + $debug_cmd + + _G_rc_run_hooks=false + + case " $hookable_fns " in + *" $1 "*) ;; + *) func_fatal_error "'$1' does not support hook funcions.n" ;; + esac + + eval _G_hook_fns=\$$1_hooks; shift + + for _G_hook in $_G_hook_fns; do + if eval $_G_hook '"$@"'; then + # store returned options list back into positional + # parameters for next 'cmd' execution. + eval _G_hook_result=\$${_G_hook}_result + eval set dummy "$_G_hook_result"; shift + _G_rc_run_hooks=: + fi + done + + $_G_rc_run_hooks && func_run_hooks_result=$_G_hook_result +} + + + +## --------------- ## +## Option parsing. ## +## --------------- ## + +# In order to add your own option parsing hooks, you must accept the +# full positional parameter list in your hook function, you may remove/edit +# any options that you action, and then pass back the remaining unprocessed +# options in '_result', escaped suitably for +# 'eval'. In this case you also must return $EXIT_SUCCESS to let the +# hook's caller know that it should pay attention to +# '_result'. Returning $EXIT_FAILURE signalizes that +# arguments are left untouched by the hook and therefore caller will ignore the +# result variable. +# +# Like this: +# +# my_options_prep () +# { +# $debug_cmd +# +# # Extend the existing usage message. +# usage_message=$usage_message' +# -s, --silent don'\''t print informational messages +# ' +# # No change in '$@' (ignored completely by this hook). There is +# # no need to do the equivalent (but slower) action: +# # func_quote_for_eval ${1+"$@"} +# # my_options_prep_result=$func_quote_for_eval_result +# false +# } +# func_add_hook func_options_prep my_options_prep +# +# +# my_silent_option () +# { +# $debug_cmd +# +# args_changed=false +# +# # Note that for efficiency, we parse as many options as we can +# # recognise in a loop before passing the remainder back to the +# # caller on the first unrecognised argument we encounter. +# while test $# -gt 0; do +# opt=$1; shift +# case $opt in +# --silent|-s) opt_silent=: +# args_changed=: +# ;; +# # Separate non-argument short options: +# -s*) func_split_short_opt "$_G_opt" +# set dummy "$func_split_short_opt_name" \ +# "-$func_split_short_opt_arg" ${1+"$@"} +# shift +# args_changed=: +# ;; +# *) # Make sure the first unrecognised option "$_G_opt" +# # is added back to "$@", we could need that later +# # if $args_changed is true. +# set dummy "$_G_opt" ${1+"$@"}; shift; break ;; +# esac +# done +# +# if $args_changed; then +# func_quote_for_eval ${1+"$@"} +# my_silent_option_result=$func_quote_for_eval_result +# fi +# +# $args_changed +# } +# func_add_hook func_parse_options my_silent_option +# +# +# my_option_validation () +# { +# $debug_cmd +# +# $opt_silent && $opt_verbose && func_fatal_help "\ +# '--silent' and '--verbose' options are mutually exclusive." +# +# false +# } +# func_add_hook func_validate_options my_option_validation +# +# You'll also need to manually amend $usage_message to reflect the extra +# options you parse. It's preferable to append if you can, so that +# multiple option parsing hooks can be added safely. + + +# func_options_finish [ARG]... +# ---------------------------- +# Finishing the option parse loop (call 'func_options' hooks ATM). +func_options_finish () +{ + $debug_cmd + + _G_func_options_finish_exit=false + if func_run_hooks func_options ${1+"$@"}; then + func_options_finish_result=$func_run_hooks_result + _G_func_options_finish_exit=: + fi + + $_G_func_options_finish_exit +} + + +# func_options [ARG]... +# --------------------- +# All the functions called inside func_options are hookable. See the +# individual implementations for details. +func_hookable func_options +func_options () +{ + $debug_cmd + + _G_rc_options=false + + for my_func in options_prep parse_options validate_options options_finish + do + if eval func_$my_func '${1+"$@"}'; then + eval _G_res_var='$'"func_${my_func}_result" + eval set dummy "$_G_res_var" ; shift + _G_rc_options=: + fi + done + + # Save modified positional parameters for caller. As a top-level + # options-parser function we always need to set the 'func_options_result' + # variable (regardless the $_G_rc_options value). + if $_G_rc_options; then + func_options_result=$_G_res_var + else + func_quote_for_eval ${1+"$@"} + func_options_result=$func_quote_for_eval_result + fi + + $_G_rc_options +} + + +# func_options_prep [ARG]... +# -------------------------- +# All initialisations required before starting the option parse loop. +# Note that when calling hook functions, we pass through the list of +# positional parameters. If a hook function modifies that list, and +# needs to propagate that back to rest of this script, then the complete +# modified list must be put in 'func_run_hooks_result' before +# returning $EXIT_SUCCESS (otherwise $EXIT_FAILURE is returned). +func_hookable func_options_prep +func_options_prep () +{ + $debug_cmd + + # Option defaults: + opt_verbose=false + opt_warning_types= + + _G_rc_options_prep=false + if func_run_hooks func_options_prep ${1+"$@"}; then + _G_rc_options_prep=: + # save modified positional parameters for caller + func_options_prep_result=$func_run_hooks_result + fi + + $_G_rc_options_prep +} + + +# func_parse_options [ARG]... +# --------------------------- +# The main option parsing loop. +func_hookable func_parse_options +func_parse_options () +{ + $debug_cmd + + func_parse_options_result= + + _G_rc_parse_options=false + # this just eases exit handling + while test $# -gt 0; do + # Defer to hook functions for initial option parsing, so they + # get priority in the event of reusing an option name. + if func_run_hooks func_parse_options ${1+"$@"}; then + eval set dummy "$func_run_hooks_result"; shift + _G_rc_parse_options=: + fi + + # Break out of the loop if we already parsed every option. + test $# -gt 0 || break + + _G_match_parse_options=: + _G_opt=$1 + shift + case $_G_opt in + --debug|-x) debug_cmd='set -x' + func_echo "enabling shell trace mode" + $debug_cmd + ;; + + --no-warnings|--no-warning|--no-warn) + set dummy --warnings none ${1+"$@"} + shift + ;; + + --warnings|--warning|-W) + if test $# = 0 && func_missing_arg $_G_opt; then + _G_rc_parse_options=: + break + fi + case " $warning_categories $1" in + *" $1 "*) + # trailing space prevents matching last $1 above + func_append_uniq opt_warning_types " $1" + ;; + *all) + opt_warning_types=$warning_categories + ;; + *none) + opt_warning_types=none + warning_func=: + ;; + *error) + opt_warning_types=$warning_categories + warning_func=func_fatal_error + ;; + *) + func_fatal_error \ + "unsupported warning category: '$1'" + ;; + esac + shift + ;; + + --verbose|-v) opt_verbose=: ;; + --version) func_version ;; + -\?|-h) func_usage ;; + --help) func_help ;; + + # Separate optargs to long options (plugins may need this): + --*=*) func_split_equals "$_G_opt" + set dummy "$func_split_equals_lhs" \ + "$func_split_equals_rhs" ${1+"$@"} + shift + ;; + + # Separate optargs to short options: + -W*) + func_split_short_opt "$_G_opt" + set dummy "$func_split_short_opt_name" \ + "$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + # Separate non-argument short options: + -\?*|-h*|-v*|-x*) + func_split_short_opt "$_G_opt" + set dummy "$func_split_short_opt_name" \ + "-$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + --) _G_rc_parse_options=: ; break ;; + -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; + *) set dummy "$_G_opt" ${1+"$@"}; shift + _G_match_parse_options=false + break + ;; + esac + + $_G_match_parse_options && _G_rc_parse_options=: + done + + + if $_G_rc_parse_options; then + # save modified positional parameters for caller + func_quote_for_eval ${1+"$@"} + func_parse_options_result=$func_quote_for_eval_result + fi + + $_G_rc_parse_options +} + + +# func_validate_options [ARG]... +# ------------------------------ +# Perform any sanity checks on option settings and/or unconsumed +# arguments. +func_hookable func_validate_options +func_validate_options () +{ + $debug_cmd + + _G_rc_validate_options=false + + # Display all warnings if -W was not given. + test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" + + if func_run_hooks func_validate_options ${1+"$@"}; then + # save modified positional parameters for caller + func_validate_options_result=$func_run_hooks_result + _G_rc_validate_options=: + fi + + # Bail if the options were screwed! + $exit_cmd $EXIT_FAILURE + + $_G_rc_validate_options +} + + + +## ----------------- ## +## Helper functions. ## +## ----------------- ## + +# This section contains the helper functions used by the rest of the +# hookable option parser framework in ascii-betical order. + + +# func_fatal_help ARG... +# ---------------------- +# Echo program name prefixed message to standard error, followed by +# a help hint, and exit. +func_fatal_help () +{ + $debug_cmd + + eval \$ECHO \""Usage: $usage"\" + eval \$ECHO \""$fatal_help"\" + func_error ${1+"$@"} + exit $EXIT_FAILURE +} + + +# func_help +# --------- +# Echo long help message to standard output and exit. +func_help () +{ + $debug_cmd + + func_usage_message + $ECHO "$long_help_message" + exit 0 +} + + +# func_missing_arg ARGNAME +# ------------------------ +# Echo program name prefixed message to standard error and set global +# exit_cmd. +func_missing_arg () +{ + $debug_cmd + + func_error "Missing argument for '$1'." + exit_cmd=exit +} + + +# func_split_equals STRING +# ------------------------ +# Set func_split_equals_lhs and func_split_equals_rhs shell variables after +# splitting STRING at the '=' sign. +test -z "$_G_HAVE_XSI_OPS" \ + && (eval 'x=a/b/c; + test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ + && _G_HAVE_XSI_OPS=yes + +if test yes = "$_G_HAVE_XSI_OPS" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_split_equals () + { + $debug_cmd + + func_split_equals_lhs=${1%%=*} + func_split_equals_rhs=${1#*=} + test "x$func_split_equals_lhs" = "x$1" \ + && func_split_equals_rhs= + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_split_equals () + { + $debug_cmd + + func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` + func_split_equals_rhs= + test "x$func_split_equals_lhs" = "x$1" \ + || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` + } +fi #func_split_equals + + +# func_split_short_opt SHORTOPT +# ----------------------------- +# Set func_split_short_opt_name and func_split_short_opt_arg shell +# variables after splitting SHORTOPT after the 2nd character. +if test yes = "$_G_HAVE_XSI_OPS" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_split_short_opt () + { + $debug_cmd + + func_split_short_opt_arg=${1#??} + func_split_short_opt_name=${1%"$func_split_short_opt_arg"} + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_split_short_opt () + { + $debug_cmd + + func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` + func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` + } +fi #func_split_short_opt + + +# func_usage +# ---------- +# Echo short help message to standard output and exit. +func_usage () +{ + $debug_cmd + + func_usage_message + $ECHO "Run '$progname --help |${PAGER-more}' for full usage" + exit 0 +} + + +# func_usage_message +# ------------------ +# Echo short help message to standard output. +func_usage_message () +{ + $debug_cmd + + eval \$ECHO \""Usage: $usage"\" + echo + $SED -n 's|^# || + /^Written by/{ + x;p;x + } + h + /^Written by/q' < "$progpath" + echo + eval \$ECHO \""$usage_message"\" +} + + +# func_version +# ------------ +# Echo version message to standard output and exit. +func_version () +{ + $debug_cmd + + printf '%s\n' "$progname $scriptversion" + $SED -n ' + /(C)/!b go + :more + /\./!{ + N + s|\n# | | + b more + } + :go + /^# Written by /,/# warranty; / { + s|^# || + s|^# *$|| + s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| + p + } + /^# Written by / { + s|^# || + p + } + /^warranty; /q' < "$progpath" + + exit $? +} + + +# Local variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" +# time-stamp-time-zone: "UTC" +# End: + +# Set a version string. +scriptversion='(GNU libtool) 2.4.6' + + +# func_echo ARG... +# ---------------- +# Libtool also displays the current mode in messages, so override +# funclib.sh func_echo with this custom definition. +func_echo () +{ + $debug_cmd + + _G_message=$* + + func_echo_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_IFS + $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" + done + IFS=$func_echo_IFS +} + + +# func_warning ARG... +# ------------------- +# Libtool warnings are not categorized, so override funclib.sh +# func_warning with this simpler definition. +func_warning () +{ + $debug_cmd + + $warning_func ${1+"$@"} +} + + +## ---------------- ## +## Options parsing. ## +## ---------------- ## + +# Hook in the functions to make sure our own options are parsed during +# the option parsing loop. + +usage='$progpath [OPTION]... [MODE-ARG]...' + +# Short help message in response to '-h'. +usage_message="Options: + --config show all configuration variables + --debug enable verbose shell tracing + -n, --dry-run display commands without modifying any files + --features display basic configuration information and exit + --mode=MODE use operation mode MODE + --no-warnings equivalent to '-Wnone' + --preserve-dup-deps don't remove duplicate dependency libraries + --quiet, --silent don't print informational messages + --tag=TAG use configuration variables from tag TAG + -v, --verbose print more informational messages than default + --version print version information + -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] + -h, --help, --help-all print short, long, or detailed help message +" + +# Additional text appended to 'usage_message' in response to '--help'. +func_help () +{ + $debug_cmd + + func_usage_message + $ECHO "$long_help_message + +MODE must be one of the following: + + clean remove files from the build directory + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. When passed as first option, +'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. +Try '$progname --help --mode=MODE' for a more detailed description of MODE. + +When reporting a bug, please describe a test case to reproduce it and +include the following information: + + host-triplet: $host + shell: $SHELL + compiler: $LTCC + compiler flags: $LTCFLAGS + linker: $LD (gnu? $with_gnu_ld) + version: $progname $scriptversion Debian-2.4.6-9 + automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` + autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` + +Report bugs to . +GNU libtool home page: . +General help using GNU software: ." + exit 0 +} + + +# func_lo2o OBJECT-NAME +# --------------------- +# Transform OBJECT-NAME from a '.lo' suffix to the platform specific +# object suffix. + +lo2o=s/\\.lo\$/.$objext/ +o2lo=s/\\.$objext\$/.lo/ + +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_lo2o () + { + case $1 in + *.lo) func_lo2o_result=${1%.lo}.$objext ;; + * ) func_lo2o_result=$1 ;; + esac + }' + + # func_xform LIBOBJ-OR-SOURCE + # --------------------------- + # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) + # suffix to a '.lo' libtool-object suffix. + eval 'func_xform () + { + func_xform_result=${1%.*}.lo + }' +else + # ...otherwise fall back to using sed. + func_lo2o () + { + func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` + } + + func_xform () + { + func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` + } +fi + + +# func_fatal_configuration ARG... +# ------------------------------- +# Echo program name prefixed message to standard error, followed by +# a configuration failure hint, and exit. +func_fatal_configuration () +{ + func__fatal_error ${1+"$@"} \ + "See the $PACKAGE documentation for more information." \ + "Fatal configuration error." +} + + +# func_config +# ----------- +# Display the configuration for all the tags in this script. +func_config () +{ + re_begincf='^# ### BEGIN LIBTOOL' + re_endcf='^# ### END LIBTOOL' + + # Default configuration. + $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" + + # Now print the configurations for the tags. + for tagname in $taglist; do + $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" + done + + exit $? +} + + +# func_features +# ------------- +# Display the features supported by this script. +func_features () +{ + echo "host: $host" + if test yes = "$build_libtool_libs"; then + echo "enable shared libraries" + else + echo "disable shared libraries" + fi + if test yes = "$build_old_libs"; then + echo "enable static libraries" + else + echo "disable static libraries" + fi + + exit $? +} + + +# func_enable_tag TAGNAME +# ----------------------- +# Verify that TAGNAME is valid, and either flag an error and exit, or +# enable the TAGNAME tag. We also add TAGNAME to the global $taglist +# variable here. +func_enable_tag () +{ + # Global variable: + tagname=$1 + + re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" + re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" + sed_extractcf=/$re_begincf/,/$re_endcf/p + + # Validate tagname. + case $tagname in + *[!-_A-Za-z0-9,/]*) + func_fatal_error "invalid tag name: $tagname" + ;; + esac + + # Don't test for the "default" C tag, as we know it's + # there but not specially marked. + case $tagname in + CC) ;; + *) + if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then + taglist="$taglist $tagname" + + # Evaluate the configuration. Be careful to quote the path + # and the sed script, to avoid splitting on whitespace, but + # also don't use non-portable quotes within backquotes within + # quotes we have to do it in 2 steps: + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` + eval "$extractedcf" + else + func_error "ignoring unknown tag $tagname" + fi + ;; + esac +} + + +# func_check_version_match +# ------------------------ +# Ensure that we are using m4 macros, and libtool script from the same +# release of libtool. +func_check_version_match () +{ + if test "$package_revision" != "$macro_revision"; then + if test "$VERSION" != "$macro_version"; then + if test -z "$macro_version"; then + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from an older release. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + fi + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, +$progname: but the definition of this LT_INIT comes from revision $macro_revision. +$progname: You should recreate aclocal.m4 with macros from revision $package_revision +$progname: of $PACKAGE $VERSION and run autoconf again. +_LT_EOF + fi + + exit $EXIT_MISMATCH + fi +} + + +# libtool_options_prep [ARG]... +# ----------------------------- +# Preparation for options parsed by libtool. +libtool_options_prep () +{ + $debug_mode + + # Option defaults: + opt_config=false + opt_dlopen= + opt_dry_run=false + opt_help=false + opt_mode= + opt_preserve_dup_deps=false + opt_quiet=false + + nonopt= + preserve_args= + + _G_rc_lt_options_prep=: + + # Shorthand for --mode=foo, only valid as the first argument + case $1 in + clean|clea|cle|cl) + shift; set dummy --mode clean ${1+"$@"}; shift + ;; + compile|compil|compi|comp|com|co|c) + shift; set dummy --mode compile ${1+"$@"}; shift + ;; + execute|execut|execu|exec|exe|ex|e) + shift; set dummy --mode execute ${1+"$@"}; shift + ;; + finish|finis|fini|fin|fi|f) + shift; set dummy --mode finish ${1+"$@"}; shift + ;; + install|instal|insta|inst|ins|in|i) + shift; set dummy --mode install ${1+"$@"}; shift + ;; + link|lin|li|l) + shift; set dummy --mode link ${1+"$@"}; shift + ;; + uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; + *) + _G_rc_lt_options_prep=false + ;; + esac + + if $_G_rc_lt_options_prep; then + # Pass back the list of options. + func_quote_for_eval ${1+"$@"} + libtool_options_prep_result=$func_quote_for_eval_result + fi + + $_G_rc_lt_options_prep +} +func_add_hook func_options_prep libtool_options_prep + + +# libtool_parse_options [ARG]... +# --------------------------------- +# Provide handling for libtool specific options. +libtool_parse_options () +{ + $debug_cmd + + _G_rc_lt_parse_options=false + + # Perform our own loop to consume as many options as possible in + # each iteration. + while test $# -gt 0; do + _G_match_lt_parse_options=: + _G_opt=$1 + shift + case $_G_opt in + --dry-run|--dryrun|-n) + opt_dry_run=: + ;; + + --config) func_config ;; + + --dlopen|-dlopen) + opt_dlopen="${opt_dlopen+$opt_dlopen +}$1" + shift + ;; + + --preserve-dup-deps) + opt_preserve_dup_deps=: ;; + + --features) func_features ;; + + --finish) set dummy --mode finish ${1+"$@"}; shift ;; + + --help) opt_help=: ;; + + --help-all) opt_help=': help-all' ;; + + --mode) test $# = 0 && func_missing_arg $_G_opt && break + opt_mode=$1 + case $1 in + # Valid mode arguments: + clean|compile|execute|finish|install|link|relink|uninstall) ;; + + # Catch anything else as an error + *) func_error "invalid argument for $_G_opt" + exit_cmd=exit + break + ;; + esac + shift + ;; + + --no-silent|--no-quiet) + opt_quiet=false + func_append preserve_args " $_G_opt" + ;; + + --no-warnings|--no-warning|--no-warn) + opt_warning=false + func_append preserve_args " $_G_opt" + ;; + + --no-verbose) + opt_verbose=false + func_append preserve_args " $_G_opt" + ;; + + --silent|--quiet) + opt_quiet=: + opt_verbose=false + func_append preserve_args " $_G_opt" + ;; + + --tag) test $# = 0 && func_missing_arg $_G_opt && break + opt_tag=$1 + func_append preserve_args " $_G_opt $1" + func_enable_tag "$1" + shift + ;; + + --verbose|-v) opt_quiet=false + opt_verbose=: + func_append preserve_args " $_G_opt" + ;; + + # An option not handled by this hook function: + *) set dummy "$_G_opt" ${1+"$@"} ; shift + _G_match_lt_parse_options=false + break + ;; + esac + $_G_match_lt_parse_options && _G_rc_lt_parse_options=: + done + + if $_G_rc_lt_parse_options; then + # save modified positional parameters for caller + func_quote_for_eval ${1+"$@"} + libtool_parse_options_result=$func_quote_for_eval_result + fi + + $_G_rc_lt_parse_options +} +func_add_hook func_parse_options libtool_parse_options + + + +# libtool_validate_options [ARG]... +# --------------------------------- +# Perform any sanity checks on option settings and/or unconsumed +# arguments. +libtool_validate_options () +{ + # save first non-option argument + if test 0 -lt $#; then + nonopt=$1 + shift + fi + + # preserve --debug + test : = "$debug_cmd" || func_append preserve_args " --debug" + + case $host in + # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 + # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 + *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) + # don't eliminate duplications in $postdeps and $predeps + opt_duplicate_compiler_generated_deps=: + ;; + *) + opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps + ;; + esac + + $opt_help || { + # Sanity checks first: + func_check_version_match + + test yes != "$build_libtool_libs" \ + && test yes != "$build_old_libs" \ + && func_fatal_configuration "not configured to build any kind of library" + + # Darwin sucks + eval std_shrext=\"$shrext_cmds\" + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$opt_dlopen" && test execute != "$opt_mode"; then + func_error "unrecognized option '-dlopen'" + $ECHO "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help=$help + help="Try '$progname --help --mode=$opt_mode' for more information." + } + + # Pass back the unparsed argument list + func_quote_for_eval ${1+"$@"} + libtool_validate_options_result=$func_quote_for_eval_result +} +func_add_hook func_validate_options libtool_validate_options + + +# Process options as early as possible so that --help and --version +# can return quickly. +func_options ${1+"$@"} +eval set dummy "$func_options_result"; shift + + + +## ----------- ## +## Main. ## +## ----------- ## + +magic='%%%MAGIC variable%%%' +magic_exe='%%%MAGIC EXE variable%%%' + +# Global variables. +extracted_archives= +extracted_serial=0 + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + +# func_generated_by_libtool +# True iff stdin has been generated by Libtool. This function is only +# a basic sanity check; it will hardly flush out determined imposters. +func_generated_by_libtool_p () +{ + $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 +} + +# func_lalib_p file +# True iff FILE is a libtool '.la' library or '.lo' object file. +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_lalib_p () +{ + test -f "$1" && + $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p +} + +# func_lalib_unsafe_p file +# True iff FILE is a libtool '.la' library or '.lo' object file. +# This function implements the same check as func_lalib_p without +# resorting to external programs. To this end, it redirects stdin and +# closes it afterwards, without saving the original file descriptor. +# As a safety measure, use it only where a negative result would be +# fatal anyway. Works if 'file' does not exist. +func_lalib_unsafe_p () +{ + lalib_p=no + if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then + for lalib_p_l in 1 2 3 4 + do + read lalib_p_line + case $lalib_p_line in + \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; + esac + done + exec 0<&5 5<&- + fi + test yes = "$lalib_p" +} + +# func_ltwrapper_script_p file +# True iff FILE is a libtool wrapper script +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_script_p () +{ + test -f "$1" && + $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p +} + +# func_ltwrapper_executable_p file +# True iff FILE is a libtool wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_executable_p () +{ + func_ltwrapper_exec_suffix= + case $1 in + *.exe) ;; + *) func_ltwrapper_exec_suffix=.exe ;; + esac + $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 +} + +# func_ltwrapper_scriptname file +# Assumes file is an ltwrapper_executable +# uses $file to determine the appropriate filename for a +# temporary ltwrapper_script. +func_ltwrapper_scriptname () +{ + func_dirname_and_basename "$1" "" "." + func_stripname '' '.exe' "$func_basename_result" + func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper +} + +# func_ltwrapper_p file +# True iff FILE is a libtool wrapper script or wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_p () +{ + func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" +} + + +# func_execute_cmds commands fail_cmd +# Execute tilde-delimited COMMANDS. +# If FAIL_CMD is given, eval that upon failure. +# FAIL_CMD may read-access the current command in variable CMD! +func_execute_cmds () +{ + $debug_cmd + + save_ifs=$IFS; IFS='~' + for cmd in $1; do + IFS=$sp$nl + eval cmd=\"$cmd\" + IFS=$save_ifs + func_show_eval "$cmd" "${2-:}" + done + IFS=$save_ifs +} + + +# func_source file +# Source FILE, adding directory component if necessary. +# Note that it is not necessary on cygwin/mingw to append a dot to +# FILE even if both FILE and FILE.exe exist: automatic-append-.exe +# behavior happens only for exec(3), not for open(2)! Also, sourcing +# 'FILE.' does not work on cygwin managed mounts. +func_source () +{ + $debug_cmd + + case $1 in + */* | *\\*) . "$1" ;; + *) . "./$1" ;; + esac +} + + +# func_resolve_sysroot PATH +# Replace a leading = in PATH with a sysroot. Store the result into +# func_resolve_sysroot_result +func_resolve_sysroot () +{ + func_resolve_sysroot_result=$1 + case $func_resolve_sysroot_result in + =*) + func_stripname '=' '' "$func_resolve_sysroot_result" + func_resolve_sysroot_result=$lt_sysroot$func_stripname_result + ;; + esac +} + +# func_replace_sysroot PATH +# If PATH begins with the sysroot, replace it with = and +# store the result into func_replace_sysroot_result. +func_replace_sysroot () +{ + case $lt_sysroot:$1 in + ?*:"$lt_sysroot"*) + func_stripname "$lt_sysroot" '' "$1" + func_replace_sysroot_result='='$func_stripname_result + ;; + *) + # Including no sysroot. + func_replace_sysroot_result=$1 + ;; + esac +} + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + $debug_cmd + + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case "$@ " in + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + func_echo "unable to infer tagged configuration" + func_fatal_error "specify a tag with '--tag'" +# else +# func_verbose "using $tagname tagged configuration" + fi + ;; + esac + fi +} + + + +# func_write_libtool_object output_name pic_name nonpic_name +# Create a libtool object file (analogous to a ".la" file), +# but don't create it if we're doing a dry run. +func_write_libtool_object () +{ + write_libobj=$1 + if test yes = "$build_libtool_libs"; then + write_lobj=\'$2\' + else + write_lobj=none + fi + + if test yes = "$build_old_libs"; then + write_oldobj=\'$3\' + else + write_oldobj=none + fi + + $opt_dry_run || { + cat >${write_libobj}T </dev/null` + if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then + func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | + $SED -e "$sed_naive_backslashify"` + else + func_convert_core_file_wine_to_w32_result= + fi + fi +} +# end: func_convert_core_file_wine_to_w32 + + +# func_convert_core_path_wine_to_w32 ARG +# Helper function used by path conversion functions when $build is *nix, and +# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly +# configured wine environment available, with the winepath program in $build's +# $PATH. Assumes ARG has no leading or trailing path separator characters. +# +# ARG is path to be converted from $build format to win32. +# Result is available in $func_convert_core_path_wine_to_w32_result. +# Unconvertible file (directory) names in ARG are skipped; if no directory names +# are convertible, then the result may be empty. +func_convert_core_path_wine_to_w32 () +{ + $debug_cmd + + # unfortunately, winepath doesn't convert paths, only file names + func_convert_core_path_wine_to_w32_result= + if test -n "$1"; then + oldIFS=$IFS + IFS=: + for func_convert_core_path_wine_to_w32_f in $1; do + IFS=$oldIFS + func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" + if test -n "$func_convert_core_file_wine_to_w32_result"; then + if test -z "$func_convert_core_path_wine_to_w32_result"; then + func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result + else + func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" + fi + fi + done + IFS=$oldIFS + fi +} +# end: func_convert_core_path_wine_to_w32 + + +# func_cygpath ARGS... +# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when +# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) +# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or +# (2), returns the Cygwin file name or path in func_cygpath_result (input +# file name or path is assumed to be in w32 format, as previously converted +# from $build's *nix or MSYS format). In case (3), returns the w32 file name +# or path in func_cygpath_result (input file name or path is assumed to be in +# Cygwin format). Returns an empty string on error. +# +# ARGS are passed to cygpath, with the last one being the file name or path to +# be converted. +# +# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH +# environment variable; do not put it in $PATH. +func_cygpath () +{ + $debug_cmd + + if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then + func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` + if test "$?" -ne 0; then + # on failure, ensure result is empty + func_cygpath_result= + fi + else + func_cygpath_result= + func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" + fi +} +#end: func_cygpath + + +# func_convert_core_msys_to_w32 ARG +# Convert file name or path ARG from MSYS format to w32 format. Return +# result in func_convert_core_msys_to_w32_result. +func_convert_core_msys_to_w32 () +{ + $debug_cmd + + # awkward: cmd appends spaces to result + func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | + $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` +} +#end: func_convert_core_msys_to_w32 + + +# func_convert_file_check ARG1 ARG2 +# Verify that ARG1 (a file name in $build format) was converted to $host +# format in ARG2. Otherwise, emit an error message, but continue (resetting +# func_to_host_file_result to ARG1). +func_convert_file_check () +{ + $debug_cmd + + if test -z "$2" && test -n "$1"; then + func_error "Could not determine host file name corresponding to" + func_error " '$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback: + func_to_host_file_result=$1 + fi +} +# end func_convert_file_check + + +# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH +# Verify that FROM_PATH (a path in $build format) was converted to $host +# format in TO_PATH. Otherwise, emit an error message, but continue, resetting +# func_to_host_file_result to a simplistic fallback value (see below). +func_convert_path_check () +{ + $debug_cmd + + if test -z "$4" && test -n "$3"; then + func_error "Could not determine the host path corresponding to" + func_error " '$3'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback. This is a deliberately simplistic "conversion" and + # should not be "improved". See libtool.info. + if test "x$1" != "x$2"; then + lt_replace_pathsep_chars="s|$1|$2|g" + func_to_host_path_result=`echo "$3" | + $SED -e "$lt_replace_pathsep_chars"` + else + func_to_host_path_result=$3 + fi + fi +} +# end func_convert_path_check + + +# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG +# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT +# and appending REPL if ORIG matches BACKPAT. +func_convert_path_front_back_pathsep () +{ + $debug_cmd + + case $4 in + $1 ) func_to_host_path_result=$3$func_to_host_path_result + ;; + esac + case $4 in + $2 ) func_append func_to_host_path_result "$3" + ;; + esac +} +# end func_convert_path_front_back_pathsep + + +################################################## +# $build to $host FILE NAME CONVERSION FUNCTIONS # +################################################## +# invoked via '$to_host_file_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# Result will be available in $func_to_host_file_result. + + +# func_to_host_file ARG +# Converts the file name ARG from $build format to $host format. Return result +# in func_to_host_file_result. +func_to_host_file () +{ + $debug_cmd + + $to_host_file_cmd "$1" +} +# end func_to_host_file + + +# func_to_tool_file ARG LAZY +# converts the file name ARG from $build format to toolchain format. Return +# result in func_to_tool_file_result. If the conversion in use is listed +# in (the comma separated) LAZY, no conversion takes place. +func_to_tool_file () +{ + $debug_cmd + + case ,$2, in + *,"$to_tool_file_cmd",*) + func_to_tool_file_result=$1 + ;; + *) + $to_tool_file_cmd "$1" + func_to_tool_file_result=$func_to_host_file_result + ;; + esac +} +# end func_to_tool_file + + +# func_convert_file_noop ARG +# Copy ARG to func_to_host_file_result. +func_convert_file_noop () +{ + func_to_host_file_result=$1 +} +# end func_convert_file_noop + + +# func_convert_file_msys_to_w32 ARG +# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_file_result. +func_convert_file_msys_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_to_host_file_result=$func_convert_core_msys_to_w32_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_w32 + + +# func_convert_file_cygwin_to_w32 ARG +# Convert file name ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_file_cygwin_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + # because $build is cygwin, we call "the" cygpath in $PATH; no need to use + # LT_CYGPATH in this case. + func_to_host_file_result=`cygpath -m "$1"` + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_cygwin_to_w32 + + +# func_convert_file_nix_to_w32 ARG +# Convert file name ARG from *nix to w32 format. Requires a wine environment +# and a working winepath. Returns result in func_to_host_file_result. +func_convert_file_nix_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_file_wine_to_w32 "$1" + func_to_host_file_result=$func_convert_core_file_wine_to_w32_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_w32 + + +# func_convert_file_msys_to_cygwin ARG +# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_file_msys_to_cygwin () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_cygpath -u "$func_convert_core_msys_to_w32_result" + func_to_host_file_result=$func_cygpath_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_cygwin + + +# func_convert_file_nix_to_cygwin ARG +# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed +# in a wine environment, working winepath, and LT_CYGPATH set. Returns result +# in func_to_host_file_result. +func_convert_file_nix_to_cygwin () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. + func_convert_core_file_wine_to_w32 "$1" + func_cygpath -u "$func_convert_core_file_wine_to_w32_result" + func_to_host_file_result=$func_cygpath_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_cygwin + + +############################################# +# $build to $host PATH CONVERSION FUNCTIONS # +############################################# +# invoked via '$to_host_path_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# The result will be available in $func_to_host_path_result. +# +# Path separators are also converted from $build format to $host format. If +# ARG begins or ends with a path separator character, it is preserved (but +# converted to $host format) on output. +# +# All path conversion functions are named using the following convention: +# file name conversion function : func_convert_file_X_to_Y () +# path conversion function : func_convert_path_X_to_Y () +# where, for any given $build/$host combination the 'X_to_Y' value is the +# same. If conversion functions are added for new $build/$host combinations, +# the two new functions must follow this pattern, or func_init_to_host_path_cmd +# will break. + + +# func_init_to_host_path_cmd +# Ensures that function "pointer" variable $to_host_path_cmd is set to the +# appropriate value, based on the value of $to_host_file_cmd. +to_host_path_cmd= +func_init_to_host_path_cmd () +{ + $debug_cmd + + if test -z "$to_host_path_cmd"; then + func_stripname 'func_convert_file_' '' "$to_host_file_cmd" + to_host_path_cmd=func_convert_path_$func_stripname_result + fi +} + + +# func_to_host_path ARG +# Converts the path ARG from $build format to $host format. Return result +# in func_to_host_path_result. +func_to_host_path () +{ + $debug_cmd + + func_init_to_host_path_cmd + $to_host_path_cmd "$1" +} +# end func_to_host_path + + +# func_convert_path_noop ARG +# Copy ARG to func_to_host_path_result. +func_convert_path_noop () +{ + func_to_host_path_result=$1 +} +# end func_convert_path_noop + + +# func_convert_path_msys_to_w32 ARG +# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_path_result. +func_convert_path_msys_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # Remove leading and trailing path separator characters from ARG. MSYS + # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; + # and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result=$func_convert_core_msys_to_w32_result + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_msys_to_w32 + + +# func_convert_path_cygwin_to_w32 ARG +# Convert path ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_path_cygwin_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_cygwin_to_w32 + + +# func_convert_path_nix_to_w32 ARG +# Convert path ARG from *nix to w32 format. Requires a wine environment and +# a working winepath. Returns result in func_to_host_file_result. +func_convert_path_nix_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result=$func_convert_core_path_wine_to_w32_result + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_nix_to_w32 + + +# func_convert_path_msys_to_cygwin ARG +# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_path_msys_to_cygwin () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_msys_to_w32_result" + func_to_host_path_result=$func_cygpath_result + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_msys_to_cygwin + + +# func_convert_path_nix_to_cygwin ARG +# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a +# a wine environment, working winepath, and LT_CYGPATH set. Returns result in +# func_to_host_file_result. +func_convert_path_nix_to_cygwin () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # Remove leading and trailing path separator characters from + # ARG. msys behavior is inconsistent here, cygpath turns them + # into '.;' and ';.', and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" + func_to_host_path_result=$func_cygpath_result + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_nix_to_cygwin + + +# func_dll_def_p FILE +# True iff FILE is a Windows DLL '.def' file. +# Keep in sync with _LT_DLL_DEF_P in libtool.m4 +func_dll_def_p () +{ + $debug_cmd + + func_dll_def_p_tmp=`$SED -n \ + -e 's/^[ ]*//' \ + -e '/^\(;.*\)*$/d' \ + -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ + -e q \ + "$1"` + test DEF = "$func_dll_def_p_tmp" +} + + +# func_mode_compile arg... +func_mode_compile () +{ + $debug_cmd + + # Get the compilation command and the source file. + base_compile= + srcfile=$nonopt # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + pie_flag= + + for arg + do + case $arg_mode in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg=$arg + arg_mode=normal + ;; + + target ) + libobj=$arg + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + test -n "$libobj" && \ + func_fatal_error "you cannot specify '-o' more than once" + arg_mode=target + continue + ;; + + -pie | -fpie | -fPIE) + func_append pie_flag " $arg" + continue + ;; + + -shared | -static | -prefer-pic | -prefer-non-pic) + func_append later " $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + lastarg= + save_ifs=$IFS; IFS=, + for arg in $args; do + IFS=$save_ifs + func_append_quoted lastarg "$arg" + done + IFS=$save_ifs + func_stripname ' ' '' "$lastarg" + lastarg=$func_stripname_result + + # Add the arguments to base_compile. + func_append base_compile " $lastarg" + continue + ;; + + *) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg=$srcfile + srcfile=$arg + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + func_append_quoted base_compile "$lastarg" + done # for arg + + case $arg_mode in + arg) + func_fatal_error "you must specify an argument for -Xcompile" + ;; + target) + func_fatal_error "you must specify a target with '-o'" + ;; + *) + # Get the name of the library object. + test -z "$libobj" && { + func_basename "$srcfile" + libobj=$func_basename_result + } + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + case $libobj in + *.[cCFSifmso] | \ + *.ada | *.adb | *.ads | *.asm | \ + *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ + *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) + func_xform "$libobj" + libobj=$func_xform_result + ;; + esac + + case $libobj in + *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; + *) + func_fatal_error "cannot determine name of library object from '$libobj'" + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -shared) + test yes = "$build_libtool_libs" \ + || func_fatal_configuration "cannot build a shared library" + build_old_libs=no + continue + ;; + + -static) + build_libtool_libs=no + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + func_quote_for_eval "$libobj" + test "X$libobj" != "X$func_quote_for_eval_result" \ + && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && func_warning "libobj name '$libobj' may not contain shell special characters." + func_dirname_and_basename "$obj" "/" "" + objname=$func_basename_result + xdir=$func_dirname_result + lobj=$xdir$objdir/$objname + + test -z "$base_compile" && \ + func_fatal_help "you must specify a compilation command" + + # Delete any leftover library objects. + if test yes = "$build_old_libs"; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2* | cegcc*) + pic_mode=default + ;; + esac + if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test no = "$compiler_c_o"; then + output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext + lockfile=$output_obj.lock + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test yes = "$need_locks"; then + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + elif test warn = "$need_locks"; then + if test -f "$lockfile"; then + $ECHO "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + func_append removelist " $output_obj" + $ECHO "$srcfile" > "$lockfile" + fi + + $opt_dry_run || $RM $removelist + func_append removelist " $lockfile" + trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 + + func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 + srcfile=$func_to_tool_file_result + func_quote_for_eval "$srcfile" + qsrcfile=$func_quote_for_eval_result + + # Only build a PIC object if we are building libtool libraries. + if test yes = "$build_libtool_libs"; then + # Without this assignment, base_compile gets emptied. + fbsd_hideous_sh_bug=$base_compile + + if test no != "$pic_mode"; then + command="$base_compile $qsrcfile $pic_flag" + else + # Don't build PIC code + command="$base_compile $qsrcfile" + fi + + func_mkdir_p "$xdir$objdir" + + if test -z "$output_obj"; then + # Place PIC objects in $objdir + func_append command " -o $lobj" + fi + + func_show_eval_locale "$command" \ + 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' + + if test warn = "$need_locks" && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + func_show_eval '$MV "$output_obj" "$lobj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + + # Allow error messages only from the first compilation. + if test yes = "$suppress_opt"; then + suppress_output=' >/dev/null 2>&1' + fi + fi + + # Only build a position-dependent object if we build old libraries. + if test yes = "$build_old_libs"; then + if test yes != "$pic_mode"; then + # Don't build PIC code + command="$base_compile $qsrcfile$pie_flag" + else + command="$base_compile $qsrcfile $pic_flag" + fi + if test yes = "$compiler_c_o"; then + func_append command " -o $obj" + fi + + # Suppress compiler output if we already did a PIC compilation. + func_append command "$suppress_output" + func_show_eval_locale "$command" \ + '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' + + if test warn = "$need_locks" && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + func_show_eval '$MV "$output_obj" "$obj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + fi + + $opt_dry_run || { + func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" + + # Unlock the critical section if it was locked + if test no != "$need_locks"; then + removelist=$lockfile + $RM "$lockfile" + fi + } + + exit $EXIT_SUCCESS +} + +$opt_help || { + test compile = "$opt_mode" && func_mode_compile ${1+"$@"} +} + +func_mode_help () +{ + # We need to display help for each of the modes. + case $opt_mode in + "") + # Generic help is extracted from the usage comments + # at the start of this file. + func_help + ;; + + clean) + $ECHO \ +"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + + compile) + $ECHO \ +"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -no-suppress do not suppress compiler output for multiple passes + -prefer-pic try to build PIC objects only + -prefer-non-pic try to build non-PIC objects only + -shared do not build a '.o' file suitable for static linking + -static only build a '.o' file suitable for static linking + -Wc,FLAG pass FLAG directly to the compiler + +COMPILE-COMMAND is a command to be used in creating a 'standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix '.c' with the +library object suffix, '.lo'." + ;; + + execute) + $ECHO \ +"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to '-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + + finish) + $ECHO \ +"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the '--dry-run' option if you just want to see what would be executed." + ;; + + install) + $ECHO \ +"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the 'install' or 'cp' program. + +The following components of INSTALL-COMMAND are treated specially: + + -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + + link) + $ECHO \ +"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -bindir BINDIR specify path to binaries directory (for systems where + libraries must be found in the PATH setting at runtime) + -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE use a list of object files found in FILE to specify objects + -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -shared only do dynamic linking of libtool libraries + -shrext SUFFIX override the standard shared library file extension + -static do not do any dynamic linking of uninstalled libtool libraries + -static-libtool-libs + do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + -weak LIBNAME declare that the target provides the LIBNAME interface + -Wc,FLAG + -Xcompiler FLAG pass linker-specific FLAG directly to the compiler + -Wl,FLAG + -Xlinker FLAG pass linker-specific FLAG directly to the linker + -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) + +All other options (arguments beginning with '-') are ignored. + +Every other argument is treated as a filename. Files ending in '.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in '.la', then a libtool library is created, +only library objects ('.lo' files) may be specified, and '-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created +using 'ar' and 'ranlib', or on Windows using 'lib'. + +If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file +is created, otherwise an executable program is created." + ;; + + uninstall) + $ECHO \ +"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + + *) + func_fatal_help "invalid operation mode '$opt_mode'" + ;; + esac + + echo + $ECHO "Try '$progname --help' for more information about other modes." +} + +# Now that we've collected a possible --mode arg, show help if necessary +if $opt_help; then + if test : = "$opt_help"; then + func_mode_help + else + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + func_mode_help + done + } | $SED -n '1p; 2,$s/^Usage:/ or: /p' + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + echo + func_mode_help + done + } | + $SED '1d + /^When reporting/,/^Report/{ + H + d + } + $x + /information about other modes/d + /more detailed .*MODE/d + s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' + fi + exit $? +fi + + +# func_mode_execute arg... +func_mode_execute () +{ + $debug_cmd + + # The first argument is the command name. + cmd=$nonopt + test -z "$cmd" && \ + func_fatal_help "you must specify a COMMAND" + + # Handle -dlopen flags immediately. + for file in $opt_dlopen; do + test -f "$file" \ + || func_fatal_help "'$file' is not a file" + + dir= + case $file in + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "'$lib' is not a valid libtool archive" + + # Read the libtool library. + dlname= + library_names= + func_source "$file" + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && \ + func_warning "'$file' was not linked with '-export-dynamic'" + continue + fi + + func_dirname "$file" "" "." + dir=$func_dirname_result + + if test -f "$dir/$objdir/$dlname"; then + func_append dir "/$objdir" + else + if test ! -f "$dir/$dlname"; then + func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" + fi + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + func_dirname "$file" "" "." + dir=$func_dirname_result + ;; + + *) + func_warning "'-dlopen' is ignored for non-libtool libraries and objects" + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir=$absdir + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic=$magic + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -* | *.la | *.lo ) ;; + *) + # Do a test to see if this is really a libtool program. + if func_ltwrapper_script_p "$file"; then + func_source "$file" + # Transform arg to wrapped name. + file=$progdir/$program + elif func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + func_source "$func_ltwrapper_scriptname_result" + # Transform arg to wrapped name. + file=$progdir/$program + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + func_append_quoted args "$file" + done + + if $opt_dry_run; then + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" + echo "export $shlibpath_var" + fi + $ECHO "$cmd$args" + exit $EXIT_SUCCESS + else + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES + do + eval "if test \"\${save_$lt_var+set}\" = set; then + $lt_var=\$save_$lt_var; export $lt_var + else + $lt_unset $lt_var + fi" + done + + # Now prepare to actually exec the command. + exec_cmd=\$cmd$args + fi +} + +test execute = "$opt_mode" && func_mode_execute ${1+"$@"} + + +# func_mode_finish arg... +func_mode_finish () +{ + $debug_cmd + + libs= + libdirs= + admincmds= + + for opt in "$nonopt" ${1+"$@"} + do + if test -d "$opt"; then + func_append libdirs " $opt" + + elif test -f "$opt"; then + if func_lalib_unsafe_p "$opt"; then + func_append libs " $opt" + else + func_warning "'$opt' is not a valid libtool archive" + fi + + else + func_fatal_error "invalid argument '$opt'" + fi + done + + if test -n "$libs"; then + if test -n "$lt_sysroot"; then + sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` + sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" + else + sysroot_cmd= + fi + + # Remove sysroot references + if $opt_dry_run; then + for lib in $libs; do + echo "removing references to $lt_sysroot and '=' prefixes from $lib" + done + else + tmpdir=`func_mktempdir` + for lib in $libs; do + $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ + > $tmpdir/tmp-la + mv -f $tmpdir/tmp-la $lib + done + ${RM}r "$tmpdir" + fi + fi + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + func_execute_cmds "$finish_cmds" 'admincmds="$admincmds +'"$cmd"'"' + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $opt_dry_run || eval "$cmds" || func_append admincmds " + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + $opt_quiet && exit $EXIT_SUCCESS + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + echo "----------------------------------------------------------------------" + echo "Libraries have been installed in:" + for libdir in $libdirs; do + $ECHO " $libdir" + done + echo + echo "If you ever happen to want to link against installed libraries" + echo "in a given directory, LIBDIR, you must either use libtool, and" + echo "specify the full pathname of the library, or use the '-LLIBDIR'" + echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + echo " - add LIBDIR to the '$shlibpath_var' environment variable" + echo " during execution" + fi + if test -n "$runpath_var"; then + echo " - add LIBDIR to the '$runpath_var' environment variable" + echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $ECHO " - use the '$flag' linker flag" + fi + if test -n "$admincmds"; then + $ECHO " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" + fi + echo + + echo "See any operating system documentation about shared libraries for" + case $host in + solaris2.[6789]|solaris2.1[0-9]) + echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" + echo "pages." + ;; + *) + echo "more information, such as the ld(1) and ld.so(8) manual pages." + ;; + esac + echo "----------------------------------------------------------------------" + fi + exit $EXIT_SUCCESS +} + +test finish = "$opt_mode" && func_mode_finish ${1+"$@"} + + +# func_mode_install arg... +func_mode_install () +{ + $debug_cmd + + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || + # Allow the use of GNU shtool's install command. + case $nonopt in *shtool*) :;; *) false;; esac + then + # Aesthetically quote it. + func_quote_for_eval "$nonopt" + install_prog="$func_quote_for_eval_result " + arg=$1 + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + func_quote_for_eval "$arg" + func_append install_prog "$func_quote_for_eval_result" + install_shared_prog=$install_prog + case " $install_prog " in + *[\\\ /]cp\ *) install_cp=: ;; + *) install_cp=false ;; + esac + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=false + stripme= + no_mode=: + for arg + do + arg2= + if test -n "$dest"; then + func_append files " $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=: ;; + -f) + if $install_cp; then :; else + prev=$arg + fi + ;; + -g | -m | -o) + prev=$arg + ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + if test X-m = "X$prev" && test -n "$install_override_mode"; then + arg2=$install_override_mode + no_mode=false + fi + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + func_quote_for_eval "$arg" + func_append install_prog " $func_quote_for_eval_result" + if test -n "$arg2"; then + func_quote_for_eval "$arg2" + fi + func_append install_shared_prog " $func_quote_for_eval_result" + done + + test -z "$install_prog" && \ + func_fatal_help "you must specify an install program" + + test -n "$prev" && \ + func_fatal_help "the '$prev' option requires an argument" + + if test -n "$install_override_mode" && $no_mode; then + if $install_cp; then :; else + func_quote_for_eval "$install_override_mode" + func_append install_shared_prog " -m $func_quote_for_eval_result" + fi + fi + + if test -z "$files"; then + if test -z "$dest"; then + func_fatal_help "no file or destination specified" + else + func_fatal_help "you must specify a destination" + fi + fi + + # Strip any trailing slash from the destination. + func_stripname '' '/' "$dest" + dest=$func_stripname_result + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=: + if $isdir; then + destdir=$dest + destname= + else + func_dirname_and_basename "$dest" "" "." + destdir=$func_dirname_result + destname=$func_basename_result + + # Not a directory, so check to see that there is only one file specified. + set dummy $files; shift + test "$#" -gt 1 && \ + func_fatal_help "'$dest' is not a directory" + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + func_fatal_help "'$destdir' must be an absolute directory name" + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic=$magic + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + func_append staticlibs " $file" + ;; + + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "'$file' is not a valid libtool archive" + + library_names= + old_library= + relink_command= + func_source "$file" + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) func_append current_libdirs " $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) func_append future_libdirs " $libdir" ;; + esac + fi + + func_dirname "$file" "/" "" + dir=$func_dirname_result + func_append dir "$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + test "$inst_prefix_dir" = "$destdir" && \ + func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + fi + + func_warning "relinking '$file'" + func_show_eval "$relink_command" \ + 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' + fi + + # See the names of the shared library. + set dummy $library_names; shift + if test -n "$1"; then + realname=$1 + shift + + srcname=$realname + test -n "$relink_command" && srcname=${realname}T + + # Install the shared library and build the symlinks. + func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ + 'exit $?' + tstripme=$stripme + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + case $realname in + *.dll.a) + tstripme= + ;; + esac + ;; + os2*) + case $realname in + *_dll.a) + tstripme= + ;; + esac + ;; + esac + if test -n "$tstripme" && test -n "$striplib"; then + func_show_eval "$striplib $destdir/$realname" 'exit $?' + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try 'ln -sf' first, because the 'ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + test "$linkname" != "$realname" \ + && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" + done + fi + + # Do each command in the postinstall commands. + lib=$destdir/$realname + func_execute_cmds "$postinstall_cmds" 'exit $?' + fi + + # Install the pseudo-library for information purposes. + func_basename "$file" + name=$func_basename_result + instname=$dir/${name}i + func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' + + # Maybe install the static library, too. + test -n "$old_library" && func_append staticlibs " $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile=$destdir/$destname + else + func_basename "$file" + destfile=$func_basename_result + destfile=$destdir/$destfile + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + func_lo2o "$destfile" + staticdest=$func_lo2o_result + ;; + *.$objext) + staticdest=$destfile + destfile= + ;; + *) + func_fatal_help "cannot copy a libtool object to '$destfile'" + ;; + esac + + # Install the libtool object if requested. + test -n "$destfile" && \ + func_show_eval "$install_prog $file $destfile" 'exit $?' + + # Install the old object if enabled. + if test yes = "$build_old_libs"; then + # Deduce the name of the old-style object file. + func_lo2o "$file" + staticobj=$func_lo2o_result + func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile=$destdir/$destname + else + func_basename "$file" + destfile=$func_basename_result + destfile=$destdir/$destfile + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext= + case $file in + *.exe) + if test ! -f "$file"; then + func_stripname '' '.exe' "$file" + file=$func_stripname_result + stripped_ext=.exe + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin* | *mingw*) + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + wrapper=$func_ltwrapper_scriptname_result + else + func_stripname '' '.exe' "$file" + wrapper=$func_stripname_result + fi + ;; + *) + wrapper=$file + ;; + esac + if func_ltwrapper_script_p "$wrapper"; then + notinst_deplibs= + relink_command= + + func_source "$wrapper" + + # Check the variables that should have been set. + test -z "$generated_by_libtool_version" && \ + func_fatal_error "invalid libtool wrapper script '$wrapper'" + + finalize=: + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + func_source "$lib" + fi + libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` + if test -n "$libdir" && test ! -f "$libfile"; then + func_warning "'$lib' has not been installed in '$libdir'" + finalize=false + fi + done + + relink_command= + func_source "$wrapper" + + outputname= + if test no = "$fast_install" && test -n "$relink_command"; then + $opt_dry_run || { + if $finalize; then + tmpdir=`func_mktempdir` + func_basename "$file$stripped_ext" + file=$func_basename_result + outputname=$tmpdir/$file + # Replace the output file specification. + relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` + + $opt_quiet || { + func_quote_for_expand "$relink_command" + eval "func_echo $func_quote_for_expand_result" + } + if eval "$relink_command"; then : + else + func_error "error: relink '$file' with the above command before installing it" + $opt_dry_run || ${RM}r "$tmpdir" + continue + fi + file=$outputname + else + func_warning "cannot relink '$file'" + fi + } + else + # Install the binary that we compiled earlier. + file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + func_stripname '' '.exe' "$destfile" + destfile=$func_stripname_result + ;; + esac + ;; + esac + func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' + $opt_dry_run || if test -n "$outputname"; then + ${RM}r "$tmpdir" + fi + ;; + esac + done + + for file in $staticlibs; do + func_basename "$file" + name=$func_basename_result + + # Set up the ranlib parameters. + oldlib=$destdir/$name + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + + func_show_eval "$install_prog \$file \$oldlib" 'exit $?' + + if test -n "$stripme" && test -n "$old_striplib"; then + func_show_eval "$old_striplib $tool_oldlib" 'exit $?' + fi + + # Do each command in the postinstall commands. + func_execute_cmds "$old_postinstall_cmds" 'exit $?' + done + + test -n "$future_libdirs" && \ + func_warning "remember to run '$progname --finish$future_libdirs'" + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + $opt_dry_run && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi +} + +test install = "$opt_mode" && func_mode_install ${1+"$@"} + + +# func_generate_dlsyms outputname originator pic_p +# Extract symbols from dlprefiles and create ${outputname}S.o with +# a dlpreopen symbol table. +func_generate_dlsyms () +{ + $debug_cmd + + my_outputname=$1 + my_originator=$2 + my_pic_p=${3-false} + my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` + my_dlsyms= + + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + my_dlsyms=${my_outputname}S.c + else + func_error "not configured to extract global symbols from dlpreopened files" + fi + fi + + if test -n "$my_dlsyms"; then + case $my_dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist=$output_objdir/$my_outputname.nm + + func_show_eval "$RM $nlist ${nlist}S ${nlist}T" + + # Parse the name list into a source file. + func_verbose "creating $output_objdir/$my_dlsyms" + + $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ +/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ +/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) +#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" +#endif + +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) + +/* External symbol declarations for the compiler. */\ +" + + if test yes = "$dlself"; then + func_verbose "generating symbol list for '$output'" + + $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` + for progfile in $progfiles; do + func_to_tool_file "$progfile" func_convert_file_msys_to_w32 + func_verbose "extracting global C symbols from '$func_to_tool_file_result'" + $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $opt_dry_run || { + eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + if test -n "$export_symbols_regex"; then + $opt_dry_run || { + eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols=$output_objdir/$outputname.exp + $opt_dry_run || { + $RM $export_symbols + eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + } + else + $opt_dry_run || { + eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + } + fi + fi + + for dlprefile in $dlprefiles; do + func_verbose "extracting global C symbols from '$dlprefile'" + func_basename "$dlprefile" + name=$func_basename_result + case $host in + *cygwin* | *mingw* | *cegcc* ) + # if an import library, we need to obtain dlname + if func_win32_import_lib_p "$dlprefile"; then + func_tr_sh "$dlprefile" + eval "curr_lafile=\$libfile_$func_tr_sh_result" + dlprefile_dlbasename= + if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then + # Use subshell, to avoid clobbering current variable values + dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` + if test -n "$dlprefile_dlname"; then + func_basename "$dlprefile_dlname" + dlprefile_dlbasename=$func_basename_result + else + # no lafile. user explicitly requested -dlpreopen . + $sharedlib_from_linklib_cmd "$dlprefile" + dlprefile_dlbasename=$sharedlib_from_linklib_result + fi + fi + $opt_dry_run || { + if test -n "$dlprefile_dlbasename"; then + eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' + else + func_warning "Could not compute DLL name from $name" + eval '$ECHO ": $name " >> "$nlist"' + fi + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | + $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" + } + else # not an import lib + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + fi + ;; + *) + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + ;; + esac + done + + $opt_dry_run || { + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $MV "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if $GREP -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + $GREP -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' + else + echo '/* NONE */' >> "$output_objdir/$my_dlsyms" + fi + + func_show_eval '$RM "${nlist}I"' + if test -n "$global_symbol_to_import"; then + eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' + fi + + echo >> "$output_objdir/$my_dlsyms" "\ + +/* The mapping between symbol names and symbols. */ +typedef struct { + const char *name; + void *address; +} lt_dlsymlist; +extern LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[];\ +" + + if test -s "$nlist"I; then + echo >> "$output_objdir/$my_dlsyms" "\ +static void lt_syminit(void) +{ + LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; + for (; symbol->name; ++symbol) + {" + $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" + echo >> "$output_objdir/$my_dlsyms" "\ + } +}" + fi + echo >> "$output_objdir/$my_dlsyms" "\ +LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[] = +{ {\"$my_originator\", (void *) 0}," + + if test -s "$nlist"I; then + echo >> "$output_objdir/$my_dlsyms" "\ + {\"@INIT@\", (void *) <_syminit}," + fi + + case $need_lib_prefix in + no) + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + *) + eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + esac + echo >> "$output_objdir/$my_dlsyms" "\ + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_${my_prefix}_LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + } # !$opt_dry_run + + pic_flag_for_symtable= + case "$compile_command " in + *" -static "*) ;; + *) + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; + *-*-hpux*) + pic_flag_for_symtable=" $pic_flag" ;; + *) + $my_pic_p && pic_flag_for_symtable=" $pic_flag" + ;; + esac + ;; + esac + symtab_cflags= + for arg in $LTCFLAGS; do + case $arg in + -pie | -fpie | -fPIE) ;; + *) func_append symtab_cflags " $arg" ;; + esac + done + + # Now compile the dynamic symbol file. + func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' + + # Clean up the generated files. + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' + + # Transform the symbol file into the correct name. + symfileobj=$output_objdir/${my_outputname}S.$objext + case $host in + *cygwin* | *mingw* | *cegcc* ) + if test -f "$output_objdir/$my_outputname.def"; then + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + else + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + fi + ;; + *) + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + ;; + esac + ;; + *) + func_fatal_error "unknown suffix for '$my_dlsyms'" + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` + fi +} + +# func_cygming_gnu_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is a GNU/binutils-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_gnu_implib_p () +{ + $debug_cmd + + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` + test -n "$func_cygming_gnu_implib_tmp" +} + +# func_cygming_ms_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is an MS-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_ms_implib_p () +{ + $debug_cmd + + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` + test -n "$func_cygming_ms_implib_tmp" +} + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +# Despite the name, also deal with 64 bit binaries. +func_win32_libid () +{ + $debug_cmd + + win32_libid_type=unknown + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | + $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then + case $nm_interface in + "MS dumpbin") + if func_cygming_ms_implib_p "$1" || + func_cygming_gnu_implib_p "$1" + then + win32_nmres=import + else + win32_nmres= + fi + ;; + *) + func_to_tool_file "$1" func_convert_file_msys_to_w32 + win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | + $SED -n -e ' + 1,100{ + / I /{ + s|.*|import| + p + q + } + }'` + ;; + esac + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $ECHO "$win32_libid_type" +} + +# func_cygming_dll_for_implib ARG +# +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib () +{ + $debug_cmd + + sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` +} + +# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs +# +# The is the core of a fallback implementation of a +# platform-specific function to extract the name of the +# DLL associated with the specified import library LIBNAME. +# +# SECTION_NAME is either .idata$6 or .idata$7, depending +# on the platform and compiler that created the implib. +# +# Echos the name of the DLL associated with the +# specified import library. +func_cygming_dll_for_implib_fallback_core () +{ + $debug_cmd + + match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` + $OBJDUMP -s --section "$1" "$2" 2>/dev/null | + $SED '/^Contents of section '"$match_literal"':/{ + # Place marker at beginning of archive member dllname section + s/.*/====MARK====/ + p + d + } + # These lines can sometimes be longer than 43 characters, but + # are always uninteresting + /:[ ]*file format pe[i]\{,1\}-/d + /^In archive [^:]*:/d + # Ensure marker is printed + /^====MARK====/p + # Remove all lines with less than 43 characters + /^.\{43\}/!d + # From remaining lines, remove first 43 characters + s/^.\{43\}//' | + $SED -n ' + # Join marker and all lines until next marker into a single line + /^====MARK====/ b para + H + $ b para + b + :para + x + s/\n//g + # Remove the marker + s/^====MARK====// + # Remove trailing dots and whitespace + s/[\. \t]*$// + # Print + /./p' | + # we now have a list, one entry per line, of the stringified + # contents of the appropriate section of all members of the + # archive that possess that section. Heuristic: eliminate + # all those that have a first or second character that is + # a '.' (that is, objdump's representation of an unprintable + # character.) This should work for all archives with less than + # 0x302f exports -- but will fail for DLLs whose name actually + # begins with a literal '.' or a single character followed by + # a '.'. + # + # Of those that remain, print the first one. + $SED -e '/^\./d;/^.\./d;q' +} + +# func_cygming_dll_for_implib_fallback ARG +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# +# This fallback implementation is for use when $DLLTOOL +# does not support the --identify-strict option. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib_fallback () +{ + $debug_cmd + + if func_cygming_gnu_implib_p "$1"; then + # binutils import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` + elif func_cygming_ms_implib_p "$1"; then + # ms-generated import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` + else + # unknown + sharedlib_from_linklib_result= + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + $debug_cmd + + f_ex_an_ar_dir=$1; shift + f_ex_an_ar_oldlib=$1 + if test yes = "$lock_old_archive_extraction"; then + lockfile=$f_ex_an_ar_oldlib.lock + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + fi + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ + 'stat=$?; rm -f "$lockfile"; exit $stat' + if test yes = "$lock_old_archive_extraction"; then + $opt_dry_run || rm -f "$lockfile" + fi + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" + fi +} + + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + $debug_cmd + + my_gentop=$1; shift + my_oldlibs=${1+"$@"} + my_oldobjs= + my_xlib= + my_xabs= + my_xdir= + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + func_basename "$my_xlib" + my_xlib=$func_basename_result + my_xlib_u=$my_xlib + while :; do + case " $extracted_archives " in + *" $my_xlib_u "*) + func_arith $extracted_serial + 1 + extracted_serial=$func_arith_result + my_xlib_u=lt$extracted_serial-$my_xlib ;; + *) break ;; + esac + done + extracted_archives="$extracted_archives $my_xlib_u" + my_xdir=$my_gentop/$my_xlib_u + + func_mkdir_p "$my_xdir" + + case $host in + *-darwin*) + func_verbose "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + $opt_dry_run || { + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + func_basename "$darwin_archive" + darwin_base_archive=$func_basename_result + darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` + if test -n "$darwin_arches"; then + darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches; do + func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" + $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" + cd "unfat-$$/$darwin_base_archive-$darwin_arch" + func_extract_an_archive "`pwd`" "$darwin_base_archive" + cd "$darwin_curdir" + $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" + done # $darwin_arches + ## Okay now we've a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` + $LIPO -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + $RM -rf unfat-$$ + cd "$darwin_orig_dir" + else + cd $darwin_orig_dir + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + } # !$opt_dry_run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` + done + + func_extract_archives_result=$my_oldobjs +} + + +# func_emit_wrapper [arg=no] +# +# Emit a libtool wrapper script on stdout. +# Don't directly open a file because we may want to +# incorporate the script contents within a cygwin/mingw +# wrapper executable. Must ONLY be called from within +# func_mode_link because it depends on a number of variables +# set therein. +# +# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR +# variable will take. If 'yes', then the emitted script +# will assume that the directory where it is stored is +# the $objdir directory. This is a cygwin/mingw-specific +# behavior. +func_emit_wrapper () +{ + func_emit_wrapper_arg1=${1-no} + + $ECHO "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM (GNU $PACKAGE) $VERSION +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='$sed_quote_subst' + +# Be Bourne compatible +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variables: + generated_by_libtool_version='$macro_version' + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$ECHO are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + file=\"\$0\"" + + qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` + $ECHO "\ + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + ECHO=\"$qECHO\" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ that is used only on +# windows platforms, and (c) all begin with the string "--lt-" +# (application programs are unlikely to have options that match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's $0 value, followed by "$@". +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=\$0 + shift + for lt_opt + do + case \"\$lt_opt\" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` + test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. + lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` + cat \"\$lt_dump_D/\$lt_dump_F\" + exit 0 + ;; + --lt-*) + \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n \"\$lt_option_debug\"; then + echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" + lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2* | *-cegcc*) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $ECHO "\ + \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from \$@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case \" \$* \" in + *\\ --lt-*) + for lt_wr_arg + do + case \$lt_wr_arg in + --lt-*) ;; + *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; + esac + shift + done ;; + esac + func_exec_program_core \${1+\"\$@\"} +} + + # Parse options + func_parse_lt_options \"\$0\" \${1+\"\$@\"} + + # Find the directory that this script lives in. + thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 + if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then + # special case for '.' + if test \"\$thisdir\" = \".\"; then + thisdir=\`pwd\` + fi + # remove .libs from thisdir + case \"\$thisdir\" in + *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; + $objdir ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test yes = "$fast_install"; then + $ECHO "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $MKDIR \"\$progdir\" + else + $RM \"\$progdir/\$file\" + fi" + + $ECHO "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + \$ECHO \"\$relink_command_output\" >&2 + $RM \"\$progdir/\$file\" + exit 1 + fi + fi + + $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $RM \"\$progdir/\$program\"; + $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $RM \"\$progdir/\$file\" + fi" + else + $ECHO "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $ECHO "\ + + if test -f \"\$progdir/\$program\"; then" + + # fixup the dll searchpath if we need to. + # + # Fix the DLL searchpath if we need to. Do this before prepending + # to shlibpath, because on Windows, both are PATH and uninstalled + # libraries must come first. + if test -n "$dllsearchpath"; then + $ECHO "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + # Export our shlibpath_var if we have one. + if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $ECHO "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` + + export $shlibpath_var +" + fi + + $ECHO "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. + func_exec_program \${1+\"\$@\"} + fi + else + # The program doesn't exist. + \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 + \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 + \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 + exit 1 + fi +fi\ +" +} + + +# func_emit_cwrapperexe_src +# emit the source code for a wrapper executable on stdout +# Must ONLY be called from within func_mode_link because +# it depends on a number of variable set therein. +func_emit_cwrapperexe_src () +{ + cat < +#include +#ifdef _MSC_VER +# include +# include +# include +#else +# include +# include +# ifdef __CYGWIN__ +# include +# endif +#endif +#include +#include +#include +#include +#include +#include +#include +#include + +#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) + +/* declarations of non-ANSI functions */ +#if defined __MINGW32__ +# ifdef __STRICT_ANSI__ +int _putenv (const char *); +# endif +#elif defined __CYGWIN__ +# ifdef __STRICT_ANSI__ +char *realpath (const char *, char *); +int putenv (char *); +int setenv (const char *, const char *, int); +# endif +/* #elif defined other_platform || defined ... */ +#endif + +/* portability defines, excluding path handling macros */ +#if defined _MSC_VER +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +# define S_IXUSR _S_IEXEC +#elif defined __MINGW32__ +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +#elif defined __CYGWIN__ +# define HAVE_SETENV +# define FOPEN_WB "wb" +/* #elif defined other platforms ... */ +#endif + +#if defined PATH_MAX +# define LT_PATHMAX PATH_MAX +#elif defined MAXPATHLEN +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef S_IXOTH +# define S_IXOTH 0 +#endif +#ifndef S_IXGRP +# define S_IXGRP 0 +#endif + +/* path handling portability macros */ +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ + defined __OS2__ +# define HAVE_DOS_BASED_FILE_SYSTEM +# define FOPEN_WB "wb" +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#ifndef FOPEN_WB +# define FOPEN_WB "w" +#endif +#ifndef _O_BINARY +# define _O_BINARY 0 +#endif + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free (stale); stale = 0; } \ +} while (0) + +#if defined LT_DEBUGWRAPPER +static int lt_debug = 1; +#else +static int lt_debug = 0; +#endif + +const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ + +void *xmalloc (size_t num); +char *xstrdup (const char *string); +const char *base_name (const char *name); +char *find_executable (const char *wrapper); +char *chase_symlinks (const char *pathspec); +int make_executable (const char *path); +int check_executable (const char *path); +char *strendzap (char *str, const char *pat); +void lt_debugprintf (const char *file, int line, const char *fmt, ...); +void lt_fatal (const char *file, int line, const char *message, ...); +static const char *nonnull (const char *s); +static const char *nonempty (const char *s); +void lt_setenv (const char *name, const char *value); +char *lt_extend_str (const char *orig_value, const char *add, int to_end); +void lt_update_exe_path (const char *name, const char *value); +void lt_update_lib_path (const char *name, const char *value); +char **prepare_spawn (char **argv); +void lt_dump_script (FILE *f); +EOF + + cat <= 0) + && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) + return 1; + else + return 0; +} + +int +make_executable (const char *path) +{ + int rval = 0; + struct stat st; + + lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", + nonempty (path)); + if ((!path) || (!*path)) + return 0; + + if (stat (path, &st) >= 0) + { + rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); + } + return rval; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise + Does not chase symlinks, even on platforms that support them. +*/ +char * +find_executable (const char *wrapper) +{ + int has_slash = 0; + const char *p; + const char *p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + size_t tmp_len; + char *concat_name; + + lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", + nonempty (wrapper)); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined HAVE_DOS_BASED_FILE_SYSTEM + if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } +#if defined HAVE_DOS_BASED_FILE_SYSTEM + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char *path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char *q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR (*q)) + break; + p_len = (size_t) (q - p); + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = + XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = + XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + return NULL; +} + +char * +chase_symlinks (const char *pathspec) +{ +#ifndef S_ISLNK + return xstrdup (pathspec); +#else + char buf[LT_PATHMAX]; + struct stat s; + char *tmp_pathspec = xstrdup (pathspec); + char *p; + int has_symlinks = 0; + while (strlen (tmp_pathspec) && !has_symlinks) + { + lt_debugprintf (__FILE__, __LINE__, + "checking path component for symlinks: %s\n", + tmp_pathspec); + if (lstat (tmp_pathspec, &s) == 0) + { + if (S_ISLNK (s.st_mode) != 0) + { + has_symlinks = 1; + break; + } + + /* search backwards for last DIR_SEPARATOR */ + p = tmp_pathspec + strlen (tmp_pathspec) - 1; + while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + p--; + if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + { + /* no more DIR_SEPARATORS left */ + break; + } + *p = '\0'; + } + else + { + lt_fatal (__FILE__, __LINE__, + "error accessing file \"%s\": %s", + tmp_pathspec, nonnull (strerror (errno))); + } + } + XFREE (tmp_pathspec); + + if (!has_symlinks) + { + return xstrdup (pathspec); + } + + tmp_pathspec = realpath (pathspec, buf); + if (tmp_pathspec == 0) + { + lt_fatal (__FILE__, __LINE__, + "could not follow symlinks for %s", pathspec); + } + return xstrdup (tmp_pathspec); +#endif +} + +char * +strendzap (char *str, const char *pat) +{ + size_t len, patlen; + + assert (str != NULL); + assert (pat != NULL); + + len = strlen (str); + patlen = strlen (pat); + + if (patlen <= len) + { + str += len - patlen; + if (STREQ (str, pat)) + *str = '\0'; + } + return str; +} + +void +lt_debugprintf (const char *file, int line, const char *fmt, ...) +{ + va_list args; + if (lt_debug) + { + (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); + va_start (args, fmt); + (void) vfprintf (stderr, fmt, args); + va_end (args); + } +} + +static void +lt_error_core (int exit_status, const char *file, + int line, const char *mode, + const char *message, va_list ap) +{ + fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *file, int line, const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); + va_end (ap); +} + +static const char * +nonnull (const char *s) +{ + return s ? s : "(null)"; +} + +static const char * +nonempty (const char *s) +{ + return (s && !*s) ? "(empty)" : nonnull (s); +} + +void +lt_setenv (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_setenv) setting '%s' to '%s'\n", + nonnull (name), nonnull (value)); + { +#ifdef HAVE_SETENV + /* always make a copy, for consistency with !HAVE_SETENV */ + char *str = xstrdup (value); + setenv (name, str, 1); +#else + size_t len = strlen (name) + 1 + strlen (value) + 1; + char *str = XMALLOC (char, len); + sprintf (str, "%s=%s", name, value); + if (putenv (str) != EXIT_SUCCESS) + { + XFREE (str); + } +#endif + } +} + +char * +lt_extend_str (const char *orig_value, const char *add, int to_end) +{ + char *new_value; + if (orig_value && *orig_value) + { + size_t orig_value_len = strlen (orig_value); + size_t add_len = strlen (add); + new_value = XMALLOC (char, add_len + orig_value_len + 1); + if (to_end) + { + strcpy (new_value, orig_value); + strcpy (new_value + orig_value_len, add); + } + else + { + strcpy (new_value, add); + strcpy (new_value + add_len, orig_value); + } + } + else + { + new_value = xstrdup (add); + } + return new_value; +} + +void +lt_update_exe_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + /* some systems can't cope with a ':'-terminated path #' */ + size_t len = strlen (new_value); + while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) + { + new_value[--len] = '\0'; + } + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +void +lt_update_lib_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +EOF + case $host_os in + mingw*) + cat <<"EOF" + +/* Prepares an argument vector before calling spawn(). + Note that spawn() does not by itself call the command interpreter + (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : + ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + GetVersionEx(&v); + v.dwPlatformId == VER_PLATFORM_WIN32_NT; + }) ? "cmd.exe" : "command.com"). + Instead it simply concatenates the arguments, separated by ' ', and calls + CreateProcess(). We must quote the arguments since Win32 CreateProcess() + interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a + special way: + - Space and tab are interpreted as delimiters. They are not treated as + delimiters if they are surrounded by double quotes: "...". + - Unescaped double quotes are removed from the input. Their only effect is + that within double quotes, space and tab are treated like normal + characters. + - Backslashes not followed by double quotes are not special. + - But 2*n+1 backslashes followed by a double quote become + n backslashes followed by a double quote (n >= 0): + \" -> " + \\\" -> \" + \\\\\" -> \\" + */ +#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +char ** +prepare_spawn (char **argv) +{ + size_t argc; + char **new_argv; + size_t i; + + /* Count number of arguments. */ + for (argc = 0; argv[argc] != NULL; argc++) + ; + + /* Allocate new argument vector. */ + new_argv = XMALLOC (char *, argc + 1); + + /* Put quoted arguments into the new argument vector. */ + for (i = 0; i < argc; i++) + { + const char *string = argv[i]; + + if (string[0] == '\0') + new_argv[i] = xstrdup ("\"\""); + else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) + { + int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); + size_t length; + unsigned int backslashes; + const char *s; + char *quoted_string; + char *p; + + length = 0; + backslashes = 0; + if (quote_around) + length++; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + length += backslashes + 1; + length++; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + length += backslashes + 1; + + quoted_string = XMALLOC (char, length + 1); + + p = quoted_string; + backslashes = 0; + if (quote_around) + *p++ = '"'; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + { + unsigned int j; + for (j = backslashes + 1; j > 0; j--) + *p++ = '\\'; + } + *p++ = c; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + { + unsigned int j; + for (j = backslashes; j > 0; j--) + *p++ = '\\'; + *p++ = '"'; + } + *p = '\0'; + + new_argv[i] = quoted_string; + } + else + new_argv[i] = (char *) string; + } + new_argv[argc] = NULL; + + return new_argv; +} +EOF + ;; + esac + + cat <<"EOF" +void lt_dump_script (FILE* f) +{ +EOF + func_emit_wrapper yes | + $SED -n -e ' +s/^\(.\{79\}\)\(..*\)/\1\ +\2/ +h +s/\([\\"]\)/\\\1/g +s/$/\\n/ +s/\([^\n]*\).*/ fputs ("\1", f);/p +g +D' + cat <<"EOF" +} +EOF +} +# end: func_emit_cwrapperexe_src + +# func_win32_import_lib_p ARG +# True if ARG is an import lib, as indicated by $file_magic_cmd +func_win32_import_lib_p () +{ + $debug_cmd + + case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in + *import*) : ;; + *) false ;; + esac +} + +# func_suncc_cstd_abi +# !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! +# Several compiler flags select an ABI that is incompatible with the +# Cstd library. Avoid specifying it if any are in CXXFLAGS. +func_suncc_cstd_abi () +{ + $debug_cmd + + case " $compile_command " in + *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) + suncc_use_cstd_abi=no + ;; + *) + suncc_use_cstd_abi=yes + ;; + esac +} + +# func_mode_link arg... +func_mode_link () +{ + $debug_cmd + + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + # It is impossible to link a dll without this setting, and + # we shouldn't force the makefile maintainer to figure out + # what system we are compiling for in order to pass an extra + # flag for every libtool invocation. + # allow_undefined=no + + # FIXME: Unfortunately, there are problems with the above when trying + # to make a dll that has undefined symbols, in which case not + # even a static library is built. For now, we need to specify + # -no-undefined on the libtool link line when we can be certain + # that all symbols are satisfied, otherwise we get a static library. + allow_undefined=yes + ;; + *) + allow_undefined=yes + ;; + esac + libtool_args=$nonopt + base_compile="$nonopt $@" + compile_command=$nonopt + finalize_command=$nonopt + + compile_rpath= + finalize_rpath= + compile_shlibpath= + finalize_shlibpath= + convenience= + old_convenience= + deplibs= + old_deplibs= + compiler_flags= + linker_flags= + dllsearchpath= + lib_search_path=`pwd` + inst_prefix_dir= + new_inherited_linker_flags= + + avoid_version=no + bindir= + dlfiles= + dlprefiles= + dlself=no + export_dynamic=no + export_symbols= + export_symbols_regex= + generated= + libobjs= + ltlibs= + module=no + no_install=no + objs= + os2dllname= + non_pic_objects= + precious_files_regex= + prefer_static_libs=no + preload=false + prev= + prevarg= + release= + rpath= + xrpath= + perm_rpath= + temp_rpath= + thread_safe=no + vinfo= + vinfo_number=no + weak_libs= + single_module=$wl-single_module + func_infer_tag $base_compile + + # We need to know -static, to get the right output filenames. + for arg + do + case $arg in + -shared) + test yes != "$build_libtool_libs" \ + && func_fatal_configuration "cannot build a shared library" + build_old_libs=no + break + ;; + -all-static | -static | -static-libtool-libs) + case $arg in + -all-static) + if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then + func_warning "complete static linking is impossible in this configuration" + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + -static) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + esac + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg=$1 + shift + func_quote_for_eval "$arg" + qarg=$func_quote_for_eval_unquoted_result + func_append libtool_args " $func_quote_for_eval_result" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + func_append compile_command " @OUTPUT@" + func_append finalize_command " @OUTPUT@" + ;; + esac + + case $prev in + bindir) + bindir=$arg + prev= + continue + ;; + dlfiles|dlprefiles) + $preload || { + # Add the symbol object into the linking commands. + func_append compile_command " @SYMFILE@" + func_append finalize_command " @SYMFILE@" + preload=: + } + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test no = "$dlself"; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test dlprefiles = "$prev"; then + dlself=yes + elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test dlfiles = "$prev"; then + func_append dlfiles " $arg" + else + func_append dlprefiles " $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols=$arg + test -f "$arg" \ + || func_fatal_error "symbol file '$arg' does not exist" + prev= + continue + ;; + expsyms_regex) + export_symbols_regex=$arg + prev= + continue + ;; + framework) + case $host in + *-*-darwin*) + case "$deplibs " in + *" $qarg.ltframework "*) ;; + *) func_append deplibs " $qarg.ltframework" # this is fixed later + ;; + esac + ;; + esac + prev= + continue + ;; + inst_prefix) + inst_prefix_dir=$arg + prev= + continue + ;; + mllvm) + # Clang does not use LLVM to link, so we can simply discard any + # '-mllvm $arg' options when doing the link step. + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat "$save_arg"` + do +# func_append moreargs " $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test none = "$pic_object" && + test none = "$non_pic_object"; then + func_fatal_error "cannot find name of object for '$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + if test none != "$pic_object"; then + # Prepend the subdirectory the object is found in. + pic_object=$xdir$pic_object + + if test dlfiles = "$prev"; then + if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test dlprefiles = "$prev"; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg=$pic_object + fi + + # Non-PIC object. + if test none != "$non_pic_object"; then + # Prepend the subdirectory the object is found in. + non_pic_object=$xdir$non_pic_object + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test none = "$pic_object"; then + arg=$non_pic_object + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object=$pic_object + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "'$arg' is not a valid libtool object" + fi + fi + done + else + func_fatal_error "link input file '$arg' does not exist" + fi + arg=$save_arg + prev= + continue + ;; + os2dllname) + os2dllname=$arg + prev= + continue + ;; + precious_regex) + precious_files_regex=$arg + prev= + continue + ;; + release) + release=-$arg + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + if test rpath = "$prev"; then + case "$rpath " in + *" $arg "*) ;; + *) func_append rpath " $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) func_append xrpath " $arg" ;; + esac + fi + prev= + continue + ;; + shrext) + shrext_cmds=$arg + prev= + continue + ;; + weak) + func_append weak_libs " $arg" + prev= + continue + ;; + xcclinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xcompiler) + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xlinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $wl$qarg" + prev= + func_append compile_command " $wl$qarg" + func_append finalize_command " $wl$qarg" + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg=$arg + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + # See comment for -static flag below, for more details. + func_append compile_command " $link_static_flag" + func_append finalize_command " $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + func_fatal_error "'-allow-undefined' must not be used because it is the default" + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -bindir) + prev=bindir + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + func_fatal_error "more than one -exported-symbols argument is not allowed" + fi + if test X-export-symbols = "X$arg"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework) + prev=framework + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + func_append compile_command " $arg" + func_append finalize_command " $arg" + ;; + esac + continue + ;; + + -L*) + func_stripname "-L" '' "$arg" + if test -z "$func_stripname_result"; then + if test "$#" -gt 0; then + func_fatal_error "require no space between '-L' and '$1'" + else + func_fatal_error "need path for '-L' option" + fi + fi + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + test -z "$absdir" && \ + func_fatal_error "cannot determine absolute directory name of '$dir'" + dir=$absdir + ;; + esac + case "$deplibs " in + *" -L$dir "* | *" $arg "*) + # Will only happen for absolute or sysroot arguments + ;; + *) + # Preserve sysroot, but never include relative directories + case $dir in + [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; + *) func_append deplibs " -L$dir" ;; + esac + func_append lib_search_path " $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + ::) dllsearchpath=$dir;; + *) func_append dllsearchpath ":$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test X-lc = "X$arg" || test X-lm = "X$arg"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test X-lc = "X$arg" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) + # Do not include libc due to us having libc/libc_r. + test X-lc = "X$arg" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + func_append deplibs " System.ltframework" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test X-lc = "X$arg" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test X-lc = "X$arg" && continue + ;; + esac + elif test X-lc_r = "X$arg"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + func_append deplibs " $arg" + continue + ;; + + -mllvm) + prev=mllvm + continue + ;; + + -module) + module=yes + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + # Darwin uses the -arch flag to determine output architecture. + -model|-arch|-isysroot|--sysroot) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case "$new_inherited_linker_flags " in + *" $arg "*) ;; + * ) func_append new_inherited_linker_flags " $arg" ;; + esac + continue + ;; + + -multi_module) + single_module=$wl-multi_module + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) + # The PATH hackery in wrapper scripts is required on Windows + # and Darwin in order for the loader to find any dlls it needs. + func_warning "'-no-install' is ignored for $host" + func_warning "assuming '-no-fast-install' instead" + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -os2dllname) + prev=os2dllname + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + func_stripname '-R' '' "$arg" + dir=$func_stripname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + =*) + func_stripname '=' '' "$dir" + dir=$lt_sysroot$func_stripname_result + ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) func_append xrpath " $dir" ;; + esac + continue + ;; + + -shared) + # The effects of -shared are defined in a previous loop. + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -static | -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -weak) + prev=weak + continue + ;; + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs=$IFS; IFS=, + for flag in $args; do + IFS=$save_ifs + func_quote_for_eval "$flag" + func_append arg " $func_quote_for_eval_result" + func_append compiler_flags " $func_quote_for_eval_result" + done + IFS=$save_ifs + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Wl,*) + func_stripname '-Wl,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs=$IFS; IFS=, + for flag in $args; do + IFS=$save_ifs + func_quote_for_eval "$flag" + func_append arg " $wl$func_quote_for_eval_result" + func_append compiler_flags " $wl$func_quote_for_eval_result" + func_append linker_flags " $func_quote_for_eval_result" + done + IFS=$save_ifs + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # -msg_* for osf cc + -msg_*) + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + ;; + + # Flags to be passed through unchanged, with rationale: + # -64, -mips[0-9] enable 64-bit mode for the SGI compiler + # -r[0-9][0-9]* specify processor for the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler + # +DA*, +DD* enable 64-bit mode for the HP compiler + # -q* compiler args for the IBM compiler + # -m*, -t[45]*, -txscale* architecture-specific flags for GCC + # -F/path path to uninstalled frameworks, gcc on darwin + # -p, -pg, --coverage, -fprofile-* profiling flags for GCC + # -fstack-protector* stack protector flags for GCC + # @file GCC response files + # -tp=* Portland pgcc target processor selection + # --sysroot=* for sysroot support + # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization + # -specs=* GCC specs files + # -stdlib=* select c++ std lib with clang + # -fsanitize=* Clang/GCC memory and address sanitizer + # -fuse-ld=* Linker select flags for GCC + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ + -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ + -specs=*|-fsanitize=*|-fuse-ld=*) + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + func_append compile_command " $arg" + func_append finalize_command " $arg" + func_append compiler_flags " $arg" + continue + ;; + + -Z*) + if test os2 = "`expr $host : '.*\(os2\)'`"; then + # OS/2 uses -Zxxx to specify OS/2-specific options + compiler_flags="$compiler_flags $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case $arg in + -Zlinker | -Zstack) + prev=xcompiler + ;; + esac + continue + else + # Otherwise treat like 'Some other compiler flag' below + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + fi + ;; + + # Some other compiler flag. + -* | +*) + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + ;; + + *.$objext) + # A standard object. + func_append objs " $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test none = "$pic_object" && + test none = "$non_pic_object"; then + func_fatal_error "cannot find name of object for '$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + test none = "$pic_object" || { + # Prepend the subdirectory the object is found in. + pic_object=$xdir$pic_object + + if test dlfiles = "$prev"; then + if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test dlprefiles = "$prev"; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg=$pic_object + } + + # Non-PIC object. + if test none != "$non_pic_object"; then + # Prepend the subdirectory the object is found in. + non_pic_object=$xdir$non_pic_object + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test none = "$pic_object"; then + arg=$non_pic_object + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object=$pic_object + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "'$arg' is not a valid libtool object" + fi + fi + ;; + + *.$libext) + # An archive. + func_append deplibs " $arg" + func_append old_deplibs " $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + func_resolve_sysroot "$arg" + if test dlfiles = "$prev"; then + # This library was specified with -dlopen. + func_append dlfiles " $func_resolve_sysroot_result" + prev= + elif test dlprefiles = "$prev"; then + # The library was specified with -dlpreopen. + func_append dlprefiles " $func_resolve_sysroot_result" + prev= + else + func_append deplibs " $func_resolve_sysroot_result" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + done # argument parsing loop + + test -n "$prev" && \ + func_fatal_help "the '$prevarg' option requires an argument" + + if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + func_basename "$output" + outputname=$func_basename_result + libobjs_save=$libobjs + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + # Definition is injected by LT_CONFIG during libtool generation. + func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH" + + func_dirname "$output" "/" "" + output_objdir=$func_dirname_result$objdir + func_to_tool_file "$output_objdir/" + tool_output_objdir=$func_to_tool_file_result + # Create the object directory. + func_mkdir_p "$output_objdir" + + # Determine the type of output + case $output in + "") + func_fatal_help "you must specify an output file" + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if $opt_preserve_dup_deps; then + case "$libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append libs " $deplib" + done + + if test lib = "$linkmode"; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if $opt_duplicate_compiler_generated_deps; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; + esac + func_append pre_post_deps " $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + notinst_path= # paths that contain not-installed libtool libraries + + case $linkmode in + lib) + passes="conv dlpreopen link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + func_fatal_help "libraries can '-dlopen' only libtool libraries: $file" + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=false + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + + for pass in $passes; do + # The preopen pass in lib mode reverses $deplibs; put it back here + # so that -L comes before libs that need it for instance... + if test lib,link = "$linkmode,$pass"; then + ## FIXME: Find the place where the list is rebuilt in the wrong + ## order, and fix it there properly + tmp_deplibs= + for deplib in $deplibs; do + tmp_deplibs="$deplib $tmp_deplibs" + done + deplibs=$tmp_deplibs + fi + + if test lib,link = "$linkmode,$pass" || + test prog,scan = "$linkmode,$pass"; then + libs=$deplibs + deplibs= + fi + if test prog = "$linkmode"; then + case $pass in + dlopen) libs=$dlfiles ;; + dlpreopen) libs=$dlprefiles ;; + link) + libs="$deplibs %DEPLIBS%" + test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" + ;; + esac + fi + if test lib,dlpreopen = "$linkmode,$pass"; then + # Collect and forward deplibs of preopened libtool libs + for lib in $dlprefiles; do + # Ignore non-libtool-libs + dependency_libs= + func_resolve_sysroot "$lib" + case $lib in + *.la) func_source "$func_resolve_sysroot_result" ;; + esac + + # Collect preopened libtool deplibs, except any this library + # has declared as weak libs + for deplib in $dependency_libs; do + func_basename "$deplib" + deplib_base=$func_basename_result + case " $weak_libs " in + *" $deplib_base "*) ;; + *) func_append deplibs " $deplib" ;; + esac + done + done + libs=$dlprefiles + fi + if test dlopen = "$pass"; then + # Collect dlpreopened libraries + save_deplibs=$deplibs + deplibs= + fi + + for deplib in $libs; do + lib= + found=false + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + func_append compiler_flags " $deplib" + if test lib = "$linkmode"; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; + esac + fi + fi + continue + ;; + -l*) + if test lib != "$linkmode" && test prog != "$linkmode"; then + func_warning "'-l' is ignored for archives/objects" + continue + fi + func_stripname '-l' '' "$deplib" + name=$func_stripname_result + if test lib = "$linkmode"; then + searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" + else + searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" + fi + for searchdir in $searchdirs; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib=$searchdir/lib$name$search_ext + if test -f "$lib"; then + if test .la = "$search_ext"; then + found=: + else + found=false + fi + break 2 + fi + done + done + if $found; then + # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test yes = "$allow_libtool_libs_with_static_runtimes"; then + case " $predeps $postdeps " in + *" $deplib "*) + if func_lalib_p "$lib"; then + library_names= + old_library= + func_source "$lib" + for l in $old_library $library_names; do + ll=$l + done + if test "X$ll" = "X$old_library"; then # only static version available + found=false + func_dirname "$lib" "" "." + ladir=$func_dirname_result + lib=$ladir/$old_library + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + else + # deplib doesn't seem to be a libtool library + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + ;; # -l + *.ltframework) + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + if test lib = "$linkmode"; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; + esac + fi + fi + continue + ;; + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test conv = "$pass" && continue + newdependency_libs="$deplib $newdependency_libs" + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + prog) + if test conv = "$pass"; then + deplibs="$deplib $deplibs" + continue + fi + if test scan = "$pass"; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + *) + func_warning "'-L' is ignored for archives/objects" + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test link = "$pass"; then + func_stripname '-R' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) func_append xrpath " $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) + func_resolve_sysroot "$deplib" + lib=$func_resolve_sysroot_result + ;; + *.$libext) + if test conv = "$pass"; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + # Linking convenience modules into shared libraries is allowed, + # but linking other static libraries is non-portable. + case " $dlpreconveniencelibs " in + *" $deplib "*) ;; + *) + valid_a_lib=false + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=: + fi + ;; + pass_all) + valid_a_lib=: + ;; + esac + if $valid_a_lib; then + echo + $ECHO "*** Warning: Linking the shared library $output against the" + $ECHO "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + else + echo + $ECHO "*** Warning: Trying to link with static lib archive $deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because the file extensions .$libext of this argument makes me believe" + echo "*** that it is just a static archive that I should not use here." + fi + ;; + esac + continue + ;; + prog) + if test link != "$pass"; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test conv = "$pass"; then + deplibs="$deplib $deplibs" + elif test prog = "$linkmode"; then + if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + func_append newdlprefiles " $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + func_append newdlfiles " $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=: + continue + ;; + esac # case $deplib + + $found || test -f "$lib" \ + || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'" + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$lib" \ + || func_fatal_error "'$lib' is not a valid libtool archive" + + func_dirname "$lib" "" "." + ladir=$func_dirname_result + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + inherited_linker_flags= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + func_source "$lib" + + # Convert "-framework foo" to "foo.ltframework" + if test -n "$inherited_linker_flags"; then + tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` + for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do + case " $new_inherited_linker_flags " in + *" $tmp_inherited_linker_flag "*) ;; + *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; + esac + done + fi + dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + if test lib,link = "$linkmode,$pass" || + test prog,scan = "$linkmode,$pass" || + { test prog != "$linkmode" && test lib != "$linkmode"; }; then + test -n "$dlopen" && func_append dlfiles " $dlopen" + test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" + fi + + if test conv = "$pass"; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + func_fatal_error "cannot find name of link library for '$lib'" + fi + # It is a libtool convenience library, so add in its objects. + func_append convenience " $ladir/$objdir/$old_library" + func_append old_convenience " $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if $opt_preserve_dup_deps; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done + elif test prog != "$linkmode" && test lib != "$linkmode"; then + func_fatal_error "'$lib' is not a convenience library" + fi + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + if test -n "$old_library" && + { test yes = "$prefer_static_libs" || + test built,no = "$prefer_static_libs,$installed"; }; then + linklib=$old_library + else + for l in $old_library $library_names; do + linklib=$l + done + fi + if test -z "$linklib"; then + func_fatal_error "cannot find name of link library for '$lib'" + fi + + # This library was specified with -dlopen. + if test dlopen = "$pass"; then + test -z "$libdir" \ + && func_fatal_error "cannot -dlopen a convenience library: '$lib'" + if test -z "$dlname" || + test yes != "$dlopen_support" || + test no = "$build_libtool_libs" + then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + func_append dlprefiles " $lib $dependency_libs" + else + func_append newdlfiles " $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + func_warning "cannot determine absolute directory name of '$ladir'" + func_warning "passing it literally to the linker, although it might fail" + abs_ladir=$ladir + fi + ;; + esac + func_basename "$lib" + laname=$func_basename_result + + # Find the relevant object directory and library name. + if test yes = "$installed"; then + if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + func_warning "library '$lib' was moved." + dir=$ladir + absdir=$abs_ladir + libdir=$abs_ladir + else + dir=$lt_sysroot$libdir + absdir=$lt_sysroot$libdir + fi + test yes = "$hardcode_automatic" && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir=$ladir + absdir=$abs_ladir + # Remove this search path later + func_append notinst_path " $abs_ladir" + else + dir=$ladir/$objdir + absdir=$abs_ladir/$objdir + # Remove this search path later + func_append notinst_path " $abs_ladir" + fi + fi # $installed = yes + func_stripname 'lib' '.la' "$laname" + name=$func_stripname_result + + # This library was specified with -dlpreopen. + if test dlpreopen = "$pass"; then + if test -z "$libdir" && test prog = "$linkmode"; then + func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'" + fi + case $host in + # special handling for platforms with PE-DLLs. + *cygwin* | *mingw* | *cegcc* ) + # Linker will automatically link against shared library if both + # static and shared are present. Therefore, ensure we extract + # symbols from the import library if a shared library is present + # (otherwise, the dlopen module name will be incorrect). We do + # this by putting the import library name into $newdlprefiles. + # We recover the dlopen module name by 'saving' the la file + # name in a special purpose variable, and (later) extracting the + # dlname from the la file. + if test -n "$dlname"; then + func_tr_sh "$dir/$linklib" + eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" + func_append newdlprefiles " $dir/$linklib" + else + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + fi + ;; + * ) + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + func_append newdlprefiles " $dir/$dlname" + else + func_append newdlprefiles " $dir/$linklib" + fi + ;; + esac + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test lib = "$linkmode"; then + deplibs="$dir/$old_library $deplibs" + elif test prog,link = "$linkmode,$pass"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test prog = "$linkmode" && test link != "$pass"; then + func_append newlib_search_path " $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=false + if test no != "$link_all_deplibs" || test -z "$library_names" || + test no = "$build_libtool_libs"; then + linkalldeplibs=: + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + esac + # Need to link against all dependency_libs? + if $linkalldeplibs; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if $opt_preserve_dup_deps; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test prog,link = "$linkmode,$pass"; then + if test -n "$library_names" && + { { test no = "$prefer_static_libs" || + test built,yes = "$prefer_static_libs,$installed"; } || + test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then + # Make sure the rpath contains only unique directories. + case $temp_rpath: in + *"$absdir:"*) ;; + *) func_append temp_rpath "$absdir:" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) func_append compile_rpath " $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if $alldeplibs && + { test pass_all = "$deplibs_check_method" || + { test yes = "$build_libtool_libs" && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + use_static_libs=$prefer_static_libs + if test built = "$use_static_libs" && test yes = "$installed"; then + use_static_libs=no + fi + if test -n "$library_names" && + { test no = "$use_static_libs" || test -z "$old_library"; }; then + case $host in + *cygwin* | *mingw* | *cegcc* | *os2*) + # No point in relinking DLLs because paths are not encoded + func_append notinst_deplibs " $lib" + need_relink=no + ;; + *) + if test no = "$installed"; then + func_append notinst_deplibs " $lib" + need_relink=yes + fi + ;; + esac + # This is a shared library + + # Warn about portability, can't link against -module's on some + # systems (darwin). Don't bleat about dlopened modules though! + dlopenmodule= + for dlpremoduletest in $dlprefiles; do + if test "X$dlpremoduletest" = "X$lib"; then + dlopenmodule=$dlpremoduletest + break + fi + done + if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then + echo + if test prog = "$linkmode"; then + $ECHO "*** Warning: Linking the executable $output against the loadable module" + else + $ECHO "*** Warning: Linking the shared library $output against the loadable module" + fi + $ECHO "*** $linklib is not portable!" + fi + if test lib = "$linkmode" && + test yes = "$hardcode_into_libs"; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) func_append compile_rpath " $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + shift + realname=$1 + shift + libname=`eval "\\$ECHO \"$libname_spec\""` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname=$dlname + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw* | *cegcc* | *os2*) + func_arith $current - $age + major=$func_arith_result + versuffix=-$major + ;; + esac + eval soname=\"$soname_spec\" + else + soname=$realname + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot=$soname + func_basename "$soroot" + soname=$func_basename_result + func_stripname 'lib' '.dll' "$soname" + newlib=libimp-$func_stripname_result.a + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + func_verbose "extracting exported symbol list from '$soname'" + func_execute_cmds "$extract_expsyms_cmds" 'exit $?' + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + func_verbose "generating import library for '$soname'" + func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test prog = "$linkmode" || test relink != "$opt_mode"; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test no = "$hardcode_direct"; then + add=$dir/$linklib + case $host in + *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;; + *-*-sysv4*uw2*) add_dir=-L$dir ;; + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ + *-*-unixware7*) add_dir=-L$dir ;; + *-*-darwin* ) + # if the lib is a (non-dlopened) module then we cannot + # link against it, someone is ignoring the earlier warnings + if /usr/bin/file -L $add 2> /dev/null | + $GREP ": [^:]* bundle" >/dev/null; then + if test "X$dlopenmodule" != "X$lib"; then + $ECHO "*** Warning: lib $linklib is a module, not a shared library" + if test -z "$old_library"; then + echo + echo "*** And there doesn't seem to be a static archive available" + echo "*** The link will probably fail, sorry" + else + add=$dir/$old_library + fi + elif test -n "$old_library"; then + add=$dir/$old_library + fi + fi + esac + elif test no = "$hardcode_minus_L"; then + case $host in + *-*-sunos*) add_shlibpath=$dir ;; + esac + add_dir=-L$dir + add=-l$name + elif test no = "$hardcode_shlibpath_var"; then + add_shlibpath=$dir + add=-l$name + else + lib_linked=no + fi + ;; + relink) + if test yes = "$hardcode_direct" && + test no = "$hardcode_direct_absolute"; then + add=$dir/$linklib + elif test yes = "$hardcode_minus_L"; then + add_dir=-L$absdir + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + func_append add_dir " -L$inst_prefix_dir$libdir" + ;; + esac + fi + add=-l$name + elif test yes = "$hardcode_shlibpath_var"; then + add_shlibpath=$dir + add=-l$name + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test yes != "$lib_linked"; then + func_fatal_configuration "unsupported hardcode properties" + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) func_append compile_shlibpath "$add_shlibpath:" ;; + esac + fi + if test prog = "$linkmode"; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test yes != "$hardcode_direct" && + test yes != "$hardcode_minus_L" && + test yes = "$hardcode_shlibpath_var"; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) func_append finalize_shlibpath "$libdir:" ;; + esac + fi + fi + fi + + if test prog = "$linkmode" || test relink = "$opt_mode"; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test yes = "$hardcode_direct" && + test no = "$hardcode_direct_absolute"; then + add=$libdir/$linklib + elif test yes = "$hardcode_minus_L"; then + add_dir=-L$libdir + add=-l$name + elif test yes = "$hardcode_shlibpath_var"; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) func_append finalize_shlibpath "$libdir:" ;; + esac + add=-l$name + elif test yes = "$hardcode_automatic"; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib"; then + add=$inst_prefix_dir$libdir/$linklib + else + add=$libdir/$linklib + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir=-L$libdir + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + func_append add_dir " -L$inst_prefix_dir$libdir" + ;; + esac + fi + add=-l$name + fi + + if test prog = "$linkmode"; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test prog = "$linkmode"; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test unsupported != "$hardcode_direct"; then + test -n "$old_library" && linklib=$old_library + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test yes = "$build_libtool_libs"; then + # Not a shared library + if test pass_all != "$deplibs_check_method"; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + echo + $ECHO "*** Warning: This system cannot link to static lib archive $lib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have." + if test yes = "$module"; then + echo "*** But as you try to build a module library, libtool will still create " + echo "*** a static module, that should work as long as the dlopening application" + echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using 'nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** 'nm' from GNU binutils and a full rebuild may help." + fi + if test no = "$build_old_libs"; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test lib = "$linkmode"; then + if test -n "$dependency_libs" && + { test yes != "$hardcode_into_libs" || + test yes = "$build_old_libs" || + test yes = "$link_static"; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) func_stripname '-R' '' "$libdir" + temp_xrpath=$func_stripname_result + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) func_append xrpath " $temp_xrpath";; + esac;; + *) func_append temp_deplibs " $libdir";; + esac + done + dependency_libs=$temp_deplibs + fi + + func_append newlib_search_path " $absdir" + # Link against this library + test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result";; + *) func_resolve_sysroot "$deplib" ;; + esac + if $opt_preserve_dup_deps; then + case "$tmp_libs " in + *" $func_resolve_sysroot_result "*) + func_append specialdeplibs " $func_resolve_sysroot_result" ;; + esac + fi + func_append tmp_libs " $func_resolve_sysroot_result" + done + + if test no != "$link_all_deplibs"; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + path= + case $deplib in + -L*) path=$deplib ;; + *.la) + func_resolve_sysroot "$deplib" + deplib=$func_resolve_sysroot_result + func_dirname "$deplib" "" "." + dir=$func_dirname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + func_warning "cannot determine absolute directory name of '$dir'" + absdir=$dir + fi + ;; + esac + if $GREP "^installed=no" $deplib > /dev/null; then + case $host in + *-*-darwin*) + depdepl= + eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names"; then + for tmp in $deplibrary_names; do + depdepl=$tmp + done + if test -f "$absdir/$objdir/$depdepl"; then + depdepl=$absdir/$objdir/$depdepl + darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + if test -z "$darwin_install_name"; then + darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + fi + func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl" + func_append linker_flags " -dylib_file $darwin_install_name:$depdepl" + path= + fi + fi + ;; + *) + path=-L$absdir/$objdir + ;; + esac + else + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + test -z "$libdir" && \ + func_fatal_error "'$deplib' is not a valid libtool archive" + test "$absdir" != "$libdir" && \ + func_warning "'$deplib' seems to be moved" + + path=-L$absdir + fi + ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + if test link = "$pass"; then + if test prog = "$linkmode"; then + compile_deplibs="$new_inherited_linker_flags $compile_deplibs" + finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" + else + compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + fi + fi + dependency_libs=$newdependency_libs + if test dlpreopen = "$pass"; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test dlopen != "$pass"; then + test conv = "$pass" || { + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) func_append lib_search_path " $dir" ;; + esac + done + newlib_search_path= + } + + if test prog,link = "$linkmode,$pass"; then + vars="compile_deplibs finalize_deplibs" + else + vars=deplibs + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) func_append tmp_libs " $deplib" ;; + esac + ;; + *) func_append tmp_libs " $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + + # Add Sun CC postdeps if required: + test CXX = "$tagname" && { + case $host_os in + linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C++ 5.9 + func_suncc_cstd_abi + + if test no != "$suncc_use_cstd_abi"; then + func_append postdeps ' -library=Cstd -library=Crun' + fi + ;; + esac + ;; + + solaris*) + func_cc_basename "$CC" + case $func_cc_basename_result in + CC* | sunCC*) + func_suncc_cstd_abi + + if test no != "$suncc_use_cstd_abi"; then + func_append postdeps ' -library=Cstd -library=Crun' + fi + ;; + esac + ;; + esac + } + + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i= + ;; + esac + if test -n "$i"; then + func_append tmp_libs " $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test prog = "$linkmode"; then + dlfiles=$newdlfiles + fi + if test prog = "$linkmode" || test lib = "$linkmode"; then + dlprefiles=$newdlprefiles + fi + + case $linkmode in + oldlib) + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + func_warning "'-dlopen' is ignored for archives" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "'-l' and '-L' are ignored for archives" ;; + esac + + test -n "$rpath" && \ + func_warning "'-rpath' is ignored for archives" + + test -n "$xrpath" && \ + func_warning "'-R' is ignored for archives" + + test -n "$vinfo" && \ + func_warning "'-version-info/-version-number' is ignored for archives" + + test -n "$release" && \ + func_warning "'-release' is ignored for archives" + + test -n "$export_symbols$export_symbols_regex" && \ + func_warning "'-export-symbols' is ignored for archives" + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs=$output + func_append objs "$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form 'libNAME.la'. + case $outputname in + lib*) + func_stripname 'lib' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + test no = "$module" \ + && func_fatal_help "libtool library '$output' must begin with 'lib'" + + if test no != "$need_lib_prefix"; then + # Add the "lib" prefix for modules if required + func_stripname '' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + func_stripname '' '.la' "$outputname" + libname=$func_stripname_result + fi + ;; + esac + + if test -n "$objs"; then + if test pass_all != "$deplibs_check_method"; then + func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs" + else + echo + $ECHO "*** Warning: Linking the shared library $output against the non-libtool" + $ECHO "*** objects $objs is not portable!" + func_append libobjs " $objs" + fi + fi + + test no = "$dlself" \ + || func_warning "'-dlopen self' is ignored for libtool libraries" + + set dummy $rpath + shift + test 1 -lt "$#" \ + && func_warning "ignoring multiple '-rpath's for a libtool library" + + install_libdir=$1 + + oldlibs= + if test -z "$rpath"; then + if test yes = "$build_libtool_libs"; then + # Building a libtool convenience library. + # Some compilers have problems with a '.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + test -n "$vinfo" && \ + func_warning "'-version-info/-version-number' is ignored for convenience libraries" + + test -n "$release" && \ + func_warning "'-release' is ignored for convenience libraries" + else + + # Parse the version information argument. + save_ifs=$IFS; IFS=: + set dummy $vinfo 0 0 0 + shift + IFS=$save_ifs + + test -n "$7" && \ + func_fatal_help "too many parameters to '-version-info'" + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major=$1 + number_minor=$2 + number_revision=$3 + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # that has an extra 1 added just for fun + # + case $version_type in + # correct linux to gnu/linux during the next big refactor + darwin|freebsd-elf|linux|osf|windows|none) + func_arith $number_major + $number_minor + current=$func_arith_result + age=$number_minor + revision=$number_revision + ;; + freebsd-aout|qnx|sunos) + current=$number_major + revision=$number_minor + age=0 + ;; + irix|nonstopux) + func_arith $number_major + $number_minor + current=$func_arith_result + age=$number_minor + revision=$number_minor + lt_irix_increment=no + ;; + *) + func_fatal_configuration "$modename: unknown library version type '$version_type'" + ;; + esac + ;; + no) + current=$1 + revision=$2 + age=$3 + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "CURRENT '$current' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "REVISION '$revision' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "AGE '$age' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" + ;; + esac + + if test "$age" -gt "$current"; then + func_error "AGE '$age' is greater than the current interface number '$current'" + func_fatal_error "'$vinfo' is not valid version information" + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + func_arith $current - $age + major=.$func_arith_result + versuffix=$major.$age.$revision + # Darwin ld doesn't like 0 for these options... + func_arith $current + 1 + minor_current=$func_arith_result + xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + # On Darwin other compilers + case $CC in + nagfor*) + verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" + ;; + *) + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + esac + ;; + + freebsd-aout) + major=.$current + versuffix=.$current.$revision + ;; + + freebsd-elf) + func_arith $current - $age + major=.$func_arith_result + versuffix=$major.$age.$revision + ;; + + irix | nonstopux) + if test no = "$lt_irix_increment"; then + func_arith $current - $age + else + func_arith $current - $age + 1 + fi + major=$func_arith_result + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring=$verstring_prefix$major.$revision + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test 0 -ne "$loop"; do + func_arith $revision - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring=$verstring_prefix$major.$iface:$verstring + done + + # Before this point, $major must not contain '.'. + major=.$major + versuffix=$major.$revision + ;; + + linux) # correct to gnu/linux during the next big refactor + func_arith $current - $age + major=.$func_arith_result + versuffix=$major.$age.$revision + ;; + + osf) + func_arith $current - $age + major=.$func_arith_result + versuffix=.$current.$age.$revision + verstring=$current.$age.$revision + + # Add in all the interfaces that we are compatible with. + loop=$age + while test 0 -ne "$loop"; do + func_arith $current - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring=$verstring:$iface.0 + done + + # Make executables depend on our current version. + func_append verstring ":$current.0" + ;; + + qnx) + major=.$current + versuffix=.$current + ;; + + sco) + major=.$current + versuffix=.$current + ;; + + sunos) + major=.$current + versuffix=.$current.$revision + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 file systems. + func_arith $current - $age + major=$func_arith_result + versuffix=-$major + ;; + + *) + func_fatal_configuration "unknown library version type '$version_type'" + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring=0.0 + ;; + esac + if test no = "$need_version"; then + versuffix= + else + versuffix=.0.0 + fi + fi + + # Remove version info from name if versioning should be avoided + if test yes,no = "$avoid_version,$need_version"; then + major= + versuffix= + verstring= + fi + + # Check to see if the archive will have undefined symbols. + if test yes = "$allow_undefined"; then + if test unsupported = "$allow_undefined_flag"; then + if test yes = "$build_old_libs"; then + func_warning "undefined symbols not allowed in $host shared libraries; building static only" + build_libtool_libs=no + else + func_fatal_error "can't build $host shared library unless -no-undefined is specified" + fi + fi + else + # Don't allow undefined symbols. + allow_undefined_flag=$no_undefined_flag + fi + + fi + + func_generate_dlsyms "$libname" "$libname" : + func_append libobjs " $symfileobj" + test " " = "$libobjs" && libobjs= + + if test relink != "$opt_mode"; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$ECHO "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext | *.gcno) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*) + if test -n "$precious_files_regex"; then + if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + func_append removelist " $p" + ;; + *) ;; + esac + done + test -n "$removelist" && \ + func_show_eval "${RM}r \$removelist" + fi + + # Now set the variables for building old libraries. + if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then + func_append oldlibs " $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + #for path in $notinst_path; do + # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` + # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` + # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` + #done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + func_replace_sysroot "$libdir" + func_append temp_xrpath " -R$func_replace_sysroot_result" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + done + if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles=$dlfiles + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) func_append dlfiles " $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles=$dlprefiles + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) func_append dlprefiles " $lib" ;; + esac + done + + if test yes = "$build_libtool_libs"; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + func_append deplibs " System.ltframework" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test yes = "$build_libtool_need_lc"; then + func_append deplibs " -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release= + versuffix= + major= + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $opt_dry_run || $RM conftest.c + cat > conftest.c </dev/null` + $nocaseglob + else + potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` + fi + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null | + $GREP " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib=$potent_lib + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | $SED 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;; + *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | + $SED -e 10q | + $EGREP "$file_magic_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" + a_deplib= + break 2 + fi + done + done + fi + if test -n "$a_deplib"; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib"; then + $ECHO "*** with $libname but no candidates were found. (...for file magic test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a file magic. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + func_append newdeplibs " $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + for a_deplib in $deplibs; do + case $a_deplib in + -l*) + func_stripname -l '' "$a_deplib" + name=$func_stripname_result + if test yes = "$allow_libtool_libs_with_static_runtimes"; then + case " $predeps $postdeps " in + *" $a_deplib "*) + func_append newdeplibs " $a_deplib" + a_deplib= + ;; + esac + fi + if test -n "$a_deplib"; then + libname=`eval "\\$ECHO \"$libname_spec\""` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib=$potent_lib # see symlink-check above in file_magic test + if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ + $EGREP "$match_pattern_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" + a_deplib= + break 2 + fi + done + done + fi + if test -n "$a_deplib"; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib"; then + $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a regex pattern. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + func_append newdeplibs " $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs= + tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` + if test yes = "$allow_libtool_libs_with_static_runtimes"; then + for i in $predeps $postdeps; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"` + done + fi + case $tmp_deplibs in + *[!\ \ ]*) + echo + if test none = "$deplibs_check_method"; then + echo "*** Warning: inter-library dependencies are not supported in this platform." + else + echo "*** Warning: inter-library dependencies are not known to be supported." + fi + echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + ;; + esac + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library with the System framework + newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + if test yes = "$droppeddeps"; then + if test yes = "$module"; then + echo + echo "*** Warning: libtool could not satisfy all declared inter-library" + $ECHO "*** dependencies of module $libname. Therefore, libtool will create" + echo "*** a static module, that should work as long as the dlopening" + echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using 'nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** 'nm' from GNU binutils and a full rebuild may help." + fi + if test no = "$build_old_libs"; then + oldlibs=$output_objdir/$libname.$libext + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + echo "*** The inter-library dependencies that have been dropped here will be" + echo "*** automatically added whenever a program is linked with this library" + echo "*** or is declared to -dlopen it." + + if test no = "$allow_undefined"; then + echo + echo "*** Since this library must not contain undefined symbols," + echo "*** because either the platform does not support them or" + echo "*** it was explicitly requested with -no-undefined," + echo "*** libtool will only create a static version of it." + if test no = "$build_old_libs"; then + oldlibs=$output_objdir/$libname.$libext + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + case $host in + *-*-darwin*) + newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $deplibs " in + *" -L$path/$objdir "*) + func_append new_libs " -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) func_append new_libs " $deplib" ;; + esac + ;; + *) func_append new_libs " $deplib" ;; + esac + done + deplibs=$new_libs + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test yes = "$build_libtool_libs"; then + # Remove $wl instances when linking with ld. + # FIXME: should test the right _cmds variable. + case $archive_cmds in + *\$LD\ *) wl= ;; + esac + if test yes = "$hardcode_into_libs"; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath=$finalize_rpath + test relink = "$opt_mode" || rpath=$compile_rpath$rpath + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + func_replace_sysroot "$libdir" + libdir=$func_replace_sysroot_result + if test -z "$hardcode_libdirs"; then + hardcode_libdirs=$libdir + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append dep_rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) func_append perm_rpath " $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir=$hardcode_libdirs + eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + func_append rpath "$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath=$finalize_shlibpath + test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + shift + realname=$1 + shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname=$realname + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib=$output_objdir/$realname + linknames= + for link + do + func_append linknames " $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` + test "X$libobjs" = "X " && libobjs= + + delfiles= + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" + export_symbols=$output_objdir/$libname.uexp + func_append delfiles " $export_symbols" + fi + + orig_export_symbols= + case $host_os in + cygwin* | mingw* | cegcc*) + if test -n "$export_symbols" && test -z "$export_symbols_regex"; then + # exporting using user supplied symfile + func_dll_def_p "$export_symbols" || { + # and it's NOT already a .def file. Must figure out + # which of the given symbols are data symbols and tag + # them as such. So, trigger use of export_symbols_cmds. + # export_symbols gets reassigned inside the "prepare + # the list of exported symbols" if statement, so the + # include_expsyms logic still works. + orig_export_symbols=$export_symbols + export_symbols= + always_export_symbols=yes + } + fi + ;; + esac + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then + func_verbose "generating symbol list for '$libname.la'" + export_symbols=$output_objdir/$libname.exp + $opt_dry_run || $RM $export_symbols + cmds=$export_symbols_cmds + save_ifs=$IFS; IFS='~' + for cmd1 in $cmds; do + IFS=$save_ifs + # Take the normal branch if the nm_file_list_spec branch + # doesn't work or if tool conversion is not needed. + case $nm_file_list_spec~$to_tool_file_cmd in + *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) + try_normal_branch=yes + eval cmd=\"$cmd1\" + func_len " $cmd" + len=$func_len_result + ;; + *) + try_normal_branch=no + ;; + esac + if test yes = "$try_normal_branch" \ + && { test "$len" -lt "$max_cmd_len" \ + || test "$max_cmd_len" -le -1; } + then + func_show_eval "$cmd" 'exit $?' + skipped_export=false + elif test -n "$nm_file_list_spec"; then + func_basename "$output" + output_la=$func_basename_result + save_libobjs=$libobjs + save_output=$output + output=$output_objdir/$output_la.nm + func_to_tool_file "$output" + libobjs=$nm_file_list_spec$func_to_tool_file_result + func_append delfiles " $output" + func_verbose "creating $NM input file list: $output" + for obj in $save_libobjs; do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > "$output" + eval cmd=\"$cmd1\" + func_show_eval "$cmd" 'exit $?' + output=$save_output + libobjs=$save_libobjs + skipped_export=false + else + # The command line is too long to execute in one step. + func_verbose "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS=$save_ifs + if test -n "$export_symbols_regex" && test : != "$skipped_export"; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols=$export_symbols + test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test : != "$skipped_export" && test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for '$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands, which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + func_append tmp_deplibs " $test_deplib" + ;; + esac + done + deplibs=$tmp_deplibs + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec" && + test yes = "$compiler_needs_object" && + test -z "$libobjs"; then + # extract the archives, so we have objects to list. + # TODO: could optimize this to just extract one archive. + whole_archive_flag_spec= + fi + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + else + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $convenience + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + fi + + if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + func_append linker_flags " $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test relink = "$opt_mode"; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test yes = "$module" && test -n "$module_cmds"; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test : != "$skipped_export" && + func_len " $test_cmds" && + len=$func_len_result && + test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise + # or, if using GNU ld and skipped_export is not :, use a linker + # script. + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + func_basename "$output" + output_la=$func_basename_result + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + last_robj= + k=1 + + if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then + output=$output_objdir/$output_la.lnkscript + func_verbose "creating GNU ld script: $output" + echo 'INPUT (' > $output + for obj in $save_libobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + echo ')' >> $output + func_append delfiles " $output" + func_to_tool_file "$output" + output=$func_to_tool_file_result + elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then + output=$output_objdir/$output_la.lnk + func_verbose "creating linker input file list: $output" + : > $output + set x $save_libobjs + shift + firstobj= + if test yes = "$compiler_needs_object"; then + firstobj="$1 " + shift + fi + for obj + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + func_append delfiles " $output" + func_to_tool_file "$output" + output=$firstobj\"$file_list_spec$func_to_tool_file_result\" + else + if test -n "$save_libobjs"; then + func_verbose "creating reloadable object files..." + output=$output_objdir/$output_la-$k.$objext + eval test_cmds=\"$reload_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + if test -z "$objlist" || + test "$len" -lt "$max_cmd_len"; then + func_append objlist " $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test 1 -eq "$k"; then + # The first file doesn't have a previous command to add. + reload_objs=$objlist + eval concat_cmds=\"$reload_cmds\" + else + # All subsequent reloadable object files will link in + # the last one created. + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" + fi + last_robj=$output_objdir/$output_la-$k.$objext + func_arith $k + 1 + k=$func_arith_result + output=$output_objdir/$output_la-$k.$objext + objlist=" $obj" + func_len " $last_robj" + func_arith $len0 + $func_len_result + len=$func_arith_result + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\$concat_cmds$reload_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + fi + func_append delfiles " $output" + + else + output= + fi + + ${skipped_export-false} && { + func_verbose "generating symbol list for '$libname.la'" + export_symbols=$output_objdir/$libname.exp + $opt_dry_run || $RM $export_symbols + libobjs=$output + # Append the command to create the export file. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + fi + } + + test -n "$save_libobjs" && + func_verbose "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs=$IFS; IFS='~' + for cmd in $concat_cmds; do + IFS=$save_ifs + $opt_quiet || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test relink = "$opt_mode"; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS=$save_ifs + + if test -n "$export_symbols_regex" && ${skipped_export-false}; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + + ${skipped_export-false} && { + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols=$export_symbols + test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for '$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands, which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + } + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test yes = "$module" && test -n "$module_cmds"; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + fi + + if test -n "$delfiles"; then + # Append the command to remove temporary files to $cmds. + eval cmds=\"\$cmds~\$RM $delfiles\" + fi + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + + save_ifs=$IFS; IFS='~' + for cmd in $cmds; do + IFS=$sp$nl + eval cmd=\"$cmd\" + IFS=$save_ifs + $opt_quiet || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test relink = "$opt_mode"; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS=$save_ifs + + # Restore the uninstalled library and exit + if test relink = "$opt_mode"; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + func_show_eval '${RM}r "$gentop"' + fi + fi + + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test yes = "$module" || test yes = "$export_dynamic"; then + # On all known operating systems, these are identical. + dlname=$soname + fi + fi + ;; + + obj) + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + func_warning "'-dlopen' is ignored for objects" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "'-l' and '-L' are ignored for objects" ;; + esac + + test -n "$rpath" && \ + func_warning "'-rpath' is ignored for objects" + + test -n "$xrpath" && \ + func_warning "'-R' is ignored for objects" + + test -n "$vinfo" && \ + func_warning "'-version-info' is ignored for objects" + + test -n "$release" && \ + func_warning "'-release' is ignored for objects" + + case $output in + *.lo) + test -n "$objs$old_deplibs" && \ + func_fatal_error "cannot build library object '$output' from non-libtool objects" + + libobj=$output + func_lo2o "$libobj" + obj=$func_lo2o_result + ;; + *) + libobj= + obj=$output + ;; + esac + + # Delete the old objects. + $opt_dry_run || $RM $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # if reload_cmds runs $LD directly, get rid of -Wl from + # whole_archive_flag_spec and hope we can get by with turning comma + # into space. + case $reload_cmds in + *\$LD[\ \$]*) wl= ;; + esac + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" + test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` + reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags + else + gentop=$output_objdir/${obj}x + func_append generated " $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # If we're not building shared, we need to use non_pic_objs + test yes = "$build_libtool_libs" || libobjs=$non_pic_objects + + # Create the old-style object. + reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs + + output=$obj + func_execute_cmds "$reload_cmds" 'exit $?' + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + fi + + test yes = "$build_libtool_libs" || { + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + } + + if test -n "$pic_flag" || test default != "$pic_mode"; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output=$libobj + func_execute_cmds "$reload_cmds" 'exit $?' + fi + + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) func_stripname '' '.exe' "$output" + output=$func_stripname_result.exe;; + esac + test -n "$vinfo" && \ + func_warning "'-version-info' is ignored for programs" + + test -n "$release" && \ + func_warning "'-release' is ignored for programs" + + $preload \ + && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \ + && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support." + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + case $host in + *-*-darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + # But is supposedly fixed on 10.4 or later (yay!). + if test CXX = "$tagname"; then + case ${MACOSX_DEPLOYMENT_TARGET-10.0} in + 10.[0123]) + func_append compile_command " $wl-bind_at_load" + func_append finalize_command " $wl-bind_at_load" + ;; + esac + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $compile_deplibs " in + *" -L$path/$objdir "*) + func_append new_libs " -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $compile_deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) func_append new_libs " $deplib" ;; + esac + ;; + *) func_append new_libs " $deplib" ;; + esac + done + compile_deplibs=$new_libs + + + func_append compile_command " $compile_deplibs" + func_append finalize_command " $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs=$libdir + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) func_append perm_rpath " $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + ::) dllsearchpath=$libdir;; + *) func_append dllsearchpath ":$libdir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir=$hardcode_libdirs + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath=$rpath + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs=$libdir + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) func_append finalize_perm_rpath " $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir=$hardcode_libdirs + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath=$rpath + + if test -n "$libobjs" && test yes = "$build_old_libs"; then + # Transform all the library objects into standard objects. + compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + fi + + func_generate_dlsyms "$outputname" "@PROGRAM@" false + + # template prelinking step + if test -n "$prelink_cmds"; then + func_execute_cmds "$prelink_cmds" 'exit $?' + fi + + wrappers_required=: + case $host in + *cegcc* | *mingw32ce*) + # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. + wrappers_required=false + ;; + *cygwin* | *mingw* ) + test yes = "$build_libtool_libs" || wrappers_required=false + ;; + *) + if test no = "$need_relink" || test yes != "$build_libtool_libs"; then + wrappers_required=false + fi + ;; + esac + $wrappers_required || { + # Replace the output file specification. + compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + link_command=$compile_command$compile_rpath + + # We have no uninstalled library dependencies, so finalize right now. + exit_status=0 + func_show_eval "$link_command" 'exit_status=$?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Delete the generated files. + if test -f "$output_objdir/${outputname}S.$objext"; then + func_show_eval '$RM "$output_objdir/${outputname}S.$objext"' + fi + + exit $exit_status + } + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + func_append rpath "$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + func_append rpath "$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test yes = "$no_install"; then + # We don't need to create a wrapper script. + link_command=$compile_var$compile_command$compile_rpath + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $opt_dry_run || $RM $output + # Link the executable and exit + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + exit $EXIT_SUCCESS + fi + + case $hardcode_action,$fast_install in + relink,*) + # Fast installation is not supported + link_command=$compile_var$compile_command$compile_rpath + relink_command=$finalize_var$finalize_command$finalize_rpath + + func_warning "this platform does not like uninstalled shared libraries" + func_warning "'$output' will be relinked during installation" + ;; + *,yes) + link_command=$finalize_var$compile_command$finalize_rpath + relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` + ;; + *,no) + link_command=$compile_var$compile_command$compile_rpath + relink_command=$finalize_var$finalize_command$finalize_rpath + ;; + *,needless) + link_command=$finalize_var$compile_command$finalize_rpath + relink_command= + ;; + esac + + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname + + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output_objdir/$outputname" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Now create the wrapper script. + func_verbose "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + fi + + # Only actually do things if not in dry run mode. + $opt_dry_run || { + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) func_stripname '' '.exe' "$output" + output=$func_stripname_result ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + func_stripname '' '.exe' "$outputname" + outputname=$func_stripname_result ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + func_dirname_and_basename "$output" "" "." + output_name=$func_basename_result + output_path=$func_dirname_result + cwrappersource=$output_path/$objdir/lt-$output_name.c + cwrapper=$output_path/$output_name.exe + $RM $cwrappersource $cwrapper + trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + func_emit_cwrapperexe_src > $cwrappersource + + # The wrapper executable is built using the $host compiler, + # because it contains $host paths and files. If cross- + # compiling, it, like the target executable, must be + # executed on the $host or under an emulation environment. + $opt_dry_run || { + $LTCC $LTCFLAGS -o $cwrapper $cwrappersource + $STRIP $cwrapper + } + + # Now, create the wrapper script for func_source use: + func_ltwrapper_scriptname $cwrapper + $RM $func_ltwrapper_scriptname_result + trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 + $opt_dry_run || { + # note: this script will not be executed, so do not chmod. + if test "x$build" = "x$host"; then + $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result + else + func_emit_wrapper no > $func_ltwrapper_scriptname_result + fi + } + ;; + * ) + $RM $output + trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 + + func_emit_wrapper no > $output + chmod +x $output + ;; + esac + } + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + case $build_libtool_libs in + convenience) + oldobjs="$libobjs_save $symfileobj" + addlibs=$convenience + build_libtool_libs=no + ;; + module) + oldobjs=$libobjs_save + addlibs=$old_convenience + build_libtool_libs=no + ;; + *) + oldobjs="$old_deplibs $non_pic_objects" + $preload && test -f "$symfileobj" \ + && func_append oldobjs " $symfileobj" + addlibs=$old_convenience + ;; + esac + + if test -n "$addlibs"; then + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $addlibs + func_append oldobjs " $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then + cmds=$old_archive_from_new_cmds + else + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append oldobjs " $func_extract_archives_result" + fi + + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + func_basename "$obj" + $ECHO "$func_basename_result" + done | sort | sort -uc >/dev/null 2>&1); then + : + else + echo "copying selected object files to avoid basename conflicts..." + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + func_mkdir_p "$gentop" + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + func_basename "$obj" + objbase=$func_basename_result + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + func_arith $counter + 1 + counter=$func_arith_result + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + func_append oldobjs " $gentop/$newobj" + ;; + *) func_append oldobjs " $obj" ;; + esac + done + fi + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + eval cmds=\"$old_archive_cmds\" + + func_len " $cmds" + len=$func_len_result + if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + elif test -n "$archiver_list_spec"; then + func_verbose "using command file archive linking..." + for obj in $oldobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > $output_objdir/$libname.libcmd + func_to_tool_file "$output_objdir/$libname.libcmd" + oldobjs=" $archiver_list_spec$func_to_tool_file_result" + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + func_verbose "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + oldobjs= + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + eval test_cmds=\"$old_archive_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + for obj in $save_oldobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + func_append objlist " $obj" + if test "$len" -lt "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj"; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$old_archive_cmds\" + objlist= + len=$len0 + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test -z "$oldobjs"; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + func_execute_cmds "$cmds" 'exit $?' + done + + test -n "$generated" && \ + func_show_eval "${RM}r$generated" + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test yes = "$build_old_libs" && old_library=$libname.$libext + func_verbose "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + if test yes = "$hardcode_automatic"; then + relink_command= + fi + + # Only create the output if not a dry run. + $opt_dry_run || { + for installed in no yes; do + if test yes = "$installed"; then + if test -z "$install_libdir"; then + break + fi + output=$output_objdir/${outputname}i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + func_basename "$deplib" + name=$func_basename_result + func_resolve_sysroot "$deplib" + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` + test -z "$libdir" && \ + func_fatal_error "'$deplib' is not a valid libtool archive" + func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" + ;; + -L*) + func_stripname -L '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -L$func_replace_sysroot_result" + ;; + -R*) + func_stripname -R '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -R$func_replace_sysroot_result" + ;; + *) func_append newdependency_libs " $deplib" ;; + esac + done + dependency_libs=$newdependency_libs + newdlfiles= + + for lib in $dlfiles; do + case $lib in + *.la) + func_basename "$lib" + name=$func_basename_result + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "'$lib' is not a valid libtool archive" + func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" + ;; + *) func_append newdlfiles " $lib" ;; + esac + done + dlfiles=$newdlfiles + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + *.la) + # Only pass preopened files to the pseudo-archive (for + # eventual linking with the app. that links it) if we + # didn't already link the preopened objects directly into + # the library: + func_basename "$lib" + name=$func_basename_result + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "'$lib' is not a valid libtool archive" + func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" + ;; + esac + done + dlprefiles=$newdlprefiles + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; + *) abs=`pwd`"/$lib" ;; + esac + func_append newdlfiles " $abs" + done + dlfiles=$newdlfiles + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; + *) abs=`pwd`"/$lib" ;; + esac + func_append newdlprefiles " $abs" + done + dlprefiles=$newdlprefiles + fi + $RM $output + # place dlname in correct position for cygwin + # In fact, it would be nice if we could use this code for all target + # systems that can't hard-code library paths into their executables + # and that have no shared library path variable independent of PATH, + # but it turns out we can't easily determine that from inspecting + # libtool variables, so we have to hard-code the OSs to which it + # applies here; at the moment, that means platforms that use the PE + # object format with DLL files. See the long comment at the top of + # tests/bindir.at for full details. + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) + # If a -bindir argument was supplied, place the dll there. + if test -n "$bindir"; then + func_relative_path "$install_libdir" "$bindir" + tdlname=$func_relative_path_result/$dlname + else + # Otherwise fall back on heuristic. + tdlname=../bin/$dlname + fi + ;; + esac + $ECHO > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM (GNU $PACKAGE) $VERSION +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Linker flags that cannot go in dependency_libs. +inherited_linker_flags='$new_inherited_linker_flags' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Names of additional weak libraries provided by this library +weak_library_names='$weak_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test no,yes = "$installed,$need_relink"; then + $ECHO >> $output "\ +relink_command=\"$relink_command\"" + fi + done + } + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' + ;; + esac + exit $EXIT_SUCCESS +} + +if test link = "$opt_mode" || test relink = "$opt_mode"; then + func_mode_link ${1+"$@"} +fi + + +# func_mode_uninstall arg... +func_mode_uninstall () +{ + $debug_cmd + + RM=$nonopt + files= + rmforce=false + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic=$magic + + for arg + do + case $arg in + -f) func_append RM " $arg"; rmforce=: ;; + -*) func_append RM " $arg" ;; + *) func_append files " $arg" ;; + esac + done + + test -z "$RM" && \ + func_fatal_help "you must specify an RM program" + + rmdirs= + + for file in $files; do + func_dirname "$file" "" "." + dir=$func_dirname_result + if test . = "$dir"; then + odir=$objdir + else + odir=$dir/$objdir + fi + func_basename "$file" + name=$func_basename_result + test uninstall = "$opt_mode" && odir=$dir + + # Remember odir for removal later, being careful to avoid duplicates + if test clean = "$opt_mode"; then + case " $rmdirs " in + *" $odir "*) ;; + *) func_append rmdirs " $odir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if { test -L "$file"; } >/dev/null 2>&1 || + { test -h "$file"; } >/dev/null 2>&1 || + test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif $rmforce; then + continue + fi + + rmfiles=$file + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if func_lalib_p "$file"; then + func_source $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + func_append rmfiles " $odir/$n" + done + test -n "$old_library" && func_append rmfiles " $odir/$old_library" + + case $opt_mode in + clean) + case " $library_names " in + *" $dlname "*) ;; + *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; + esac + test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" + ;; + uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1' + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1' + fi + # FIXME: should reinstall the best remaining shared library. + ;; + esac + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if func_lalib_p "$file"; then + + # Read the .lo file + func_source $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" && test none != "$pic_object"; then + func_append rmfiles " $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" && test none != "$non_pic_object"; then + func_append rmfiles " $dir/$non_pic_object" + fi + fi + ;; + + *) + if test clean = "$opt_mode"; then + noexename=$name + case $file in + *.exe) + func_stripname '' '.exe' "$file" + file=$func_stripname_result + func_stripname '' '.exe' "$name" + noexename=$func_stripname_result + # $file with .exe has already been added to rmfiles, + # add $file without .exe + func_append rmfiles " $file" + ;; + esac + # Do a test to see if this is a libtool program. + if func_ltwrapper_p "$file"; then + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + relink_command= + func_source $func_ltwrapper_scriptname_result + func_append rmfiles " $func_ltwrapper_scriptname_result" + else + relink_command= + func_source $dir/$noexename + fi + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + func_append rmfiles " $odir/$name $odir/${name}S.$objext" + if test yes = "$fast_install" && test -n "$relink_command"; then + func_append rmfiles " $odir/lt-$name" + fi + if test "X$noexename" != "X$name"; then + func_append rmfiles " $odir/lt-$noexename.c" + fi + fi + fi + ;; + esac + func_show_eval "$RM $rmfiles" 'exit_status=1' + done + + # Try to remove the $objdir's in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + func_show_eval "rmdir $dir >/dev/null 2>&1" + fi + done + + exit $exit_status +} + +if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then + func_mode_uninstall ${1+"$@"} +fi + +test -z "$opt_mode" && { + help=$generic_help + func_fatal_help "you must specify a MODE" +} + +test -z "$exec_cmd" && \ + func_fatal_help "invalid operation mode '$opt_mode'" + +if test -n "$exec_cmd"; then + eval exec "$exec_cmd" + exit $EXIT_FAILURE +fi + +exit $exit_status + + +# The TAGs below are defined such that we never get into a situation +# where we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +build_libtool_libs=no +build_old_libs=yes +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff --git a/thirdparty/protobuf-2.6.1/gtest/build-aux/missing b/thirdparty/protobuf-2.6.1/gtest/build-aux/missing new file mode 100755 index 00000000..625aeb11 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/build-aux/missing @@ -0,0 +1,215 @@ +#! /bin/sh +# Common wrapper for a few potentially missing GNU programs. + +scriptversion=2018-03-07.03; # UTC + +# Copyright (C) 1996-2018 Free Software Foundation, Inc. +# Originally written by Fran,cois Pinard , 1996. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try '$0 --help' for more information" + exit 1 +fi + +case $1 in + + --is-lightweight) + # Used by our autoconf macros to check whether the available missing + # script is modern enough. + exit 0 + ;; + + --run) + # Back-compat with the calling convention used by older automake. + shift + ;; + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due +to PROGRAM being missing or too old. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + +Supported PROGRAM values: + aclocal autoconf autoheader autom4te automake makeinfo + bison yacc flex lex help2man + +Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and +'g' are ignored when checking the name. + +Send bug reports to ." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + exit $? + ;; + + -*) + echo 1>&2 "$0: unknown '$1' option" + echo 1>&2 "Try '$0 --help' for more information" + exit 1 + ;; + +esac + +# Run the given program, remember its exit status. +"$@"; st=$? + +# If it succeeded, we are done. +test $st -eq 0 && exit 0 + +# Also exit now if we it failed (or wasn't found), and '--version' was +# passed; such an option is passed most likely to detect whether the +# program is present and works. +case $2 in --version|--help) exit $st;; esac + +# Exit code 63 means version mismatch. This often happens when the user +# tries to use an ancient version of a tool on a file that requires a +# minimum version. +if test $st -eq 63; then + msg="probably too old" +elif test $st -eq 127; then + # Program was missing. + msg="missing on your system" +else + # Program was found and executed, but failed. Give up. + exit $st +fi + +perl_URL=https://www.perl.org/ +flex_URL=https://github.com/westes/flex +gnu_software_URL=https://www.gnu.org/software + +program_details () +{ + case $1 in + aclocal|automake) + echo "The '$1' program is part of the GNU Automake package:" + echo "<$gnu_software_URL/automake>" + echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/autoconf>" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + autoconf|autom4te|autoheader) + echo "The '$1' program is part of the GNU Autoconf package:" + echo "<$gnu_software_URL/autoconf/>" + echo "It also requires GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + esac +} + +give_advice () +{ + # Normalize program name to check for. + normalized_program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + + printf '%s\n' "'$1' is $msg." + + configure_deps="'configure.ac' or m4 files included by 'configure.ac'" + case $normalized_program in + autoconf*) + echo "You should only need it if you modified 'configure.ac'," + echo "or m4 files included by it." + program_details 'autoconf' + ;; + autoheader*) + echo "You should only need it if you modified 'acconfig.h' or" + echo "$configure_deps." + program_details 'autoheader' + ;; + automake*) + echo "You should only need it if you modified 'Makefile.am' or" + echo "$configure_deps." + program_details 'automake' + ;; + aclocal*) + echo "You should only need it if you modified 'acinclude.m4' or" + echo "$configure_deps." + program_details 'aclocal' + ;; + autom4te*) + echo "You might have modified some maintainer files that require" + echo "the 'autom4te' program to be rebuilt." + program_details 'autom4te' + ;; + bison*|yacc*) + echo "You should only need it if you modified a '.y' file." + echo "You may want to install the GNU Bison package:" + echo "<$gnu_software_URL/bison/>" + ;; + lex*|flex*) + echo "You should only need it if you modified a '.l' file." + echo "You may want to install the Fast Lexical Analyzer package:" + echo "<$flex_URL>" + ;; + help2man*) + echo "You should only need it if you modified a dependency" \ + "of a man page." + echo "You may want to install the GNU Help2man package:" + echo "<$gnu_software_URL/help2man/>" + ;; + makeinfo*) + echo "You should only need it if you modified a '.texi' file, or" + echo "any other file indirectly affecting the aspect of the manual." + echo "You might want to install the Texinfo package:" + echo "<$gnu_software_URL/texinfo/>" + echo "The spurious makeinfo call might also be the consequence of" + echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" + echo "want to install GNU make:" + echo "<$gnu_software_URL/make/>" + ;; + *) + echo "You might have modified some files without having the proper" + echo "tools for further handling them. Check the 'README' file, it" + echo "often tells you about the needed prerequisites for installing" + echo "this package. You may also peek at any GNU archive site, in" + echo "case some other package contains this missing '$1' program." + ;; + esac +} + +give_advice "$1" | sed -e '1s/^/WARNING: /' \ + -e '2,$s/^/ /' >&2 + +# Propagate the correct exit status (expected to be 127 for a program +# not found, 63 for a program that failed due to version mismatch). +exit $st + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/thirdparty/protobuf-2.6.1/gtest/build-aux/stamp-h1 b/thirdparty/protobuf-2.6.1/gtest/build-aux/stamp-h1 new file mode 100644 index 00000000..3841b476 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/build-aux/stamp-h1 @@ -0,0 +1 @@ +timestamp for build-aux/config.h diff --git a/thirdparty/protobuf-2.6.1/gtest/build-aux/test-driver b/thirdparty/protobuf-2.6.1/gtest/build-aux/test-driver new file mode 100755 index 00000000..b8521a48 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/build-aux/test-driver @@ -0,0 +1,148 @@ +#! /bin/sh +# test-driver - basic testsuite driver script. + +scriptversion=2018-03-07.03; # UTC + +# Copyright (C) 2011-2018 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +# Make unconditional expansion of undefined variables an error. This +# helps a lot in preventing typo-related bugs. +set -u + +usage_error () +{ + echo "$0: $*" >&2 + print_usage >&2 + exit 2 +} + +print_usage () +{ + cat <$log_file 2>&1 +estatus=$? + +if test $enable_hard_errors = no && test $estatus -eq 99; then + tweaked_estatus=1 +else + tweaked_estatus=$estatus +fi + +case $tweaked_estatus:$expect_failure in + 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; + 0:*) col=$grn res=PASS recheck=no gcopy=no;; + 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; + 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; + *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; + *:*) col=$red res=FAIL recheck=yes gcopy=yes;; +esac + +# Report the test outcome and exit status in the logs, so that one can +# know whether the test passed or failed simply by looking at the '.log' +# file, without the need of also peaking into the corresponding '.trs' +# file (automake bug#11814). +echo "$res $test_name (exit status: $estatus)" >>$log_file + +# Report outcome to console. +echo "${col}${res}${std}: $test_name" + +# Register the test result, and other relevant metadata. +echo ":test-result: $res" > $trs_file +echo ":global-test-result: $res" >> $trs_file +echo ":recheck: $recheck" >> $trs_file +echo ":copy-in-global-log: $gcopy" >> $trs_file + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/thirdparty/protobuf-2.6.1/gtest/cmake/internal_utils.cmake b/thirdparty/protobuf-2.6.1/gtest/cmake/internal_utils.cmake new file mode 100644 index 00000000..8cb21894 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/cmake/internal_utils.cmake @@ -0,0 +1,227 @@ +# Defines functions and macros useful for building Google Test and +# Google Mock. +# +# Note: +# +# - This file will be run twice when building Google Mock (once via +# Google Test's CMakeLists.txt, and once via Google Mock's). +# Therefore it shouldn't have any side effects other than defining +# the functions and macros. +# +# - The functions/macros defined in this file may depend on Google +# Test and Google Mock's option() definitions, and thus must be +# called *after* the options have been defined. + +# Tweaks CMake's default compiler/linker settings to suit Google Test's needs. +# +# This must be a macro(), as inside a function string() can only +# update variables in the function scope. +macro(fix_default_compiler_settings_) + if (MSVC) + # For MSVC, CMake sets certain flags to defaults we want to override. + # This replacement code is taken from sample in the CMake Wiki at + # http://www.cmake.org/Wiki/CMake_FAQ#Dynamic_Replace. + foreach (flag_var + CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE + CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO) + if (NOT BUILD_SHARED_LIBS AND NOT gtest_force_shared_crt) + # When Google Test is built as a shared library, it should also use + # shared runtime libraries. Otherwise, it may end up with multiple + # copies of runtime library data in different modules, resulting in + # hard-to-find crashes. When it is built as a static library, it is + # preferable to use CRT as static libraries, as we don't have to rely + # on CRT DLLs being available. CMake always defaults to using shared + # CRT libraries, so we override that default here. + string(REPLACE "/MD" "-MT" ${flag_var} "${${flag_var}}") + endif() + + # We prefer more strict warning checking for building Google Test. + # Replaces /W3 with /W4 in defaults. + string(REPLACE "/W3" "-W4" ${flag_var} "${${flag_var}}") + endforeach() + endif() +endmacro() + +# Defines the compiler/linker flags used to build Google Test and +# Google Mock. You can tweak these definitions to suit your need. A +# variable's value is empty before it's explicitly assigned to. +macro(config_compiler_and_linker) + if (NOT gtest_disable_pthreads) + # Defines CMAKE_USE_PTHREADS_INIT and CMAKE_THREAD_LIBS_INIT. + find_package(Threads) + endif() + + fix_default_compiler_settings_() + if (MSVC) + # Newlines inside flags variables break CMake's NMake generator. + # TODO(vladl@google.com): Add -RTCs and -RTCu to debug builds. + set(cxx_base_flags "-GS -W4 -WX -wd4127 -wd4251 -wd4275 -nologo -J -Zi") + if (MSVC_VERSION LESS 1400) + # Suppress spurious warnings MSVC 7.1 sometimes issues. + # Forcing value to bool. + set(cxx_base_flags "${cxx_base_flags} -wd4800") + # Copy constructor and assignment operator could not be generated. + set(cxx_base_flags "${cxx_base_flags} -wd4511 -wd4512") + # Compatibility warnings not applicable to Google Test. + # Resolved overload was found by argument-dependent lookup. + set(cxx_base_flags "${cxx_base_flags} -wd4675") + endif() + set(cxx_base_flags "${cxx_base_flags} -D_UNICODE -DUNICODE -DWIN32 -D_WIN32") + set(cxx_base_flags "${cxx_base_flags} -DSTRICT -DWIN32_LEAN_AND_MEAN") + set(cxx_exception_flags "-EHsc -D_HAS_EXCEPTIONS=1") + set(cxx_no_exception_flags "-D_HAS_EXCEPTIONS=0") + set(cxx_no_rtti_flags "-GR-") + elseif (CMAKE_COMPILER_IS_GNUCXX) + set(cxx_base_flags "-Wall -Wshadow") + set(cxx_exception_flags "-fexceptions") + set(cxx_no_exception_flags "-fno-exceptions") + # Until version 4.3.2, GCC doesn't define a macro to indicate + # whether RTTI is enabled. Therefore we define GTEST_HAS_RTTI + # explicitly. + set(cxx_no_rtti_flags "-fno-rtti -DGTEST_HAS_RTTI=0") + set(cxx_strict_flags + "-Wextra -Wno-unused-parameter -Wno-missing-field-initializers") + elseif (CMAKE_CXX_COMPILER_ID STREQUAL "SunPro") + set(cxx_exception_flags "-features=except") + # Sun Pro doesn't provide macros to indicate whether exceptions and + # RTTI are enabled, so we define GTEST_HAS_* explicitly. + set(cxx_no_exception_flags "-features=no%except -DGTEST_HAS_EXCEPTIONS=0") + set(cxx_no_rtti_flags "-features=no%rtti -DGTEST_HAS_RTTI=0") + elseif (CMAKE_CXX_COMPILER_ID STREQUAL "VisualAge" OR + CMAKE_CXX_COMPILER_ID STREQUAL "XL") + # CMake 2.8 changes Visual Age's compiler ID to "XL". + set(cxx_exception_flags "-qeh") + set(cxx_no_exception_flags "-qnoeh") + # Until version 9.0, Visual Age doesn't define a macro to indicate + # whether RTTI is enabled. Therefore we define GTEST_HAS_RTTI + # explicitly. + set(cxx_no_rtti_flags "-qnortti -DGTEST_HAS_RTTI=0") + elseif (CMAKE_CXX_COMPILER_ID STREQUAL "HP") + set(cxx_base_flags "-AA -mt") + set(cxx_exception_flags "-DGTEST_HAS_EXCEPTIONS=1") + set(cxx_no_exception_flags "+noeh -DGTEST_HAS_EXCEPTIONS=0") + # RTTI can not be disabled in HP aCC compiler. + set(cxx_no_rtti_flags "") + endif() + + if (CMAKE_USE_PTHREADS_INIT) # The pthreads library is available and allowed. + set(cxx_base_flags "${cxx_base_flags} -DGTEST_HAS_PTHREAD=1") + else() + set(cxx_base_flags "${cxx_base_flags} -DGTEST_HAS_PTHREAD=0") + endif() + + # For building gtest's own tests and samples. + set(cxx_exception "${CMAKE_CXX_FLAGS} ${cxx_base_flags} ${cxx_exception_flags}") + set(cxx_no_exception + "${CMAKE_CXX_FLAGS} ${cxx_base_flags} ${cxx_no_exception_flags}") + set(cxx_default "${cxx_exception}") + set(cxx_no_rtti "${cxx_default} ${cxx_no_rtti_flags}") + set(cxx_use_own_tuple "${cxx_default} -DGTEST_USE_OWN_TR1_TUPLE=1") + + # For building the gtest libraries. + set(cxx_strict "${cxx_default} ${cxx_strict_flags}") +endmacro() + +# Defines the gtest & gtest_main libraries. User tests should link +# with one of them. +function(cxx_library_with_type name type cxx_flags) + # type can be either STATIC or SHARED to denote a static or shared library. + # ARGN refers to additional arguments after 'cxx_flags'. + add_library(${name} ${type} ${ARGN}) + set_target_properties(${name} + PROPERTIES + COMPILE_FLAGS "${cxx_flags}") + if (BUILD_SHARED_LIBS OR type STREQUAL "SHARED") + set_target_properties(${name} + PROPERTIES + COMPILE_DEFINITIONS "GTEST_CREATE_SHARED_LIBRARY=1") + endif() + if (CMAKE_USE_PTHREADS_INIT) + target_link_libraries(${name} ${CMAKE_THREAD_LIBS_INIT}) + endif() +endfunction() + +######################################################################## +# +# Helper functions for creating build targets. + +function(cxx_shared_library name cxx_flags) + cxx_library_with_type(${name} SHARED "${cxx_flags}" ${ARGN}) +endfunction() + +function(cxx_library name cxx_flags) + cxx_library_with_type(${name} "" "${cxx_flags}" ${ARGN}) +endfunction() + +# cxx_executable_with_flags(name cxx_flags libs srcs...) +# +# creates a named C++ executable that depends on the given libraries and +# is built from the given source files with the given compiler flags. +function(cxx_executable_with_flags name cxx_flags libs) + add_executable(${name} ${ARGN}) + if (cxx_flags) + set_target_properties(${name} + PROPERTIES + COMPILE_FLAGS "${cxx_flags}") + endif() + if (BUILD_SHARED_LIBS) + set_target_properties(${name} + PROPERTIES + COMPILE_DEFINITIONS "GTEST_LINKED_AS_SHARED_LIBRARY=1") + endif() + # To support mixing linking in static and dynamic libraries, link each + # library in with an extra call to target_link_libraries. + foreach (lib "${libs}") + target_link_libraries(${name} ${lib}) + endforeach() +endfunction() + +# cxx_executable(name dir lib srcs...) +# +# creates a named target that depends on the given libs and is built +# from the given source files. dir/name.cc is implicitly included in +# the source file list. +function(cxx_executable name dir libs) + cxx_executable_with_flags( + ${name} "${cxx_default}" "${libs}" "${dir}/${name}.cc" ${ARGN}) +endfunction() + +# Sets PYTHONINTERP_FOUND and PYTHON_EXECUTABLE. +find_package(PythonInterp) + +# cxx_test_with_flags(name cxx_flags libs srcs...) +# +# creates a named C++ test that depends on the given libs and is built +# from the given source files with the given compiler flags. +function(cxx_test_with_flags name cxx_flags libs) + cxx_executable_with_flags(${name} "${cxx_flags}" "${libs}" ${ARGN}) + add_test(${name} ${name}) +endfunction() + +# cxx_test(name libs srcs...) +# +# creates a named test target that depends on the given libs and is +# built from the given source files. Unlike cxx_test_with_flags, +# test/name.cc is already implicitly included in the source file list. +function(cxx_test name libs) + cxx_test_with_flags("${name}" "${cxx_default}" "${libs}" + "test/${name}.cc" ${ARGN}) +endfunction() + +# py_test(name) +# +# creates a Python test with the given name whose main module is in +# test/name.py. It does nothing if Python is not installed. +function(py_test name) + # We are not supporting Python tests on Linux yet as they consider + # all Linux environments to be google3 and try to use google3 features. + if (PYTHONINTERP_FOUND) + # ${CMAKE_BINARY_DIR} is known at configuration time, so we can + # directly bind it from cmake. ${CTEST_CONFIGURATION_TYPE} is known + # only at ctest runtime (by calling ctest -c ), so + # we have to escape $ to delay variable substitution here. + add_test(${name} + ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/test/${name}.py + --build_dir=${CMAKE_CURRENT_BINARY_DIR}/\${CTEST_CONFIGURATION_TYPE}) + endif() +endfunction() diff --git a/thirdparty/protobuf-2.6.1/gtest/codegear/gtest.cbproj b/thirdparty/protobuf-2.6.1/gtest/codegear/gtest.cbproj new file mode 100644 index 00000000..95c3054b --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/codegear/gtest.cbproj @@ -0,0 +1,138 @@ + + + + {bca37a72-5b07-46cf-b44e-89f8e06451a2} + Release + + + true + + + true + true + Base + + + true + true + Base + + + true + lib + JPHNE + NO_STRICT + true + true + CppStaticLibrary + true + rtl.bpi;vcl.bpi;bcbie.bpi;vclx.bpi;vclactnband.bpi;xmlrtl.bpi;bcbsmp.bpi;dbrtl.bpi;vcldb.bpi;bdertl.bpi;vcldbx.bpi;dsnap.bpi;dsnapcon.bpi;vclib.bpi;ibxpress.bpi;adortl.bpi;dbxcds.bpi;dbexpress.bpi;DbxCommonDriver.bpi;websnap.bpi;vclie.bpi;webdsnap.bpi;inet.bpi;inetdbbde.bpi;inetdbxpress.bpi;soaprtl.bpi;Rave75VCL.bpi;teeUI.bpi;tee.bpi;teedb.bpi;IndyCore.bpi;IndySystem.bpi;IndyProtocols.bpi;IntrawebDB_90_100.bpi;Intraweb_90_100.bpi;dclZipForged11.bpi;vclZipForged11.bpi;GR32_BDS2006.bpi;GR32_DSGN_BDS2006.bpi;Jcl.bpi;JclVcl.bpi;JvCoreD11R.bpi;JvSystemD11R.bpi;JvStdCtrlsD11R.bpi;JvAppFrmD11R.bpi;JvBandsD11R.bpi;JvDBD11R.bpi;JvDlgsD11R.bpi;JvBDED11R.bpi;JvCmpD11R.bpi;JvCryptD11R.bpi;JvCtrlsD11R.bpi;JvCustomD11R.bpi;JvDockingD11R.bpi;JvDotNetCtrlsD11R.bpi;JvEDID11R.bpi;JvGlobusD11R.bpi;JvHMID11R.bpi;JvInterpreterD11R.bpi;JvJansD11R.bpi;JvManagedThreadsD11R.bpi;JvMMD11R.bpi;JvNetD11R.bpi;JvPageCompsD11R.bpi;JvPluginD11R.bpi;JvPrintPreviewD11R.bpi;JvRuntimeDesignD11R.bpi;JvTimeFrameworkD11R.bpi;JvValidatorsD11R.bpi;JvWizardD11R.bpi;JvXPCtrlsD11R.bpi;VclSmp.bpi;CExceptionExpert11.bpi + false + $(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\include;.. + rtl.lib;vcl.lib + 32 + $(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk + + + false + false + true + _DEBUG;$(Defines) + true + false + true + None + DEBUG + true + Debug + true + true + true + $(BDS)\lib\debug;$(ILINK_LibraryPath) + Full + true + + + NDEBUG;$(Defines) + Release + $(BDS)\lib\release;$(ILINK_LibraryPath) + None + + + CPlusPlusBuilder.Personality + CppStaticLibrary + +FalseFalse1000FalseFalseFalseFalseFalse103312521.0.0.01.0.0.0FalseFalseFalseTrueFalse + + + CodeGear C++Builder Office 2000 Servers Package + CodeGear C++Builder Office XP Servers Package + FalseTrueTrue3$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\include;..$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\include;..$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\src;..\include1$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk1NO_STRICT13216 + + + + + 3 + + + 4 + + + 5 + + + 6 + + + 7 + + + 8 + + + 0 + + + 1 + + + 2 + + + 9 + + + 10 + + + 11 + + + 12 + + + 14 + + + 13 + + + 15 + + + 16 + + + 17 + + + 18 + + + Cfg_1 + + + Cfg_2 + + + \ No newline at end of file diff --git a/thirdparty/protobuf-2.6.1/gtest/codegear/gtest.groupproj b/thirdparty/protobuf-2.6.1/gtest/codegear/gtest.groupproj new file mode 100644 index 00000000..faf31cab --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/codegear/gtest.groupproj @@ -0,0 +1,54 @@ + + + {c1d923e0-6cba-4332-9b6f-3420acbf5091} + + + + + + + + + Default.Personality + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/thirdparty/protobuf-2.6.1/gtest/codegear/gtest_all.cc b/thirdparty/protobuf-2.6.1/gtest/codegear/gtest_all.cc new file mode 100644 index 00000000..121b2d80 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/codegear/gtest_all.cc @@ -0,0 +1,38 @@ +// Copyright 2009, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: Josh Kelley (joshkel@gmail.com) +// +// Google C++ Testing Framework (Google Test) +// +// C++Builder's IDE cannot build a static library from files with hyphens +// in their name. See http://qc.codegear.com/wc/qcmain.aspx?d=70977 . +// This file serves as a workaround. + +#include "src/gtest-all.cc" diff --git a/thirdparty/protobuf-2.6.1/gtest/codegear/gtest_link.cc b/thirdparty/protobuf-2.6.1/gtest/codegear/gtest_link.cc new file mode 100644 index 00000000..918eccd1 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/codegear/gtest_link.cc @@ -0,0 +1,40 @@ +// Copyright 2009, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: Josh Kelley (joshkel@gmail.com) +// +// Google C++ Testing Framework (Google Test) +// +// Links gtest.lib and gtest_main.lib into the current project in C++Builder. +// This means that these libraries can't be renamed, but it's the only way to +// ensure that Debug versus Release test builds are linked against the +// appropriate Debug or Release build of the libraries. + +#pragma link "gtest.lib" +#pragma link "gtest_main.lib" diff --git a/thirdparty/protobuf-2.6.1/gtest/codegear/gtest_main.cbproj b/thirdparty/protobuf-2.6.1/gtest/codegear/gtest_main.cbproj new file mode 100644 index 00000000..d76ce139 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/codegear/gtest_main.cbproj @@ -0,0 +1,82 @@ + + + + {bca37a72-5b07-46cf-b44e-89f8e06451a2} + Release + + + true + + + true + true + Base + + + true + true + Base + + + true + lib + JPHNE + NO_STRICT + true + true + CppStaticLibrary + true + rtl.bpi;vcl.bpi;bcbie.bpi;vclx.bpi;vclactnband.bpi;xmlrtl.bpi;bcbsmp.bpi;dbrtl.bpi;vcldb.bpi;bdertl.bpi;vcldbx.bpi;dsnap.bpi;dsnapcon.bpi;vclib.bpi;ibxpress.bpi;adortl.bpi;dbxcds.bpi;dbexpress.bpi;DbxCommonDriver.bpi;websnap.bpi;vclie.bpi;webdsnap.bpi;inet.bpi;inetdbbde.bpi;inetdbxpress.bpi;soaprtl.bpi;Rave75VCL.bpi;teeUI.bpi;tee.bpi;teedb.bpi;IndyCore.bpi;IndySystem.bpi;IndyProtocols.bpi;IntrawebDB_90_100.bpi;Intraweb_90_100.bpi;dclZipForged11.bpi;vclZipForged11.bpi;GR32_BDS2006.bpi;GR32_DSGN_BDS2006.bpi;Jcl.bpi;JclVcl.bpi;JvCoreD11R.bpi;JvSystemD11R.bpi;JvStdCtrlsD11R.bpi;JvAppFrmD11R.bpi;JvBandsD11R.bpi;JvDBD11R.bpi;JvDlgsD11R.bpi;JvBDED11R.bpi;JvCmpD11R.bpi;JvCryptD11R.bpi;JvCtrlsD11R.bpi;JvCustomD11R.bpi;JvDockingD11R.bpi;JvDotNetCtrlsD11R.bpi;JvEDID11R.bpi;JvGlobusD11R.bpi;JvHMID11R.bpi;JvInterpreterD11R.bpi;JvJansD11R.bpi;JvManagedThreadsD11R.bpi;JvMMD11R.bpi;JvNetD11R.bpi;JvPageCompsD11R.bpi;JvPluginD11R.bpi;JvPrintPreviewD11R.bpi;JvRuntimeDesignD11R.bpi;JvTimeFrameworkD11R.bpi;JvValidatorsD11R.bpi;JvWizardD11R.bpi;JvXPCtrlsD11R.bpi;VclSmp.bpi;CExceptionExpert11.bpi + false + $(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\include;.. + rtl.lib;vcl.lib + 32 + $(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk + + + false + false + true + _DEBUG;$(Defines) + true + false + true + None + DEBUG + true + Debug + true + true + true + $(BDS)\lib\debug;$(ILINK_LibraryPath) + Full + true + + + NDEBUG;$(Defines) + Release + $(BDS)\lib\release;$(ILINK_LibraryPath) + None + + + CPlusPlusBuilder.Personality + CppStaticLibrary + +FalseFalse1000FalseFalseFalseFalseFalse103312521.0.0.01.0.0.0FalseFalseFalseTrueFalse + CodeGear C++Builder Office 2000 Servers Package + CodeGear C++Builder Office XP Servers Package + FalseTrueTrue3$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\include;..$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\include;..$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\src;..\src;..\include1$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk1NO_STRICT13216 + + + + + 0 + + + Cfg_1 + + + Cfg_2 + + + diff --git a/thirdparty/protobuf-2.6.1/gtest/codegear/gtest_unittest.cbproj b/thirdparty/protobuf-2.6.1/gtest/codegear/gtest_unittest.cbproj new file mode 100644 index 00000000..dc5db8e4 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/codegear/gtest_unittest.cbproj @@ -0,0 +1,88 @@ + + + + {eea63393-5ac5-4b9c-8909-d75fef2daa41} + Release + + + true + + + true + true + Base + + + true + true + Base + + + exe + true + NO_STRICT + JPHNE + true + ..\test + true + CppConsoleApplication + true + true + rtl.bpi;vcl.bpi;bcbie.bpi;vclx.bpi;vclactnband.bpi;xmlrtl.bpi;bcbsmp.bpi;dbrtl.bpi;vcldb.bpi;bdertl.bpi;vcldbx.bpi;dsnap.bpi;dsnapcon.bpi;vclib.bpi;ibxpress.bpi;adortl.bpi;dbxcds.bpi;dbexpress.bpi;DbxCommonDriver.bpi;websnap.bpi;vclie.bpi;webdsnap.bpi;inet.bpi;inetdbbde.bpi;inetdbxpress.bpi;soaprtl.bpi;Rave75VCL.bpi;teeUI.bpi;tee.bpi;teedb.bpi;IndyCore.bpi;IndySystem.bpi;IndyProtocols.bpi;IntrawebDB_90_100.bpi;Intraweb_90_100.bpi;Jcl.bpi;JclVcl.bpi;JvCoreD11R.bpi;JvSystemD11R.bpi;JvStdCtrlsD11R.bpi;JvAppFrmD11R.bpi;JvBandsD11R.bpi;JvDBD11R.bpi;JvDlgsD11R.bpi;JvBDED11R.bpi;JvCmpD11R.bpi;JvCryptD11R.bpi;JvCtrlsD11R.bpi;JvCustomD11R.bpi;JvDockingD11R.bpi;JvDotNetCtrlsD11R.bpi;JvEDID11R.bpi;JvGlobusD11R.bpi;JvHMID11R.bpi;JvInterpreterD11R.bpi;JvJansD11R.bpi;JvManagedThreadsD11R.bpi;JvMMD11R.bpi;JvNetD11R.bpi;JvPageCompsD11R.bpi;JvPluginD11R.bpi;JvPrintPreviewD11R.bpi;JvRuntimeDesignD11R.bpi;JvTimeFrameworkD11R.bpi;JvValidatorsD11R.bpi;JvWizardD11R.bpi;JvXPCtrlsD11R.bpi;VclSmp.bpi + false + $(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\include;..\test;.. + $(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk;..\test + true + + + false + false + true + _DEBUG;$(Defines) + true + false + true + None + DEBUG + true + Debug + true + true + true + $(BDS)\lib\debug;$(ILINK_LibraryPath) + Full + true + + + NDEBUG;$(Defines) + Release + $(BDS)\lib\release;$(ILINK_LibraryPath) + None + + + CPlusPlusBuilder.Personality + CppConsoleApplication + +FalseFalse1000FalseFalseFalseFalseFalse103312521.0.0.01.0.0.0FalseFalseFalseTrueFalse + + + CodeGear C++Builder Office 2000 Servers Package + CodeGear C++Builder Office XP Servers Package + FalseTrueTrue3$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\include;..\test;..$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\include;..\test$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;..\include1$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk;..\test$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk;..\test$(BDS)\lib;$(BDS)\lib\obj;$(BDS)\lib\psdk;$(OUTPUTDIR);..\test2NO_STRICTSTRICT + + + + + 0 + + + 1 + + + Cfg_1 + + + Cfg_2 + + + \ No newline at end of file diff --git a/thirdparty/protobuf-2.6.1/gtest/config.log b/thirdparty/protobuf-2.6.1/gtest/config.log new file mode 100644 index 00000000..64fb93ee --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/config.log @@ -0,0 +1,1012 @@ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by Google C++ Testing Framework configure 1.6.0, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ ./configure --disable-option-checking --prefix=/usr/local --cache-file=/dev/null --srcdir=. CFLAGS= CXXFLAGS= -g -DNDEBUG --no-create --no-recursion + +## --------- ## +## Platform. ## +## --------- ## + +hostname = DESKTOP-6CJ0SOQ +uname -m = x86_64 +uname -r = 4.19.128-microsoft-standard +uname -s = Linux +uname -v = #1 SMP Tue Jun 23 12:58:10 UTC 2020 + +/usr/bin/uname -p = unknown +/bin/uname -X = unknown + +/bin/arch = unknown +/usr/bin/arch -k = unknown +/usr/convex/getsysinfo = unknown +/usr/bin/hostinfo = unknown +/bin/machine = unknown +/usr/bin/oslevel = unknown +/bin/universe = unknown + +PATH: /usr/local/bin +PATH: /usr/bin +PATH: /bin +PATH: /usr/local/games +PATH: /usr/games + + +## ----------- ## +## Core tests. ## +## ----------- ## + +configure:2336: checking for a BSD-compatible install +configure:2404: result: /usr/bin/install -c +configure:2415: checking whether build environment is sane +configure:2470: result: yes +configure:2619: checking for a thread-safe mkdir -p +configure:2658: result: /bin/mkdir -p +configure:2665: checking for gawk +configure:2695: result: no +configure:2665: checking for mawk +configure:2681: found /usr/bin/mawk +configure:2692: result: mawk +configure:2703: checking whether make sets $(MAKE) +configure:2725: result: yes +configure:2754: checking whether make supports nested variables +configure:2771: result: yes +configure:2947: checking for gcc +configure:2963: found /usr/bin/gcc +configure:2974: result: gcc +configure:3203: checking for C compiler version +configure:3212: gcc --version >&5 +gcc (Debian 8.3.0-6) 8.3.0 +Copyright (C) 2018 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +configure:3223: $? = 0 +configure:3212: gcc -v >&5 +Using built-in specs. +COLLECT_GCC=gcc +COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/8/lto-wrapper +OFFLOAD_TARGET_NAMES=nvptx-none +OFFLOAD_TARGET_DEFAULT=1 +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Debian 8.3.0-6' --with-bugurl=file:///usr/share/doc/gcc-8/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-8 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu +Thread model: posix +gcc version 8.3.0 (Debian 8.3.0-6) +configure:3223: $? = 0 +configure:3212: gcc -V >&5 +gcc: error: unrecognized command line option '-V' +gcc: fatal error: no input files +compilation terminated. +configure:3223: $? = 1 +configure:3212: gcc -qversion >&5 +gcc: error: unrecognized command line option '-qversion'; did you mean '--version'? +gcc: fatal error: no input files +compilation terminated. +configure:3223: $? = 1 +configure:3243: checking whether the C compiler works +configure:3265: gcc conftest.c >&5 +configure:3269: $? = 0 +configure:3317: result: yes +configure:3320: checking for C compiler default output file name +configure:3322: result: a.out +configure:3328: checking for suffix of executables +configure:3335: gcc -o conftest conftest.c >&5 +configure:3339: $? = 0 +configure:3361: result: +configure:3383: checking whether we are cross compiling +configure:3391: gcc -o conftest conftest.c >&5 +configure:3395: $? = 0 +configure:3402: ./conftest +configure:3406: $? = 0 +configure:3394: result: no +configure:3399: checking for suffix of object files +configure:3421: gcc -c conftest.c >&5 +configure:3425: $? = 0 +configure:3446: result: o +configure:3450: checking whether we are using the GNU C compiler +configure:3469: gcc -c conftest.c >&5 +configure:3469: $? = 0 +configure:3478: result: yes +configure:3487: checking whether gcc accepts -g +configure:3507: gcc -c -g conftest.c >&5 +configure:3507: $? = 0 +configure:3548: result: yes +configure:3565: checking for gcc option to accept ISO C89 +configure:3628: gcc -c conftest.c >&5 +configure:3628: $? = 0 +configure:3641: result: none needed +configure:3666: checking whether gcc understands -c and -o together +configure:3688: gcc -c conftest.c -o conftest2.o +configure:3691: $? = 0 +configure:3688: gcc -c conftest.c -o conftest2.o +configure:3691: $? = 0 +configure:3703: result: yes +configure:3723: checking whether make supports the include directive +configure:3738: make -f confmf.GNU && cat confinc.out +make[4]: Entering directory '/home/jusic/source-engine/thirdparty/protobuf-2.6.1/gtest' +make[4]: Leaving directory '/home/jusic/source-engine/thirdparty/protobuf-2.6.1/gtest' +this is the am__doit target +configure:3741: $? = 0 +configure:3760: result: yes (GNU style) +configure:3785: checking dependency style of gcc +configure:3896: result: gcc3 +configure:3969: checking for g++ +configure:3985: found /usr/bin/g++ +configure:3996: result: g++ +configure:4023: checking for C++ compiler version +configure:4032: g++ --version >&5 +g++ (Debian 8.3.0-6) 8.3.0 +Copyright (C) 2018 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +configure:4043: $? = 0 +configure:4032: g++ -v >&5 +Using built-in specs. +COLLECT_GCC=g++ +COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/8/lto-wrapper +OFFLOAD_TARGET_NAMES=nvptx-none +OFFLOAD_TARGET_DEFAULT=1 +Target: x86_64-linux-gnu +Configured with: ../src/configure -v --with-pkgversion='Debian 8.3.0-6' --with-bugurl=file:///usr/share/doc/gcc-8/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-8 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu +Thread model: posix +gcc version 8.3.0 (Debian 8.3.0-6) +configure:4043: $? = 0 +configure:4032: g++ -V >&5 +g++: error: unrecognized command line option '-V' +g++: fatal error: no input files +compilation terminated. +configure:4043: $? = 1 +configure:4032: g++ -qversion >&5 +g++: error: unrecognized command line option '-qversion'; did you mean '--version'? +g++: fatal error: no input files +compilation terminated. +configure:4043: $? = 1 +configure:4047: checking whether we are using the GNU C++ compiler +configure:4066: g++ -c -g -DNDEBUG conftest.cpp >&5 +configure:4066: $? = 0 +configure:4075: result: yes +configure:4084: checking whether g++ accepts -g +configure:4104: g++ -c -g conftest.cpp >&5 +configure:4104: $? = 0 +configure:4145: result: yes +configure:4170: checking dependency style of g++ +configure:4281: result: gcc3 +configure:4331: checking build system type +configure:4345: result: x86_64-pc-linux-gnu +configure:4365: checking host system type +configure:4378: result: x86_64-pc-linux-gnu +configure:4419: checking how to print strings +configure:4446: result: printf +configure:4467: checking for a sed that does not truncate output +configure:4531: result: /bin/sed +configure:4549: checking for grep that handles long lines and -e +configure:4607: result: /bin/grep +configure:4612: checking for egrep +configure:4674: result: /bin/grep -E +configure:4679: checking for fgrep +configure:4741: result: /bin/grep -F +configure:4776: checking for ld used by gcc +configure:4843: result: /usr/bin/ld +configure:4850: checking if the linker (/usr/bin/ld) is GNU ld +configure:4865: result: yes +configure:4877: checking for BSD- or MS-compatible name lister (nm) +configure:4931: result: /usr/bin/nm -B +configure:5061: checking the name lister (/usr/bin/nm -B) interface +configure:5068: g++ -c -g -DNDEBUG conftest.cpp >&5 +configure:5071: /usr/bin/nm -B "conftest.o" +configure:5074: output +0000000000000000 B some_variable +configure:5075: result: BSD nm +configure:5078: checking whether ln -s works +configure:5082: result: yes +configure:5090: checking the maximum length of command line arguments +configure:5221: result: 1572864 +configure:5269: checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format +configure:5309: result: func_convert_file_noop +configure:5316: checking how to convert x86_64-pc-linux-gnu file names to toolchain format +configure:5336: result: func_convert_file_noop +configure:5343: checking for /usr/bin/ld option to reload object files +configure:5350: result: -r +configure:5424: checking for objdump +configure:5440: found /usr/bin/objdump +configure:5451: result: objdump +configure:5483: checking how to recognize dependent libraries +configure:5683: result: pass_all +configure:5768: checking for dlltool +configure:5798: result: no +configure:5828: checking how to associate runtime and link libraries +configure:5855: result: printf %s\n +configure:5916: checking for ar +configure:5932: found /usr/bin/ar +configure:5943: result: ar +configure:5980: checking for archiver @FILE support +configure:5997: g++ -c -g -DNDEBUG conftest.cpp >&5 +configure:5997: $? = 0 +configure:6000: ar cru libconftest.a @conftest.lst >&5 +ar: `u' modifier ignored since `D' is the default (see `U') +configure:6003: $? = 0 +configure:6008: ar cru libconftest.a @conftest.lst >&5 +ar: `u' modifier ignored since `D' is the default (see `U') +ar: conftest.o: No such file or directory +configure:6011: $? = 1 +configure:6010: result: @ +configure:6068: checking for strip +configure:6084: found /usr/bin/strip +configure:6095: result: strip +configure:6167: checking for ranlib +configure:6183: found /usr/bin/ranlib +configure:6194: result: ranlib +configure:6296: checking command to parse /usr/bin/nm -B output from gcc object +configure:6449: g++ -c -g -DNDEBUG conftest.cpp >&5 +configure:6452: $? = 0 +configure:6456: /usr/bin/nm -B conftest.o | sed -n -e 's/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p' | sed '/ __gnu_lto/d' > conftest.nm +configure:6522: g++ -o conftest -g -DNDEBUG conftest.cpp conftstm.o >&5 +configure:6525: $? = 0 +configure:6563: result: ok +configure:6610: checking for sysroot +configure:6640: result: no +configure:6647: checking for a working dd +configure:6685: result: /bin/dd +configure:6689: checking how to truncate binary pipes +configure:6704: result: /bin/dd bs=4096 count=1 +configure:6841: g++ -c -g -DNDEBUG conftest.cpp >&5 +configure:6844: $? = 0 +configure:7034: checking for mt +configure:7050: found /bin/mt +configure:7061: result: mt +configure:7084: checking if mt is a manifest tool +configure:7090: mt '-?' +configure:7098: result: no +configure:7775: checking how to run the C preprocessor +configure:7806: gcc -E conftest.c +configure:7806: $? = 0 +configure:7820: gcc -E conftest.c +conftest.c:11:10: fatal error: ac_nonexistent.h: No such file or directory + #include + ^~~~~~~~~~~~~~~~~~ +compilation terminated. +configure:7820: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "Google C++ Testing Framework" +| #define PACKAGE_TARNAME "gtest" +| #define PACKAGE_VERSION "1.6.0" +| #define PACKAGE_STRING "Google C++ Testing Framework 1.6.0" +| #define PACKAGE_BUGREPORT "googletestframework@googlegroups.com" +| #define PACKAGE_URL "" +| #define PACKAGE "gtest" +| #define VERSION "1.6.0" +| /* end confdefs.h. */ +| #include +configure:7845: result: gcc -E +configure:7865: gcc -E conftest.c +configure:7865: $? = 0 +configure:7879: gcc -E conftest.c +conftest.c:11:10: fatal error: ac_nonexistent.h: No such file or directory + #include + ^~~~~~~~~~~~~~~~~~ +compilation terminated. +configure:7879: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "Google C++ Testing Framework" +| #define PACKAGE_TARNAME "gtest" +| #define PACKAGE_VERSION "1.6.0" +| #define PACKAGE_STRING "Google C++ Testing Framework 1.6.0" +| #define PACKAGE_BUGREPORT "googletestframework@googlegroups.com" +| #define PACKAGE_URL "" +| #define PACKAGE "gtest" +| #define VERSION "1.6.0" +| /* end confdefs.h. */ +| #include +configure:7908: checking for ANSI C header files +configure:7928: gcc -c conftest.c >&5 +configure:7928: $? = 0 +configure:8001: gcc -o conftest conftest.c >&5 +configure:8001: $? = 0 +configure:8001: ./conftest +configure:8001: $? = 0 +configure:8012: result: yes +configure:8025: checking for sys/types.h +configure:8025: gcc -c conftest.c >&5 +configure:8025: $? = 0 +configure:8025: result: yes +configure:8025: checking for sys/stat.h +configure:8025: gcc -c conftest.c >&5 +configure:8025: $? = 0 +configure:8025: result: yes +configure:8025: checking for stdlib.h +configure:8025: gcc -c conftest.c >&5 +configure:8025: $? = 0 +configure:8025: result: yes +configure:8025: checking for string.h +configure:8025: gcc -c conftest.c >&5 +configure:8025: $? = 0 +configure:8025: result: yes +configure:8025: checking for memory.h +configure:8025: gcc -c conftest.c >&5 +configure:8025: $? = 0 +configure:8025: result: yes +configure:8025: checking for strings.h +configure:8025: gcc -c conftest.c >&5 +configure:8025: $? = 0 +configure:8025: result: yes +configure:8025: checking for inttypes.h +configure:8025: gcc -c conftest.c >&5 +configure:8025: $? = 0 +configure:8025: result: yes +configure:8025: checking for stdint.h +configure:8025: gcc -c conftest.c >&5 +configure:8025: $? = 0 +configure:8025: result: yes +configure:8025: checking for unistd.h +configure:8025: gcc -c conftest.c >&5 +configure:8025: $? = 0 +configure:8025: result: yes +configure:8039: checking for dlfcn.h +configure:8039: gcc -c conftest.c >&5 +configure:8039: $? = 0 +configure:8039: result: yes +configure:8305: checking for objdir +configure:8320: result: .libs +configure:8584: checking if gcc supports -fno-rtti -fno-exceptions +configure:8602: gcc -c -fno-rtti -fno-exceptions conftest.c >&5 +cc1: warning: command line option '-fno-rtti' is valid for C++/ObjC++ but not for C +configure:8606: $? = 0 +configure:8619: result: no +configure:8977: checking for gcc option to produce PIC +configure:8984: result: -fPIC -DPIC +configure:8992: checking if gcc PIC flag -fPIC -DPIC works +configure:9010: gcc -c -fPIC -DPIC -DPIC conftest.c >&5 +configure:9014: $? = 0 +configure:9027: result: yes +configure:9056: checking if gcc static flag -static works +configure:9084: result: yes +configure:9099: checking if gcc supports -c -o file.o +configure:9120: gcc -c -o out/conftest2.o conftest.c >&5 +configure:9124: $? = 0 +configure:9146: result: yes +configure:9154: checking if gcc supports -c -o file.o +configure:9201: result: yes +configure:9234: checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries +configure:10497: result: yes +configure:10534: checking whether -lc should be explicitly linked in +configure:10542: gcc -c conftest.c >&5 +configure:10545: $? = 0 +configure:10560: gcc -shared -fPIC -DPIC conftest.o -v -Wl,-soname -Wl,conftest -o conftest 2\>\&1 \| /bin/grep -lc \>/dev/null 2\>\&1 +configure:10563: $? = 0 +configure:10577: result: no +configure:10737: checking dynamic linker characteristics +configure:11318: gcc -o conftest -Wl,-rpath -Wl,/foo conftest.c >&5 +configure:11318: $? = 0 +configure:11567: result: GNU/Linux ld.so +configure:11689: checking how to hardcode library paths into programs +configure:11714: result: immediate +configure:12262: checking whether stripping libraries is possible +configure:12267: result: yes +configure:12302: checking if libtool supports shared libraries +configure:12304: result: yes +configure:12307: checking whether to build shared libraries +configure:12332: result: yes +configure:12335: checking whether to build static libraries +configure:12339: result: yes +configure:9138: checking how to run the C++ preprocessor +configure:9165: g++ -E conftest.cpp +configure:9165: $? = 0 +configure:9179: g++ -E conftest.cpp +conftest.cpp:23:10: fatal error: ac_nonexistent.h: No such file or directory + #include + ^~~~~~~~~~~~~~~~~~ +compilation terminated. +configure:9179: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "Google C++ Testing Framework" +| #define PACKAGE_TARNAME "gtest" +| #define PACKAGE_VERSION "1.6.0" +| #define PACKAGE_STRING "Google C++ Testing Framework 1.6.0" +| #define PACKAGE_BUGREPORT "googletestframework@googlegroups.com" +| #define PACKAGE_URL "" +| #define PACKAGE "gtest" +| #define VERSION "1.6.0" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| /* end confdefs.h. */ +| #include +configure:9204: result: g++ -E +configure:9224: g++ -E conftest.cpp +configure:9224: $? = 0 +configure:9238: g++ -E conftest.cpp +conftest.cpp:23:10: fatal error: ac_nonexistent.h: No such file or directory + #include + ^~~~~~~~~~~~~~~~~~ +compilation terminated. +configure:9238: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "Google C++ Testing Framework" +| #define PACKAGE_TARNAME "gtest" +| #define PACKAGE_VERSION "1.6.0" +| #define PACKAGE_STRING "Google C++ Testing Framework 1.6.0" +| #define PACKAGE_BUGREPORT "googletestframework@googlegroups.com" +| #define PACKAGE_URL "" +| #define PACKAGE "gtest" +| #define VERSION "1.6.0" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| /* end confdefs.h. */ +| #include +configure:9400: checking for ld used by g++ +configure:9467: result: /usr/bin/ld -m elf_x86_64 +configure:9474: checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld +configure:9489: result: yes +configure:9544: checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries +configure:10617: result: yes +configure:10653: g++ -c -g -DNDEBUG conftest.cpp >&5 +configure:10656: $? = 0 +configure:11137: checking for g++ option to produce PIC +configure:11144: result: -fPIC -DPIC +configure:11152: checking if g++ PIC flag -fPIC -DPIC works +configure:11170: g++ -c -g -DNDEBUG -fPIC -DPIC -DPIC conftest.cpp >&5 +configure:11174: $? = 0 +configure:11187: result: yes +configure:11210: checking if g++ static flag -static works +configure:11238: result: yes +configure:11250: checking if g++ supports -c -o file.o +configure:11271: g++ -c -g -DNDEBUG -o out/conftest2.o conftest.cpp >&5 +configure:11275: $? = 0 +configure:11297: result: yes +configure:11302: checking if g++ supports -c -o file.o +configure:11349: result: yes +configure:11379: checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries +configure:11422: result: yes +configure:11563: checking dynamic linker characteristics +configure:12320: result: GNU/Linux ld.so +configure:12385: checking how to hardcode library paths into programs +configure:12410: result: immediate +configure:11311: checking for python +configure:11342: result: : +configure:11556: checking for the pthreads library -lpthreads +configure:11589: gcc -o conftest conftest.c -lpthreads >&5 +/usr/bin/ld: cannot find -lpthreads +collect2: error: ld returned 1 exit status +configure:11589: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "Google C++ Testing Framework" +| #define PACKAGE_TARNAME "gtest" +| #define PACKAGE_VERSION "1.6.0" +| #define PACKAGE_STRING "Google C++ Testing Framework 1.6.0" +| #define PACKAGE_BUGREPORT "googletestframework@googlegroups.com" +| #define PACKAGE_URL "" +| #define PACKAGE "gtest" +| #define VERSION "1.6.0" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| /* end confdefs.h. */ +| #include +| int +| main () +| { +| pthread_t th; pthread_join(th, 0); +| pthread_attr_init(0); pthread_cleanup_push(0, 0); +| pthread_create(0,0,0,0); pthread_cleanup_pop(0); +| ; +| return 0; +| } +configure:11598: result: no +configure:11501: checking whether pthreads work without any flags +configure:11589: gcc -o conftest conftest.c >&5 +/usr/bin/ld: /tmp/cctyjolH.o: in function `main': +conftest.c:(.text+0x18): undefined reference to `pthread_join' +/usr/bin/ld: conftest.c:(.text+0x7e): undefined reference to `__pthread_register_cancel' +/usr/bin/ld: conftest.c:(.text+0x97): undefined reference to `pthread_create' +/usr/bin/ld: conftest.c:(.text+0xa6): undefined reference to `__pthread_unregister_cancel' +collect2: error: ld returned 1 exit status +configure:11589: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "Google C++ Testing Framework" +| #define PACKAGE_TARNAME "gtest" +| #define PACKAGE_VERSION "1.6.0" +| #define PACKAGE_STRING "Google C++ Testing Framework 1.6.0" +| #define PACKAGE_BUGREPORT "googletestframework@googlegroups.com" +| #define PACKAGE_URL "" +| #define PACKAGE "gtest" +| #define VERSION "1.6.0" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| /* end confdefs.h. */ +| #include +| int +| main () +| { +| pthread_t th; pthread_join(th, 0); +| pthread_attr_init(0); pthread_cleanup_push(0, 0); +| pthread_create(0,0,0,0); pthread_cleanup_pop(0); +| ; +| return 0; +| } +configure:11598: result: no +configure:11506: checking whether pthreads work with -Kthread +configure:11589: gcc -o conftest -Kthread conftest.c >&5 +gcc: error: unrecognized command line option '-Kthread'; did you mean '-pthread'? +configure:11589: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "Google C++ Testing Framework" +| #define PACKAGE_TARNAME "gtest" +| #define PACKAGE_VERSION "1.6.0" +| #define PACKAGE_STRING "Google C++ Testing Framework 1.6.0" +| #define PACKAGE_BUGREPORT "googletestframework@googlegroups.com" +| #define PACKAGE_URL "" +| #define PACKAGE "gtest" +| #define VERSION "1.6.0" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| /* end confdefs.h. */ +| #include +| int +| main () +| { +| pthread_t th; pthread_join(th, 0); +| pthread_attr_init(0); pthread_cleanup_push(0, 0); +| pthread_create(0,0,0,0); pthread_cleanup_pop(0); +| ; +| return 0; +| } +configure:11598: result: no +configure:11506: checking whether pthreads work with -kthread +configure:11589: gcc -o conftest -kthread conftest.c >&5 +gcc: error: unrecognized command line option '-kthread'; did you mean '-pthread'? +configure:11589: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "Google C++ Testing Framework" +| #define PACKAGE_TARNAME "gtest" +| #define PACKAGE_VERSION "1.6.0" +| #define PACKAGE_STRING "Google C++ Testing Framework 1.6.0" +| #define PACKAGE_BUGREPORT "googletestframework@googlegroups.com" +| #define PACKAGE_URL "" +| #define PACKAGE "gtest" +| #define VERSION "1.6.0" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| /* end confdefs.h. */ +| #include +| int +| main () +| { +| pthread_t th; pthread_join(th, 0); +| pthread_attr_init(0); pthread_cleanup_push(0, 0); +| pthread_create(0,0,0,0); pthread_cleanup_pop(0); +| ; +| return 0; +| } +configure:11598: result: no +configure:11556: checking for the pthreads library -llthread +configure:11589: gcc -o conftest conftest.c -llthread >&5 +/usr/bin/ld: cannot find -llthread +collect2: error: ld returned 1 exit status +configure:11589: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "Google C++ Testing Framework" +| #define PACKAGE_TARNAME "gtest" +| #define PACKAGE_VERSION "1.6.0" +| #define PACKAGE_STRING "Google C++ Testing Framework 1.6.0" +| #define PACKAGE_BUGREPORT "googletestframework@googlegroups.com" +| #define PACKAGE_URL "" +| #define PACKAGE "gtest" +| #define VERSION "1.6.0" +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| /* end confdefs.h. */ +| #include +| int +| main () +| { +| pthread_t th; pthread_join(th, 0); +| pthread_attr_init(0); pthread_cleanup_push(0, 0); +| pthread_create(0,0,0,0); pthread_cleanup_pop(0); +| ; +| return 0; +| } +configure:11598: result: no +configure:11506: checking whether pthreads work with -pthread +configure:11589: gcc -o conftest -pthread conftest.c >&5 +configure:11589: $? = 0 +configure:11598: result: yes +configure:11617: checking for joinable pthread attribute +configure:11632: gcc -o conftest -pthread conftest.c >&5 +configure:11632: $? = 0 +configure:11638: result: PTHREAD_CREATE_JOINABLE +configure:11648: checking if more special flags are required for pthreads +configure:11655: result: no +configure:11744: checking whether to check for GCC pthread/shared inconsistencies +configure:11757: gcc -o conftest -shared -fPIC -Wl,-z,defs -pthread conftest.c >&5 +configure:11757: $? = 0 +configure:11769: result: yes +configure:11775: checking whether -pthread is sufficient with -shared +configure:11790: gcc -o conftest -shared -fPIC -Wl,-z,defs -pthread conftest.c >&5 +configure:11790: $? = 0 +configure:11797: result: yes +configure:12038: checking that generated files are newer than configure +configure:12044: result: done +configure:12079: creating ./config.status + +## ---------------- ## +## Cache variables. ## +## ---------------- ## + +ac_cv_build=x86_64-pc-linux-gnu +ac_cv_c_compiler_gnu=yes +ac_cv_cxx_compiler_gnu=yes +ac_cv_env_CCC_set= +ac_cv_env_CCC_value= +ac_cv_env_CC_set= +ac_cv_env_CC_value= +ac_cv_env_CFLAGS_set=set +ac_cv_env_CFLAGS_value= +ac_cv_env_CPPFLAGS_set= +ac_cv_env_CPPFLAGS_value= +ac_cv_env_CPP_set= +ac_cv_env_CPP_value= +ac_cv_env_CXXCPP_set= +ac_cv_env_CXXCPP_value= +ac_cv_env_CXXFLAGS_set=set +ac_cv_env_CXXFLAGS_value=' -g -DNDEBUG' +ac_cv_env_CXX_set= +ac_cv_env_CXX_value= +ac_cv_env_LDFLAGS_set= +ac_cv_env_LDFLAGS_value= +ac_cv_env_LIBS_set= +ac_cv_env_LIBS_value= +ac_cv_env_LT_SYS_LIBRARY_PATH_set= +ac_cv_env_LT_SYS_LIBRARY_PATH_value= +ac_cv_env_build_alias_set= +ac_cv_env_build_alias_value= +ac_cv_env_host_alias_set= +ac_cv_env_host_alias_value= +ac_cv_env_target_alias_set= +ac_cv_env_target_alias_value= +ac_cv_header_dlfcn_h=yes +ac_cv_header_inttypes_h=yes +ac_cv_header_memory_h=yes +ac_cv_header_stdc=yes +ac_cv_header_stdint_h=yes +ac_cv_header_stdlib_h=yes +ac_cv_header_string_h=yes +ac_cv_header_strings_h=yes +ac_cv_header_sys_stat_h=yes +ac_cv_header_sys_types_h=yes +ac_cv_header_unistd_h=yes +ac_cv_host=x86_64-pc-linux-gnu +ac_cv_objext=o +ac_cv_path_EGREP='/bin/grep -E' +ac_cv_path_FGREP='/bin/grep -F' +ac_cv_path_GREP=/bin/grep +ac_cv_path_PYTHON=: +ac_cv_path_SED=/bin/sed +ac_cv_path_install='/usr/bin/install -c' +ac_cv_path_lt_DD=/bin/dd +ac_cv_path_mkdir=/bin/mkdir +ac_cv_prog_AWK=mawk +ac_cv_prog_CPP='gcc -E' +ac_cv_prog_CXXCPP='g++ -E' +ac_cv_prog_ac_ct_AR=ar +ac_cv_prog_ac_ct_CC=gcc +ac_cv_prog_ac_ct_CXX=g++ +ac_cv_prog_ac_ct_MANIFEST_TOOL=mt +ac_cv_prog_ac_ct_OBJDUMP=objdump +ac_cv_prog_ac_ct_RANLIB=ranlib +ac_cv_prog_ac_ct_STRIP=strip +ac_cv_prog_cc_c89= +ac_cv_prog_cc_g=yes +ac_cv_prog_cxx_g=yes +ac_cv_prog_make_make_set=yes +am_cv_CC_dependencies_compiler_type=gcc3 +am_cv_CXX_dependencies_compiler_type=gcc3 +am_cv_make_support_nested_variables=yes +am_cv_prog_cc_c_o=yes +lt_cv_ar_at_file=@ +lt_cv_archive_cmds_need_lc=no +lt_cv_deplibs_check_method=pass_all +lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_ld_reload_flag=-r +lt_cv_nm_interface='BSD nm' +lt_cv_objdir=.libs +lt_cv_path_LD=/usr/bin/ld +lt_cv_path_LDCXX='/usr/bin/ld -m elf_x86_64' +lt_cv_path_NM='/usr/bin/nm -B' +lt_cv_path_mainfest_tool=no +lt_cv_prog_compiler_c_o=yes +lt_cv_prog_compiler_c_o_CXX=yes +lt_cv_prog_compiler_pic='-fPIC -DPIC' +lt_cv_prog_compiler_pic_CXX='-fPIC -DPIC' +lt_cv_prog_compiler_pic_works=yes +lt_cv_prog_compiler_pic_works_CXX=yes +lt_cv_prog_compiler_rtti_exceptions=no +lt_cv_prog_compiler_static_works=yes +lt_cv_prog_compiler_static_works_CXX=yes +lt_cv_prog_gnu_ld=yes +lt_cv_prog_gnu_ldcxx=yes +lt_cv_sharedlib_from_linklib_cmd='printf %s\n' +lt_cv_shlibpath_overrides_runpath=yes +lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p'\'' | sed '\''/ __gnu_lto/d'\''' +lt_cv_sys_global_symbol_to_c_name_address='sed -n -e '\''s/^: \(.*\) .*$/ {"\1", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(.*\)$/ {"\1", (void *) \&\1},/p'\''' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='sed -n -e '\''s/^: \(.*\) .*$/ {"\1", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(lib.*\)$/ {"\1", (void *) \&\1},/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(.*\)$/ {"lib\1", (void *) \&\1},/p'\''' +lt_cv_sys_global_symbol_to_cdecl='sed -n -e '\''s/^T .* \(.*\)$/extern int \1();/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(.*\)$/extern char \1;/p'\''' +lt_cv_sys_global_symbol_to_import= +lt_cv_sys_max_cmd_len=1572864 +lt_cv_to_host_file_cmd=func_convert_file_noop +lt_cv_to_tool_file_cmd=func_convert_file_noop +lt_cv_truncate_bin='/bin/dd bs=4096 count=1' + +## ----------------- ## +## Output variables. ## +## ----------------- ## + +ACLOCAL='${SHELL} /home/jusic/source-engine/thirdparty/protobuf-2.6.1/gtest/build-aux/missing aclocal-1.16' +AMDEPBACKSLASH='\' +AMDEP_FALSE='#' +AMDEP_TRUE='' +AMTAR='$${TAR-tar}' +AM_BACKSLASH='\' +AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +AM_DEFAULT_VERBOSITY='1' +AM_V='$(V)' +AR='ar' +AUTOCONF='${SHELL} /home/jusic/source-engine/thirdparty/protobuf-2.6.1/gtest/build-aux/missing autoconf' +AUTOHEADER='${SHELL} /home/jusic/source-engine/thirdparty/protobuf-2.6.1/gtest/build-aux/missing autoheader' +AUTOMAKE='${SHELL} /home/jusic/source-engine/thirdparty/protobuf-2.6.1/gtest/build-aux/missing automake-1.16' +AWK='mawk' +CC='gcc' +CCDEPMODE='depmode=gcc3' +CFLAGS='' +CPP='gcc -E' +CPPFLAGS='' +CXX='g++' +CXXCPP='g++ -E' +CXXDEPMODE='depmode=gcc3' +CXXFLAGS=' -g -DNDEBUG' +CYGPATH_W='echo' +DEFS='-DHAVE_CONFIG_H' +DEPDIR='.deps' +DLLTOOL='false' +DSYMUTIL='' +DUMPBIN='' +ECHO_C='' +ECHO_N='-n' +ECHO_T='' +EGREP='/bin/grep -E' +EXEEXT='' +FGREP='/bin/grep -F' +GREP='/bin/grep' +HAVE_PTHREADS_FALSE='#' +HAVE_PTHREADS_TRUE='' +HAVE_PYTHON_FALSE='' +HAVE_PYTHON_TRUE='#' +INSTALL_DATA='${INSTALL} -m 644' +INSTALL_PROGRAM='${INSTALL}' +INSTALL_SCRIPT='${INSTALL}' +INSTALL_STRIP_PROGRAM='$(install_sh) -c -s' +LD='/usr/bin/ld -m elf_x86_64' +LDFLAGS='' +LIBOBJS='' +LIBS='' +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +LIPO='' +LN_S='ln -s' +LTLIBOBJS='' +LT_SYS_LIBRARY_PATH='' +MAKEINFO='${SHELL} /home/jusic/source-engine/thirdparty/protobuf-2.6.1/gtest/build-aux/missing makeinfo' +MANIFEST_TOOL=':' +MKDIR_P='/bin/mkdir -p' +NM='/usr/bin/nm -B' +NMEDIT='' +OBJDUMP='objdump' +OBJEXT='o' +OTOOL64='' +OTOOL='' +PACKAGE='gtest' +PACKAGE_BUGREPORT='googletestframework@googlegroups.com' +PACKAGE_NAME='Google C++ Testing Framework' +PACKAGE_STRING='Google C++ Testing Framework 1.6.0' +PACKAGE_TARNAME='gtest' +PACKAGE_URL='' +PACKAGE_VERSION='1.6.0' +PATH_SEPARATOR=':' +PTHREAD_CC='gcc' +PTHREAD_CFLAGS='-pthread' +PTHREAD_LIBS='' +PYTHON=':' +RANLIB='ranlib' +SED='/bin/sed' +SET_MAKE='' +SHELL='/bin/bash' +STRIP='strip' +VERSION='1.6.0' +ac_ct_AR='ar' +ac_ct_CC='gcc' +ac_ct_CXX='g++' +ac_ct_DUMPBIN='' +acx_pthread_config='' +am__EXEEXT_FALSE='' +am__EXEEXT_TRUE='#' +am__fastdepCC_FALSE='#' +am__fastdepCC_TRUE='' +am__fastdepCXX_FALSE='#' +am__fastdepCXX_TRUE='' +am__include='include' +am__isrc='' +am__leading_dot='.' +am__nodep='_no' +am__quote='' +am__tar='$${TAR-tar} chof - "$$tardir"' +am__untar='$${TAR-tar} xf -' +bindir='${exec_prefix}/bin' +build='x86_64-pc-linux-gnu' +build_alias='' +build_cpu='x86_64' +build_os='linux-gnu' +build_vendor='pc' +datadir='${datarootdir}' +datarootdir='${prefix}/share' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +dvidir='${docdir}' +exec_prefix='${prefix}' +host='x86_64-pc-linux-gnu' +host_alias='' +host_cpu='x86_64' +host_os='linux-gnu' +host_vendor='pc' +htmldir='${docdir}' +includedir='${prefix}/include' +infodir='${datarootdir}/info' +install_sh='${SHELL} /home/jusic/source-engine/thirdparty/protobuf-2.6.1/gtest/build-aux/install-sh' +libdir='${exec_prefix}/lib' +libexecdir='${exec_prefix}/libexec' +localedir='${datarootdir}/locale' +localstatedir='${prefix}/var' +mandir='${datarootdir}/man' +mkdir_p='$(MKDIR_P)' +oldincludedir='/usr/include' +pdfdir='${docdir}' +prefix='/usr/local' +program_transform_name='s,x,x,' +psdir='${docdir}' +runstatedir='${localstatedir}/run' +sbindir='${exec_prefix}/sbin' +sharedstatedir='${prefix}/com' +sysconfdir='${prefix}/etc' +target_alias='' + +## ----------- ## +## confdefs.h. ## +## ----------- ## + +/* confdefs.h */ +#define PACKAGE_NAME "Google C++ Testing Framework" +#define PACKAGE_TARNAME "gtest" +#define PACKAGE_VERSION "1.6.0" +#define PACKAGE_STRING "Google C++ Testing Framework 1.6.0" +#define PACKAGE_BUGREPORT "googletestframework@googlegroups.com" +#define PACKAGE_URL "" +#define PACKAGE "gtest" +#define VERSION "1.6.0" +#define STDC_HEADERS 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_SYS_STAT_H 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STRING_H 1 +#define HAVE_MEMORY_H 1 +#define HAVE_STRINGS_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_UNISTD_H 1 +#define HAVE_DLFCN_H 1 +#define LT_OBJDIR ".libs/" +#define HAVE_PTHREAD 1 + +configure: exit 0 + +## ---------------------- ## +## Running config.status. ## +## ---------------------- ## + +This file was extended by Google C++ Testing Framework config.status 1.6.0, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = + CONFIG_HEADERS = + CONFIG_LINKS = + CONFIG_COMMANDS = + $ ./config.status + +on DESKTOP-6CJ0SOQ + +config.status:1154: creating Makefile +config.status:1154: creating scripts/gtest-config +config.status:1154: creating build-aux/config.h +config.status:1383: executing depfiles commands +config.status:1461: cd . && sed -e '/# am--include-marker/d' Makefile | make -f - am--depfiles +make[4]: Entering directory '/home/jusic/source-engine/thirdparty/protobuf-2.6.1/gtest' +make[4]: Nothing to be done for 'am--depfiles'. +make[4]: Leaving directory '/home/jusic/source-engine/thirdparty/protobuf-2.6.1/gtest' +config.status:1466: $? = 0 +config.status:1383: executing libtool commands diff --git a/thirdparty/protobuf-2.6.1/gtest/config.status b/thirdparty/protobuf-2.6.1/gtest/config.status new file mode 100755 index 00000000..6081285e --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/config.status @@ -0,0 +1,2203 @@ +#! /bin/bash +# Generated by configure. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=${CONFIG_SHELL-/bin/bash} +export SHELL +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by Google C++ Testing Framework $as_me 1.6.0, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +# Files that config.status was made for. +config_files=" Makefile scripts/gtest-config" +config_headers=" build-aux/config.h" +config_commands=" depfiles libtool" + +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." + +ac_cs_config="'--disable-option-checking' '--prefix=/usr/local' '--cache-file=/dev/null' '--srcdir=.' 'CFLAGS=' 'CXXFLAGS= -g -DNDEBUG'" +ac_cs_version="\ +Google C++ Testing Framework config.status 1.6.0 +configured by ./configure, generated by GNU Autoconf 2.69, + with options \"$ac_cs_config\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='/home/jusic/source-engine/thirdparty/protobuf-2.6.1/gtest' +srcdir='.' +INSTALL='/usr/bin/install -c' +MKDIR_P='/bin/mkdir -p' +AWK='mawk' +test -n "$AWK" || AWK=awk +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +if $ac_cs_recheck; then + set X /bin/bash './configure' '--disable-option-checking' '--prefix=/usr/local' '--cache-file=/dev/null' '--srcdir=.' 'CFLAGS=' 'CXXFLAGS= -g -DNDEBUG' $ac_configure_extra_args --no-create --no-recursion + shift + $as_echo "running CONFIG_SHELL=/bin/bash $*" >&6 + CONFIG_SHELL='/bin/bash' + export CONFIG_SHELL + exec "$@" +fi + +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +# +# INIT-COMMANDS +# +AMDEP_TRUE="" MAKE="make" + + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' +double_quote_subst='s/\(["`\\]\)/\\\1/g' +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' +macro_version='2.4.6' +macro_revision='2.4.6' +enable_shared='yes' +enable_static='yes' +pic_mode='default' +enable_fast_install='needless' +shared_archive_member_spec='' +SHELL='/bin/bash' +ECHO='printf %s\n' +PATH_SEPARATOR=':' +host_alias='' +host='x86_64-pc-linux-gnu' +host_os='linux-gnu' +build_alias='' +build='x86_64-pc-linux-gnu' +build_os='linux-gnu' +SED='/bin/sed' +Xsed='/bin/sed -e 1s/^X//' +GREP='/bin/grep' +EGREP='/bin/grep -E' +FGREP='/bin/grep -F' +LD='/usr/bin/ld -m elf_x86_64' +NM='/usr/bin/nm -B' +LN_S='ln -s' +max_cmd_len='1572864' +ac_objext='o' +exeext='' +lt_unset='unset' +lt_SP2NL='tr \040 \012' +lt_NL2SP='tr \015\012 \040\040' +lt_cv_to_host_file_cmd='func_convert_file_noop' +lt_cv_to_tool_file_cmd='func_convert_file_noop' +reload_flag=' -r' +reload_cmds='$LD$reload_flag -o $output$reload_objs' +OBJDUMP='objdump' +deplibs_check_method='pass_all' +file_magic_cmd='$MAGIC_CMD' +file_magic_glob='' +want_nocaseglob='no' +DLLTOOL='false' +sharedlib_from_linklib_cmd='printf %s\n' +AR='ar' +AR_FLAGS='cru' +archiver_list_spec='@' +STRIP='strip' +RANLIB='ranlib' +old_postinstall_cmds='chmod 644 $oldlib~$RANLIB $tool_oldlib' +old_postuninstall_cmds='' +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs~$RANLIB $tool_oldlib' +lock_old_archive_extraction='no' +CC='gcc' +CFLAGS='' +compiler='g++' +GCC='yes' +lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p'\'' | sed '\''/ __gnu_lto/d'\''' +lt_cv_sys_global_symbol_to_cdecl='sed -n -e '\''s/^T .* \(.*\)$/extern int \1();/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(.*\)$/extern char \1;/p'\''' +lt_cv_sys_global_symbol_to_import='' +lt_cv_sys_global_symbol_to_c_name_address='sed -n -e '\''s/^: \(.*\) .*$/ {"\1", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(.*\)$/ {"\1", (void *) \&\1},/p'\''' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='sed -n -e '\''s/^: \(.*\) .*$/ {"\1", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(lib.*\)$/ {"\1", (void *) \&\1},/p'\'' -e '\''s/^[ABCDGIRSTW][ABCDGIRSTW]* .* \(.*\)$/ {"lib\1", (void *) \&\1},/p'\''' +lt_cv_nm_interface='BSD nm' +nm_file_list_spec='@' +lt_sysroot='' +lt_cv_truncate_bin='/bin/dd bs=4096 count=1' +objdir='.libs' +MAGIC_CMD='file' +lt_prog_compiler_no_builtin_flag=' -fno-builtin' +lt_prog_compiler_pic=' -fPIC -DPIC' +lt_prog_compiler_wl='-Wl,' +lt_prog_compiler_static='-static' +lt_cv_prog_compiler_c_o='yes' +need_locks='no' +MANIFEST_TOOL=':' +DSYMUTIL='' +NMEDIT='' +LIPO='' +OTOOL='' +OTOOL64='' +libext='a' +shrext_cmds='.so' +extract_expsyms_cmds='' +archive_cmds_need_lc='no' +enable_shared_with_static_runtimes='no' +export_dynamic_flag_spec='$wl--export-dynamic' +whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' +compiler_needs_object='no' +old_archive_from_new_cmds='' +old_archive_from_expsyms_cmds='' +archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' +archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' +module_cmds='' +module_expsym_cmds='' +with_gnu_ld='yes' +allow_undefined_flag='' +no_undefined_flag='' +hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' +hardcode_libdir_separator='' +hardcode_direct='no' +hardcode_direct_absolute='no' +hardcode_minus_L='no' +hardcode_shlibpath_var='unsupported' +hardcode_automatic='no' +inherit_rpath='no' +link_all_deplibs='no' +always_export_symbols='no' +export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' +exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' +include_expsyms='' +prelink_cmds='' +postlink_cmds='' +file_list_spec='' +variables_saved_for_relink='PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH' +need_lib_prefix='no' +need_version='no' +version_type='linux' +runpath_var='LD_RUN_PATH' +shlibpath_var='LD_LIBRARY_PATH' +shlibpath_overrides_runpath='yes' +libname_spec='lib$name' +library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' +soname_spec='$libname$release$shared_ext$major' +install_override_mode='' +postinstall_cmds='' +postuninstall_cmds='' +finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' +finish_eval='' +hardcode_into_libs='yes' +sys_lib_search_path_spec='/usr/lib/gcc/x86_64-linux-gnu/8 /usr/lib/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib ' +configure_time_dlsearch_path='/lib /usr/lib /usr/lib/x86_64-linux-gnu/libfakeroot /usr/local/lib /usr/local/lib/x86_64-linux-gnu /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu /lib32 /usr/lib32 /libx32 /usr/libx32 ' +configure_time_lt_sys_library_path='' +hardcode_action='immediate' +enable_dlopen='unknown' +enable_dlopen_self='unknown' +enable_dlopen_self_static='unknown' +old_striplib='strip --strip-debug' +striplib='strip --strip-unneeded' +compiler_lib_search_dirs='' +predep_objects='' +postdep_objects='' +predeps='' +postdeps='' +compiler_lib_search_path='' +LD_CXX='/usr/bin/ld -m elf_x86_64' +reload_flag_CXX=' -r' +reload_cmds_CXX='$LD$reload_flag -o $output$reload_objs' +old_archive_cmds_CXX='$AR $AR_FLAGS $oldlib$oldobjs~$RANLIB $tool_oldlib' +compiler_CXX='g++' +GCC_CXX='yes' +lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' +lt_prog_compiler_pic_CXX=' -fPIC -DPIC' +lt_prog_compiler_wl_CXX='-Wl,' +lt_prog_compiler_static_CXX='-static' +lt_cv_prog_compiler_c_o_CXX='yes' +archive_cmds_need_lc_CXX='no' +enable_shared_with_static_runtimes_CXX='no' +export_dynamic_flag_spec_CXX='$wl--export-dynamic' +whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' +compiler_needs_object_CXX='no' +old_archive_from_new_cmds_CXX='' +old_archive_from_expsyms_cmds_CXX='' +archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' +archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' +module_cmds_CXX='' +module_expsym_cmds_CXX='' +with_gnu_ld_CXX='yes' +allow_undefined_flag_CXX='' +no_undefined_flag_CXX='' +hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' +hardcode_libdir_separator_CXX='' +hardcode_direct_CXX='no' +hardcode_direct_absolute_CXX='no' +hardcode_minus_L_CXX='no' +hardcode_shlibpath_var_CXX='unsupported' +hardcode_automatic_CXX='no' +inherit_rpath_CXX='no' +link_all_deplibs_CXX='no' +always_export_symbols_CXX='no' +export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' +exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' +include_expsyms_CXX='' +prelink_cmds_CXX='' +postlink_cmds_CXX='' +file_list_spec_CXX='' +hardcode_action_CXX='immediate' +compiler_lib_search_dirs_CXX='/usr/lib/gcc/x86_64-linux-gnu/8 /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu /usr/lib/gcc/x86_64-linux-gnu/8/../../../../lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /usr/lib/gcc/x86_64-linux-gnu/8/../../..' +predep_objects_CXX='/usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/8/crtbeginS.o' +postdep_objects_CXX='/usr/lib/gcc/x86_64-linux-gnu/8/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/crtn.o' +predeps_CXX='' +postdeps_CXX='-lstdc++ -lm -lgcc_s -lc -lgcc_s' +compiler_lib_search_path_CXX='-L/usr/lib/gcc/x86_64-linux-gnu/8 -L/usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/8/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/8/../../..' + +LTCC='gcc' +LTCFLAGS='' +compiler='gcc' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in SHELL ECHO PATH_SEPARATOR SED GREP EGREP FGREP LD NM LN_S lt_SP2NL lt_NL2SP reload_flag OBJDUMP deplibs_check_method file_magic_cmd file_magic_glob want_nocaseglob DLLTOOL sharedlib_from_linklib_cmd AR AR_FLAGS archiver_list_spec STRIP RANLIB CC CFLAGS compiler lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl lt_cv_sys_global_symbol_to_import lt_cv_sys_global_symbol_to_c_name_address lt_cv_sys_global_symbol_to_c_name_address_lib_prefix lt_cv_nm_interface nm_file_list_spec lt_cv_truncate_bin lt_prog_compiler_no_builtin_flag lt_prog_compiler_pic lt_prog_compiler_wl lt_prog_compiler_static lt_cv_prog_compiler_c_o need_locks MANIFEST_TOOL DSYMUTIL NMEDIT LIPO OTOOL OTOOL64 shrext_cmds export_dynamic_flag_spec whole_archive_flag_spec compiler_needs_object with_gnu_ld allow_undefined_flag no_undefined_flag hardcode_libdir_flag_spec hardcode_libdir_separator exclude_expsyms include_expsyms file_list_spec variables_saved_for_relink libname_spec library_names_spec soname_spec install_override_mode finish_eval old_striplib striplib compiler_lib_search_dirs predep_objects postdep_objects predeps postdeps compiler_lib_search_path LD_CXX reload_flag_CXX compiler_CXX lt_prog_compiler_no_builtin_flag_CXX lt_prog_compiler_pic_CXX lt_prog_compiler_wl_CXX lt_prog_compiler_static_CXX lt_cv_prog_compiler_c_o_CXX export_dynamic_flag_spec_CXX whole_archive_flag_spec_CXX compiler_needs_object_CXX with_gnu_ld_CXX allow_undefined_flag_CXX no_undefined_flag_CXX hardcode_libdir_flag_spec_CXX hardcode_libdir_separator_CXX exclude_expsyms_CXX include_expsyms_CXX file_list_spec_CXX compiler_lib_search_dirs_CXX predep_objects_CXX postdep_objects_CXX predeps_CXX postdeps_CXX compiler_lib_search_path_CXX; do + case `eval \\$ECHO \\""\\$$var"\\"` in + *[\\\`\"\$]*) + eval "lt_$var=\\\"\`\$ECHO \"\$$var\" | \$SED \"\$sed_quote_subst\"\`\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_$var=\\\"\$$var\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds old_postinstall_cmds old_postuninstall_cmds old_archive_cmds extract_expsyms_cmds old_archive_from_new_cmds old_archive_from_expsyms_cmds archive_cmds archive_expsym_cmds module_cmds module_expsym_cmds export_symbols_cmds prelink_cmds postlink_cmds postinstall_cmds postuninstall_cmds finish_cmds sys_lib_search_path_spec configure_time_dlsearch_path configure_time_lt_sys_library_path reload_cmds_CXX old_archive_cmds_CXX old_archive_from_new_cmds_CXX old_archive_from_expsyms_cmds_CXX archive_cmds_CXX archive_expsym_cmds_CXX module_cmds_CXX module_expsym_cmds_CXX export_symbols_cmds_CXX prelink_cmds_CXX postlink_cmds_CXX; do + case `eval \\$ECHO \\""\\$$var"\\"` in + *[\\\`\"\$]*) + eval "lt_$var=\\\"\`\$ECHO \"\$$var\" | \$SED -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_$var=\\\"\$$var\\\"" + ;; + esac +done + +ac_aux_dir='build-aux' + +# See if we are running on zsh, and set the options that allow our +# commands through without removal of \ escapes INIT. +if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='gtest' + VERSION='1.6.0' + RM='rm -f' + ofile='libtool' + + + + + + + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "build-aux/config.h") CONFIG_HEADERS="$CONFIG_HEADERS build-aux/config.h" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "scripts/gtest-config") CONFIG_FILES="$CONFIG_FILES scripts/gtest-config" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +cat >>"$ac_tmp/subs1.awk" <<\_ACAWK && +S["am__EXEEXT_FALSE"]="" +S["am__EXEEXT_TRUE"]="#" +S["LTLIBOBJS"]="" +S["LIBOBJS"]="" +S["HAVE_PTHREADS_FALSE"]="#" +S["HAVE_PTHREADS_TRUE"]="" +S["PTHREAD_CFLAGS"]="-pthread" +S["PTHREAD_LIBS"]="" +S["PTHREAD_CC"]="gcc" +S["acx_pthread_config"]="" +S["HAVE_PYTHON_FALSE"]="" +S["HAVE_PYTHON_TRUE"]="#" +S["PYTHON"]=":" +S["CXXCPP"]="g++ -E" +S["CPP"]="gcc -E" +S["LT_SYS_LIBRARY_PATH"]="" +S["OTOOL64"]="" +S["OTOOL"]="" +S["LIPO"]="" +S["NMEDIT"]="" +S["DSYMUTIL"]="" +S["MANIFEST_TOOL"]=":" +S["RANLIB"]="ranlib" +S["ac_ct_AR"]="ar" +S["AR"]="ar" +S["DLLTOOL"]="false" +S["OBJDUMP"]="objdump" +S["LN_S"]="ln -s" +S["NM"]="/usr/bin/nm -B" +S["ac_ct_DUMPBIN"]="" +S["DUMPBIN"]="" +S["LD"]="/usr/bin/ld -m elf_x86_64" +S["FGREP"]="/bin/grep -F" +S["EGREP"]="/bin/grep -E" +S["GREP"]="/bin/grep" +S["SED"]="/bin/sed" +S["host_os"]="linux-gnu" +S["host_vendor"]="pc" +S["host_cpu"]="x86_64" +S["host"]="x86_64-pc-linux-gnu" +S["build_os"]="linux-gnu" +S["build_vendor"]="pc" +S["build_cpu"]="x86_64" +S["build"]="x86_64-pc-linux-gnu" +S["LIBTOOL"]="$(SHELL) $(top_builddir)/libtool" +S["am__fastdepCXX_FALSE"]="#" +S["am__fastdepCXX_TRUE"]="" +S["CXXDEPMODE"]="depmode=gcc3" +S["ac_ct_CXX"]="g++" +S["CXXFLAGS"]=" -g -DNDEBUG" +S["CXX"]="g++" +S["am__fastdepCC_FALSE"]="#" +S["am__fastdepCC_TRUE"]="" +S["CCDEPMODE"]="depmode=gcc3" +S["am__nodep"]="_no" +S["AMDEPBACKSLASH"]="\\" +S["AMDEP_FALSE"]="#" +S["AMDEP_TRUE"]="" +S["am__include"]="include" +S["DEPDIR"]=".deps" +S["OBJEXT"]="o" +S["EXEEXT"]="" +S["ac_ct_CC"]="gcc" +S["CPPFLAGS"]="" +S["LDFLAGS"]="" +S["CFLAGS"]="" +S["CC"]="gcc" +S["AM_BACKSLASH"]="\\" +S["AM_DEFAULT_VERBOSITY"]="1" +S["AM_DEFAULT_V"]="$(AM_DEFAULT_VERBOSITY)" +S["AM_V"]="$(V)" +S["am__untar"]="$${TAR-tar} xf -" +S["am__tar"]="$${TAR-tar} chof - \"$$tardir\"" +S["AMTAR"]="$${TAR-tar}" +S["am__leading_dot"]="." +S["SET_MAKE"]="" +S["AWK"]="mawk" +S["mkdir_p"]="$(MKDIR_P)" +S["MKDIR_P"]="/bin/mkdir -p" +S["INSTALL_STRIP_PROGRAM"]="$(install_sh) -c -s" +S["STRIP"]="strip" +S["install_sh"]="${SHELL} /home/jusic/source-engine/thirdparty/protobuf-2.6.1/gtest/build-aux/install-sh" +S["MAKEINFO"]="${SHELL} /home/jusic/source-engine/thirdparty/protobuf-2.6.1/gtest/build-aux/missing makeinfo" +S["AUTOHEADER"]="${SHELL} /home/jusic/source-engine/thirdparty/protobuf-2.6.1/gtest/build-aux/missing autoheader" +S["AUTOMAKE"]="${SHELL} /home/jusic/source-engine/thirdparty/protobuf-2.6.1/gtest/build-aux/missing automake-1.16" +S["AUTOCONF"]="${SHELL} /home/jusic/source-engine/thirdparty/protobuf-2.6.1/gtest/build-aux/missing autoconf" +S["ACLOCAL"]="${SHELL} /home/jusic/source-engine/thirdparty/protobuf-2.6.1/gtest/build-aux/missing aclocal-1.16" +S["VERSION"]="1.6.0" +S["PACKAGE"]="gtest" +S["CYGPATH_W"]="echo" +S["am__isrc"]="" +S["INSTALL_DATA"]="${INSTALL} -m 644" +S["INSTALL_SCRIPT"]="${INSTALL}" +S["INSTALL_PROGRAM"]="${INSTALL}" +S["target_alias"]="" +S["host_alias"]="" +S["build_alias"]="" +S["LIBS"]="" +S["ECHO_T"]="" +S["ECHO_N"]="-n" +S["ECHO_C"]="" +S["DEFS"]="-DHAVE_CONFIG_H" +S["mandir"]="${datarootdir}/man" +S["localedir"]="${datarootdir}/locale" +S["libdir"]="${exec_prefix}/lib" +S["psdir"]="${docdir}" +S["pdfdir"]="${docdir}" +S["dvidir"]="${docdir}" +S["htmldir"]="${docdir}" +S["infodir"]="${datarootdir}/info" +S["docdir"]="${datarootdir}/doc/${PACKAGE_TARNAME}" +S["oldincludedir"]="/usr/include" +S["includedir"]="${prefix}/include" +S["runstatedir"]="${localstatedir}/run" +S["localstatedir"]="${prefix}/var" +S["sharedstatedir"]="${prefix}/com" +S["sysconfdir"]="${prefix}/etc" +S["datadir"]="${datarootdir}" +S["datarootdir"]="${prefix}/share" +S["libexecdir"]="${exec_prefix}/libexec" +S["sbindir"]="${exec_prefix}/sbin" +S["bindir"]="${exec_prefix}/bin" +S["program_transform_name"]="s,x,x," +S["prefix"]="/usr/local" +S["exec_prefix"]="${prefix}" +S["PACKAGE_URL"]="" +S["PACKAGE_BUGREPORT"]="googletestframework@googlegroups.com" +S["PACKAGE_STRING"]="Google C++ Testing Framework 1.6.0" +S["PACKAGE_VERSION"]="1.6.0" +S["PACKAGE_TARNAME"]="gtest" +S["PACKAGE_NAME"]="Google C++ Testing Framework" +S["PATH_SEPARATOR"]=":" +S["SHELL"]="/bin/bash" +S["am__quote"]="" +_ACAWK +cat >>"$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +D["PACKAGE_NAME"]=" \"Google C++ Testing Framework\"" +D["PACKAGE_TARNAME"]=" \"gtest\"" +D["PACKAGE_VERSION"]=" \"1.6.0\"" +D["PACKAGE_STRING"]=" \"Google C++ Testing Framework 1.6.0\"" +D["PACKAGE_BUGREPORT"]=" \"googletestframework@googlegroups.com\"" +D["PACKAGE_URL"]=" \"\"" +D["PACKAGE"]=" \"gtest\"" +D["VERSION"]=" \"1.6.0\"" +D["STDC_HEADERS"]=" 1" +D["HAVE_SYS_TYPES_H"]=" 1" +D["HAVE_SYS_STAT_H"]=" 1" +D["HAVE_STDLIB_H"]=" 1" +D["HAVE_STRING_H"]=" 1" +D["HAVE_MEMORY_H"]=" 1" +D["HAVE_STRINGS_H"]=" 1" +D["HAVE_INTTYPES_H"]=" 1" +D["HAVE_STDINT_H"]=" 1" +D["HAVE_UNISTD_H"]=" 1" +D["HAVE_DLFCN_H"]=" 1" +D["LT_OBJDIR"]=" \".libs/\"" +D["HAVE_PTHREAD"]=" 1" + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+[_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ][_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*([\t (]|$)/ { + line = $ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + ac_datarootdir_hack=' + s&@datadir@&${datarootdir}&g + s&@docdir@&${datarootdir}/doc/${PACKAGE_TARNAME}&g + s&@infodir@&${datarootdir}/info&g + s&@localedir@&${datarootdir}/locale&g + s&@mandir@&${datarootdir}/man&g + s&\${datarootdir}&${prefix}/share&g' ;; +esac +ac_sed_extra="/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +} + +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "scripts/gtest-config":F) chmod +x scripts/gtest-config ;; + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + case $CONFIG_FILES in #( + *\'*) : + eval set x "$CONFIG_FILES" ;; #( + *) : + set x $CONFIG_FILES ;; #( + *) : + ;; +esac + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`$as_dirname -- "$am_mf" || +$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$am_mf" : 'X\(//\)[^/]' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$am_mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + am_filepart=`$as_basename -- "$am_mf" || +$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$am_mf" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { echo "$as_me:$LINENO: cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles" >&5 + (cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } || am_rc=$? + done + if test $am_rc -ne 0; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. Try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking). +See \`config.log' for more details" "$LINENO" 5; } + fi + { am_dirpart=; unset am_dirpart;} + { am_filepart=; unset am_filepart;} + { am_mf=; unset am_mf;} + { am_rc=; unset am_rc;} + rm -f conftest-deps.mk +} + ;; + "libtool":C) + + # See if we are running on zsh, and set the options that allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST + fi + + cfgfile=${ofile}T + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL +# Generated automatically by $as_me ($PACKAGE) $VERSION +# NOTE: Changes made to this file will be lost: look at ltmain.sh. + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + +# Copyright (C) 2014 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +# The names of the tagged configurations supported by this script. +available_tags='CXX ' + +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + +# ### BEGIN LIBTOOL CONFIG + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# Shared archive member basename,for filename based shared library versioning on AIX. +shared_archive_member_spec=$shared_archive_member_spec + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that protects backslashes. +ECHO=$lt_ECHO + +# The PATH separator for the build system. +PATH_SEPARATOR=$lt_PATH_SEPARATOR + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# convert \$build file names to \$host format. +to_host_file_cmd=$lt_cv_to_host_file_cmd + +# convert \$build files to toolchain format. +to_tool_file_cmd=$lt_cv_to_tool_file_cmd + +# An object symbol dumper. +OBJDUMP=$lt_OBJDUMP + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method = "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# How to find potential files when deplibs_check_method = "file_magic". +file_magic_glob=$lt_file_magic_glob + +# Find potential files using nocaseglob when deplibs_check_method = "file_magic". +want_nocaseglob=$lt_want_nocaseglob + +# DLL creation program. +DLLTOOL=$lt_DLLTOOL + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd + +# The archiver. +AR=$lt_AR + +# Flags to create an archive. +AR_FLAGS=$lt_AR_FLAGS + +# How to feed a file listing to the archiver. +archiver_list_spec=$lt_archiver_list_spec + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=$lock_old_archive_extraction + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm into a list of symbols to manually relocate. +global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# The name lister interface. +nm_interface=$lt_lt_cv_nm_interface + +# Specify filename containing input files for \$NM. +nm_file_list_spec=$lt_nm_file_list_spec + +# The root where to search for dependent libraries,and where our libraries should be installed. +lt_sysroot=$lt_sysroot + +# Command to truncate a binary pipe. +lt_truncate_bin=$lt_lt_cv_truncate_bin + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Manifest tool. +MANIFEST_TOOL=$lt_MANIFEST_TOOL + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Permission mode override for installation of shared libraries. +install_override_mode=$lt_install_override_mode + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Detected run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path + +# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. +configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \$shlibpath_var if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects +postdep_objects=$lt_postdep_objects +predeps=$lt_predeps +postdeps=$lt_postdeps + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path + +# ### END LIBTOOL CONFIG + +_LT_EOF + + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + +ltmain=$ac_aux_dir/ltmain.sh + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + + cat <<_LT_EOF >> "$ofile" + +# ### BEGIN LIBTOOL TAG CONFIG: CXX + +# The linker used to build libraries. +LD=$lt_LD_CXX + +# How to create reloadable object files. +reload_flag=$lt_reload_flag_CXX +reload_cmds=$lt_reload_cmds_CXX + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds_CXX + +# A language specific compiler. +CC=$lt_compiler_CXX + +# Is the compiler the GNU compiler? +with_gcc=$GCC_CXX + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_CXX + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_CXX + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_CXX + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_CXX + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object_CXX + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds_CXX +archive_expsym_cmds=$lt_archive_expsym_cmds_CXX + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds_CXX +module_expsym_cmds=$lt_module_expsym_cmds_CXX + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld_CXX + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_CXX + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_CXX + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct_CXX + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \$shlibpath_var if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute_CXX + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L_CXX + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic_CXX + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath_CXX + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_CXX + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols_CXX + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_CXX + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_CXX + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_CXX + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds_CXX + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds_CXX + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec_CXX + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_CXX + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects_CXX +postdep_objects=$lt_postdep_objects_CXX +predeps=$lt_predeps_CXX +postdeps=$lt_postdeps_CXX + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_CXX + +# ### END LIBTOOL TAG CONFIG: CXX +_LT_EOF + + ;; + + esac +done # for ac_tag + + +as_fn_exit 0 diff --git a/thirdparty/protobuf-2.6.1/gtest/configure b/thirdparty/protobuf-2.6.1/gtest/configure new file mode 100755 index 00000000..19c12675 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/configure @@ -0,0 +1,18941 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.69 for Google C++ Testing Framework 1.6.0. +# +# Report bugs to . +# +# +# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 + + test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ + || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org and +$0: googletestframework@googlegroups.com about your system, +$0: including any error possibly output before this +$0: message. Then install a modern shell, or manually run +$0: the script under such a shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + +SHELL=${CONFIG_SHELL-/bin/sh} + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='Google C++ Testing Framework' +PACKAGE_TARNAME='gtest' +PACKAGE_VERSION='1.6.0' +PACKAGE_STRING='Google C++ Testing Framework 1.6.0' +PACKAGE_BUGREPORT='googletestframework@googlegroups.com' +PACKAGE_URL='' + +ac_unique_file="./LICENSE" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +LIBOBJS +HAVE_PTHREADS_FALSE +HAVE_PTHREADS_TRUE +PTHREAD_CFLAGS +PTHREAD_LIBS +PTHREAD_CC +acx_pthread_config +HAVE_PYTHON_FALSE +HAVE_PYTHON_TRUE +PYTHON +CXXCPP +CPP +LT_SYS_LIBRARY_PATH +OTOOL64 +OTOOL +LIPO +NMEDIT +DSYMUTIL +MANIFEST_TOOL +RANLIB +ac_ct_AR +AR +DLLTOOL +OBJDUMP +LN_S +NM +ac_ct_DUMPBIN +DUMPBIN +LD +FGREP +EGREP +GREP +SED +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +LIBTOOL +am__fastdepCXX_FALSE +am__fastdepCXX_TRUE +CXXDEPMODE +ac_ct_CXX +CXXFLAGS +CXX +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +runstatedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL +am__quote' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_silent_rules +enable_dependency_tracking +enable_shared +enable_static +with_pic +enable_fast_install +with_aix_soname +with_gnu_ld +with_sysroot +enable_libtool_lock +with_pthreads +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CXX +CXXFLAGS +CCC +LT_SYS_LIBRARY_PATH +CPP +CXXCPP' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir runstatedir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures Google C++ Testing Framework 1.6.0 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/gtest] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of Google C++ Testing Framework 1.6.0:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + --enable-shared[=PKGS] build shared libraries [default=yes] + --enable-static[=PKGS] build static libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-libtool-lock avoid locking (might break parallel builds) + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use + both] + --with-aix-soname=aix|svr4|both + shared library versioning (aka "SONAME") variant to + provide on AIX, [default=aix]. + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-sysroot[=DIR] Search for dependent libraries within DIR (or the + compiler's sysroot if not specified). + --with-pthreads use pthreads (default is yes) + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CXX C++ compiler command + CXXFLAGS C++ compiler flags + LT_SYS_LIBRARY_PATH + User-defined run-time library search path. + CPP C preprocessor + CXXCPP C++ preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +Google C++ Testing Framework configure 1.6.0 +generated by GNU Autoconf 2.69 + +Copyright (C) 2012 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_cxx_try_compile LINENO +# ---------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_compile + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func + +# ac_fn_cxx_try_cpp LINENO +# ------------------------ +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_cpp + +# ac_fn_cxx_try_link LINENO +# ------------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_link +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by Google C++ Testing Framework $as_me 1.6.0, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +# Provide various options to initialize the Autoconf and configure processes. + + + +ac_aux_dir= +for ac_dir in build-aux "$srcdir"/build-aux; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + as_fn_error $? "cannot find install-sh, install.sh, or shtool in build-aux \"$srcdir\"/build-aux" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +ac_config_headers="$ac_config_headers build-aux/config.h" + +ac_config_files="$ac_config_files Makefile" + +ac_config_files="$ac_config_files scripts/gtest-config" + + +# Initialize Automake with various options. We require at least v1.9, prevent +# pedantic complaints about package files, and enable various distribution +# targets. +am__api_version='1.16' + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if ${ac_cv_path_install+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +$as_echo_n "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken + alias in your environment" "$LINENO" 5 + fi + if test "$2" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$2" = conftest.file + ) +then + # Ok. + : +else + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was `s,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` + +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` + +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if ${ac_cv_path_mkdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +# Check whether --enable-silent-rules was given. +if test "${enable_silent_rules+set}" = set; then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=1;; +esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='gtest' + VERSION='1.6.0' + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar pax cpio none' + +am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' + + + + + + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 + fi +fi + + +# Check for programs used in building Google Test. +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } +if ${am_cv_prog_cc_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +$as_echo "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 +$as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; } +cat > confinc.mk << 'END' +am__doit: + @echo this is the am__doit target >confinc.out +.PHONY: am__doit +END +am__include="#" +am__quote= +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 + (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + case $?:`cat confinc.out 2>/dev/null` in #( + '0:this is the am__doit target') : + case $s in #( + BSD) : + am__include='.include' am__quote='"' ;; #( + *) : + am__include='include' am__quote='' ;; +esac ;; #( + *) : + ;; +esac + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 +$as_echo "${_am_result}" >&6; } + +# Check whether --enable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then : + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + +depcc="$CC" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CC_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +$as_echo "$CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +if ${ac_cv_cxx_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } +if ${ac_cv_prog_cxx_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +else + CXXFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + +else + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +depcc="$CXX" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CXX_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +fi + + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +case `pwd` in + *\ * | *\ *) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; +esac + + + +macro_version='2.4.6' +macro_revision='2.4.6' + + + + + + + + + + + + + +ltmain=$ac_aux_dir/ltmain.sh + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if ${ac_cv_build+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if ${ac_cv_host+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 +$as_echo_n "checking how to print strings... " >&6; } +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "" +} + +case $ECHO in + printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 +$as_echo "printf" >&6; } ;; + print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 +$as_echo "print -r" >&6; } ;; + *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 +$as_echo "cat" >&6; } ;; +esac + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if ${ac_cv_path_SED+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +$as_echo "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +$as_echo_n "checking for fgrep... " >&6; } +if ${ac_cv_path_FGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 + then ac_cv_path_FGREP="$GREP -F" + else + if test -z "$FGREP"; then + ac_path_FGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in fgrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_FGREP" || continue +# Check for GNU ac_path_FGREP and select it if it is found. + # Check for GNU $ac_path_FGREP +case `"$ac_path_FGREP" --version 2>&1` in +*GNU*) + ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'FGREP' >> "conftest.nl" + "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_FGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_FGREP="$ac_path_FGREP" + ac_path_FGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_FGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_FGREP"; then + as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_FGREP=$FGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +$as_echo "$ac_cv_path_FGREP" >&6; } + FGREP="$ac_cv_path_FGREP" + + +test -z "$GREP" && GREP=grep + + + + + + + + + + + + + + + + + + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return, which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD=$ac_prog + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test yes = "$with_gnu_ld"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD=$ac_dir/$ac_prog + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +if ${lt_cv_path_NM+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM=$NM +else + lt_nm_to_check=${ac_tool_prefix}nm + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/$lt_tmp_nm + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the 'sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty + case $build_os in + mingw*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac + case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break 2 + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break 2 + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS=$lt_save_ifs + done + : ${lt_cv_path_NM=no} +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +$as_echo "$lt_cv_path_NM" >&6; } +if test no != "$lt_cv_path_NM"; then + NM=$lt_cv_path_NM +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + if test -n "$ac_tool_prefix"; then + for ac_prog in dumpbin "link -dump" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DUMPBIN"; then + ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DUMPBIN=$ac_cv_prog_DUMPBIN +if test -n "$DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +$as_echo "$DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$DUMPBIN" && break + done +fi +if test -z "$DUMPBIN"; then + ac_ct_DUMPBIN=$DUMPBIN + for ac_prog in dumpbin "link -dump" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DUMPBIN"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN +if test -n "$ac_ct_DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +$as_echo "$ac_ct_DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_DUMPBIN" && break +done + + if test "x$ac_ct_DUMPBIN" = x; then + DUMPBIN=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DUMPBIN=$ac_ct_DUMPBIN + fi +fi + + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols -headers" + ;; + *) + DUMPBIN=: + ;; + esac + fi + + if test : != "$DUMPBIN"; then + NM=$DUMPBIN + fi +fi +test -z "$NM" && NM=nm + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +$as_echo_n "checking the name lister ($NM) interface... " >&6; } +if ${lt_cv_nm_interface+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: output\"" >&5) + cat conftest.out >&5 + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +$as_echo "$lt_cv_nm_interface" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } +fi + +# find the maximum length of command line arguments +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +$as_echo_n "checking the maximum length of command line arguments... " >&6; } +if ${lt_cv_sys_max_cmd_len+:} false; then : + $as_echo_n "(cached) " >&6 +else + i=0 + teststring=ABCD + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test X`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test 17 != "$i" # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac + +fi + +if test -n "$lt_cv_sys_max_cmd_len"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +$as_echo "$lt_cv_sys_max_cmd_len" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 +$as_echo "none" >&6; } +fi +max_cmd_len=$lt_cv_sys_max_cmd_len + + + + + + +: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi + + + + + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 +$as_echo_n "checking how to convert $build file names to $host format... " >&6; } +if ${lt_cv_to_host_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac + +fi + +to_host_file_cmd=$lt_cv_to_host_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 +$as_echo "$lt_cv_to_host_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 +$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } +if ${lt_cv_to_tool_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + #assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac + +fi + +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 +$as_echo "$lt_cv_to_tool_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +$as_echo_n "checking for $LD option to reload object files... " >&6; } +if ${lt_cv_ld_reload_flag+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_reload_flag='-r' +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +$as_echo "$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + if test yes != "$GCC"; then + reload_cmds=false + fi + ;; + darwin*) + if test yes = "$GCC"; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +$as_echo_n "checking how to recognize dependent libraries... " >&6; } +if ${lt_cv_deplibs_check_method+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# 'unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# that responds to the $file_magic_cmd with a given extended regex. +# If you have 'file' or equivalent on your system and you're not sure +# whether 'pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[4-9]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[3-9]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd* | bitrig*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +os2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +$as_echo "$lt_cv_deplibs_check_method" >&6; } + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + + + + + + + + + + + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +$as_echo "$DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +$as_echo "$ac_ct_DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + +test -z "$DLLTOOL" && DLLTOOL=dlltool + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 +$as_echo_n "checking how to associate runtime and link libraries... " >&6; } +if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh; + # decide which one to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd=$ECHO + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 +$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + + + + + + + + +if test -n "$ac_tool_prefix"; then + for ac_prog in ar + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AR" && break + done +fi +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_AR" && break +done + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +fi + +: ${AR=ar} +: ${AR_FLAGS=cru} + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 +$as_echo_n "checking for archiver @FILE support... " >&6; } +if ${lt_cv_ar_at_file+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ar_at_file=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test 0 -eq "$ac_status"; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test 0 -ne "$ac_status"; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 +$as_echo "$lt_cv_ar_at_file" >&6; } + +if test no = "$lt_cv_ar_at_file"; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +test -z "$STRIP" && STRIP=: + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +test -z "$RANLIB" && RANLIB=: + + + + + + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + bitrig* | openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } +if ${lt_cv_sys_global_symbol_pipe+:} false; then : + $as_echo_n "(cached) " >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[ABCDGISTW]' + ;; +hpux*) + if test ia64 = "$host_cpu"; then + symcode='[ABCDEGRST]' + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Gets list of data symbols to import. + lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" + # Adjust the below global symbol transforms to fixup imported variables. + lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" + lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" + lt_c_name_lib_hook="\ + -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ + -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" +else + # Disable hooks by default. + lt_cv_sys_global_symbol_to_import= + lt_cdecl_hook= + lt_c_name_hook= + lt_c_name_lib_hook= +fi + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n"\ +$lt_cdecl_hook\ +" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ +$lt_c_name_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" + +# Transform an extracted symbol line into symbol name with lib prefix and +# symbol address. +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ +$lt_c_name_lib_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function, + # D for any global variable and I for any imported variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK '"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ +" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ +" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ +" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ +" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Now try to grab the symbols. + nlist=conftest.nm + $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&5 + if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&5 && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS=conftstm.$ac_objext + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest$ac_exeext; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test yes = "$pipe_works"; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +$as_echo "failed" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 +$as_echo_n "checking for sysroot... " >&6; } + +# Check whether --with-sysroot was given. +if test "${with_sysroot+set}" = set; then : + withval=$with_sysroot; +else + with_sysroot=no +fi + + +lt_sysroot= +case $with_sysroot in #( + yes) + if test yes = "$GCC"; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 +$as_echo "$with_sysroot" >&6; } + as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 + ;; +esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 +$as_echo "${lt_sysroot:-no}" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 +$as_echo_n "checking for a working dd... " >&6; } +if ${ac_cv_path_lt_DD+:} false; then : + $as_echo_n "(cached) " >&6 +else + printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +: ${lt_DD:=$DD} +if test -z "$lt_DD"; then + ac_path_lt_DD_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in dd; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_lt_DD" || continue +if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: +fi + $ac_path_lt_DD_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_lt_DD"; then + : + fi +else + ac_cv_path_lt_DD=$lt_DD +fi + +rm -f conftest.i conftest2.i conftest.out +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 +$as_echo "$ac_cv_path_lt_DD" >&6; } + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 +$as_echo_n "checking how to truncate binary pipes... " >&6; } +if ${lt_cv_truncate_bin+:} false; then : + $as_echo_n "(cached) " >&6 +else + printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +lt_cv_truncate_bin= +if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" +fi +rm -f conftest.i conftest2.i conftest.out +test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 +$as_echo "$lt_cv_truncate_bin" >&6; } + + + + + + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + + +# Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then : + enableval=$enable_libtool_lock; +fi + +test no = "$enable_libtool_lock" || enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out what ABI is being produced by ac_compile, and set mode + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE=32 + ;; + *ELF-64*) + HPUX_IA64_MODE=64 + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + if test yes = "$lt_cv_prog_gnu_ld"; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +mips64*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + emul=elf + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + emul="${emul}32" + ;; + *64-bit*) + emul="${emul}64" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *MSB*) + emul="${emul}btsmip" + ;; + *LSB*) + emul="${emul}ltsmip" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *N32*) + emul="${emul}n32" + ;; + esac + LD="${LD-ld} -m $emul" + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. Note that the listed cases only cover the + # situations where additional linker options are needed (such as when + # doing 32-bit compilation for a host where ld defaults to 64-bit, or + # vice versa); the common cases where no linker options are needed do + # not appear in the list. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + case `/usr/bin/file conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac + ;; + powerpc64le-*linux*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + powerpcle-*linux*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -belf" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +$as_echo_n "checking whether the C compiler needs -belf... " >&6; } +if ${lt_cv_cc_needs_belf+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_cc_needs_belf=yes +else + lt_cv_cc_needs_belf=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +$as_echo "$lt_cv_cc_needs_belf" >&6; } + if test yes != "$lt_cv_cc_needs_belf"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS=$SAVE_CFLAGS + fi + ;; +*-*solaris*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*|x86_64-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD=${LD-ld}_sol2 + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks=$enable_libtool_lock + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. +set dummy ${ac_tool_prefix}mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$MANIFEST_TOOL"; then + ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL +if test -n "$MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 +$as_echo "$MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_MANIFEST_TOOL"; then + ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL + # Extract the first word of "mt", so it can be a program name with args. +set dummy mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_MANIFEST_TOOL"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL +if test -n "$ac_ct_MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 +$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_MANIFEST_TOOL" = x; then + MANIFEST_TOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL + fi +else + MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" +fi + +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 +$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } +if ${lt_cv_path_mainfest_tool+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&5 + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 +$as_echo "$lt_cv_path_mainfest_tool" >&6; } +if test yes != "$lt_cv_path_mainfest_tool"; then + MANIFEST_TOOL=: +fi + + + + + + + case $host_os in + rhapsody* | darwin*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. +set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DSYMUTIL"; then + ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DSYMUTIL=$ac_cv_prog_DSYMUTIL +if test -n "$DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +$as_echo "$DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DSYMUTIL"; then + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. +set dummy dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DSYMUTIL"; then + ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL +if test -n "$ac_ct_DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +$as_echo "$ac_ct_DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DSYMUTIL" = x; then + DSYMUTIL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DSYMUTIL=$ac_ct_DSYMUTIL + fi +else + DSYMUTIL="$ac_cv_prog_DSYMUTIL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. +set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NMEDIT"; then + ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +NMEDIT=$ac_cv_prog_NMEDIT +if test -n "$NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +$as_echo "$NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_NMEDIT"; then + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. +set dummy nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_NMEDIT"; then + ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_NMEDIT="nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT +if test -n "$ac_ct_NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +$as_echo "$ac_ct_NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_NMEDIT" = x; then + NMEDIT=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + NMEDIT=$ac_ct_NMEDIT + fi +else + NMEDIT="$ac_cv_prog_NMEDIT" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. +set dummy ${ac_tool_prefix}lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$LIPO"; then + ac_cv_prog_LIPO="$LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_LIPO="${ac_tool_prefix}lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +LIPO=$ac_cv_prog_LIPO +if test -n "$LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +$as_echo "$LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_LIPO"; then + ac_ct_LIPO=$LIPO + # Extract the first word of "lipo", so it can be a program name with args. +set dummy lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_LIPO"; then + ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_LIPO="lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO +if test -n "$ac_ct_LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +$as_echo "$ac_ct_LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_LIPO" = x; then + LIPO=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + LIPO=$ac_ct_LIPO + fi +else + LIPO="$ac_cv_prog_LIPO" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL"; then + ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL="${ac_tool_prefix}otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL=$ac_cv_prog_OTOOL +if test -n "$OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +$as_echo "$OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL"; then + ac_ct_OTOOL=$OTOOL + # Extract the first word of "otool", so it can be a program name with args. +set dummy otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL"; then + ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL="otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL +if test -n "$ac_ct_OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +$as_echo "$ac_ct_OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL" = x; then + OTOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL=$ac_ct_OTOOL + fi +else + OTOOL="$ac_cv_prog_OTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL64"; then + ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL64=$ac_cv_prog_OTOOL64 +if test -n "$OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +$as_echo "$OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL64"; then + ac_ct_OTOOL64=$OTOOL64 + # Extract the first word of "otool64", so it can be a program name with args. +set dummy otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL64"; then + ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL64="otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 +if test -n "$ac_ct_OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +$as_echo "$ac_ct_OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL64" = x; then + OTOOL64=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL64=$ac_ct_OTOOL64 + fi +else + OTOOL64="$ac_cv_prog_OTOOL64" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +$as_echo_n "checking for -single_module linker flag... " >&6; } +if ${lt_cv_apple_cc_single_mod+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_apple_cc_single_mod=no + if test -z "$LT_MULTI_MODULE"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&5 + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test 0 = "$_lt_result"; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&5 + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +$as_echo "$lt_cv_apple_cc_single_mod" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } +if ${lt_cv_ld_exported_symbols_list+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_ld_exported_symbols_list=yes +else + lt_cv_ld_exported_symbols_list=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 +$as_echo_n "checking for -force_load linker flag... " >&6; } +if ${lt_cv_ld_force_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 + echo "$AR cru libconftest.a conftest.o" >&5 + $AR cru libconftest.a conftest.o 2>&5 + echo "$RANLIB libconftest.a" >&5 + $RANLIB libconftest.a 2>&5 + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&5 + elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&5 + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 +$as_echo "$lt_cv_ld_force_load" >&6; } + case $host_os in + rhapsody* | darwin1.[012]) + _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[91]*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + 10.[012][,.]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test yes = "$lt_cv_apple_cc_single_mod"; then + _lt_dar_single_mod='$single_module' + fi + if test yes = "$lt_cv_ld_exported_symbols_list"; then + _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' + fi + if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in dlfcn.h +do : + ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default +" +if test "x$ac_cv_header_dlfcn_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_DLFCN_H 1 +_ACEOF + +fi + +done + + + +func_stripname_cnf () +{ + case $2 in + .*) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%\\\\$2\$%%"`;; + *) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%$2\$%%"`;; + esac +} # func_stripname_cnf + + + + + +# Set options + + + + enable_dlopen=no + + + enable_win32_dll=no + + + # Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then : + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_shared=yes +fi + + + + + + + + + + # Check whether --enable-static was given. +if test "${enable_static+set}" = set; then : + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_static=yes +fi + + + + + + + + + + +# Check whether --with-pic was given. +if test "${with_pic+set}" = set; then : + withval=$with_pic; lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for lt_pkg in $withval; do + IFS=$lt_save_ifs + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + pic_mode=default +fi + + + + + + + + + # Check whether --enable-fast-install was given. +if test "${enable_fast_install+set}" = set; then : + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_fast_install=yes +fi + + + + + + + + + shared_archive_member_spec= +case $host,$enable_shared in +power*-*-aix[5-9]*,yes) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 +$as_echo_n "checking which variant of shared library versioning to provide... " >&6; } + +# Check whether --with-aix-soname was given. +if test "${with_aix_soname+set}" = set; then : + withval=$with_aix_soname; case $withval in + aix|svr4|both) + ;; + *) + as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 + ;; + esac + lt_cv_with_aix_soname=$with_aix_soname +else + if ${lt_cv_with_aix_soname+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_with_aix_soname=aix +fi + + with_aix_soname=$lt_cv_with_aix_soname +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 +$as_echo "$with_aix_soname" >&6; } + if test aix != "$with_aix_soname"; then + # For the AIX way of multilib, we name the shared archive member + # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', + # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. + # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, + # the AIX toolchain works better with OBJECT_MODE set (default 32). + if test 64 = "${OBJECT_MODE-32}"; then + shared_archive_member_spec=shr_64 + else + shared_archive_member_spec=shr + fi + fi + ;; +*) + with_aix_soname=aix + ;; +esac + + + + + + + + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS=$ltmain + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +test -z "$LN_S" && LN_S="ln -s" + + + + + + + + + + + + + + +if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +$as_echo_n "checking for objdir... " >&6; } +if ${lt_cv_objdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +$as_echo "$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir + + + + + +cat >>confdefs.h <<_ACEOF +#define LT_OBJDIR "$lt_cv_objdir/" +_ACEOF + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a '.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld=$lt_cv_prog_gnu_ld + +old_CC=$CC +old_CFLAGS=$CFLAGS + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +func_cc_basename $compiler +cc_basename=$func_cc_basename_result + + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/${ac_tool_prefix}file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac +fi + +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +$as_echo_n "checking for file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac +fi + +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +# Use C for the default configuration in the libtool script + +lt_save_CC=$CC +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + +lt_prog_compiler_no_builtin_flag= + +if test yes = "$GCC"; then + case $cc_basename in + nvcc*) + lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; + *) + lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + + + + + + + lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + + + if test yes = "$GCC"; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + lt_prog_compiler_pic='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + lt_prog_compiler_wl='-Xlinker ' + if test -n "$lt_prog_compiler_pic"; then + lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + case $cc_basename in + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='$wl-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + # old Intel for x86_64, which still supported -KPIC. + ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-qpic' + lt_prog_compiler_static='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + *Sun\ F* | *Sun*Fortran*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Wl,' + ;; + *Intel*\ [CF]*Compiler*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + *Portland\ Group*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic=$lt_prog_compiler_pic +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 +$as_echo "$lt_cv_prog_compiler_pic" >&6; } +lt_prog_compiler_pic=$lt_cv_prog_compiler_pic + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if ${lt_cv_prog_compiler_pic_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } + +if test yes = "$lt_cv_prog_compiler_pic_works"; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi + + + + + + + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works=yes + fi + else + lt_cv_prog_compiler_static_works=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +$as_echo "$lt_cv_prog_compiler_static_works" >&6; } + +if test yes = "$lt_cv_prog_compiler_static_works"; then + : +else + lt_prog_compiler_static= +fi + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + +hard_links=nottested +if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test no = "$hard_links"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag= + always_export_symbols=no + archive_cmds= + archive_expsym_cmds= + compiler_needs_object=no + enable_shared_with_static_runtimes=no + export_dynamic_flag_spec= + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + hardcode_automatic=no + hardcode_direct=no + hardcode_direct_absolute=no + hardcode_libdir_flag_spec= + hardcode_libdir_separator= + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + inherit_rpath=no + link_all_deplibs=unknown + module_cmds= + module_expsym_cmds= + old_archive_from_new_cmds= + old_archive_from_expsyms_cmds= + thread_safe_flag_spec= + whole_archive_flag_spec= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ' (' and ')$', so one must not match beginning or + # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', + # as well as any symbol that contains 'd'. + exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test yes != "$GCC"; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd* | bitrig*) + with_gnu_ld=no + ;; + linux* | k*bsd*-gnu | gnu*) + link_all_deplibs=no + ;; + esac + + ld_shlibs=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test yes = "$with_gnu_ld"; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; + *\ \(GNU\ Binutils\)\ [3-9]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test yes = "$lt_use_gnu_ld_interface"; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='$wl' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + export_dynamic_flag_spec='$wl--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test ia64 != "$host_cpu"; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + export_dynamic_flag_spec='$wl--export-all-symbols' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + haiku*) + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + link_all_deplibs=yes + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes + ;; + + interix[3-9]*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test linux-dietlibc = "$host_os"; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test no = "$tmp_diet" + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec= + tmp_sharedflag='--shared' ;; + nagfor*) # NAGFOR 5.3 + tmp_sharedflag='-Wl,-shared' ;; + xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + tcc*) + export_dynamic_flag_spec='-rdynamic' + ;; + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + ld_shlibs=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test no = "$ld_shlibs"; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix[4-9]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then + aix_use_runtimelinking=yes + break + fi + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_direct_absolute=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + file_list_spec='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # traditional, no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + hardcode_direct=no + hardcode_direct_absolute=no + ;; + esac + + if test yes = "$GCC"; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag="$shared_flag "'$wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + export_dynamic_flag_spec='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' $wl-bernotok' + allow_undefined_flag=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + fi + archive_cmds_need_lc=yes + archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + always_export_symbols=yes + file_list_spec='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, )='true' + enable_shared_with_static_runtimes=yes + exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + old_postinstall_cmds='chmod 644 $oldlib' + postlink_cmds='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' + enable_shared_with_static_runtimes=yes + ;; + esac + ;; + + darwin* | rhapsody*) + + + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + if test yes = "$lt_cv_ld_force_load"; then + whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + + else + whole_archive_flag_spec='' + fi + link_all_deplibs=yes + allow_undefined_flag=$_lt_dar_allow_undefined + case $cc_basename in + ifort*|nagfor*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test yes = "$_lt_dar_can_shared"; then + output_verbose_link_cmd=func_echo_all + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + + else + ld_shlibs=no + fi + + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test yes = "$GCC"; then + archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='$wl-E' + ;; + + hpux10*) + if test yes,no = "$GCC,$with_gnu_ld"; then + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='$wl-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test yes,no = "$GCC,$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 +$as_echo_n "checking if $CC understands -b... " >&6; } +if ${lt_cv_prog_compiler__b+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler__b=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -b" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler__b=yes + fi + else + lt_cv_prog_compiler__b=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 +$as_echo "$lt_cv_prog_compiler__b" >&6; } + +if test yes = "$lt_cv_prog_compiler__b"; then + archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +fi + + ;; + esac + fi + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='$wl-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test yes = "$GCC"; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 +$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } +if ${lt_cv_irix_exported_symbol+:} false; then : + $as_echo_n "(cached) " >&6 +else + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo (void) { return 0; } +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_irix_exported_symbol=yes +else + lt_cv_irix_exported_symbol=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 +$as_echo "$lt_cv_irix_exported_symbol" >&6; } + if test yes = "$lt_cv_irix_exported_symbol"; then + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' + fi + link_all_deplibs=no + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + inherit_rpath=yes + link_all_deplibs=yes + ;; + + linux*) + case $cc_basename in + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + ld_shlibs=yes + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + *nto* | *qnx*) + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + hardcode_shlibpath_var=no + hardcode_direct_absolute=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' + else + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + fi + else + ld_shlibs=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes + ;; + + osf3*) + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + archive_cmds_need_lc='no' + hardcode_libdir_separator=: + ;; + + solaris*) + no_undefined_flag=' -z defs' + if test yes = "$GCC"; then + wlarc='$wl' + archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='$wl' + archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. GCC discards it without '$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test yes = "$GCC"; then + whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + else + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test sequent = "$host_vendor"; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag='$wl-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='$wl-z,text' + allow_undefined_flag='$wl-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='$wl-R,$libdir' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + + if test sni = "$host_vendor"; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + export_dynamic_flag_spec='$wl-Blargedynsym' + ;; + esac + fi + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +$as_echo "$ld_shlibs" >&6; } +test no = "$ld_shlibs" && can_build_shared=no + +with_gnu_ld=$with_gnu_ld + + + + + + + + + + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test yes,yes = "$GCC,$enable_shared"; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +if ${lt_cv_archive_cmds_need_lc+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } + archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +if test yes = "$GCC"; then + case $host_os in + darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; + *) lt_awk_arg='/^libraries:/' ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; + *) lt_sed_strip_eq='s|=/|/|g' ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary... + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + # ...but if some path component already ends with the multilib dir we assume + # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). + case "$lt_multi_os_dir; $lt_search_path_spec " in + "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) + lt_multi_os_dir= + ;; + esac + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" + elif test -n "$lt_multi_os_dir"; then + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS = " "; FS = "/|\n";} { + lt_foo = ""; + lt_count = 0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo = "/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[lt_foo]++; } + if (lt_freq[lt_foo] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's|/\([A-Za-z]:\)|\1|g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=.so +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + + + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='$libname$release$shared_ext$major' + ;; + +aix[4-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test ia64 = "$host_cpu"; then + # AIX 5 supports IA64 + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a(lib.so.V)' + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='$libname$shared_ext' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec=$LIB + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[23].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 + fi + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test yes = "$lt_cv_prog_gnu_ld"; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + hardcode_libdir_flag_spec='-L$libdir' + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd* | bitrig*) + version_type=sunos + sys_lib_dlsearch_path_spec=/usr/lib + need_lib_prefix=no + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no + else + need_version=yes + fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +os2*) + libname_spec='$name' + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test yes = "$with_gnu_ld"; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec; then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=sco + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test yes = "$with_gnu_ld"; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test no = "$dynamic_linker" && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test yes = "$GCC"; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +fi + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +fi + +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || + test -n "$runpath_var" || + test yes = "$hardcode_automatic"; then + + # We can hardcode non-existent directories. + if test no != "$hardcode_direct" && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && + test no != "$hardcode_minus_L"; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +$as_echo "$hardcode_action" >&6; } + +if test relink = "$hardcode_action" || + test yes = "$inherit_rpath"; then + # Fast installation is not supported + enable_fast_install=no +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + if test yes != "$enable_dlopen"; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen=load_add_on + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen=LoadLibrary + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl +else + + lt_cv_dlopen=dyld + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + tpf*) + # Don't try to run any link tests for TPF. We know it's impossible + # because TPF is a cross-compiler, and we know how we open DSOs. + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + lt_cv_dlopen_self=no + ;; + + *) + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +if test "x$ac_cv_func_shl_load" = xyes; then : + lt_cv_dlopen=shl_load +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +$as_echo_n "checking for shl_load in -ldld... " >&6; } +if ${ac_cv_lib_dld_shl_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_shl_load=yes +else + ac_cv_lib_dld_shl_load=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +$as_echo "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes; then : + lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld +else + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = xyes; then : + lt_cv_dlopen=dlopen +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +$as_echo_n "checking for dlopen in -lsvld... " >&6; } +if ${ac_cv_lib_svld_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_svld_dlopen=yes +else + ac_cv_lib_svld_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +$as_echo "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = xyes; then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +$as_echo_n "checking for dld_link in -ldld... " >&6; } +if ${ac_cv_lib_dld_dld_link+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link (); +int +main () +{ +return dld_link (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_dld_link=yes +else + ac_cv_lib_dld_dld_link=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +$as_echo "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = xyes; then : + lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test no = "$lt_cv_dlopen"; then + enable_dlopen=no + else + enable_dlopen=yes + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS=$CPPFLAGS + test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS=$LDFLAGS + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS=$LIBS + LIBS="$lt_cv_dlopen_libs $LIBS" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +$as_echo_n "checking whether a program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test yes = "$cross_compiling"; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +$as_echo "$lt_cv_dlopen_self" >&6; } + + if test yes = "$lt_cv_dlopen_self"; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self_static+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test yes = "$cross_compiling"; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +$as_echo "$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS=$save_CPPFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + + + + + + + + + + + + + + + + +striplib= +old_striplib= +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +$as_echo_n "checking whether stripping libraries is possible... " >&6; } +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP"; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + ;; + esac +fi + + + + + + + + + + + + + # Report what library types will actually be built + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[4-9]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } + + + + +fi +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +CC=$lt_save_CC + + if test -n "$CXX" && ( test no != "$CXX" && + ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || + (test g++ != "$CXX"))); then + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 +$as_echo_n "checking how to run the C++ preprocessor... " >&6; } +if test -z "$CXXCPP"; then + if ${ac_cv_prog_CXXCPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 +$as_echo "$CXXCPP" >&6; } +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +else + _lt_caught_CXX_error=yes +fi + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +archive_cmds_need_lc_CXX=no +allow_undefined_flag_CXX= +always_export_symbols_CXX=no +archive_expsym_cmds_CXX= +compiler_needs_object_CXX=no +export_dynamic_flag_spec_CXX= +hardcode_direct_CXX=no +hardcode_direct_absolute_CXX=no +hardcode_libdir_flag_spec_CXX= +hardcode_libdir_separator_CXX= +hardcode_minus_L_CXX=no +hardcode_shlibpath_var_CXX=unsupported +hardcode_automatic_CXX=no +inherit_rpath_CXX=no +module_cmds_CXX= +module_expsym_cmds_CXX= +link_all_deplibs_CXX=unknown +old_archive_cmds_CXX=$old_archive_cmds +reload_flag_CXX=$reload_flag +reload_cmds_CXX=$reload_cmds +no_undefined_flag_CXX= +whole_archive_flag_spec_CXX= +enable_shared_with_static_runtimes_CXX=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +objext_CXX=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_caught_CXX_error"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + + # save warnings/boilerplate of simple test code + ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + + ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS + compiler=$CC + compiler_CXX=$CC + func_cc_basename $compiler +cc_basename=$func_cc_basename_result + + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test yes = "$GXX"; then + lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' + else + lt_prog_compiler_no_builtin_flag_CXX= + fi + + if test yes = "$GXX"; then + # Set up default GNU C++ configuration + + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return, which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD=$ac_prog + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test yes = "$with_gnu_ld"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD=$ac_dir/$ac_prog + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test yes = "$with_gnu_ld"; then + archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='$wl' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + whole_archive_flag_spec_CXX= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + ld_shlibs_CXX=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aix[4-9]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_CXX='' + hardcode_direct_CXX=yes + hardcode_direct_absolute_CXX=yes + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + file_list_spec_CXX='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + hardcode_direct_CXX=no + hardcode_direct_absolute_CXX=no + ;; + esac + + if test yes = "$GXX"; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct_CXX=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_CXX=yes + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_libdir_separator_CXX= + fi + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag=$shared_flag' $wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + export_dynamic_flag_spec_CXX='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + always_export_symbols_CXX=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + # The "-G" linker flag allows undefined symbols. + no_undefined_flag_CXX='-bernotok' + # Determine the default libpath from the value encoded in an empty + # executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath__CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath__CXX +fi + + hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" + + archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + hardcode_libdir_flag_spec_CXX='$wl-R $libdir:/usr/lib:/lib' + allow_undefined_flag_CXX="-z nodefs" + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath__CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath__CXX +fi + + hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_CXX=' $wl-bernotok' + allow_undefined_flag_CXX=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_CXX='$convenience' + fi + archive_cmds_need_lc_CXX=yes + archive_expsym_cmds_CXX='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared + # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. + archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_CXX=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + ld_shlibs_CXX=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_CXX=' ' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=yes + file_list_spec_CXX='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' + enable_shared_with_static_runtimes_CXX=yes + # Don't use ranlib + old_postinstall_cmds_CXX='chmod 644 $oldlib' + postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_CXX='-L$libdir' + export_dynamic_flag_spec_CXX='$wl--export-all-symbols' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=no + enable_shared_with_static_runtimes_CXX=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_CXX=no + fi + ;; + esac + ;; + darwin* | rhapsody*) + + + archive_cmds_need_lc_CXX=no + hardcode_direct_CXX=no + hardcode_automatic_CXX=yes + hardcode_shlibpath_var_CXX=unsupported + if test yes = "$lt_cv_ld_force_load"; then + whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + + else + whole_archive_flag_spec_CXX='' + fi + link_all_deplibs_CXX=yes + allow_undefined_flag_CXX=$_lt_dar_allow_undefined + case $cc_basename in + ifort*|nagfor*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test yes = "$_lt_dar_can_shared"; then + output_verbose_link_cmd=func_echo_all + archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + module_expsym_cmds_CXX="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + if test yes != "$lt_cv_apple_cc_single_mod"; then + archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" + archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" + fi + + else + ld_shlibs_CXX=no + fi + + ;; + + os2*) + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_minus_L_CXX=yes + allow_undefined_flag_CXX=unsupported + shrext_cmds=.dll + archive_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds_CXX='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes_CXX=yes + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + freebsd2.*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + ld_shlibs_CXX=no + ;; + + freebsd-elf*) + archive_cmds_need_lc_CXX=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + ld_shlibs_CXX=yes + ;; + + haiku*) + archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + link_all_deplibs_CXX=yes + ;; + + hpux9*) + hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='$wl-E' + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' + hardcode_libdir_separator_CXX=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + export_dynamic_flag_spec_CXX='$wl-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + ;; + *) + hardcode_direct_CXX=yes + hardcode_direct_absolute_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + interix[3-9]*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + export_dynamic_flag_spec_CXX='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_CXX='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' + fi + fi + link_all_deplibs_CXX=yes + ;; + esac + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + hardcode_libdir_separator_CXX=: + inherit_rpath_CXX=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [1-5].* | *pgcpp\ [1-5].*) + prelink_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + old_archive_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + archive_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 6 and above use weak symbols + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + + hardcode_libdir_flag_spec_CXX='$wl--rpath $wl$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + whole_archive_flag_spec_CXX='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + ;; + cxx*) + # Compaq C++ + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; + xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + export_dynamic_flag_spec_CXX='$wl--export-dynamic' + archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' + hardcode_libdir_flag_spec_CXX='-R$libdir' + whole_archive_flag_spec_CXX='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object_CXX=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + ld_shlibs_CXX=yes + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + hardcode_direct_absolute_CXX=yes + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' + export_dynamic_flag_spec_CXX='$wl-E' + whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + fi + output_verbose_link_cmd=func_echo_all + else + ld_shlibs_CXX=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + case $host in + osf3*) + allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' + archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + ;; + *) + allow_undefined_flag_CXX=' -expect_unresolved \*' + archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ + $RM $lib.exp' + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + ;; + esac + + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes,no = "$GXX,$with_gnu_ld"; then + allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' + case $host in + osf3*) + archive_cmds_CXX='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + *) + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + esac + + hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + archive_cmds_need_lc_CXX=yes + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_shlibpath_var_CXX=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' + ;; + esac + link_all_deplibs_CXX=yes + + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test yes,no = "$GXX,$with_gnu_ld"; then + no_undefined_flag_CXX=' $wl-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' + else + # g++ 2.7 appears to require '-G' NOT '-shared' on this + # platform. + archive_cmds_CXX='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' + fi + + hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir' + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + whole_archive_flag_spec_CXX='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag_CXX='$wl-z,text' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag_CXX='$wl-z,text' + allow_undefined_flag_CXX='$wl-z,nodefs' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='$wl-R,$libdir' + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + export_dynamic_flag_spec_CXX='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ + '"$old_archive_cmds_CXX" + reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ + '"$reload_cmds_CXX" + ;; + *) + archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } + test no = "$ld_shlibs_CXX" && can_build_shared=no + + GCC_CXX=$GXX + LD_CXX=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + # Dependencies to place before and after the object being linked: +predep_objects_CXX= +postdep_objects_CXX= +predeps_CXX= +postdeps_CXX= +compiler_lib_search_path_CXX= + +cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF + + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; +esac + +if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case $prev$p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test x-L = "$p" || + test x-R = "$p"; then + prev=$p + continue + fi + + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac + if test no = "$pre_test_object_deps_done"; then + case $prev in + -L | -R) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$compiler_lib_search_path_CXX"; then + compiler_lib_search_path_CXX=$prev$p + else + compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} $prev$p" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$postdeps_CXX"; then + postdeps_CXX=$prev$p + else + postdeps_CXX="${postdeps_CXX} $prev$p" + fi + fi + prev= + ;; + + *.lto.$objext) ;; # Ignore GCC LTO objects + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test no = "$pre_test_object_deps_done"; then + if test -z "$predep_objects_CXX"; then + predep_objects_CXX=$p + else + predep_objects_CXX="$predep_objects_CXX $p" + fi + else + if test -z "$postdep_objects_CXX"; then + postdep_objects_CXX=$p + else + postdep_objects_CXX="$postdep_objects_CXX $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling CXX test program" +fi + +$RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS + +# PORTME: override above test on systems where it is broken +case $host_os in +interix[3-9]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + predep_objects_CXX= + postdep_objects_CXX= + postdeps_CXX= + ;; +esac + + +case " $postdeps_CXX " in +*" -lc "*) archive_cmds_need_lc_CXX=no ;; +esac + compiler_lib_search_dirs_CXX= +if test -n "${compiler_lib_search_path_CXX}"; then + compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | $SED -e 's! -L! !g' -e 's!^ !!'` +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + lt_prog_compiler_wl_CXX= +lt_prog_compiler_pic_CXX= +lt_prog_compiler_static_CXX= + + + # C++ specific cases for pic, static, wl, etc. + if test yes = "$GXX"; then + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + fi + lt_prog_compiler_pic_CXX='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic_CXX='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static_CXX='$wl-static' + ;; + esac + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_CXX='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + lt_prog_compiler_pic_CXX= + ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static_CXX= + ;; + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_CXX=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic_CXX='-fPIC -shared' + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + else + case $host_os in + aix[4-9]*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + else + lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; + dgux*) + case $cc_basename in + ec++*) + lt_prog_compiler_pic_CXX='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='$wl-a ${wl}archive' + if test ia64 != "$host_cpu"; then + lt_prog_compiler_pic_CXX='+Z' + fi + ;; + aCC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='$wl-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_CXX='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # KAI C++ Compiler + lt_prog_compiler_wl_CXX='--backend -Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64, which still supported -KPIC. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + lt_prog_compiler_static_CXX='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fpic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-qpic' + lt_prog_compiler_static_CXX='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + lt_prog_compiler_pic_CXX='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic_CXX='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + lt_prog_compiler_wl_CXX='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + lt_prog_compiler_pic_CXX='-pic' + ;; + cxx*) + # Digital/Compaq C++ + lt_prog_compiler_wl_CXX='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + lt_prog_compiler_pic_CXX='-pic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + lcc*) + # Lucid + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + lt_prog_compiler_pic_CXX='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + lt_prog_compiler_can_build_shared_CXX=no + ;; + esac + fi + +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_CXX= + ;; + *) + lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } +lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } +if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works_CXX=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works_CXX=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } + +if test yes = "$lt_cv_prog_compiler_pic_works_CXX"; then + case $lt_prog_compiler_pic_CXX in + "" | " "*) ;; + *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; + esac +else + lt_prog_compiler_pic_CXX= + lt_prog_compiler_can_build_shared_CXX=no +fi + +fi + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works_CXX=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works_CXX=yes + fi + else + lt_cv_prog_compiler_static_works_CXX=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } + +if test yes = "$lt_cv_prog_compiler_static_works_CXX"; then + : +else + lt_prog_compiler_static_CXX= +fi + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } + + + + +hard_links=nottested +if test no = "$lt_cv_prog_compiler_c_o_CXX" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test no = "$hard_links"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + case $host_os in + aix[4-9]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_CXX='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + export_symbols_cmds_CXX=$ltdll_cmds + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in + cl*) + exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + ;; + esac + ;; + linux* | k*bsd*-gnu | gnu*) + link_all_deplibs_CXX=no + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } +test no = "$ld_shlibs_CXX" && can_build_shared=no + +with_gnu_ld_CXX=$with_gnu_ld + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_CXX" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_CXX=yes + + if test yes,yes = "$GCC,$enable_shared"; then + case $archive_cmds_CXX in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_CXX + pic_flag=$lt_prog_compiler_pic_CXX + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_CXX + allow_undefined_flag_CXX= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc_CXX=no + else + lt_cv_archive_cmds_need_lc_CXX=yes + fi + allow_undefined_flag_CXX=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } + archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=.so +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + + + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='$libname$release$shared_ext$major' + ;; + +aix[4-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test ia64 = "$host_cpu"; then + # AIX 5 supports IA64 + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a(lib.so.V)' + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='$libname$shared_ext' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec=$LIB + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[23].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 + fi + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test yes = "$lt_cv_prog_gnu_ld"; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + hardcode_libdir_flag_spec_CXX='-L$libdir' + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd* | bitrig*) + version_type=sunos + sys_lib_dlsearch_path_spec=/usr/lib + need_lib_prefix=no + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no + else + need_version=yes + fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +os2*) + libname_spec='$name' + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test yes = "$with_gnu_ld"; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec; then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=sco + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test yes = "$with_gnu_ld"; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test no = "$dynamic_linker" && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test yes = "$GCC"; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +fi + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +fi + +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action_CXX= +if test -n "$hardcode_libdir_flag_spec_CXX" || + test -n "$runpath_var_CXX" || + test yes = "$hardcode_automatic_CXX"; then + + # We can hardcode non-existent directories. + if test no != "$hardcode_direct_CXX" && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" && + test no != "$hardcode_minus_L_CXX"; then + # Linking always hardcodes the temporary library directory. + hardcode_action_CXX=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_CXX=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_CXX=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 +$as_echo "$hardcode_action_CXX" >&6; } + +if test relink = "$hardcode_action_CXX" || + test yes = "$inherit_rpath_CXX"; then + # Fast installation is not supported + enable_fast_install=no +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + + fi # test -n "$compiler" + + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test yes != "$_lt_caught_CXX_error" + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + + + + + + + + + + + + + + ac_config_commands="$ac_config_commands libtool" + + + + +# Only expand once: + + + +# TODO(chandlerc@google.com): Currently we aren't running the Python tests +# against the interpreter detected by AM_PATH_PYTHON, and so we condition +# HAVE_PYTHON by requiring "python" to be in the PATH, and that interpreter's +# version to be >= 2.3. This will allow the scripts to use a "/usr/bin/env" +# hashbang. +PYTHON= # We *do not* allow the user to specify a python interpreter +# Extract the first word of "python", so it can be a program name with args. +set dummy python; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PYTHON+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PYTHON in + [\\/]* | ?:[\\/]*) + ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_PYTHON" && ac_cv_path_PYTHON=":" + ;; +esac +fi +PYTHON=$ac_cv_path_PYTHON +if test -n "$PYTHON"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5 +$as_echo "$PYTHON" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +if test "$PYTHON" != ":"; then : + prog="import sys +# split strings by '.' and convert to numeric. Append some zeros +# because we need at least 4 digits for the hex conversion. +# map returns an iterator in Python 3.0 and a list in 2.x +minver = list(map(int, '2.3'.split('.'))) + [0, 0, 0] +minverhex = 0 +# xrange is not present in Python 3.0 and range returns an iterator +for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i] +sys.exit(sys.hexversion < minverhex)" + if { echo "$as_me:$LINENO: $PYTHON -c "$prog"" >&5 + ($PYTHON -c "$prog") >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then : + : +else + PYTHON=":" +fi +fi + if test "$PYTHON" != ":"; then + HAVE_PYTHON_TRUE= + HAVE_PYTHON_FALSE='#' +else + HAVE_PYTHON_TRUE='#' + HAVE_PYTHON_FALSE= +fi + + +# Configure pthreads. + +# Check whether --with-pthreads was given. +if test "${with_pthreads+set}" = set; then : + withval=$with_pthreads; with_pthreads=$withval +else + with_pthreads=check +fi + + +have_pthreads=no +if test "x$with_pthreads" != "xno"; then : + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +acx_pthread_ok=no + +# We used to check for pthread.h first, but this fails if pthread.h +# requires special compiler flags (e.g. on True64 or Sequent). +# It gets checked for in the link test anyway. + +# First of all, check if the user has set any of the PTHREAD_LIBS, +# etcetera environment variables, and if threads linking works using +# them: +if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + save_LIBS="$LIBS" + LIBS="$PTHREAD_LIBS $LIBS" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5 +$as_echo_n "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char pthread_join (); +int +main () +{ +return pthread_join (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + acx_pthread_ok=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_ok" >&5 +$as_echo "$acx_pthread_ok" >&6; } + if test x"$acx_pthread_ok" = xno; then + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" + fi + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" +fi + +# We must check for the threads library under a number of different +# names; the ordering is very important because some systems +# (e.g. DEC) have both -lpthread and -lpthreads, where one of the +# libraries is broken (non-POSIX). + +# Create a list of thread flags to try. Items starting with a "-" are +# C compiler flags, and other items are library names, except for "none" +# which indicates that we try without any flags at all, and "pthread-config" +# which is a program returning the flags for the Pth emulation library. + +acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" + +# The ordering *is* (sometimes) important. Some notes on the +# individual items follow: + +# pthreads: AIX (must check this before -lpthread) +# none: in case threads are in libc; should be tried before -Kthread and +# other compiler flags to prevent continual compiler warnings +# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) +# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) +# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) +# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) +# -pthreads: Solaris/gcc +# -mthreads: Mingw32/gcc, Lynx/gcc +# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it +# doesn't hurt to check since this sometimes defines pthreads too; +# also defines -D_REENTRANT) +# ... -mt is also the pthreads flag for HP/aCC +# pthread: Linux, etcetera +# --thread-safe: KAI C++ +# pthread-config: use pthread-config program (for GNU Pth library) + +case "${host_cpu}-${host_os}" in + *solaris*) + + # On Solaris (at least, for some versions), libc contains stubbed + # (non-functional) versions of the pthreads routines, so link-based + # tests will erroneously succeed. (We need to link with -pthreads/-mt/ + # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather + # a function called by this macro, so we could check for that, but + # who knows whether they'll stub that too in a future libc.) So, + # we'll just look for -pthreads and -lpthread first: + + acx_pthread_flags="-pthreads pthread -mt -pthread $acx_pthread_flags" + ;; +esac + +if test x"$acx_pthread_ok" = xno; then +for flag in $acx_pthread_flags; do + + case $flag in + none) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5 +$as_echo_n "checking whether pthreads work without any flags... " >&6; } + ;; + + -*) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $flag" >&5 +$as_echo_n "checking whether pthreads work with $flag... " >&6; } + PTHREAD_CFLAGS="$flag" + ;; + + pthread-config) + # Extract the first word of "pthread-config", so it can be a program name with args. +set dummy pthread-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_acx_pthread_config+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$acx_pthread_config"; then + ac_cv_prog_acx_pthread_config="$acx_pthread_config" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_acx_pthread_config="yes" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_prog_acx_pthread_config" && ac_cv_prog_acx_pthread_config="no" +fi +fi +acx_pthread_config=$ac_cv_prog_acx_pthread_config +if test -n "$acx_pthread_config"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_config" >&5 +$as_echo "$acx_pthread_config" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test x"$acx_pthread_config" = xno; then continue; fi + PTHREAD_CFLAGS="`pthread-config --cflags`" + PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" + ;; + + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$flag" >&5 +$as_echo_n "checking for the pthreads library -l$flag... " >&6; } + PTHREAD_LIBS="-l$flag" + ;; + esac + + save_LIBS="$LIBS" + save_CFLAGS="$CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + + # Check for various functions. We must include pthread.h, + # since some functions may be macros. (On the Sequent, we + # need a special flag -Kthread to make this header compile.) + # We check for pthread_join because it is in -lpthread on IRIX + # while pthread_create is in libc. We check for pthread_attr_init + # due to DEC craziness with -lpthreads. We check for + # pthread_cleanup_push because it is one of the few pthread + # functions on Solaris that doesn't have a non-functional libc stub. + # We try pthread_create on general principles. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +pthread_t th; pthread_join(th, 0); + pthread_attr_init(0); pthread_cleanup_push(0, 0); + pthread_create(0,0,0,0); pthread_cleanup_pop(0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + acx_pthread_ok=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_ok" >&5 +$as_echo "$acx_pthread_ok" >&6; } + if test "x$acx_pthread_ok" = xyes; then + break; + fi + + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" +done +fi + +# Various other checks: +if test "x$acx_pthread_ok" = xyes; then + save_LIBS="$LIBS" + LIBS="$PTHREAD_LIBS $LIBS" + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + + # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5 +$as_echo_n "checking for joinable pthread attribute... " >&6; } + attr_name=unknown + for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +int attr=$attr; return attr; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + attr_name=$attr; break +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + done + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $attr_name" >&5 +$as_echo "$attr_name" >&6; } + if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then + +cat >>confdefs.h <<_ACEOF +#define PTHREAD_CREATE_JOINABLE $attr_name +_ACEOF + + fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if more special flags are required for pthreads" >&5 +$as_echo_n "checking if more special flags are required for pthreads... " >&6; } + flag=no + case "${host_cpu}-${host_os}" in + *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";; + *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${flag}" >&5 +$as_echo "${flag}" >&6; } + if test "x$flag" != xno; then + PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" + fi + + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + # More AIX lossage: must compile with xlc_r or cc_r + if test x"$GCC" != xyes; then + for ac_prog in xlc_r cc_r +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_PTHREAD_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$PTHREAD_CC"; then + ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_PTHREAD_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +PTHREAD_CC=$ac_cv_prog_PTHREAD_CC +if test -n "$PTHREAD_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5 +$as_echo "$PTHREAD_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$PTHREAD_CC" && break +done +test -n "$PTHREAD_CC" || PTHREAD_CC="${CC}" + + else + PTHREAD_CC=$CC + fi + + # The next part tries to detect GCC inconsistency with -shared on some + # architectures and systems. The problem is that in certain + # configurations, when -shared is specified, GCC "forgets" to + # internally use various flags which are still necessary. + + # + # Prepare the flags + # + save_CFLAGS="$CFLAGS" + save_LIBS="$LIBS" + save_CC="$CC" + + # Try with the flags determined by the earlier checks. + # + # -Wl,-z,defs forces link-time symbol resolution, so that the + # linking checks with -shared actually have any value + # + # FIXME: -fPIC is required for -shared on many architectures, + # so we specify it here, but the right way would probably be to + # properly detect whether it is actually required. + CFLAGS="-shared -fPIC -Wl,-z,defs $CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + CC="$PTHREAD_CC" + + # In order not to create several levels of indentation, we test + # the value of "$done" until we find the cure or run out of ideas. + done="no" + + # First, make sure the CFLAGS we added are actually accepted by our + # compiler. If not (and OS X's ld, for instance, does not accept -z), + # then we can't do this test. + if test x"$done" = xno; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to check for GCC pthread/shared inconsistencies" >&5 +$as_echo_n "checking whether to check for GCC pthread/shared inconsistencies... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + +else + done=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + if test "x$done" = xyes ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + fi + fi + + if test x"$done" = xno; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -pthread is sufficient with -shared" >&5 +$as_echo_n "checking whether -pthread is sufficient with -shared... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +pthread_t th; pthread_join(th, 0); + pthread_attr_init(0); pthread_cleanup_push(0, 0); + pthread_create(0,0,0,0); pthread_cleanup_pop(0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + done=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + if test "x$done" = xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + fi + + # + # Linux gcc on some architectures such as mips/mipsel forgets + # about -lpthread + # + if test x"$done" = xno; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lpthread fixes that" >&5 +$as_echo_n "checking whether -lpthread fixes that... " >&6; } + LIBS="-lpthread $PTHREAD_LIBS $save_LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +pthread_t th; pthread_join(th, 0); + pthread_attr_init(0); pthread_cleanup_push(0, 0); + pthread_create(0,0,0,0); pthread_cleanup_pop(0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + done=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + if test "x$done" = xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + PTHREAD_LIBS="-lpthread $PTHREAD_LIBS" + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + fi + # + # FreeBSD 4.10 gcc forgets to use -lc_r instead of -lc + # + if test x"$done" = xno; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc_r fixes that" >&5 +$as_echo_n "checking whether -lc_r fixes that... " >&6; } + LIBS="-lc_r $PTHREAD_LIBS $save_LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +pthread_t th; pthread_join(th, 0); + pthread_attr_init(0); pthread_cleanup_push(0, 0); + pthread_create(0,0,0,0); pthread_cleanup_pop(0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + done=yes +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + if test "x$done" = xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + PTHREAD_LIBS="-lc_r $PTHREAD_LIBS" + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + fi + if test x"$done" = xno; then + # OK, we have run out of ideas + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Impossible to determine how to use pthreads with shared libraries" >&5 +$as_echo "$as_me: WARNING: Impossible to determine how to use pthreads with shared libraries" >&2;} + + # so it's not safe to assume that we may use pthreads + acx_pthread_ok=no + fi + + CFLAGS="$save_CFLAGS" + LIBS="$save_LIBS" + CC="$save_CC" +else + PTHREAD_CC="$CC" +fi + + + + + +# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: +if test x"$acx_pthread_ok" = xyes; then + +$as_echo "#define HAVE_PTHREAD 1" >>confdefs.h + + : +else + acx_pthread_ok=no + if test "x$with_pthreads" != "xcheck"; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "--with-pthreads was specified, but unable to be used +See \`config.log' for more details" "$LINENO" 5; } +fi +fi +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + have_pthreads="$acx_pthread_ok" +fi + if test "x$have_pthreads" == "xyes"; then + HAVE_PTHREADS_TRUE= + HAVE_PTHREADS_FALSE='#' +else + HAVE_PTHREADS_TRUE='#' + HAVE_PTHREADS_FALSE= +fi + + + + +# TODO(chandlerc@google.com) Check for the necessary system headers. + +# TODO(chandlerc@google.com) Check the types, structures, and other compiler +# and architecture characteristics. + +# Output the generated files. No further autoconf macros may be used. +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +$as_echo_n "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 +$as_echo "done" >&6; } + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_PYTHON_TRUE}" && test -z "${HAVE_PYTHON_FALSE}"; then + as_fn_error $? "conditional \"HAVE_PYTHON\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${HAVE_PTHREADS_TRUE}" && test -z "${HAVE_PTHREADS_FALSE}"; then + as_fn_error $? "conditional \"HAVE_PTHREADS\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by Google C++ Testing Framework $as_me 1.6.0, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +Google C++ Testing Framework config.status 1.6.0 +configured by $0, generated by GNU Autoconf 2.69, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" + + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' +macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' +enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' +enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' +pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' +enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' +shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' +SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' +ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' +PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' +host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' +host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' +host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' +build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' +build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' +build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' +SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' +Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' +GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' +EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' +FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' +LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' +NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' +LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' +max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' +ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' +exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' +lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' +lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' +lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' +lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' +lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' +reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' +reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' +deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' +file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' +file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' +want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' +DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' +sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' +AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' +AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' +archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' +STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' +RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' +old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' +old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' +lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' +CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' +CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' +compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' +GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' +lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' +nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' +lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' +lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' +objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' +MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' +need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' +MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' +DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' +NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' +LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' +OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' +OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' +libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' +shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' +extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' +compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' +module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' +with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' +no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' +hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' +hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' +inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' +link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' +always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' +exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' +include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' +prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' +postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' +file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' +variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' +need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' +need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' +version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' +runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' +libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' +library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' +soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' +install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' +postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' +postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' +finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' +hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' +sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' +configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' +configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' +hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' +enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' +old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' +striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' +predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' +postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' +predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' +postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' +LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' +reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' +reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' +compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' +GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' +archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' +module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' +with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' +no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' +inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' +link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' +always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' +exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' +include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' +prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' +postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' +file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' +predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' +postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' +predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' +postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' + +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in SHELL \ +ECHO \ +PATH_SEPARATOR \ +SED \ +GREP \ +EGREP \ +FGREP \ +LD \ +NM \ +LN_S \ +lt_SP2NL \ +lt_NL2SP \ +reload_flag \ +OBJDUMP \ +deplibs_check_method \ +file_magic_cmd \ +file_magic_glob \ +want_nocaseglob \ +DLLTOOL \ +sharedlib_from_linklib_cmd \ +AR \ +AR_FLAGS \ +archiver_list_spec \ +STRIP \ +RANLIB \ +CC \ +CFLAGS \ +compiler \ +lt_cv_sys_global_symbol_pipe \ +lt_cv_sys_global_symbol_to_cdecl \ +lt_cv_sys_global_symbol_to_import \ +lt_cv_sys_global_symbol_to_c_name_address \ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ +lt_cv_nm_interface \ +nm_file_list_spec \ +lt_cv_truncate_bin \ +lt_prog_compiler_no_builtin_flag \ +lt_prog_compiler_pic \ +lt_prog_compiler_wl \ +lt_prog_compiler_static \ +lt_cv_prog_compiler_c_o \ +need_locks \ +MANIFEST_TOOL \ +DSYMUTIL \ +NMEDIT \ +LIPO \ +OTOOL \ +OTOOL64 \ +shrext_cmds \ +export_dynamic_flag_spec \ +whole_archive_flag_spec \ +compiler_needs_object \ +with_gnu_ld \ +allow_undefined_flag \ +no_undefined_flag \ +hardcode_libdir_flag_spec \ +hardcode_libdir_separator \ +exclude_expsyms \ +include_expsyms \ +file_list_spec \ +variables_saved_for_relink \ +libname_spec \ +library_names_spec \ +soname_spec \ +install_override_mode \ +finish_eval \ +old_striplib \ +striplib \ +compiler_lib_search_dirs \ +predep_objects \ +postdep_objects \ +predeps \ +postdeps \ +compiler_lib_search_path \ +LD_CXX \ +reload_flag_CXX \ +compiler_CXX \ +lt_prog_compiler_no_builtin_flag_CXX \ +lt_prog_compiler_pic_CXX \ +lt_prog_compiler_wl_CXX \ +lt_prog_compiler_static_CXX \ +lt_cv_prog_compiler_c_o_CXX \ +export_dynamic_flag_spec_CXX \ +whole_archive_flag_spec_CXX \ +compiler_needs_object_CXX \ +with_gnu_ld_CXX \ +allow_undefined_flag_CXX \ +no_undefined_flag_CXX \ +hardcode_libdir_flag_spec_CXX \ +hardcode_libdir_separator_CXX \ +exclude_expsyms_CXX \ +include_expsyms_CXX \ +file_list_spec_CXX \ +compiler_lib_search_dirs_CXX \ +predep_objects_CXX \ +postdep_objects_CXX \ +predeps_CXX \ +postdeps_CXX \ +compiler_lib_search_path_CXX; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds \ +old_postinstall_cmds \ +old_postuninstall_cmds \ +old_archive_cmds \ +extract_expsyms_cmds \ +old_archive_from_new_cmds \ +old_archive_from_expsyms_cmds \ +archive_cmds \ +archive_expsym_cmds \ +module_cmds \ +module_expsym_cmds \ +export_symbols_cmds \ +prelink_cmds \ +postlink_cmds \ +postinstall_cmds \ +postuninstall_cmds \ +finish_cmds \ +sys_lib_search_path_spec \ +configure_time_dlsearch_path \ +configure_time_lt_sys_library_path \ +reload_cmds_CXX \ +old_archive_cmds_CXX \ +old_archive_from_new_cmds_CXX \ +old_archive_from_expsyms_cmds_CXX \ +archive_cmds_CXX \ +archive_expsym_cmds_CXX \ +module_cmds_CXX \ +module_expsym_cmds_CXX \ +export_symbols_cmds_CXX \ +prelink_cmds_CXX \ +postlink_cmds_CXX; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +ac_aux_dir='$ac_aux_dir' + +# See if we are running on zsh, and set the options that allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='$PACKAGE' + VERSION='$VERSION' + RM='$RM' + ofile='$ofile' + + + + + + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "build-aux/config.h") CONFIG_HEADERS="$CONFIG_HEADERS build-aux/config.h" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "scripts/gtest-config") CONFIG_FILES="$CONFIG_FILES scripts/gtest-config" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "scripts/gtest-config":F) chmod +x scripts/gtest-config ;; + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + case $CONFIG_FILES in #( + *\'*) : + eval set x "$CONFIG_FILES" ;; #( + *) : + set x $CONFIG_FILES ;; #( + *) : + ;; +esac + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`$as_dirname -- "$am_mf" || +$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$am_mf" : 'X\(//\)[^/]' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$am_mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + am_filepart=`$as_basename -- "$am_mf" || +$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$am_mf" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { echo "$as_me:$LINENO: cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles" >&5 + (cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } || am_rc=$? + done + if test $am_rc -ne 0; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. Try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking). +See \`config.log' for more details" "$LINENO" 5; } + fi + { am_dirpart=; unset am_dirpart;} + { am_filepart=; unset am_filepart;} + { am_mf=; unset am_mf;} + { am_rc=; unset am_rc;} + rm -f conftest-deps.mk +} + ;; + "libtool":C) + + # See if we are running on zsh, and set the options that allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST + fi + + cfgfile=${ofile}T + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL +# Generated automatically by $as_me ($PACKAGE) $VERSION +# NOTE: Changes made to this file will be lost: look at ltmain.sh. + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + +# Copyright (C) 2014 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +# The names of the tagged configurations supported by this script. +available_tags='CXX ' + +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + +# ### BEGIN LIBTOOL CONFIG + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# Shared archive member basename,for filename based shared library versioning on AIX. +shared_archive_member_spec=$shared_archive_member_spec + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that protects backslashes. +ECHO=$lt_ECHO + +# The PATH separator for the build system. +PATH_SEPARATOR=$lt_PATH_SEPARATOR + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# convert \$build file names to \$host format. +to_host_file_cmd=$lt_cv_to_host_file_cmd + +# convert \$build files to toolchain format. +to_tool_file_cmd=$lt_cv_to_tool_file_cmd + +# An object symbol dumper. +OBJDUMP=$lt_OBJDUMP + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method = "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# How to find potential files when deplibs_check_method = "file_magic". +file_magic_glob=$lt_file_magic_glob + +# Find potential files using nocaseglob when deplibs_check_method = "file_magic". +want_nocaseglob=$lt_want_nocaseglob + +# DLL creation program. +DLLTOOL=$lt_DLLTOOL + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd + +# The archiver. +AR=$lt_AR + +# Flags to create an archive. +AR_FLAGS=$lt_AR_FLAGS + +# How to feed a file listing to the archiver. +archiver_list_spec=$lt_archiver_list_spec + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=$lock_old_archive_extraction + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm into a list of symbols to manually relocate. +global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# The name lister interface. +nm_interface=$lt_lt_cv_nm_interface + +# Specify filename containing input files for \$NM. +nm_file_list_spec=$lt_nm_file_list_spec + +# The root where to search for dependent libraries,and where our libraries should be installed. +lt_sysroot=$lt_sysroot + +# Command to truncate a binary pipe. +lt_truncate_bin=$lt_lt_cv_truncate_bin + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Manifest tool. +MANIFEST_TOOL=$lt_MANIFEST_TOOL + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Permission mode override for installation of shared libraries. +install_override_mode=$lt_install_override_mode + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Detected run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path + +# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. +configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \$shlibpath_var if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects +postdep_objects=$lt_postdep_objects +predeps=$lt_predeps +postdeps=$lt_postdeps + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path + +# ### END LIBTOOL CONFIG + +_LT_EOF + + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + +ltmain=$ac_aux_dir/ltmain.sh + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + + cat <<_LT_EOF >> "$ofile" + +# ### BEGIN LIBTOOL TAG CONFIG: CXX + +# The linker used to build libraries. +LD=$lt_LD_CXX + +# How to create reloadable object files. +reload_flag=$lt_reload_flag_CXX +reload_cmds=$lt_reload_cmds_CXX + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds_CXX + +# A language specific compiler. +CC=$lt_compiler_CXX + +# Is the compiler the GNU compiler? +with_gcc=$GCC_CXX + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_CXX + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_CXX + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_CXX + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_CXX + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object_CXX + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds_CXX +archive_expsym_cmds=$lt_archive_expsym_cmds_CXX + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds_CXX +module_expsym_cmds=$lt_module_expsym_cmds_CXX + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld_CXX + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_CXX + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_CXX + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct_CXX + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \$shlibpath_var if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute_CXX + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L_CXX + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic_CXX + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath_CXX + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_CXX + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols_CXX + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_CXX + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_CXX + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_CXX + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds_CXX + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds_CXX + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec_CXX + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_CXX + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects_CXX +postdep_objects=$lt_postdep_objects_CXX +predeps=$lt_predeps_CXX +postdeps=$lt_postdeps_CXX + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_CXX + +# ### END LIBTOOL TAG CONFIG: CXX +_LT_EOF + + ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + diff --git a/thirdparty/protobuf-2.6.1/gtest/configure.ac b/thirdparty/protobuf-2.6.1/gtest/configure.ac new file mode 100644 index 00000000..37b298e1 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/configure.ac @@ -0,0 +1,68 @@ +m4_include(m4/acx_pthread.m4) + +# At this point, the Xcode project assumes the version string will be three +# integers separated by periods and surrounded by square brackets (e.g. +# "[1.0.1]"). It also asumes that there won't be any closing parenthesis +# between "AC_INIT(" and the closing ")" including comments and strings. +AC_INIT([Google C++ Testing Framework], + [1.6.0], + [googletestframework@googlegroups.com], + [gtest]) + +# Provide various options to initialize the Autoconf and configure processes. +AC_PREREQ([2.59]) +AC_CONFIG_SRCDIR([./LICENSE]) +AC_CONFIG_MACRO_DIR([m4]) +AC_CONFIG_AUX_DIR([build-aux]) +AC_CONFIG_HEADERS([build-aux/config.h]) +AC_CONFIG_FILES([Makefile]) +AC_CONFIG_FILES([scripts/gtest-config], [chmod +x scripts/gtest-config]) + +# Initialize Automake with various options. We require at least v1.9, prevent +# pedantic complaints about package files, and enable various distribution +# targets. +AM_INIT_AUTOMAKE([1.9 dist-bzip2 dist-zip foreign subdir-objects]) + +# Check for programs used in building Google Test. +AC_PROG_CC +AC_PROG_CXX +AC_LANG([C++]) +AC_PROG_LIBTOOL + +# TODO(chandlerc@google.com): Currently we aren't running the Python tests +# against the interpreter detected by AM_PATH_PYTHON, and so we condition +# HAVE_PYTHON by requiring "python" to be in the PATH, and that interpreter's +# version to be >= 2.3. This will allow the scripts to use a "/usr/bin/env" +# hashbang. +PYTHON= # We *do not* allow the user to specify a python interpreter +AC_PATH_PROG([PYTHON],[python],[:]) +AS_IF([test "$PYTHON" != ":"], + [AM_PYTHON_CHECK_VERSION([$PYTHON],[2.3],[:],[PYTHON=":"])]) +AM_CONDITIONAL([HAVE_PYTHON],[test "$PYTHON" != ":"]) + +# Configure pthreads. +AC_ARG_WITH([pthreads], + [AS_HELP_STRING([--with-pthreads], + [use pthreads (default is yes)])], + [with_pthreads=$withval], + [with_pthreads=check]) + +have_pthreads=no +AS_IF([test "x$with_pthreads" != "xno"], + [ACX_PTHREAD( + [], + [AS_IF([test "x$with_pthreads" != "xcheck"], + [AC_MSG_FAILURE( + [--with-pthreads was specified, but unable to be used])])]) + have_pthreads="$acx_pthread_ok"]) +AM_CONDITIONAL([HAVE_PTHREADS],[test "x$have_pthreads" == "xyes"]) +AC_SUBST(PTHREAD_CFLAGS) +AC_SUBST(PTHREAD_LIBS) + +# TODO(chandlerc@google.com) Check for the necessary system headers. + +# TODO(chandlerc@google.com) Check the types, structures, and other compiler +# and architecture characteristics. + +# Output the generated files. No further autoconf macros may be used. +AC_OUTPUT diff --git a/thirdparty/protobuf-2.6.1/gtest/fused-src/gtest/.deps/test_fused_gtest_test-gtest-all.Po b/thirdparty/protobuf-2.6.1/gtest/fused-src/gtest/.deps/test_fused_gtest_test-gtest-all.Po new file mode 100644 index 00000000..9ce06a81 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/fused-src/gtest/.deps/test_fused_gtest_test-gtest-all.Po @@ -0,0 +1 @@ +# dummy diff --git a/thirdparty/protobuf-2.6.1/gtest/fused-src/gtest/.deps/test_fused_gtest_test-gtest_main.Po b/thirdparty/protobuf-2.6.1/gtest/fused-src/gtest/.deps/test_fused_gtest_test-gtest_main.Po new file mode 100644 index 00000000..9ce06a81 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/fused-src/gtest/.deps/test_fused_gtest_test-gtest_main.Po @@ -0,0 +1 @@ +# dummy diff --git a/thirdparty/protobuf-2.6.1/gtest/fused-src/gtest/gtest-all.cc b/thirdparty/protobuf-2.6.1/gtest/fused-src/gtest/gtest-all.cc new file mode 100644 index 00000000..7688ca42 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/fused-src/gtest/gtest-all.cc @@ -0,0 +1,9251 @@ +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: mheule@google.com (Markus Heule) +// +// Google C++ Testing Framework (Google Test) +// +// Sometimes it's desirable to build Google Test by compiling a single file. +// This file serves this purpose. + +// This line ensures that gtest.h can be compiled on its own, even +// when it's fused. +#include "gtest/gtest.h" + +// The following lines pull in the real gtest *.cc files. +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) +// +// The Google C++ Testing Framework (Google Test) + +// Copyright 2007, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) +// +// Utilities for testing Google Test itself and code that uses Google Test +// (e.g. frameworks built on top of Google Test). + +#ifndef GTEST_INCLUDE_GTEST_GTEST_SPI_H_ +#define GTEST_INCLUDE_GTEST_GTEST_SPI_H_ + + +namespace testing { + +// This helper class can be used to mock out Google Test failure reporting +// so that we can test Google Test or code that builds on Google Test. +// +// An object of this class appends a TestPartResult object to the +// TestPartResultArray object given in the constructor whenever a Google Test +// failure is reported. It can either intercept only failures that are +// generated in the same thread that created this object or it can intercept +// all generated failures. The scope of this mock object can be controlled with +// the second argument to the two arguments constructor. +class GTEST_API_ ScopedFakeTestPartResultReporter + : public TestPartResultReporterInterface { + public: + // The two possible mocking modes of this object. + enum InterceptMode { + INTERCEPT_ONLY_CURRENT_THREAD, // Intercepts only thread local failures. + INTERCEPT_ALL_THREADS // Intercepts all failures. + }; + + // The c'tor sets this object as the test part result reporter used + // by Google Test. The 'result' parameter specifies where to report the + // results. This reporter will only catch failures generated in the current + // thread. DEPRECATED + explicit ScopedFakeTestPartResultReporter(TestPartResultArray* result); + + // Same as above, but you can choose the interception scope of this object. + ScopedFakeTestPartResultReporter(InterceptMode intercept_mode, + TestPartResultArray* result); + + // The d'tor restores the previous test part result reporter. + virtual ~ScopedFakeTestPartResultReporter(); + + // Appends the TestPartResult object to the TestPartResultArray + // received in the constructor. + // + // This method is from the TestPartResultReporterInterface + // interface. + virtual void ReportTestPartResult(const TestPartResult& result); + private: + void Init(); + + const InterceptMode intercept_mode_; + TestPartResultReporterInterface* old_reporter_; + TestPartResultArray* const result_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(ScopedFakeTestPartResultReporter); +}; + +namespace internal { + +// A helper class for implementing EXPECT_FATAL_FAILURE() and +// EXPECT_NONFATAL_FAILURE(). Its destructor verifies that the given +// TestPartResultArray contains exactly one failure that has the given +// type and contains the given substring. If that's not the case, a +// non-fatal failure will be generated. +class GTEST_API_ SingleFailureChecker { + public: + // The constructor remembers the arguments. + SingleFailureChecker(const TestPartResultArray* results, + TestPartResult::Type type, + const string& substr); + ~SingleFailureChecker(); + private: + const TestPartResultArray* const results_; + const TestPartResult::Type type_; + const string substr_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(SingleFailureChecker); +}; + +} // namespace internal + +} // namespace testing + +// A set of macros for testing Google Test assertions or code that's expected +// to generate Google Test fatal failures. It verifies that the given +// statement will cause exactly one fatal Google Test failure with 'substr' +// being part of the failure message. +// +// There are two different versions of this macro. EXPECT_FATAL_FAILURE only +// affects and considers failures generated in the current thread and +// EXPECT_FATAL_FAILURE_ON_ALL_THREADS does the same but for all threads. +// +// The verification of the assertion is done correctly even when the statement +// throws an exception or aborts the current function. +// +// Known restrictions: +// - 'statement' cannot reference local non-static variables or +// non-static members of the current object. +// - 'statement' cannot return a value. +// - You cannot stream a failure message to this macro. +// +// Note that even though the implementations of the following two +// macros are much alike, we cannot refactor them to use a common +// helper macro, due to some peculiarity in how the preprocessor +// works. The AcceptsMacroThatExpandsToUnprotectedComma test in +// gtest_unittest.cc will fail to compile if we do that. +#define EXPECT_FATAL_FAILURE(statement, substr) \ + do { \ + class GTestExpectFatalFailureHelper {\ + public:\ + static void Execute() { statement; }\ + };\ + ::testing::TestPartResultArray gtest_failures;\ + ::testing::internal::SingleFailureChecker gtest_checker(\ + >est_failures, ::testing::TestPartResult::kFatalFailure, (substr));\ + {\ + ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\ + ::testing::ScopedFakeTestPartResultReporter:: \ + INTERCEPT_ONLY_CURRENT_THREAD, >est_failures);\ + GTestExpectFatalFailureHelper::Execute();\ + }\ + } while (::testing::internal::AlwaysFalse()) + +#define EXPECT_FATAL_FAILURE_ON_ALL_THREADS(statement, substr) \ + do { \ + class GTestExpectFatalFailureHelper {\ + public:\ + static void Execute() { statement; }\ + };\ + ::testing::TestPartResultArray gtest_failures;\ + ::testing::internal::SingleFailureChecker gtest_checker(\ + >est_failures, ::testing::TestPartResult::kFatalFailure, (substr));\ + {\ + ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\ + ::testing::ScopedFakeTestPartResultReporter:: \ + INTERCEPT_ALL_THREADS, >est_failures);\ + GTestExpectFatalFailureHelper::Execute();\ + }\ + } while (::testing::internal::AlwaysFalse()) + +// A macro for testing Google Test assertions or code that's expected to +// generate Google Test non-fatal failures. It asserts that the given +// statement will cause exactly one non-fatal Google Test failure with 'substr' +// being part of the failure message. +// +// There are two different versions of this macro. EXPECT_NONFATAL_FAILURE only +// affects and considers failures generated in the current thread and +// EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS does the same but for all threads. +// +// 'statement' is allowed to reference local variables and members of +// the current object. +// +// The verification of the assertion is done correctly even when the statement +// throws an exception or aborts the current function. +// +// Known restrictions: +// - You cannot stream a failure message to this macro. +// +// Note that even though the implementations of the following two +// macros are much alike, we cannot refactor them to use a common +// helper macro, due to some peculiarity in how the preprocessor +// works. If we do that, the code won't compile when the user gives +// EXPECT_NONFATAL_FAILURE() a statement that contains a macro that +// expands to code containing an unprotected comma. The +// AcceptsMacroThatExpandsToUnprotectedComma test in gtest_unittest.cc +// catches that. +// +// For the same reason, we have to write +// if (::testing::internal::AlwaysTrue()) { statement; } +// instead of +// GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement) +// to avoid an MSVC warning on unreachable code. +#define EXPECT_NONFATAL_FAILURE(statement, substr) \ + do {\ + ::testing::TestPartResultArray gtest_failures;\ + ::testing::internal::SingleFailureChecker gtest_checker(\ + >est_failures, ::testing::TestPartResult::kNonFatalFailure, \ + (substr));\ + {\ + ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\ + ::testing::ScopedFakeTestPartResultReporter:: \ + INTERCEPT_ONLY_CURRENT_THREAD, >est_failures);\ + if (::testing::internal::AlwaysTrue()) { statement; }\ + }\ + } while (::testing::internal::AlwaysFalse()) + +#define EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS(statement, substr) \ + do {\ + ::testing::TestPartResultArray gtest_failures;\ + ::testing::internal::SingleFailureChecker gtest_checker(\ + >est_failures, ::testing::TestPartResult::kNonFatalFailure, \ + (substr));\ + {\ + ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\ + ::testing::ScopedFakeTestPartResultReporter::INTERCEPT_ALL_THREADS, \ + >est_failures);\ + if (::testing::internal::AlwaysTrue()) { statement; }\ + }\ + } while (::testing::internal::AlwaysFalse()) + +#endif // GTEST_INCLUDE_GTEST_GTEST_SPI_H_ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include // NOLINT +#include +#include + +#if GTEST_OS_LINUX + +// TODO(kenton@google.com): Use autoconf to detect availability of +// gettimeofday(). +# define GTEST_HAS_GETTIMEOFDAY_ 1 + +# include // NOLINT +# include // NOLINT +# include // NOLINT +// Declares vsnprintf(). This header is not available on Windows. +# include // NOLINT +# include // NOLINT +# include // NOLINT +# include // NOLINT +# include + +#elif GTEST_OS_SYMBIAN +# define GTEST_HAS_GETTIMEOFDAY_ 1 +# include // NOLINT + +#elif GTEST_OS_ZOS +# define GTEST_HAS_GETTIMEOFDAY_ 1 +# include // NOLINT + +// On z/OS we additionally need strings.h for strcasecmp. +# include // NOLINT + +#elif GTEST_OS_WINDOWS_MOBILE // We are on Windows CE. + +# include // NOLINT + +#elif GTEST_OS_WINDOWS // We are on Windows proper. + +# include // NOLINT +# include // NOLINT +# include // NOLINT +# include // NOLINT + +# if GTEST_OS_WINDOWS_MINGW +// MinGW has gettimeofday() but not _ftime64(). +// TODO(kenton@google.com): Use autoconf to detect availability of +// gettimeofday(). +// TODO(kenton@google.com): There are other ways to get the time on +// Windows, like GetTickCount() or GetSystemTimeAsFileTime(). MinGW +// supports these. consider using them instead. +# define GTEST_HAS_GETTIMEOFDAY_ 1 +# include // NOLINT +# endif // GTEST_OS_WINDOWS_MINGW + +// cpplint thinks that the header is already included, so we want to +// silence it. +# include // NOLINT + +#else + +// Assume other platforms have gettimeofday(). +// TODO(kenton@google.com): Use autoconf to detect availability of +// gettimeofday(). +# define GTEST_HAS_GETTIMEOFDAY_ 1 + +// cpplint thinks that the header is already included, so we want to +// silence it. +# include // NOLINT +# include // NOLINT + +#endif // GTEST_OS_LINUX + +#if GTEST_HAS_EXCEPTIONS +# include +#endif + +#if GTEST_CAN_STREAM_RESULTS_ +# include // NOLINT +# include // NOLINT +#endif + +// Indicates that this translation unit is part of Google Test's +// implementation. It must come before gtest-internal-inl.h is +// included, or there will be a compiler error. This trick is to +// prevent a user from accidentally including gtest-internal-inl.h in +// his code. +#define GTEST_IMPLEMENTATION_ 1 +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Utility functions and classes used by the Google C++ testing framework. +// +// Author: wan@google.com (Zhanyong Wan) +// +// This file contains purely Google Test's internal implementation. Please +// DO NOT #INCLUDE IT IN A USER PROGRAM. + +#ifndef GTEST_SRC_GTEST_INTERNAL_INL_H_ +#define GTEST_SRC_GTEST_INTERNAL_INL_H_ + +// GTEST_IMPLEMENTATION_ is defined to 1 iff the current translation unit is +// part of Google Test's implementation; otherwise it's undefined. +#if !GTEST_IMPLEMENTATION_ +// A user is trying to include this from his code - just say no. +# error "gtest-internal-inl.h is part of Google Test's internal implementation." +# error "It must not be included except by Google Test itself." +#endif // GTEST_IMPLEMENTATION_ + +#ifndef _WIN32_WCE +# include +#endif // !_WIN32_WCE +#include +#include // For strtoll/_strtoul64/malloc/free. +#include // For memmove. + +#include +#include +#include + + +#if GTEST_OS_WINDOWS +# include // NOLINT +#endif // GTEST_OS_WINDOWS + + +namespace testing { + +// Declares the flags. +// +// We don't want the users to modify this flag in the code, but want +// Google Test's own unit tests to be able to access it. Therefore we +// declare it here as opposed to in gtest.h. +GTEST_DECLARE_bool_(death_test_use_fork); + +namespace internal { + +// The value of GetTestTypeId() as seen from within the Google Test +// library. This is solely for testing GetTestTypeId(). +GTEST_API_ extern const TypeId kTestTypeIdInGoogleTest; + +// Names of the flags (needed for parsing Google Test flags). +const char kAlsoRunDisabledTestsFlag[] = "also_run_disabled_tests"; +const char kBreakOnFailureFlag[] = "break_on_failure"; +const char kCatchExceptionsFlag[] = "catch_exceptions"; +const char kColorFlag[] = "color"; +const char kFilterFlag[] = "filter"; +const char kListTestsFlag[] = "list_tests"; +const char kOutputFlag[] = "output"; +const char kPrintTimeFlag[] = "print_time"; +const char kRandomSeedFlag[] = "random_seed"; +const char kRepeatFlag[] = "repeat"; +const char kShuffleFlag[] = "shuffle"; +const char kStackTraceDepthFlag[] = "stack_trace_depth"; +const char kStreamResultToFlag[] = "stream_result_to"; +const char kThrowOnFailureFlag[] = "throw_on_failure"; + +// A valid random seed must be in [1, kMaxRandomSeed]. +const int kMaxRandomSeed = 99999; + +// g_help_flag is true iff the --help flag or an equivalent form is +// specified on the command line. +GTEST_API_ extern bool g_help_flag; + +// Returns the current time in milliseconds. +GTEST_API_ TimeInMillis GetTimeInMillis(); + +// Returns true iff Google Test should use colors in the output. +GTEST_API_ bool ShouldUseColor(bool stdout_is_tty); + +// Formats the given time in milliseconds as seconds. +GTEST_API_ std::string FormatTimeInMillisAsSeconds(TimeInMillis ms); + +// Converts the given time in milliseconds to a date string in the ISO 8601 +// format, without the timezone information. N.B.: due to the use the +// non-reentrant localtime() function, this function is not thread safe. Do +// not use it in any code that can be called from multiple threads. +GTEST_API_ std::string FormatEpochTimeInMillisAsIso8601(TimeInMillis ms); + +// Parses a string for an Int32 flag, in the form of "--flag=value". +// +// On success, stores the value of the flag in *value, and returns +// true. On failure, returns false without changing *value. +GTEST_API_ bool ParseInt32Flag( + const char* str, const char* flag, Int32* value); + +// Returns a random seed in range [1, kMaxRandomSeed] based on the +// given --gtest_random_seed flag value. +inline int GetRandomSeedFromFlag(Int32 random_seed_flag) { + const unsigned int raw_seed = (random_seed_flag == 0) ? + static_cast(GetTimeInMillis()) : + static_cast(random_seed_flag); + + // Normalizes the actual seed to range [1, kMaxRandomSeed] such that + // it's easy to type. + const int normalized_seed = + static_cast((raw_seed - 1U) % + static_cast(kMaxRandomSeed)) + 1; + return normalized_seed; +} + +// Returns the first valid random seed after 'seed'. The behavior is +// undefined if 'seed' is invalid. The seed after kMaxRandomSeed is +// considered to be 1. +inline int GetNextRandomSeed(int seed) { + GTEST_CHECK_(1 <= seed && seed <= kMaxRandomSeed) + << "Invalid random seed " << seed << " - must be in [1, " + << kMaxRandomSeed << "]."; + const int next_seed = seed + 1; + return (next_seed > kMaxRandomSeed) ? 1 : next_seed; +} + +// This class saves the values of all Google Test flags in its c'tor, and +// restores them in its d'tor. +class GTestFlagSaver { + public: + // The c'tor. + GTestFlagSaver() { + also_run_disabled_tests_ = GTEST_FLAG(also_run_disabled_tests); + break_on_failure_ = GTEST_FLAG(break_on_failure); + catch_exceptions_ = GTEST_FLAG(catch_exceptions); + color_ = GTEST_FLAG(color); + death_test_style_ = GTEST_FLAG(death_test_style); + death_test_use_fork_ = GTEST_FLAG(death_test_use_fork); + filter_ = GTEST_FLAG(filter); + internal_run_death_test_ = GTEST_FLAG(internal_run_death_test); + list_tests_ = GTEST_FLAG(list_tests); + output_ = GTEST_FLAG(output); + print_time_ = GTEST_FLAG(print_time); + random_seed_ = GTEST_FLAG(random_seed); + repeat_ = GTEST_FLAG(repeat); + shuffle_ = GTEST_FLAG(shuffle); + stack_trace_depth_ = GTEST_FLAG(stack_trace_depth); + stream_result_to_ = GTEST_FLAG(stream_result_to); + throw_on_failure_ = GTEST_FLAG(throw_on_failure); + } + + // The d'tor is not virtual. DO NOT INHERIT FROM THIS CLASS. + ~GTestFlagSaver() { + GTEST_FLAG(also_run_disabled_tests) = also_run_disabled_tests_; + GTEST_FLAG(break_on_failure) = break_on_failure_; + GTEST_FLAG(catch_exceptions) = catch_exceptions_; + GTEST_FLAG(color) = color_; + GTEST_FLAG(death_test_style) = death_test_style_; + GTEST_FLAG(death_test_use_fork) = death_test_use_fork_; + GTEST_FLAG(filter) = filter_; + GTEST_FLAG(internal_run_death_test) = internal_run_death_test_; + GTEST_FLAG(list_tests) = list_tests_; + GTEST_FLAG(output) = output_; + GTEST_FLAG(print_time) = print_time_; + GTEST_FLAG(random_seed) = random_seed_; + GTEST_FLAG(repeat) = repeat_; + GTEST_FLAG(shuffle) = shuffle_; + GTEST_FLAG(stack_trace_depth) = stack_trace_depth_; + GTEST_FLAG(stream_result_to) = stream_result_to_; + GTEST_FLAG(throw_on_failure) = throw_on_failure_; + } + + private: + // Fields for saving the original values of flags. + bool also_run_disabled_tests_; + bool break_on_failure_; + bool catch_exceptions_; + std::string color_; + std::string death_test_style_; + bool death_test_use_fork_; + std::string filter_; + std::string internal_run_death_test_; + bool list_tests_; + std::string output_; + bool print_time_; + bool pretty_; + internal::Int32 random_seed_; + internal::Int32 repeat_; + bool shuffle_; + internal::Int32 stack_trace_depth_; + std::string stream_result_to_; + bool throw_on_failure_; +} GTEST_ATTRIBUTE_UNUSED_; + +// Converts a Unicode code point to a narrow string in UTF-8 encoding. +// code_point parameter is of type UInt32 because wchar_t may not be +// wide enough to contain a code point. +// The output buffer str must containt at least 32 characters. +// The function returns the address of the output buffer. +// If the code_point is not a valid Unicode code point +// (i.e. outside of Unicode range U+0 to U+10FFFF) it will be output +// as '(Invalid Unicode 0xXXXXXXXX)'. +GTEST_API_ char* CodePointToUtf8(UInt32 code_point, char* str); + +// Converts a wide string to a narrow string in UTF-8 encoding. +// The wide string is assumed to have the following encoding: +// UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin, Symbian OS) +// UTF-32 if sizeof(wchar_t) == 4 (on Linux) +// Parameter str points to a null-terminated wide string. +// Parameter num_chars may additionally limit the number +// of wchar_t characters processed. -1 is used when the entire string +// should be processed. +// If the string contains code points that are not valid Unicode code points +// (i.e. outside of Unicode range U+0 to U+10FFFF) they will be output +// as '(Invalid Unicode 0xXXXXXXXX)'. If the string is in UTF16 encoding +// and contains invalid UTF-16 surrogate pairs, values in those pairs +// will be encoded as individual Unicode characters from Basic Normal Plane. +GTEST_API_ std::string WideStringToUtf8(const wchar_t* str, int num_chars); + +// Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file +// if the variable is present. If a file already exists at this location, this +// function will write over it. If the variable is present, but the file cannot +// be created, prints an error and exits. +void WriteToShardStatusFileIfNeeded(); + +// Checks whether sharding is enabled by examining the relevant +// environment variable values. If the variables are present, +// but inconsistent (e.g., shard_index >= total_shards), prints +// an error and exits. If in_subprocess_for_death_test, sharding is +// disabled because it must only be applied to the original test +// process. Otherwise, we could filter out death tests we intended to execute. +GTEST_API_ bool ShouldShard(const char* total_shards_str, + const char* shard_index_str, + bool in_subprocess_for_death_test); + +// Parses the environment variable var as an Int32. If it is unset, +// returns default_val. If it is not an Int32, prints an error and +// and aborts. +GTEST_API_ Int32 Int32FromEnvOrDie(const char* env_var, Int32 default_val); + +// Given the total number of shards, the shard index, and the test id, +// returns true iff the test should be run on this shard. The test id is +// some arbitrary but unique non-negative integer assigned to each test +// method. Assumes that 0 <= shard_index < total_shards. +GTEST_API_ bool ShouldRunTestOnShard( + int total_shards, int shard_index, int test_id); + +// STL container utilities. + +// Returns the number of elements in the given container that satisfy +// the given predicate. +template +inline int CountIf(const Container& c, Predicate predicate) { + // Implemented as an explicit loop since std::count_if() in libCstd on + // Solaris has a non-standard signature. + int count = 0; + for (typename Container::const_iterator it = c.begin(); it != c.end(); ++it) { + if (predicate(*it)) + ++count; + } + return count; +} + +// Applies a function/functor to each element in the container. +template +void ForEach(const Container& c, Functor functor) { + std::for_each(c.begin(), c.end(), functor); +} + +// Returns the i-th element of the vector, or default_value if i is not +// in range [0, v.size()). +template +inline E GetElementOr(const std::vector& v, int i, E default_value) { + return (i < 0 || i >= static_cast(v.size())) ? default_value : v[i]; +} + +// Performs an in-place shuffle of a range of the vector's elements. +// 'begin' and 'end' are element indices as an STL-style range; +// i.e. [begin, end) are shuffled, where 'end' == size() means to +// shuffle to the end of the vector. +template +void ShuffleRange(internal::Random* random, int begin, int end, + std::vector* v) { + const int size = static_cast(v->size()); + GTEST_CHECK_(0 <= begin && begin <= size) + << "Invalid shuffle range start " << begin << ": must be in range [0, " + << size << "]."; + GTEST_CHECK_(begin <= end && end <= size) + << "Invalid shuffle range finish " << end << ": must be in range [" + << begin << ", " << size << "]."; + + // Fisher-Yates shuffle, from + // http://en.wikipedia.org/wiki/Fisher-Yates_shuffle + for (int range_width = end - begin; range_width >= 2; range_width--) { + const int last_in_range = begin + range_width - 1; + const int selected = begin + random->Generate(range_width); + std::swap((*v)[selected], (*v)[last_in_range]); + } +} + +// Performs an in-place shuffle of the vector's elements. +template +inline void Shuffle(internal::Random* random, std::vector* v) { + ShuffleRange(random, 0, static_cast(v->size()), v); +} + +// A function for deleting an object. Handy for being used as a +// functor. +template +static void Delete(T* x) { + delete x; +} + +// A predicate that checks the key of a TestProperty against a known key. +// +// TestPropertyKeyIs is copyable. +class TestPropertyKeyIs { + public: + // Constructor. + // + // TestPropertyKeyIs has NO default constructor. + explicit TestPropertyKeyIs(const char* key) + : key_(key) {} + + // Returns true iff the test name of test property matches on key_. + bool operator()(const TestProperty& test_property) const { + return test_property.key() == key_; + } + + private: + std::string key_; +}; + +// Class UnitTestOptions. +// +// This class contains functions for processing options the user +// specifies when running the tests. It has only static members. +// +// In most cases, the user can specify an option using either an +// environment variable or a command line flag. E.g. you can set the +// test filter using either GTEST_FILTER or --gtest_filter. If both +// the variable and the flag are present, the latter overrides the +// former. +class GTEST_API_ UnitTestOptions { + public: + // Functions for processing the gtest_output flag. + + // Returns the output format, or "" for normal printed output. + static std::string GetOutputFormat(); + + // Returns the absolute path of the requested output file, or the + // default (test_detail.xml in the original working directory) if + // none was explicitly specified. + static std::string GetAbsolutePathToOutputFile(); + + // Functions for processing the gtest_filter flag. + + // Returns true iff the wildcard pattern matches the string. The + // first ':' or '\0' character in pattern marks the end of it. + // + // This recursive algorithm isn't very efficient, but is clear and + // works well enough for matching test names, which are short. + static bool PatternMatchesString(const char *pattern, const char *str); + + // Returns true iff the user-specified filter matches the test case + // name and the test name. + static bool FilterMatchesTest(const std::string &test_case_name, + const std::string &test_name); + +#if GTEST_OS_WINDOWS + // Function for supporting the gtest_catch_exception flag. + + // Returns EXCEPTION_EXECUTE_HANDLER if Google Test should handle the + // given SEH exception, or EXCEPTION_CONTINUE_SEARCH otherwise. + // This function is useful as an __except condition. + static int GTestShouldProcessSEH(DWORD exception_code); +#endif // GTEST_OS_WINDOWS + + // Returns true if "name" matches the ':' separated list of glob-style + // filters in "filter". + static bool MatchesFilter(const std::string& name, const char* filter); +}; + +// Returns the current application's name, removing directory path if that +// is present. Used by UnitTestOptions::GetOutputFile. +GTEST_API_ FilePath GetCurrentExecutableName(); + +// The role interface for getting the OS stack trace as a string. +class OsStackTraceGetterInterface { + public: + OsStackTraceGetterInterface() {} + virtual ~OsStackTraceGetterInterface() {} + + // Returns the current OS stack trace as an std::string. Parameters: + // + // max_depth - the maximum number of stack frames to be included + // in the trace. + // skip_count - the number of top frames to be skipped; doesn't count + // against max_depth. + virtual string CurrentStackTrace(int max_depth, int skip_count) = 0; + + // UponLeavingGTest() should be called immediately before Google Test calls + // user code. It saves some information about the current stack that + // CurrentStackTrace() will use to find and hide Google Test stack frames. + virtual void UponLeavingGTest() = 0; + + private: + GTEST_DISALLOW_COPY_AND_ASSIGN_(OsStackTraceGetterInterface); +}; + +// A working implementation of the OsStackTraceGetterInterface interface. +class OsStackTraceGetter : public OsStackTraceGetterInterface { + public: + OsStackTraceGetter() : caller_frame_(NULL) {} + + virtual string CurrentStackTrace(int max_depth, int skip_count) + GTEST_LOCK_EXCLUDED_(mutex_); + + virtual void UponLeavingGTest() GTEST_LOCK_EXCLUDED_(mutex_); + + // This string is inserted in place of stack frames that are part of + // Google Test's implementation. + static const char* const kElidedFramesMarker; + + private: + Mutex mutex_; // protects all internal state + + // We save the stack frame below the frame that calls user code. + // We do this because the address of the frame immediately below + // the user code changes between the call to UponLeavingGTest() + // and any calls to CurrentStackTrace() from within the user code. + void* caller_frame_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(OsStackTraceGetter); +}; + +// Information about a Google Test trace point. +struct TraceInfo { + const char* file; + int line; + std::string message; +}; + +// This is the default global test part result reporter used in UnitTestImpl. +// This class should only be used by UnitTestImpl. +class DefaultGlobalTestPartResultReporter + : public TestPartResultReporterInterface { + public: + explicit DefaultGlobalTestPartResultReporter(UnitTestImpl* unit_test); + // Implements the TestPartResultReporterInterface. Reports the test part + // result in the current test. + virtual void ReportTestPartResult(const TestPartResult& result); + + private: + UnitTestImpl* const unit_test_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultGlobalTestPartResultReporter); +}; + +// This is the default per thread test part result reporter used in +// UnitTestImpl. This class should only be used by UnitTestImpl. +class DefaultPerThreadTestPartResultReporter + : public TestPartResultReporterInterface { + public: + explicit DefaultPerThreadTestPartResultReporter(UnitTestImpl* unit_test); + // Implements the TestPartResultReporterInterface. The implementation just + // delegates to the current global test part result reporter of *unit_test_. + virtual void ReportTestPartResult(const TestPartResult& result); + + private: + UnitTestImpl* const unit_test_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultPerThreadTestPartResultReporter); +}; + +// The private implementation of the UnitTest class. We don't protect +// the methods under a mutex, as this class is not accessible by a +// user and the UnitTest class that delegates work to this class does +// proper locking. +class GTEST_API_ UnitTestImpl { + public: + explicit UnitTestImpl(UnitTest* parent); + virtual ~UnitTestImpl(); + + // There are two different ways to register your own TestPartResultReporter. + // You can register your own repoter to listen either only for test results + // from the current thread or for results from all threads. + // By default, each per-thread test result repoter just passes a new + // TestPartResult to the global test result reporter, which registers the + // test part result for the currently running test. + + // Returns the global test part result reporter. + TestPartResultReporterInterface* GetGlobalTestPartResultReporter(); + + // Sets the global test part result reporter. + void SetGlobalTestPartResultReporter( + TestPartResultReporterInterface* reporter); + + // Returns the test part result reporter for the current thread. + TestPartResultReporterInterface* GetTestPartResultReporterForCurrentThread(); + + // Sets the test part result reporter for the current thread. + void SetTestPartResultReporterForCurrentThread( + TestPartResultReporterInterface* reporter); + + // Gets the number of successful test cases. + int successful_test_case_count() const; + + // Gets the number of failed test cases. + int failed_test_case_count() const; + + // Gets the number of all test cases. + int total_test_case_count() const; + + // Gets the number of all test cases that contain at least one test + // that should run. + int test_case_to_run_count() const; + + // Gets the number of successful tests. + int successful_test_count() const; + + // Gets the number of failed tests. + int failed_test_count() const; + + // Gets the number of disabled tests. + int disabled_test_count() const; + + // Gets the number of all tests. + int total_test_count() const; + + // Gets the number of tests that should run. + int test_to_run_count() const; + + // Gets the time of the test program start, in ms from the start of the + // UNIX epoch. + TimeInMillis start_timestamp() const { return start_timestamp_; } + + // Gets the elapsed time, in milliseconds. + TimeInMillis elapsed_time() const { return elapsed_time_; } + + // Returns true iff the unit test passed (i.e. all test cases passed). + bool Passed() const { return !Failed(); } + + // Returns true iff the unit test failed (i.e. some test case failed + // or something outside of all tests failed). + bool Failed() const { + return failed_test_case_count() > 0 || ad_hoc_test_result()->Failed(); + } + + // Gets the i-th test case among all the test cases. i can range from 0 to + // total_test_case_count() - 1. If i is not in that range, returns NULL. + const TestCase* GetTestCase(int i) const { + const int index = GetElementOr(test_case_indices_, i, -1); + return index < 0 ? NULL : test_cases_[i]; + } + + // Gets the i-th test case among all the test cases. i can range from 0 to + // total_test_case_count() - 1. If i is not in that range, returns NULL. + TestCase* GetMutableTestCase(int i) { + const int index = GetElementOr(test_case_indices_, i, -1); + return index < 0 ? NULL : test_cases_[index]; + } + + // Provides access to the event listener list. + TestEventListeners* listeners() { return &listeners_; } + + // Returns the TestResult for the test that's currently running, or + // the TestResult for the ad hoc test if no test is running. + TestResult* current_test_result(); + + // Returns the TestResult for the ad hoc test. + const TestResult* ad_hoc_test_result() const { return &ad_hoc_test_result_; } + + // Sets the OS stack trace getter. + // + // Does nothing if the input and the current OS stack trace getter + // are the same; otherwise, deletes the old getter and makes the + // input the current getter. + void set_os_stack_trace_getter(OsStackTraceGetterInterface* getter); + + // Returns the current OS stack trace getter if it is not NULL; + // otherwise, creates an OsStackTraceGetter, makes it the current + // getter, and returns it. + OsStackTraceGetterInterface* os_stack_trace_getter(); + + // Returns the current OS stack trace as an std::string. + // + // The maximum number of stack frames to be included is specified by + // the gtest_stack_trace_depth flag. The skip_count parameter + // specifies the number of top frames to be skipped, which doesn't + // count against the number of frames to be included. + // + // For example, if Foo() calls Bar(), which in turn calls + // CurrentOsStackTraceExceptTop(1), Foo() will be included in the + // trace but Bar() and CurrentOsStackTraceExceptTop() won't. + std::string CurrentOsStackTraceExceptTop(int skip_count) GTEST_NO_INLINE_; + + // Finds and returns a TestCase with the given name. If one doesn't + // exist, creates one and returns it. + // + // Arguments: + // + // test_case_name: name of the test case + // type_param: the name of the test's type parameter, or NULL if + // this is not a typed or a type-parameterized test. + // set_up_tc: pointer to the function that sets up the test case + // tear_down_tc: pointer to the function that tears down the test case + TestCase* GetTestCase(const char* test_case_name, + const char* type_param, + Test::SetUpTestCaseFunc set_up_tc, + Test::TearDownTestCaseFunc tear_down_tc); + + // Adds a TestInfo to the unit test. + // + // Arguments: + // + // set_up_tc: pointer to the function that sets up the test case + // tear_down_tc: pointer to the function that tears down the test case + // test_info: the TestInfo object + void AddTestInfo(Test::SetUpTestCaseFunc set_up_tc, + Test::TearDownTestCaseFunc tear_down_tc, + TestInfo* test_info) { + // In order to support thread-safe death tests, we need to + // remember the original working directory when the test program + // was first invoked. We cannot do this in RUN_ALL_TESTS(), as + // the user may have changed the current directory before calling + // RUN_ALL_TESTS(). Therefore we capture the current directory in + // AddTestInfo(), which is called to register a TEST or TEST_F + // before main() is reached. + if (original_working_dir_.IsEmpty()) { + original_working_dir_.Set(FilePath::GetCurrentDir()); + GTEST_CHECK_(!original_working_dir_.IsEmpty()) + << "Failed to get the current working directory."; + } + + GetTestCase(test_info->test_case_name(), + test_info->type_param(), + set_up_tc, + tear_down_tc)->AddTestInfo(test_info); + } + +#if GTEST_HAS_PARAM_TEST + // Returns ParameterizedTestCaseRegistry object used to keep track of + // value-parameterized tests and instantiate and register them. + internal::ParameterizedTestCaseRegistry& parameterized_test_registry() { + return parameterized_test_registry_; + } +#endif // GTEST_HAS_PARAM_TEST + + // Sets the TestCase object for the test that's currently running. + void set_current_test_case(TestCase* a_current_test_case) { + current_test_case_ = a_current_test_case; + } + + // Sets the TestInfo object for the test that's currently running. If + // current_test_info is NULL, the assertion results will be stored in + // ad_hoc_test_result_. + void set_current_test_info(TestInfo* a_current_test_info) { + current_test_info_ = a_current_test_info; + } + + // Registers all parameterized tests defined using TEST_P and + // INSTANTIATE_TEST_CASE_P, creating regular tests for each test/parameter + // combination. This method can be called more then once; it has guards + // protecting from registering the tests more then once. If + // value-parameterized tests are disabled, RegisterParameterizedTests is + // present but does nothing. + void RegisterParameterizedTests(); + + // Runs all tests in this UnitTest object, prints the result, and + // returns true if all tests are successful. If any exception is + // thrown during a test, this test is considered to be failed, but + // the rest of the tests will still be run. + bool RunAllTests(); + + // Clears the results of all tests, except the ad hoc tests. + void ClearNonAdHocTestResult() { + ForEach(test_cases_, TestCase::ClearTestCaseResult); + } + + // Clears the results of ad-hoc test assertions. + void ClearAdHocTestResult() { + ad_hoc_test_result_.Clear(); + } + + enum ReactionToSharding { + HONOR_SHARDING_PROTOCOL, + IGNORE_SHARDING_PROTOCOL + }; + + // Matches the full name of each test against the user-specified + // filter to decide whether the test should run, then records the + // result in each TestCase and TestInfo object. + // If shard_tests == HONOR_SHARDING_PROTOCOL, further filters tests + // based on sharding variables in the environment. + // Returns the number of tests that should run. + int FilterTests(ReactionToSharding shard_tests); + + // Prints the names of the tests matching the user-specified filter flag. + void ListTestsMatchingFilter(); + + const TestCase* current_test_case() const { return current_test_case_; } + TestInfo* current_test_info() { return current_test_info_; } + const TestInfo* current_test_info() const { return current_test_info_; } + + // Returns the vector of environments that need to be set-up/torn-down + // before/after the tests are run. + std::vector& environments() { return environments_; } + + // Getters for the per-thread Google Test trace stack. + std::vector& gtest_trace_stack() { + return *(gtest_trace_stack_.pointer()); + } + const std::vector& gtest_trace_stack() const { + return gtest_trace_stack_.get(); + } + +#if GTEST_HAS_DEATH_TEST + void InitDeathTestSubprocessControlInfo() { + internal_run_death_test_flag_.reset(ParseInternalRunDeathTestFlag()); + } + // Returns a pointer to the parsed --gtest_internal_run_death_test + // flag, or NULL if that flag was not specified. + // This information is useful only in a death test child process. + // Must not be called before a call to InitGoogleTest. + const InternalRunDeathTestFlag* internal_run_death_test_flag() const { + return internal_run_death_test_flag_.get(); + } + + // Returns a pointer to the current death test factory. + internal::DeathTestFactory* death_test_factory() { + return death_test_factory_.get(); + } + + void SuppressTestEventsIfInSubprocess(); + + friend class ReplaceDeathTestFactory; +#endif // GTEST_HAS_DEATH_TEST + + // Initializes the event listener performing XML output as specified by + // UnitTestOptions. Must not be called before InitGoogleTest. + void ConfigureXmlOutput(); + +#if GTEST_CAN_STREAM_RESULTS_ + // Initializes the event listener for streaming test results to a socket. + // Must not be called before InitGoogleTest. + void ConfigureStreamingOutput(); +#endif + + // Performs initialization dependent upon flag values obtained in + // ParseGoogleTestFlagsOnly. Is called from InitGoogleTest after the call to + // ParseGoogleTestFlagsOnly. In case a user neglects to call InitGoogleTest + // this function is also called from RunAllTests. Since this function can be + // called more than once, it has to be idempotent. + void PostFlagParsingInit(); + + // Gets the random seed used at the start of the current test iteration. + int random_seed() const { return random_seed_; } + + // Gets the random number generator. + internal::Random* random() { return &random_; } + + // Shuffles all test cases, and the tests within each test case, + // making sure that death tests are still run first. + void ShuffleTests(); + + // Restores the test cases and tests to their order before the first shuffle. + void UnshuffleTests(); + + // Returns the value of GTEST_FLAG(catch_exceptions) at the moment + // UnitTest::Run() starts. + bool catch_exceptions() const { return catch_exceptions_; } + + private: + friend class ::testing::UnitTest; + + // Used by UnitTest::Run() to capture the state of + // GTEST_FLAG(catch_exceptions) at the moment it starts. + void set_catch_exceptions(bool value) { catch_exceptions_ = value; } + + // The UnitTest object that owns this implementation object. + UnitTest* const parent_; + + // The working directory when the first TEST() or TEST_F() was + // executed. + internal::FilePath original_working_dir_; + + // The default test part result reporters. + DefaultGlobalTestPartResultReporter default_global_test_part_result_reporter_; + DefaultPerThreadTestPartResultReporter + default_per_thread_test_part_result_reporter_; + + // Points to (but doesn't own) the global test part result reporter. + TestPartResultReporterInterface* global_test_part_result_repoter_; + + // Protects read and write access to global_test_part_result_reporter_. + internal::Mutex global_test_part_result_reporter_mutex_; + + // Points to (but doesn't own) the per-thread test part result reporter. + internal::ThreadLocal + per_thread_test_part_result_reporter_; + + // The vector of environments that need to be set-up/torn-down + // before/after the tests are run. + std::vector environments_; + + // The vector of TestCases in their original order. It owns the + // elements in the vector. + std::vector test_cases_; + + // Provides a level of indirection for the test case list to allow + // easy shuffling and restoring the test case order. The i-th + // element of this vector is the index of the i-th test case in the + // shuffled order. + std::vector test_case_indices_; + +#if GTEST_HAS_PARAM_TEST + // ParameterizedTestRegistry object used to register value-parameterized + // tests. + internal::ParameterizedTestCaseRegistry parameterized_test_registry_; + + // Indicates whether RegisterParameterizedTests() has been called already. + bool parameterized_tests_registered_; +#endif // GTEST_HAS_PARAM_TEST + + // Index of the last death test case registered. Initially -1. + int last_death_test_case_; + + // This points to the TestCase for the currently running test. It + // changes as Google Test goes through one test case after another. + // When no test is running, this is set to NULL and Google Test + // stores assertion results in ad_hoc_test_result_. Initially NULL. + TestCase* current_test_case_; + + // This points to the TestInfo for the currently running test. It + // changes as Google Test goes through one test after another. When + // no test is running, this is set to NULL and Google Test stores + // assertion results in ad_hoc_test_result_. Initially NULL. + TestInfo* current_test_info_; + + // Normally, a user only writes assertions inside a TEST or TEST_F, + // or inside a function called by a TEST or TEST_F. Since Google + // Test keeps track of which test is current running, it can + // associate such an assertion with the test it belongs to. + // + // If an assertion is encountered when no TEST or TEST_F is running, + // Google Test attributes the assertion result to an imaginary "ad hoc" + // test, and records the result in ad_hoc_test_result_. + TestResult ad_hoc_test_result_; + + // The list of event listeners that can be used to track events inside + // Google Test. + TestEventListeners listeners_; + + // The OS stack trace getter. Will be deleted when the UnitTest + // object is destructed. By default, an OsStackTraceGetter is used, + // but the user can set this field to use a custom getter if that is + // desired. + OsStackTraceGetterInterface* os_stack_trace_getter_; + + // True iff PostFlagParsingInit() has been called. + bool post_flag_parse_init_performed_; + + // The random number seed used at the beginning of the test run. + int random_seed_; + + // Our random number generator. + internal::Random random_; + + // The time of the test program start, in ms from the start of the + // UNIX epoch. + TimeInMillis start_timestamp_; + + // How long the test took to run, in milliseconds. + TimeInMillis elapsed_time_; + +#if GTEST_HAS_DEATH_TEST + // The decomposed components of the gtest_internal_run_death_test flag, + // parsed when RUN_ALL_TESTS is called. + internal::scoped_ptr internal_run_death_test_flag_; + internal::scoped_ptr death_test_factory_; +#endif // GTEST_HAS_DEATH_TEST + + // A per-thread stack of traces created by the SCOPED_TRACE() macro. + internal::ThreadLocal > gtest_trace_stack_; + + // The value of GTEST_FLAG(catch_exceptions) at the moment RunAllTests() + // starts. + bool catch_exceptions_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(UnitTestImpl); +}; // class UnitTestImpl + +// Convenience function for accessing the global UnitTest +// implementation object. +inline UnitTestImpl* GetUnitTestImpl() { + return UnitTest::GetInstance()->impl(); +} + +#if GTEST_USES_SIMPLE_RE + +// Internal helper functions for implementing the simple regular +// expression matcher. +GTEST_API_ bool IsInSet(char ch, const char* str); +GTEST_API_ bool IsAsciiDigit(char ch); +GTEST_API_ bool IsAsciiPunct(char ch); +GTEST_API_ bool IsRepeat(char ch); +GTEST_API_ bool IsAsciiWhiteSpace(char ch); +GTEST_API_ bool IsAsciiWordChar(char ch); +GTEST_API_ bool IsValidEscape(char ch); +GTEST_API_ bool AtomMatchesChar(bool escaped, char pattern, char ch); +GTEST_API_ bool ValidateRegex(const char* regex); +GTEST_API_ bool MatchRegexAtHead(const char* regex, const char* str); +GTEST_API_ bool MatchRepetitionAndRegexAtHead( + bool escaped, char ch, char repeat, const char* regex, const char* str); +GTEST_API_ bool MatchRegexAnywhere(const char* regex, const char* str); + +#endif // GTEST_USES_SIMPLE_RE + +// Parses the command line for Google Test flags, without initializing +// other parts of Google Test. +GTEST_API_ void ParseGoogleTestFlagsOnly(int* argc, char** argv); +GTEST_API_ void ParseGoogleTestFlagsOnly(int* argc, wchar_t** argv); + +#if GTEST_HAS_DEATH_TEST + +// Returns the message describing the last system error, regardless of the +// platform. +GTEST_API_ std::string GetLastErrnoDescription(); + +# if GTEST_OS_WINDOWS +// Provides leak-safe Windows kernel handle ownership. +class AutoHandle { + public: + AutoHandle() : handle_(INVALID_HANDLE_VALUE) {} + explicit AutoHandle(HANDLE handle) : handle_(handle) {} + + ~AutoHandle() { Reset(); } + + HANDLE Get() const { return handle_; } + void Reset() { Reset(INVALID_HANDLE_VALUE); } + void Reset(HANDLE handle) { + if (handle != handle_) { + if (handle_ != INVALID_HANDLE_VALUE) + ::CloseHandle(handle_); + handle_ = handle; + } + } + + private: + HANDLE handle_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(AutoHandle); +}; +# endif // GTEST_OS_WINDOWS + +// Attempts to parse a string into a positive integer pointed to by the +// number parameter. Returns true if that is possible. +// GTEST_HAS_DEATH_TEST implies that we have ::std::string, so we can use +// it here. +template +bool ParseNaturalNumber(const ::std::string& str, Integer* number) { + // Fail fast if the given string does not begin with a digit; + // this bypasses strtoXXX's "optional leading whitespace and plus + // or minus sign" semantics, which are undesirable here. + if (str.empty() || !IsDigit(str[0])) { + return false; + } + errno = 0; + + char* end; + // BiggestConvertible is the largest integer type that system-provided + // string-to-number conversion routines can return. + +# if GTEST_OS_WINDOWS && !defined(__GNUC__) + + // MSVC and C++ Builder define __int64 instead of the standard long long. + typedef unsigned __int64 BiggestConvertible; + const BiggestConvertible parsed = _strtoui64(str.c_str(), &end, 10); + +# else + + typedef unsigned long long BiggestConvertible; // NOLINT + const BiggestConvertible parsed = strtoull(str.c_str(), &end, 10); + +# endif // GTEST_OS_WINDOWS && !defined(__GNUC__) + + const bool parse_success = *end == '\0' && errno == 0; + + // TODO(vladl@google.com): Convert this to compile time assertion when it is + // available. + GTEST_CHECK_(sizeof(Integer) <= sizeof(parsed)); + + const Integer result = static_cast(parsed); + if (parse_success && static_cast(result) == parsed) { + *number = result; + return true; + } + return false; +} +#endif // GTEST_HAS_DEATH_TEST + +// TestResult contains some private methods that should be hidden from +// Google Test user but are required for testing. This class allow our tests +// to access them. +// +// This class is supplied only for the purpose of testing Google Test's own +// constructs. Do not use it in user tests, either directly or indirectly. +class TestResultAccessor { + public: + static void RecordProperty(TestResult* test_result, + const TestProperty& property) { + test_result->RecordProperty(property); + } + + static void ClearTestPartResults(TestResult* test_result) { + test_result->ClearTestPartResults(); + } + + static const std::vector& test_part_results( + const TestResult& test_result) { + return test_result.test_part_results(); + } +}; + +} // namespace internal +} // namespace testing + +#endif // GTEST_SRC_GTEST_INTERNAL_INL_H_ +#undef GTEST_IMPLEMENTATION_ + +#if GTEST_OS_WINDOWS +# define vsnprintf _vsnprintf +#endif // GTEST_OS_WINDOWS + +namespace testing { + +using internal::CountIf; +using internal::ForEach; +using internal::GetElementOr; +using internal::Shuffle; + +// Constants. + +// A test whose test case name or test name matches this filter is +// disabled and not run. +static const char kDisableTestFilter[] = "DISABLED_*:*/DISABLED_*"; + +// A test case whose name matches this filter is considered a death +// test case and will be run before test cases whose name doesn't +// match this filter. +static const char kDeathTestCaseFilter[] = "*DeathTest:*DeathTest/*"; + +// A test filter that matches everything. +static const char kUniversalFilter[] = "*"; + +// The default output file for XML output. +static const char kDefaultOutputFile[] = "test_detail.xml"; + +// The environment variable name for the test shard index. +static const char kTestShardIndex[] = "GTEST_SHARD_INDEX"; +// The environment variable name for the total number of test shards. +static const char kTestTotalShards[] = "GTEST_TOTAL_SHARDS"; +// The environment variable name for the test shard status file. +static const char kTestShardStatusFile[] = "GTEST_SHARD_STATUS_FILE"; + +namespace internal { + +// The text used in failure messages to indicate the start of the +// stack trace. +const char kStackTraceMarker[] = "\nStack trace:\n"; + +// g_help_flag is true iff the --help flag or an equivalent form is +// specified on the command line. +bool g_help_flag = false; + +} // namespace internal + +GTEST_DEFINE_bool_( + also_run_disabled_tests, + internal::BoolFromGTestEnv("also_run_disabled_tests", false), + "Run disabled tests too, in addition to the tests normally being run."); + +GTEST_DEFINE_bool_( + break_on_failure, + internal::BoolFromGTestEnv("break_on_failure", false), + "True iff a failed assertion should be a debugger break-point."); + +GTEST_DEFINE_bool_( + catch_exceptions, + internal::BoolFromGTestEnv("catch_exceptions", true), + "True iff " GTEST_NAME_ + " should catch exceptions and treat them as test failures."); + +GTEST_DEFINE_string_( + color, + internal::StringFromGTestEnv("color", "auto"), + "Whether to use colors in the output. Valid values: yes, no, " + "and auto. 'auto' means to use colors if the output is " + "being sent to a terminal and the TERM environment variable " + "is set to xterm, xterm-color, xterm-256color, linux or cygwin."); + +GTEST_DEFINE_string_( + filter, + internal::StringFromGTestEnv("filter", kUniversalFilter), + "A colon-separated list of glob (not regex) patterns " + "for filtering the tests to run, optionally followed by a " + "'-' and a : separated list of negative patterns (tests to " + "exclude). A test is run if it matches one of the positive " + "patterns and does not match any of the negative patterns."); + +GTEST_DEFINE_bool_(list_tests, false, + "List all tests without running them."); + +GTEST_DEFINE_string_( + output, + internal::StringFromGTestEnv("output", ""), + "A format (currently must be \"xml\"), optionally followed " + "by a colon and an output file name or directory. A directory " + "is indicated by a trailing pathname separator. " + "Examples: \"xml:filename.xml\", \"xml::directoryname/\". " + "If a directory is specified, output files will be created " + "within that directory, with file-names based on the test " + "executable's name and, if necessary, made unique by adding " + "digits."); + +GTEST_DEFINE_bool_( + print_time, + internal::BoolFromGTestEnv("print_time", true), + "True iff " GTEST_NAME_ + " should display elapsed time in text output."); + +GTEST_DEFINE_int32_( + random_seed, + internal::Int32FromGTestEnv("random_seed", 0), + "Random number seed to use when shuffling test orders. Must be in range " + "[1, 99999], or 0 to use a seed based on the current time."); + +GTEST_DEFINE_int32_( + repeat, + internal::Int32FromGTestEnv("repeat", 1), + "How many times to repeat each test. Specify a negative number " + "for repeating forever. Useful for shaking out flaky tests."); + +GTEST_DEFINE_bool_( + show_internal_stack_frames, false, + "True iff " GTEST_NAME_ " should include internal stack frames when " + "printing test failure stack traces."); + +GTEST_DEFINE_bool_( + shuffle, + internal::BoolFromGTestEnv("shuffle", false), + "True iff " GTEST_NAME_ + " should randomize tests' order on every run."); + +GTEST_DEFINE_int32_( + stack_trace_depth, + internal::Int32FromGTestEnv("stack_trace_depth", kMaxStackTraceDepth), + "The maximum number of stack frames to print when an " + "assertion fails. The valid range is 0 through 100, inclusive."); + +GTEST_DEFINE_string_( + stream_result_to, + internal::StringFromGTestEnv("stream_result_to", ""), + "This flag specifies the host name and the port number on which to stream " + "test results. Example: \"localhost:555\". The flag is effective only on " + "Linux."); + +GTEST_DEFINE_bool_( + throw_on_failure, + internal::BoolFromGTestEnv("throw_on_failure", false), + "When this flag is specified, a failed assertion will throw an exception " + "if exceptions are enabled or exit the program with a non-zero code " + "otherwise."); + +namespace internal { + +// Generates a random number from [0, range), using a Linear +// Congruential Generator (LCG). Crashes if 'range' is 0 or greater +// than kMaxRange. +UInt32 Random::Generate(UInt32 range) { + // These constants are the same as are used in glibc's rand(3). + state_ = (1103515245U*state_ + 12345U) % kMaxRange; + + GTEST_CHECK_(range > 0) + << "Cannot generate a number in the range [0, 0)."; + GTEST_CHECK_(range <= kMaxRange) + << "Generation of a number in [0, " << range << ") was requested, " + << "but this can only generate numbers in [0, " << kMaxRange << ")."; + + // Converting via modulus introduces a bit of downward bias, but + // it's simple, and a linear congruential generator isn't too good + // to begin with. + return state_ % range; +} + +// GTestIsInitialized() returns true iff the user has initialized +// Google Test. Useful for catching the user mistake of not initializing +// Google Test before calling RUN_ALL_TESTS(). +// +// A user must call testing::InitGoogleTest() to initialize Google +// Test. g_init_gtest_count is set to the number of times +// InitGoogleTest() has been called. We don't protect this variable +// under a mutex as it is only accessed in the main thread. +GTEST_API_ int g_init_gtest_count = 0; +static bool GTestIsInitialized() { return g_init_gtest_count != 0; } + +// Iterates over a vector of TestCases, keeping a running sum of the +// results of calling a given int-returning method on each. +// Returns the sum. +static int SumOverTestCaseList(const std::vector& case_list, + int (TestCase::*method)() const) { + int sum = 0; + for (size_t i = 0; i < case_list.size(); i++) { + sum += (case_list[i]->*method)(); + } + return sum; +} + +// Returns true iff the test case passed. +static bool TestCasePassed(const TestCase* test_case) { + return test_case->should_run() && test_case->Passed(); +} + +// Returns true iff the test case failed. +static bool TestCaseFailed(const TestCase* test_case) { + return test_case->should_run() && test_case->Failed(); +} + +// Returns true iff test_case contains at least one test that should +// run. +static bool ShouldRunTestCase(const TestCase* test_case) { + return test_case->should_run(); +} + +// AssertHelper constructor. +AssertHelper::AssertHelper(TestPartResult::Type type, + const char* file, + int line, + const char* message) + : data_(new AssertHelperData(type, file, line, message)) { +} + +AssertHelper::~AssertHelper() { + delete data_; +} + +// Message assignment, for assertion streaming support. +void AssertHelper::operator=(const Message& message) const { + UnitTest::GetInstance()-> + AddTestPartResult(data_->type, data_->file, data_->line, + AppendUserMessage(data_->message, message), + UnitTest::GetInstance()->impl() + ->CurrentOsStackTraceExceptTop(1) + // Skips the stack frame for this function itself. + ); // NOLINT +} + +// Mutex for linked pointers. +GTEST_API_ GTEST_DEFINE_STATIC_MUTEX_(g_linked_ptr_mutex); + +// Application pathname gotten in InitGoogleTest. +std::string g_executable_path; + +// Returns the current application's name, removing directory path if that +// is present. +FilePath GetCurrentExecutableName() { + FilePath result; + +#if GTEST_OS_WINDOWS + result.Set(FilePath(g_executable_path).RemoveExtension("exe")); +#else + result.Set(FilePath(g_executable_path)); +#endif // GTEST_OS_WINDOWS + + return result.RemoveDirectoryName(); +} + +// Functions for processing the gtest_output flag. + +// Returns the output format, or "" for normal printed output. +std::string UnitTestOptions::GetOutputFormat() { + const char* const gtest_output_flag = GTEST_FLAG(output).c_str(); + if (gtest_output_flag == NULL) return std::string(""); + + const char* const colon = strchr(gtest_output_flag, ':'); + return (colon == NULL) ? + std::string(gtest_output_flag) : + std::string(gtest_output_flag, colon - gtest_output_flag); +} + +// Returns the name of the requested output file, or the default if none +// was explicitly specified. +std::string UnitTestOptions::GetAbsolutePathToOutputFile() { + const char* const gtest_output_flag = GTEST_FLAG(output).c_str(); + if (gtest_output_flag == NULL) + return ""; + + const char* const colon = strchr(gtest_output_flag, ':'); + if (colon == NULL) + return internal::FilePath::ConcatPaths( + internal::FilePath( + UnitTest::GetInstance()->original_working_dir()), + internal::FilePath(kDefaultOutputFile)).string(); + + internal::FilePath output_name(colon + 1); + if (!output_name.IsAbsolutePath()) + // TODO(wan@google.com): on Windows \some\path is not an absolute + // path (as its meaning depends on the current drive), yet the + // following logic for turning it into an absolute path is wrong. + // Fix it. + output_name = internal::FilePath::ConcatPaths( + internal::FilePath(UnitTest::GetInstance()->original_working_dir()), + internal::FilePath(colon + 1)); + + if (!output_name.IsDirectory()) + return output_name.string(); + + internal::FilePath result(internal::FilePath::GenerateUniqueFileName( + output_name, internal::GetCurrentExecutableName(), + GetOutputFormat().c_str())); + return result.string(); +} + +// Returns true iff the wildcard pattern matches the string. The +// first ':' or '\0' character in pattern marks the end of it. +// +// This recursive algorithm isn't very efficient, but is clear and +// works well enough for matching test names, which are short. +bool UnitTestOptions::PatternMatchesString(const char *pattern, + const char *str) { + switch (*pattern) { + case '\0': + case ':': // Either ':' or '\0' marks the end of the pattern. + return *str == '\0'; + case '?': // Matches any single character. + return *str != '\0' && PatternMatchesString(pattern + 1, str + 1); + case '*': // Matches any string (possibly empty) of characters. + return (*str != '\0' && PatternMatchesString(pattern, str + 1)) || + PatternMatchesString(pattern + 1, str); + default: // Non-special character. Matches itself. + return *pattern == *str && + PatternMatchesString(pattern + 1, str + 1); + } +} + +bool UnitTestOptions::MatchesFilter( + const std::string& name, const char* filter) { + const char *cur_pattern = filter; + for (;;) { + if (PatternMatchesString(cur_pattern, name.c_str())) { + return true; + } + + // Finds the next pattern in the filter. + cur_pattern = strchr(cur_pattern, ':'); + + // Returns if no more pattern can be found. + if (cur_pattern == NULL) { + return false; + } + + // Skips the pattern separater (the ':' character). + cur_pattern++; + } +} + +// Returns true iff the user-specified filter matches the test case +// name and the test name. +bool UnitTestOptions::FilterMatchesTest(const std::string &test_case_name, + const std::string &test_name) { + const std::string& full_name = test_case_name + "." + test_name.c_str(); + + // Split --gtest_filter at '-', if there is one, to separate into + // positive filter and negative filter portions + const char* const p = GTEST_FLAG(filter).c_str(); + const char* const dash = strchr(p, '-'); + std::string positive; + std::string negative; + if (dash == NULL) { + positive = GTEST_FLAG(filter).c_str(); // Whole string is a positive filter + negative = ""; + } else { + positive = std::string(p, dash); // Everything up to the dash + negative = std::string(dash + 1); // Everything after the dash + if (positive.empty()) { + // Treat '-test1' as the same as '*-test1' + positive = kUniversalFilter; + } + } + + // A filter is a colon-separated list of patterns. It matches a + // test if any pattern in it matches the test. + return (MatchesFilter(full_name, positive.c_str()) && + !MatchesFilter(full_name, negative.c_str())); +} + +#if GTEST_HAS_SEH +// Returns EXCEPTION_EXECUTE_HANDLER if Google Test should handle the +// given SEH exception, or EXCEPTION_CONTINUE_SEARCH otherwise. +// This function is useful as an __except condition. +int UnitTestOptions::GTestShouldProcessSEH(DWORD exception_code) { + // Google Test should handle a SEH exception if: + // 1. the user wants it to, AND + // 2. this is not a breakpoint exception, AND + // 3. this is not a C++ exception (VC++ implements them via SEH, + // apparently). + // + // SEH exception code for C++ exceptions. + // (see http://support.microsoft.com/kb/185294 for more information). + const DWORD kCxxExceptionCode = 0xe06d7363; + + bool should_handle = true; + + if (!GTEST_FLAG(catch_exceptions)) + should_handle = false; + else if (exception_code == EXCEPTION_BREAKPOINT) + should_handle = false; + else if (exception_code == kCxxExceptionCode) + should_handle = false; + + return should_handle ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH; +} +#endif // GTEST_HAS_SEH + +} // namespace internal + +// The c'tor sets this object as the test part result reporter used by +// Google Test. The 'result' parameter specifies where to report the +// results. Intercepts only failures from the current thread. +ScopedFakeTestPartResultReporter::ScopedFakeTestPartResultReporter( + TestPartResultArray* result) + : intercept_mode_(INTERCEPT_ONLY_CURRENT_THREAD), + result_(result) { + Init(); +} + +// The c'tor sets this object as the test part result reporter used by +// Google Test. The 'result' parameter specifies where to report the +// results. +ScopedFakeTestPartResultReporter::ScopedFakeTestPartResultReporter( + InterceptMode intercept_mode, TestPartResultArray* result) + : intercept_mode_(intercept_mode), + result_(result) { + Init(); +} + +void ScopedFakeTestPartResultReporter::Init() { + internal::UnitTestImpl* const impl = internal::GetUnitTestImpl(); + if (intercept_mode_ == INTERCEPT_ALL_THREADS) { + old_reporter_ = impl->GetGlobalTestPartResultReporter(); + impl->SetGlobalTestPartResultReporter(this); + } else { + old_reporter_ = impl->GetTestPartResultReporterForCurrentThread(); + impl->SetTestPartResultReporterForCurrentThread(this); + } +} + +// The d'tor restores the test part result reporter used by Google Test +// before. +ScopedFakeTestPartResultReporter::~ScopedFakeTestPartResultReporter() { + internal::UnitTestImpl* const impl = internal::GetUnitTestImpl(); + if (intercept_mode_ == INTERCEPT_ALL_THREADS) { + impl->SetGlobalTestPartResultReporter(old_reporter_); + } else { + impl->SetTestPartResultReporterForCurrentThread(old_reporter_); + } +} + +// Increments the test part result count and remembers the result. +// This method is from the TestPartResultReporterInterface interface. +void ScopedFakeTestPartResultReporter::ReportTestPartResult( + const TestPartResult& result) { + result_->Append(result); +} + +namespace internal { + +// Returns the type ID of ::testing::Test. We should always call this +// instead of GetTypeId< ::testing::Test>() to get the type ID of +// testing::Test. This is to work around a suspected linker bug when +// using Google Test as a framework on Mac OS X. The bug causes +// GetTypeId< ::testing::Test>() to return different values depending +// on whether the call is from the Google Test framework itself or +// from user test code. GetTestTypeId() is guaranteed to always +// return the same value, as it always calls GetTypeId<>() from the +// gtest.cc, which is within the Google Test framework. +TypeId GetTestTypeId() { + return GetTypeId(); +} + +// The value of GetTestTypeId() as seen from within the Google Test +// library. This is solely for testing GetTestTypeId(). +extern const TypeId kTestTypeIdInGoogleTest = GetTestTypeId(); + +// This predicate-formatter checks that 'results' contains a test part +// failure of the given type and that the failure message contains the +// given substring. +AssertionResult HasOneFailure(const char* /* results_expr */, + const char* /* type_expr */, + const char* /* substr_expr */, + const TestPartResultArray& results, + TestPartResult::Type type, + const string& substr) { + const std::string expected(type == TestPartResult::kFatalFailure ? + "1 fatal failure" : + "1 non-fatal failure"); + Message msg; + if (results.size() != 1) { + msg << "Expected: " << expected << "\n" + << " Actual: " << results.size() << " failures"; + for (int i = 0; i < results.size(); i++) { + msg << "\n" << results.GetTestPartResult(i); + } + return AssertionFailure() << msg; + } + + const TestPartResult& r = results.GetTestPartResult(0); + if (r.type() != type) { + return AssertionFailure() << "Expected: " << expected << "\n" + << " Actual:\n" + << r; + } + + if (strstr(r.message(), substr.c_str()) == NULL) { + return AssertionFailure() << "Expected: " << expected << " containing \"" + << substr << "\"\n" + << " Actual:\n" + << r; + } + + return AssertionSuccess(); +} + +// The constructor of SingleFailureChecker remembers where to look up +// test part results, what type of failure we expect, and what +// substring the failure message should contain. +SingleFailureChecker:: SingleFailureChecker( + const TestPartResultArray* results, + TestPartResult::Type type, + const string& substr) + : results_(results), + type_(type), + substr_(substr) {} + +// The destructor of SingleFailureChecker verifies that the given +// TestPartResultArray contains exactly one failure that has the given +// type and contains the given substring. If that's not the case, a +// non-fatal failure will be generated. +SingleFailureChecker::~SingleFailureChecker() { + EXPECT_PRED_FORMAT3(HasOneFailure, *results_, type_, substr_); +} + +DefaultGlobalTestPartResultReporter::DefaultGlobalTestPartResultReporter( + UnitTestImpl* unit_test) : unit_test_(unit_test) {} + +void DefaultGlobalTestPartResultReporter::ReportTestPartResult( + const TestPartResult& result) { + unit_test_->current_test_result()->AddTestPartResult(result); + unit_test_->listeners()->repeater()->OnTestPartResult(result); +} + +DefaultPerThreadTestPartResultReporter::DefaultPerThreadTestPartResultReporter( + UnitTestImpl* unit_test) : unit_test_(unit_test) {} + +void DefaultPerThreadTestPartResultReporter::ReportTestPartResult( + const TestPartResult& result) { + unit_test_->GetGlobalTestPartResultReporter()->ReportTestPartResult(result); +} + +// Returns the global test part result reporter. +TestPartResultReporterInterface* +UnitTestImpl::GetGlobalTestPartResultReporter() { + internal::MutexLock lock(&global_test_part_result_reporter_mutex_); + return global_test_part_result_repoter_; +} + +// Sets the global test part result reporter. +void UnitTestImpl::SetGlobalTestPartResultReporter( + TestPartResultReporterInterface* reporter) { + internal::MutexLock lock(&global_test_part_result_reporter_mutex_); + global_test_part_result_repoter_ = reporter; +} + +// Returns the test part result reporter for the current thread. +TestPartResultReporterInterface* +UnitTestImpl::GetTestPartResultReporterForCurrentThread() { + return per_thread_test_part_result_reporter_.get(); +} + +// Sets the test part result reporter for the current thread. +void UnitTestImpl::SetTestPartResultReporterForCurrentThread( + TestPartResultReporterInterface* reporter) { + per_thread_test_part_result_reporter_.set(reporter); +} + +// Gets the number of successful test cases. +int UnitTestImpl::successful_test_case_count() const { + return CountIf(test_cases_, TestCasePassed); +} + +// Gets the number of failed test cases. +int UnitTestImpl::failed_test_case_count() const { + return CountIf(test_cases_, TestCaseFailed); +} + +// Gets the number of all test cases. +int UnitTestImpl::total_test_case_count() const { + return static_cast(test_cases_.size()); +} + +// Gets the number of all test cases that contain at least one test +// that should run. +int UnitTestImpl::test_case_to_run_count() const { + return CountIf(test_cases_, ShouldRunTestCase); +} + +// Gets the number of successful tests. +int UnitTestImpl::successful_test_count() const { + return SumOverTestCaseList(test_cases_, &TestCase::successful_test_count); +} + +// Gets the number of failed tests. +int UnitTestImpl::failed_test_count() const { + return SumOverTestCaseList(test_cases_, &TestCase::failed_test_count); +} + +// Gets the number of disabled tests. +int UnitTestImpl::disabled_test_count() const { + return SumOverTestCaseList(test_cases_, &TestCase::disabled_test_count); +} + +// Gets the number of all tests. +int UnitTestImpl::total_test_count() const { + return SumOverTestCaseList(test_cases_, &TestCase::total_test_count); +} + +// Gets the number of tests that should run. +int UnitTestImpl::test_to_run_count() const { + return SumOverTestCaseList(test_cases_, &TestCase::test_to_run_count); +} + +// Returns the current OS stack trace as an std::string. +// +// The maximum number of stack frames to be included is specified by +// the gtest_stack_trace_depth flag. The skip_count parameter +// specifies the number of top frames to be skipped, which doesn't +// count against the number of frames to be included. +// +// For example, if Foo() calls Bar(), which in turn calls +// CurrentOsStackTraceExceptTop(1), Foo() will be included in the +// trace but Bar() and CurrentOsStackTraceExceptTop() won't. +std::string UnitTestImpl::CurrentOsStackTraceExceptTop(int skip_count) { + (void)skip_count; + return ""; +} + +// Returns the current time in milliseconds. +TimeInMillis GetTimeInMillis() { +#if GTEST_OS_WINDOWS_MOBILE || defined(__BORLANDC__) + // Difference between 1970-01-01 and 1601-01-01 in milliseconds. + // http://analogous.blogspot.com/2005/04/epoch.html + const TimeInMillis kJavaEpochToWinFileTimeDelta = + static_cast(116444736UL) * 100000UL; + const DWORD kTenthMicrosInMilliSecond = 10000; + + SYSTEMTIME now_systime; + FILETIME now_filetime; + ULARGE_INTEGER now_int64; + // TODO(kenton@google.com): Shouldn't this just use + // GetSystemTimeAsFileTime()? + GetSystemTime(&now_systime); + if (SystemTimeToFileTime(&now_systime, &now_filetime)) { + now_int64.LowPart = now_filetime.dwLowDateTime; + now_int64.HighPart = now_filetime.dwHighDateTime; + now_int64.QuadPart = (now_int64.QuadPart / kTenthMicrosInMilliSecond) - + kJavaEpochToWinFileTimeDelta; + return now_int64.QuadPart; + } + return 0; +#elif GTEST_OS_WINDOWS && !GTEST_HAS_GETTIMEOFDAY_ + __timeb64 now; + +# ifdef _MSC_VER + + // MSVC 8 deprecates _ftime64(), so we want to suppress warning 4996 + // (deprecated function) there. + // TODO(kenton@google.com): Use GetTickCount()? Or use + // SystemTimeToFileTime() +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4996) // Temporarily disables warning 4996. + _ftime64(&now); +# pragma warning(pop) // Restores the warning state. +# else + + _ftime64(&now); + +# endif // _MSC_VER + + return static_cast(now.time) * 1000 + now.millitm; +#elif GTEST_HAS_GETTIMEOFDAY_ + struct timeval now; + gettimeofday(&now, NULL); + return static_cast(now.tv_sec) * 1000 + now.tv_usec / 1000; +#else +# error "Don't know how to get the current time on your system." +#endif +} + +// Utilities + +// class String. + +#if GTEST_OS_WINDOWS_MOBILE +// Creates a UTF-16 wide string from the given ANSI string, allocating +// memory using new. The caller is responsible for deleting the return +// value using delete[]. Returns the wide string, or NULL if the +// input is NULL. +LPCWSTR String::AnsiToUtf16(const char* ansi) { + if (!ansi) return NULL; + const int length = strlen(ansi); + const int unicode_length = + MultiByteToWideChar(CP_ACP, 0, ansi, length, + NULL, 0); + WCHAR* unicode = new WCHAR[unicode_length + 1]; + MultiByteToWideChar(CP_ACP, 0, ansi, length, + unicode, unicode_length); + unicode[unicode_length] = 0; + return unicode; +} + +// Creates an ANSI string from the given wide string, allocating +// memory using new. The caller is responsible for deleting the return +// value using delete[]. Returns the ANSI string, or NULL if the +// input is NULL. +const char* String::Utf16ToAnsi(LPCWSTR utf16_str) { + if (!utf16_str) return NULL; + const int ansi_length = + WideCharToMultiByte(CP_ACP, 0, utf16_str, -1, + NULL, 0, NULL, NULL); + char* ansi = new char[ansi_length + 1]; + WideCharToMultiByte(CP_ACP, 0, utf16_str, -1, + ansi, ansi_length, NULL, NULL); + ansi[ansi_length] = 0; + return ansi; +} + +#endif // GTEST_OS_WINDOWS_MOBILE + +// Compares two C strings. Returns true iff they have the same content. +// +// Unlike strcmp(), this function can handle NULL argument(s). A NULL +// C string is considered different to any non-NULL C string, +// including the empty string. +bool String::CStringEquals(const char * lhs, const char * rhs) { + if ( lhs == NULL ) return rhs == NULL; + + if ( rhs == NULL ) return false; + + return strcmp(lhs, rhs) == 0; +} + +#if GTEST_HAS_STD_WSTRING || GTEST_HAS_GLOBAL_WSTRING + +// Converts an array of wide chars to a narrow string using the UTF-8 +// encoding, and streams the result to the given Message object. +static void StreamWideCharsToMessage(const wchar_t* wstr, size_t length, + Message* msg) { + for (size_t i = 0; i != length; ) { // NOLINT + if (wstr[i] != L'\0') { + *msg << WideStringToUtf8(wstr + i, static_cast(length - i)); + while (i != length && wstr[i] != L'\0') + i++; + } else { + *msg << '\0'; + i++; + } + } +} + +#endif // GTEST_HAS_STD_WSTRING || GTEST_HAS_GLOBAL_WSTRING + +} // namespace internal + +#if GTEST_HAS_STD_WSTRING +// Converts the given wide string to a narrow string using the UTF-8 +// encoding, and streams the result to this Message object. +Message& Message::operator <<(const ::std::wstring& wstr) { + internal::StreamWideCharsToMessage(wstr.c_str(), wstr.length(), this); + return *this; +} +#endif // GTEST_HAS_STD_WSTRING + +#if GTEST_HAS_GLOBAL_WSTRING +// Converts the given wide string to a narrow string using the UTF-8 +// encoding, and streams the result to this Message object. +Message& Message::operator <<(const ::wstring& wstr) { + internal::StreamWideCharsToMessage(wstr.c_str(), wstr.length(), this); + return *this; +} +#endif // GTEST_HAS_GLOBAL_WSTRING + +// AssertionResult constructors. +// Used in EXPECT_TRUE/FALSE(assertion_result). +AssertionResult::AssertionResult(const AssertionResult& other) + : success_(other.success_), + message_(other.message_.get() != NULL ? + new ::std::string(*other.message_) : + static_cast< ::std::string*>(NULL)) { +} + +// Returns the assertion's negation. Used with EXPECT/ASSERT_FALSE. +AssertionResult AssertionResult::operator!() const { + AssertionResult negation(!success_); + if (message_.get() != NULL) + negation << *message_; + return negation; +} + +// Makes a successful assertion result. +AssertionResult AssertionSuccess() { + return AssertionResult(true); +} + +// Makes a failed assertion result. +AssertionResult AssertionFailure() { + return AssertionResult(false); +} + +// Makes a failed assertion result with the given failure message. +// Deprecated; use AssertionFailure() << message. +AssertionResult AssertionFailure(const Message& message) { + return AssertionFailure() << message; +} + +namespace internal { + +// Constructs and returns the message for an equality assertion +// (e.g. ASSERT_EQ, EXPECT_STREQ, etc) failure. +// +// The first four parameters are the expressions used in the assertion +// and their values, as strings. For example, for ASSERT_EQ(foo, bar) +// where foo is 5 and bar is 6, we have: +// +// expected_expression: "foo" +// actual_expression: "bar" +// expected_value: "5" +// actual_value: "6" +// +// The ignoring_case parameter is true iff the assertion is a +// *_STRCASEEQ*. When it's true, the string " (ignoring case)" will +// be inserted into the message. +AssertionResult EqFailure(const char* expected_expression, + const char* actual_expression, + const std::string& expected_value, + const std::string& actual_value, + bool ignoring_case) { + Message msg; + msg << "Value of: " << actual_expression; + if (actual_value != actual_expression) { + msg << "\n Actual: " << actual_value; + } + + msg << "\nExpected: " << expected_expression; + if (ignoring_case) { + msg << " (ignoring case)"; + } + if (expected_value != expected_expression) { + msg << "\nWhich is: " << expected_value; + } + + return AssertionFailure() << msg; +} + +// Constructs a failure message for Boolean assertions such as EXPECT_TRUE. +std::string GetBoolAssertionFailureMessage( + const AssertionResult& assertion_result, + const char* expression_text, + const char* actual_predicate_value, + const char* expected_predicate_value) { + const char* actual_message = assertion_result.message(); + Message msg; + msg << "Value of: " << expression_text + << "\n Actual: " << actual_predicate_value; + if (actual_message[0] != '\0') + msg << " (" << actual_message << ")"; + msg << "\nExpected: " << expected_predicate_value; + return msg.GetString(); +} + +// Helper function for implementing ASSERT_NEAR. +AssertionResult DoubleNearPredFormat(const char* expr1, + const char* expr2, + const char* abs_error_expr, + double val1, + double val2, + double abs_error) { + const double diff = fabs(val1 - val2); + if (diff <= abs_error) return AssertionSuccess(); + + // TODO(wan): do not print the value of an expression if it's + // already a literal. + return AssertionFailure() + << "The difference between " << expr1 << " and " << expr2 + << " is " << diff << ", which exceeds " << abs_error_expr << ", where\n" + << expr1 << " evaluates to " << val1 << ",\n" + << expr2 << " evaluates to " << val2 << ", and\n" + << abs_error_expr << " evaluates to " << abs_error << "."; +} + + +// Helper template for implementing FloatLE() and DoubleLE(). +template +AssertionResult FloatingPointLE(const char* expr1, + const char* expr2, + RawType val1, + RawType val2) { + // Returns success if val1 is less than val2, + if (val1 < val2) { + return AssertionSuccess(); + } + + // or if val1 is almost equal to val2. + const FloatingPoint lhs(val1), rhs(val2); + if (lhs.AlmostEquals(rhs)) { + return AssertionSuccess(); + } + + // Note that the above two checks will both fail if either val1 or + // val2 is NaN, as the IEEE floating-point standard requires that + // any predicate involving a NaN must return false. + + ::std::stringstream val1_ss; + val1_ss << std::setprecision(std::numeric_limits::digits10 + 2) + << val1; + + ::std::stringstream val2_ss; + val2_ss << std::setprecision(std::numeric_limits::digits10 + 2) + << val2; + + return AssertionFailure() + << "Expected: (" << expr1 << ") <= (" << expr2 << ")\n" + << " Actual: " << StringStreamToString(&val1_ss) << " vs " + << StringStreamToString(&val2_ss); +} + +} // namespace internal + +// Asserts that val1 is less than, or almost equal to, val2. Fails +// otherwise. In particular, it fails if either val1 or val2 is NaN. +AssertionResult FloatLE(const char* expr1, const char* expr2, + float val1, float val2) { + return internal::FloatingPointLE(expr1, expr2, val1, val2); +} + +// Asserts that val1 is less than, or almost equal to, val2. Fails +// otherwise. In particular, it fails if either val1 or val2 is NaN. +AssertionResult DoubleLE(const char* expr1, const char* expr2, + double val1, double val2) { + return internal::FloatingPointLE(expr1, expr2, val1, val2); +} + +namespace internal { + +// The helper function for {ASSERT|EXPECT}_EQ with int or enum +// arguments. +AssertionResult CmpHelperEQ(const char* expected_expression, + const char* actual_expression, + BiggestInt expected, + BiggestInt actual) { + if (expected == actual) { + return AssertionSuccess(); + } + + return EqFailure(expected_expression, + actual_expression, + FormatForComparisonFailureMessage(expected, actual), + FormatForComparisonFailureMessage(actual, expected), + false); +} + +// A macro for implementing the helper functions needed to implement +// ASSERT_?? and EXPECT_?? with integer or enum arguments. It is here +// just to avoid copy-and-paste of similar code. +#define GTEST_IMPL_CMP_HELPER_(op_name, op)\ +AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \ + BiggestInt val1, BiggestInt val2) {\ + if (val1 op val2) {\ + return AssertionSuccess();\ + } else {\ + return AssertionFailure() \ + << "Expected: (" << expr1 << ") " #op " (" << expr2\ + << "), actual: " << FormatForComparisonFailureMessage(val1, val2)\ + << " vs " << FormatForComparisonFailureMessage(val2, val1);\ + }\ +} + +// Implements the helper function for {ASSERT|EXPECT}_NE with int or +// enum arguments. +GTEST_IMPL_CMP_HELPER_(NE, !=) +// Implements the helper function for {ASSERT|EXPECT}_LE with int or +// enum arguments. +GTEST_IMPL_CMP_HELPER_(LE, <=) +// Implements the helper function for {ASSERT|EXPECT}_LT with int or +// enum arguments. +GTEST_IMPL_CMP_HELPER_(LT, < ) +// Implements the helper function for {ASSERT|EXPECT}_GE with int or +// enum arguments. +GTEST_IMPL_CMP_HELPER_(GE, >=) +// Implements the helper function for {ASSERT|EXPECT}_GT with int or +// enum arguments. +GTEST_IMPL_CMP_HELPER_(GT, > ) + +#undef GTEST_IMPL_CMP_HELPER_ + +// The helper function for {ASSERT|EXPECT}_STREQ. +AssertionResult CmpHelperSTREQ(const char* expected_expression, + const char* actual_expression, + const char* expected, + const char* actual) { + if (String::CStringEquals(expected, actual)) { + return AssertionSuccess(); + } + + return EqFailure(expected_expression, + actual_expression, + PrintToString(expected), + PrintToString(actual), + false); +} + +// The helper function for {ASSERT|EXPECT}_STRCASEEQ. +AssertionResult CmpHelperSTRCASEEQ(const char* expected_expression, + const char* actual_expression, + const char* expected, + const char* actual) { + if (String::CaseInsensitiveCStringEquals(expected, actual)) { + return AssertionSuccess(); + } + + return EqFailure(expected_expression, + actual_expression, + PrintToString(expected), + PrintToString(actual), + true); +} + +// The helper function for {ASSERT|EXPECT}_STRNE. +AssertionResult CmpHelperSTRNE(const char* s1_expression, + const char* s2_expression, + const char* s1, + const char* s2) { + if (!String::CStringEquals(s1, s2)) { + return AssertionSuccess(); + } else { + return AssertionFailure() << "Expected: (" << s1_expression << ") != (" + << s2_expression << "), actual: \"" + << s1 << "\" vs \"" << s2 << "\""; + } +} + +// The helper function for {ASSERT|EXPECT}_STRCASENE. +AssertionResult CmpHelperSTRCASENE(const char* s1_expression, + const char* s2_expression, + const char* s1, + const char* s2) { + if (!String::CaseInsensitiveCStringEquals(s1, s2)) { + return AssertionSuccess(); + } else { + return AssertionFailure() + << "Expected: (" << s1_expression << ") != (" + << s2_expression << ") (ignoring case), actual: \"" + << s1 << "\" vs \"" << s2 << "\""; + } +} + +} // namespace internal + +namespace { + +// Helper functions for implementing IsSubString() and IsNotSubstring(). + +// This group of overloaded functions return true iff needle is a +// substring of haystack. NULL is considered a substring of itself +// only. + +bool IsSubstringPred(const char* needle, const char* haystack) { + if (needle == NULL || haystack == NULL) + return needle == haystack; + + return strstr(haystack, needle) != NULL; +} + +bool IsSubstringPred(const wchar_t* needle, const wchar_t* haystack) { + if (needle == NULL || haystack == NULL) + return needle == haystack; + + return wcsstr(haystack, needle) != NULL; +} + +// StringType here can be either ::std::string or ::std::wstring. +template +bool IsSubstringPred(const StringType& needle, + const StringType& haystack) { + return haystack.find(needle) != StringType::npos; +} + +// This function implements either IsSubstring() or IsNotSubstring(), +// depending on the value of the expected_to_be_substring parameter. +// StringType here can be const char*, const wchar_t*, ::std::string, +// or ::std::wstring. +template +AssertionResult IsSubstringImpl( + bool expected_to_be_substring, + const char* needle_expr, const char* haystack_expr, + const StringType& needle, const StringType& haystack) { + if (IsSubstringPred(needle, haystack) == expected_to_be_substring) + return AssertionSuccess(); + + const bool is_wide_string = sizeof(needle[0]) > 1; + const char* const begin_string_quote = is_wide_string ? "L\"" : "\""; + return AssertionFailure() + << "Value of: " << needle_expr << "\n" + << " Actual: " << begin_string_quote << needle << "\"\n" + << "Expected: " << (expected_to_be_substring ? "" : "not ") + << "a substring of " << haystack_expr << "\n" + << "Which is: " << begin_string_quote << haystack << "\""; +} + +} // namespace + +// IsSubstring() and IsNotSubstring() check whether needle is a +// substring of haystack (NULL is considered a substring of itself +// only), and return an appropriate error message when they fail. + +AssertionResult IsSubstring( + const char* needle_expr, const char* haystack_expr, + const char* needle, const char* haystack) { + return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack); +} + +AssertionResult IsSubstring( + const char* needle_expr, const char* haystack_expr, + const wchar_t* needle, const wchar_t* haystack) { + return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack); +} + +AssertionResult IsNotSubstring( + const char* needle_expr, const char* haystack_expr, + const char* needle, const char* haystack) { + return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack); +} + +AssertionResult IsNotSubstring( + const char* needle_expr, const char* haystack_expr, + const wchar_t* needle, const wchar_t* haystack) { + return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack); +} + +AssertionResult IsSubstring( + const char* needle_expr, const char* haystack_expr, + const ::std::string& needle, const ::std::string& haystack) { + return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack); +} + +AssertionResult IsNotSubstring( + const char* needle_expr, const char* haystack_expr, + const ::std::string& needle, const ::std::string& haystack) { + return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack); +} + +#if GTEST_HAS_STD_WSTRING +AssertionResult IsSubstring( + const char* needle_expr, const char* haystack_expr, + const ::std::wstring& needle, const ::std::wstring& haystack) { + return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack); +} + +AssertionResult IsNotSubstring( + const char* needle_expr, const char* haystack_expr, + const ::std::wstring& needle, const ::std::wstring& haystack) { + return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack); +} +#endif // GTEST_HAS_STD_WSTRING + +namespace internal { + +#if GTEST_OS_WINDOWS + +namespace { + +// Helper function for IsHRESULT{SuccessFailure} predicates +AssertionResult HRESULTFailureHelper(const char* expr, + const char* expected, + long hr) { // NOLINT +# if GTEST_OS_WINDOWS_MOBILE + + // Windows CE doesn't support FormatMessage. + const char error_text[] = ""; + +# else + + // Looks up the human-readable system message for the HRESULT code + // and since we're not passing any params to FormatMessage, we don't + // want inserts expanded. + const DWORD kFlags = FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS; + const DWORD kBufSize = 4096; // String::Format can't exceed this length. + // Gets the system's human readable message string for this HRESULT. + char error_text[kBufSize] = { '\0' }; + DWORD message_length = ::FormatMessageA(kFlags, + 0, // no source, we're asking system + hr, // the error + 0, // no line width restrictions + error_text, // output buffer + kBufSize, // buf size + NULL); // no arguments for inserts + // Trims tailing white space (FormatMessage leaves a trailing cr-lf) + for (; message_length && IsSpace(error_text[message_length - 1]); + --message_length) { + error_text[message_length - 1] = '\0'; + } + +# endif // GTEST_OS_WINDOWS_MOBILE + + const std::string error_hex(String::Format("0x%08X ", hr)); + return ::testing::AssertionFailure() + << "Expected: " << expr << " " << expected << ".\n" + << " Actual: " << error_hex << error_text << "\n"; +} + +} // namespace + +AssertionResult IsHRESULTSuccess(const char* expr, long hr) { // NOLINT + if (SUCCEEDED(hr)) { + return AssertionSuccess(); + } + return HRESULTFailureHelper(expr, "succeeds", hr); +} + +AssertionResult IsHRESULTFailure(const char* expr, long hr) { // NOLINT + if (FAILED(hr)) { + return AssertionSuccess(); + } + return HRESULTFailureHelper(expr, "fails", hr); +} + +#endif // GTEST_OS_WINDOWS + +// Utility functions for encoding Unicode text (wide strings) in +// UTF-8. + +// A Unicode code-point can have upto 21 bits, and is encoded in UTF-8 +// like this: +// +// Code-point length Encoding +// 0 - 7 bits 0xxxxxxx +// 8 - 11 bits 110xxxxx 10xxxxxx +// 12 - 16 bits 1110xxxx 10xxxxxx 10xxxxxx +// 17 - 21 bits 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx + +// The maximum code-point a one-byte UTF-8 sequence can represent. +const UInt32 kMaxCodePoint1 = (static_cast(1) << 7) - 1; + +// The maximum code-point a two-byte UTF-8 sequence can represent. +const UInt32 kMaxCodePoint2 = (static_cast(1) << (5 + 6)) - 1; + +// The maximum code-point a three-byte UTF-8 sequence can represent. +const UInt32 kMaxCodePoint3 = (static_cast(1) << (4 + 2*6)) - 1; + +// The maximum code-point a four-byte UTF-8 sequence can represent. +const UInt32 kMaxCodePoint4 = (static_cast(1) << (3 + 3*6)) - 1; + +// Chops off the n lowest bits from a bit pattern. Returns the n +// lowest bits. As a side effect, the original bit pattern will be +// shifted to the right by n bits. +inline UInt32 ChopLowBits(UInt32* bits, int n) { + const UInt32 low_bits = *bits & ((static_cast(1) << n) - 1); + *bits >>= n; + return low_bits; +} + +// Converts a Unicode code point to a narrow string in UTF-8 encoding. +// code_point parameter is of type UInt32 because wchar_t may not be +// wide enough to contain a code point. +// The output buffer str must containt at least 32 characters. +// The function returns the address of the output buffer. +// If the code_point is not a valid Unicode code point +// (i.e. outside of Unicode range U+0 to U+10FFFF) it will be output +// as '(Invalid Unicode 0xXXXXXXXX)'. +char* CodePointToUtf8(UInt32 code_point, char* str) { + if (code_point <= kMaxCodePoint1) { + str[1] = '\0'; + str[0] = static_cast(code_point); // 0xxxxxxx + } else if (code_point <= kMaxCodePoint2) { + str[2] = '\0'; + str[1] = static_cast(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx + str[0] = static_cast(0xC0 | code_point); // 110xxxxx + } else if (code_point <= kMaxCodePoint3) { + str[3] = '\0'; + str[2] = static_cast(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx + str[1] = static_cast(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx + str[0] = static_cast(0xE0 | code_point); // 1110xxxx + } else if (code_point <= kMaxCodePoint4) { + str[4] = '\0'; + str[3] = static_cast(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx + str[2] = static_cast(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx + str[1] = static_cast(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx + str[0] = static_cast(0xF0 | code_point); // 11110xxx + } else { + // The longest string String::Format can produce when invoked + // with these parameters is 28 character long (not including + // the terminating nul character). We are asking for 32 character + // buffer just in case. This is also enough for strncpy to + // null-terminate the destination string. + posix::StrNCpy( + str, String::Format("(Invalid Unicode 0x%X)", code_point).c_str(), 32); + str[31] = '\0'; // Makes sure no change in the format to strncpy leaves + // the result unterminated. + } + return str; +} + +// The following two functions only make sense if the the system +// uses UTF-16 for wide string encoding. All supported systems +// with 16 bit wchar_t (Windows, Cygwin, Symbian OS) do use UTF-16. + +// Determines if the arguments constitute UTF-16 surrogate pair +// and thus should be combined into a single Unicode code point +// using CreateCodePointFromUtf16SurrogatePair. +inline bool IsUtf16SurrogatePair(wchar_t first, wchar_t second) { + return sizeof(wchar_t) == 2 && + (first & 0xFC00) == 0xD800 && (second & 0xFC00) == 0xDC00; +} + +// Creates a Unicode code point from UTF16 surrogate pair. +inline UInt32 CreateCodePointFromUtf16SurrogatePair(wchar_t first, + wchar_t second) { + const UInt32 mask = (1 << 10) - 1; + return (sizeof(wchar_t) == 2) ? + (((first & mask) << 10) | (second & mask)) + 0x10000 : + // This function should not be called when the condition is + // false, but we provide a sensible default in case it is. + static_cast(first); +} + +// Converts a wide string to a narrow string in UTF-8 encoding. +// The wide string is assumed to have the following encoding: +// UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin, Symbian OS) +// UTF-32 if sizeof(wchar_t) == 4 (on Linux) +// Parameter str points to a null-terminated wide string. +// Parameter num_chars may additionally limit the number +// of wchar_t characters processed. -1 is used when the entire string +// should be processed. +// If the string contains code points that are not valid Unicode code points +// (i.e. outside of Unicode range U+0 to U+10FFFF) they will be output +// as '(Invalid Unicode 0xXXXXXXXX)'. If the string is in UTF16 encoding +// and contains invalid UTF-16 surrogate pairs, values in those pairs +// will be encoded as individual Unicode characters from Basic Normal Plane. +std::string WideStringToUtf8(const wchar_t* str, int num_chars) { + if (num_chars == -1) + num_chars = static_cast(wcslen(str)); + + ::std::stringstream stream; + for (int i = 0; i < num_chars; ++i) { + UInt32 unicode_code_point; + + if (str[i] == L'\0') { + break; + } else if (i + 1 < num_chars && IsUtf16SurrogatePair(str[i], str[i + 1])) { + unicode_code_point = CreateCodePointFromUtf16SurrogatePair(str[i], + str[i + 1]); + i++; + } else { + unicode_code_point = static_cast(str[i]); + } + + char buffer[32]; // CodePointToUtf8 requires a buffer this big. + stream << CodePointToUtf8(unicode_code_point, buffer); + } + return StringStreamToString(&stream); +} + +// Converts a wide C string to an std::string using the UTF-8 encoding. +// NULL will be converted to "(null)". +std::string String::ShowWideCString(const wchar_t * wide_c_str) { + if (wide_c_str == NULL) return "(null)"; + + return internal::WideStringToUtf8(wide_c_str, -1); +} + +// Compares two wide C strings. Returns true iff they have the same +// content. +// +// Unlike wcscmp(), this function can handle NULL argument(s). A NULL +// C string is considered different to any non-NULL C string, +// including the empty string. +bool String::WideCStringEquals(const wchar_t * lhs, const wchar_t * rhs) { + if (lhs == NULL) return rhs == NULL; + + if (rhs == NULL) return false; + + return wcscmp(lhs, rhs) == 0; +} + +// Helper function for *_STREQ on wide strings. +AssertionResult CmpHelperSTREQ(const char* expected_expression, + const char* actual_expression, + const wchar_t* expected, + const wchar_t* actual) { + if (String::WideCStringEquals(expected, actual)) { + return AssertionSuccess(); + } + + return EqFailure(expected_expression, + actual_expression, + PrintToString(expected), + PrintToString(actual), + false); +} + +// Helper function for *_STRNE on wide strings. +AssertionResult CmpHelperSTRNE(const char* s1_expression, + const char* s2_expression, + const wchar_t* s1, + const wchar_t* s2) { + if (!String::WideCStringEquals(s1, s2)) { + return AssertionSuccess(); + } + + return AssertionFailure() << "Expected: (" << s1_expression << ") != (" + << s2_expression << "), actual: " + << PrintToString(s1) + << " vs " << PrintToString(s2); +} + +// Compares two C strings, ignoring case. Returns true iff they have +// the same content. +// +// Unlike strcasecmp(), this function can handle NULL argument(s). A +// NULL C string is considered different to any non-NULL C string, +// including the empty string. +bool String::CaseInsensitiveCStringEquals(const char * lhs, const char * rhs) { + if (lhs == NULL) + return rhs == NULL; + if (rhs == NULL) + return false; + return posix::StrCaseCmp(lhs, rhs) == 0; +} + + // Compares two wide C strings, ignoring case. Returns true iff they + // have the same content. + // + // Unlike wcscasecmp(), this function can handle NULL argument(s). + // A NULL C string is considered different to any non-NULL wide C string, + // including the empty string. + // NB: The implementations on different platforms slightly differ. + // On windows, this method uses _wcsicmp which compares according to LC_CTYPE + // environment variable. On GNU platform this method uses wcscasecmp + // which compares according to LC_CTYPE category of the current locale. + // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the + // current locale. +bool String::CaseInsensitiveWideCStringEquals(const wchar_t* lhs, + const wchar_t* rhs) { + if (lhs == NULL) return rhs == NULL; + + if (rhs == NULL) return false; + +#if GTEST_OS_WINDOWS + return _wcsicmp(lhs, rhs) == 0; +#elif GTEST_OS_LINUX && !GTEST_OS_LINUX_ANDROID + return wcscasecmp(lhs, rhs) == 0; +#else + // Android, Mac OS X and Cygwin don't define wcscasecmp. + // Other unknown OSes may not define it either. + wint_t left, right; + do { + left = towlower(*lhs++); + right = towlower(*rhs++); + } while (left && left == right); + return left == right; +#endif // OS selector +} + +// Returns true iff str ends with the given suffix, ignoring case. +// Any string is considered to end with an empty suffix. +bool String::EndsWithCaseInsensitive( + const std::string& str, const std::string& suffix) { + const size_t str_len = str.length(); + const size_t suffix_len = suffix.length(); + return (str_len >= suffix_len) && + CaseInsensitiveCStringEquals(str.c_str() + str_len - suffix_len, + suffix.c_str()); +} + +// Formats a list of arguments to an std::string, using the same format +// spec string as for printf. +// +// We do not use the StringPrintf class as it is not universally +// available. +// +// The result is limited to 4096 characters (including the tailing 0). +// If 4096 characters are not enough to format the input, or if +// there's an error, "" is +// returned. +std::string String::Format(const char * format, ...) { + va_list args; + va_start(args, format); + + char buffer[4096]; + const int kBufferSize = sizeof(buffer)/sizeof(buffer[0]); + + // MSVC 8 deprecates vsnprintf(), so we want to suppress warning + // 4996 (deprecated function) there. +#ifdef _MSC_VER // We are using MSVC. +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4996) // Temporarily disables warning 4996. + + const int size = vsnprintf(buffer, kBufferSize, format, args); + +# pragma warning(pop) // Restores the warning state. +#else // We are not using MSVC. + const int size = vsnprintf(buffer, kBufferSize, format, args); +#endif // _MSC_VER + va_end(args); + + // vsnprintf()'s behavior is not portable. When the buffer is not + // big enough, it returns a negative value in MSVC, and returns the + // needed buffer size on Linux. When there is an output error, it + // always returns a negative value. For simplicity, we lump the two + // error cases together. + if (size < 0 || size >= kBufferSize) { + return ""; + } else { + return std::string(buffer, size); + } +} + +// Converts the buffer in a stringstream to an std::string, converting NUL +// bytes to "\\0" along the way. +std::string StringStreamToString(::std::stringstream* ss) { + const ::std::string& str = ss->str(); + const char* const start = str.c_str(); + const char* const end = start + str.length(); + + std::string result; + result.reserve(2 * (end - start)); + for (const char* ch = start; ch != end; ++ch) { + if (*ch == '\0') { + result += "\\0"; // Replaces NUL with "\\0"; + } else { + result += *ch; + } + } + + return result; +} + +// Appends the user-supplied message to the Google-Test-generated message. +std::string AppendUserMessage(const std::string& gtest_msg, + const Message& user_msg) { + // Appends the user message if it's non-empty. + const std::string user_msg_string = user_msg.GetString(); + if (user_msg_string.empty()) { + return gtest_msg; + } + + return gtest_msg + "\n" + user_msg_string; +} + +} // namespace internal + +// class TestResult + +// Creates an empty TestResult. +TestResult::TestResult() + : death_test_count_(0), + elapsed_time_(0) { +} + +// D'tor. +TestResult::~TestResult() { +} + +// Returns the i-th test part result among all the results. i can +// range from 0 to total_part_count() - 1. If i is not in that range, +// aborts the program. +const TestPartResult& TestResult::GetTestPartResult(int i) const { + if (i < 0 || i >= total_part_count()) + internal::posix::Abort(); + return test_part_results_.at(i); +} + +// Returns the i-th test property. i can range from 0 to +// test_property_count() - 1. If i is not in that range, aborts the +// program. +const TestProperty& TestResult::GetTestProperty(int i) const { + if (i < 0 || i >= test_property_count()) + internal::posix::Abort(); + return test_properties_.at(i); +} + +// Clears the test part results. +void TestResult::ClearTestPartResults() { + test_part_results_.clear(); +} + +// Adds a test part result to the list. +void TestResult::AddTestPartResult(const TestPartResult& test_part_result) { + test_part_results_.push_back(test_part_result); +} + +// Adds a test property to the list. If a property with the same key as the +// supplied property is already represented, the value of this test_property +// replaces the old value for that key. +void TestResult::RecordProperty(const TestProperty& test_property) { + if (!ValidateTestProperty(test_property)) { + return; + } + internal::MutexLock lock(&test_properites_mutex_); + const std::vector::iterator property_with_matching_key = + std::find_if(test_properties_.begin(), test_properties_.end(), + internal::TestPropertyKeyIs(test_property.key())); + if (property_with_matching_key == test_properties_.end()) { + test_properties_.push_back(test_property); + return; + } + property_with_matching_key->SetValue(test_property.value()); +} + +// Adds a failure if the key is a reserved attribute of Google Test +// testcase tags. Returns true if the property is valid. +bool TestResult::ValidateTestProperty(const TestProperty& test_property) { + const std::string& key = test_property.key(); + if (key == "name" || key == "status" || key == "time" || key == "classname") { + ADD_FAILURE() + << "Reserved key used in RecordProperty(): " + << key + << " ('name', 'status', 'time', and 'classname' are reserved by " + << GTEST_NAME_ << ")"; + return false; + } + return true; +} + +// Clears the object. +void TestResult::Clear() { + test_part_results_.clear(); + test_properties_.clear(); + death_test_count_ = 0; + elapsed_time_ = 0; +} + +// Returns true iff the test failed. +bool TestResult::Failed() const { + for (int i = 0; i < total_part_count(); ++i) { + if (GetTestPartResult(i).failed()) + return true; + } + return false; +} + +// Returns true iff the test part fatally failed. +static bool TestPartFatallyFailed(const TestPartResult& result) { + return result.fatally_failed(); +} + +// Returns true iff the test fatally failed. +bool TestResult::HasFatalFailure() const { + return CountIf(test_part_results_, TestPartFatallyFailed) > 0; +} + +// Returns true iff the test part non-fatally failed. +static bool TestPartNonfatallyFailed(const TestPartResult& result) { + return result.nonfatally_failed(); +} + +// Returns true iff the test has a non-fatal failure. +bool TestResult::HasNonfatalFailure() const { + return CountIf(test_part_results_, TestPartNonfatallyFailed) > 0; +} + +// Gets the number of all test parts. This is the sum of the number +// of successful test parts and the number of failed test parts. +int TestResult::total_part_count() const { + return static_cast(test_part_results_.size()); +} + +// Returns the number of the test properties. +int TestResult::test_property_count() const { + return static_cast(test_properties_.size()); +} + +// class Test + +// Creates a Test object. + +// The c'tor saves the values of all Google Test flags. +Test::Test() + : gtest_flag_saver_(new internal::GTestFlagSaver) { +} + +// The d'tor restores the values of all Google Test flags. +Test::~Test() { + delete gtest_flag_saver_; +} + +// Sets up the test fixture. +// +// A sub-class may override this. +void Test::SetUp() { +} + +// Tears down the test fixture. +// +// A sub-class may override this. +void Test::TearDown() { +} + +// Allows user supplied key value pairs to be recorded for later output. +void Test::RecordProperty(const char* key, const char* value) { + UnitTest::GetInstance()->RecordPropertyForCurrentTest(key, value); +} + +// Allows user supplied key value pairs to be recorded for later output. +void Test::RecordProperty(const char* key, int value) { + Message value_message; + value_message << value; + RecordProperty(key, value_message.GetString().c_str()); +} + +namespace internal { + +void ReportFailureInUnknownLocation(TestPartResult::Type result_type, + const std::string& message) { + // This function is a friend of UnitTest and as such has access to + // AddTestPartResult. + UnitTest::GetInstance()->AddTestPartResult( + result_type, + NULL, // No info about the source file where the exception occurred. + -1, // We have no info on which line caused the exception. + message, + ""); // No stack trace, either. +} + +} // namespace internal + +// Google Test requires all tests in the same test case to use the same test +// fixture class. This function checks if the current test has the +// same fixture class as the first test in the current test case. If +// yes, it returns true; otherwise it generates a Google Test failure and +// returns false. +bool Test::HasSameFixtureClass() { + internal::UnitTestImpl* const impl = internal::GetUnitTestImpl(); + const TestCase* const test_case = impl->current_test_case(); + + // Info about the first test in the current test case. + const TestInfo* const first_test_info = test_case->test_info_list()[0]; + const internal::TypeId first_fixture_id = first_test_info->fixture_class_id_; + const char* const first_test_name = first_test_info->name(); + + // Info about the current test. + const TestInfo* const this_test_info = impl->current_test_info(); + const internal::TypeId this_fixture_id = this_test_info->fixture_class_id_; + const char* const this_test_name = this_test_info->name(); + + if (this_fixture_id != first_fixture_id) { + // Is the first test defined using TEST? + const bool first_is_TEST = first_fixture_id == internal::GetTestTypeId(); + // Is this test defined using TEST? + const bool this_is_TEST = this_fixture_id == internal::GetTestTypeId(); + + if (first_is_TEST || this_is_TEST) { + // The user mixed TEST and TEST_F in this test case - we'll tell + // him/her how to fix it. + + // Gets the name of the TEST and the name of the TEST_F. Note + // that first_is_TEST and this_is_TEST cannot both be true, as + // the fixture IDs are different for the two tests. + const char* const TEST_name = + first_is_TEST ? first_test_name : this_test_name; + const char* const TEST_F_name = + first_is_TEST ? this_test_name : first_test_name; + + ADD_FAILURE() + << "All tests in the same test case must use the same test fixture\n" + << "class, so mixing TEST_F and TEST in the same test case is\n" + << "illegal. In test case " << this_test_info->test_case_name() + << ",\n" + << "test " << TEST_F_name << " is defined using TEST_F but\n" + << "test " << TEST_name << " is defined using TEST. You probably\n" + << "want to change the TEST to TEST_F or move it to another test\n" + << "case."; + } else { + // The user defined two fixture classes with the same name in + // two namespaces - we'll tell him/her how to fix it. + ADD_FAILURE() + << "All tests in the same test case must use the same test fixture\n" + << "class. However, in test case " + << this_test_info->test_case_name() << ",\n" + << "you defined test " << first_test_name + << " and test " << this_test_name << "\n" + << "using two different test fixture classes. This can happen if\n" + << "the two classes are from different namespaces or translation\n" + << "units and have the same name. You should probably rename one\n" + << "of the classes to put the tests into different test cases."; + } + return false; + } + + return true; +} + +#if GTEST_HAS_SEH + +// Adds an "exception thrown" fatal failure to the current test. This +// function returns its result via an output parameter pointer because VC++ +// prohibits creation of objects with destructors on stack in functions +// using __try (see error C2712). +static std::string* FormatSehExceptionMessage(DWORD exception_code, + const char* location) { + Message message; + message << "SEH exception with code 0x" << std::setbase(16) << + exception_code << std::setbase(10) << " thrown in " << location << "."; + + return new std::string(message.GetString()); +} + +#endif // GTEST_HAS_SEH + +#if GTEST_HAS_EXCEPTIONS + +// Adds an "exception thrown" fatal failure to the current test. +static std::string FormatCxxExceptionMessage(const char* description, + const char* location) { + Message message; + if (description != NULL) { + message << "C++ exception with description \"" << description << "\""; + } else { + message << "Unknown C++ exception"; + } + message << " thrown in " << location << "."; + + return message.GetString(); +} + +static std::string PrintTestPartResultToString( + const TestPartResult& test_part_result); + +// A failed Google Test assertion will throw an exception of this type when +// GTEST_FLAG(throw_on_failure) is true (if exceptions are enabled). We +// derive it from std::runtime_error, which is for errors presumably +// detectable only at run time. Since std::runtime_error inherits from +// std::exception, many testing frameworks know how to extract and print the +// message inside it. +class GoogleTestFailureException : public ::std::runtime_error { + public: + explicit GoogleTestFailureException(const TestPartResult& failure) + : ::std::runtime_error(PrintTestPartResultToString(failure).c_str()) {} +}; +#endif // GTEST_HAS_EXCEPTIONS + +namespace internal { +// We put these helper functions in the internal namespace as IBM's xlC +// compiler rejects the code if they were declared static. + +// Runs the given method and handles SEH exceptions it throws, when +// SEH is supported; returns the 0-value for type Result in case of an +// SEH exception. (Microsoft compilers cannot handle SEH and C++ +// exceptions in the same function. Therefore, we provide a separate +// wrapper function for handling SEH exceptions.) +template +Result HandleSehExceptionsInMethodIfSupported( + T* object, Result (T::*method)(), const char* location) { +#if GTEST_HAS_SEH + __try { + return (object->*method)(); + } __except (internal::UnitTestOptions::GTestShouldProcessSEH( // NOLINT + GetExceptionCode())) { + // We create the exception message on the heap because VC++ prohibits + // creation of objects with destructors on stack in functions using __try + // (see error C2712). + std::string* exception_message = FormatSehExceptionMessage( + GetExceptionCode(), location); + internal::ReportFailureInUnknownLocation(TestPartResult::kFatalFailure, + *exception_message); + delete exception_message; + return static_cast(0); + } +#else + (void)location; + return (object->*method)(); +#endif // GTEST_HAS_SEH +} + +// Runs the given method and catches and reports C++ and/or SEH-style +// exceptions, if they are supported; returns the 0-value for type +// Result in case of an SEH exception. +template +Result HandleExceptionsInMethodIfSupported( + T* object, Result (T::*method)(), const char* location) { + // NOTE: The user code can affect the way in which Google Test handles + // exceptions by setting GTEST_FLAG(catch_exceptions), but only before + // RUN_ALL_TESTS() starts. It is technically possible to check the flag + // after the exception is caught and either report or re-throw the + // exception based on the flag's value: + // + // try { + // // Perform the test method. + // } catch (...) { + // if (GTEST_FLAG(catch_exceptions)) + // // Report the exception as failure. + // else + // throw; // Re-throws the original exception. + // } + // + // However, the purpose of this flag is to allow the program to drop into + // the debugger when the exception is thrown. On most platforms, once the + // control enters the catch block, the exception origin information is + // lost and the debugger will stop the program at the point of the + // re-throw in this function -- instead of at the point of the original + // throw statement in the code under test. For this reason, we perform + // the check early, sacrificing the ability to affect Google Test's + // exception handling in the method where the exception is thrown. + if (internal::GetUnitTestImpl()->catch_exceptions()) { +#if GTEST_HAS_EXCEPTIONS + try { + return HandleSehExceptionsInMethodIfSupported(object, method, location); + } catch (const GoogleTestFailureException&) { // NOLINT + // This exception doesn't originate in code under test. It makes no + // sense to report it as a test failure. + throw; + } catch (const std::exception& e) { // NOLINT + internal::ReportFailureInUnknownLocation( + TestPartResult::kFatalFailure, + FormatCxxExceptionMessage(e.what(), location)); + } catch (...) { // NOLINT + internal::ReportFailureInUnknownLocation( + TestPartResult::kFatalFailure, + FormatCxxExceptionMessage(NULL, location)); + } + return static_cast(0); +#else + return HandleSehExceptionsInMethodIfSupported(object, method, location); +#endif // GTEST_HAS_EXCEPTIONS + } else { + return (object->*method)(); + } +} + +} // namespace internal + +// Runs the test and updates the test result. +void Test::Run() { + if (!HasSameFixtureClass()) return; + + internal::UnitTestImpl* const impl = internal::GetUnitTestImpl(); + impl->os_stack_trace_getter()->UponLeavingGTest(); + internal::HandleExceptionsInMethodIfSupported(this, &Test::SetUp, "SetUp()"); + // We will run the test only if SetUp() was successful. + if (!HasFatalFailure()) { + impl->os_stack_trace_getter()->UponLeavingGTest(); + internal::HandleExceptionsInMethodIfSupported( + this, &Test::TestBody, "the test body"); + } + + // However, we want to clean up as much as possible. Hence we will + // always call TearDown(), even if SetUp() or the test body has + // failed. + impl->os_stack_trace_getter()->UponLeavingGTest(); + internal::HandleExceptionsInMethodIfSupported( + this, &Test::TearDown, "TearDown()"); +} + +// Returns true iff the current test has a fatal failure. +bool Test::HasFatalFailure() { + return internal::GetUnitTestImpl()->current_test_result()->HasFatalFailure(); +} + +// Returns true iff the current test has a non-fatal failure. +bool Test::HasNonfatalFailure() { + return internal::GetUnitTestImpl()->current_test_result()-> + HasNonfatalFailure(); +} + +// class TestInfo + +// Constructs a TestInfo object. It assumes ownership of the test factory +// object. +// TODO(vladl@google.com): Make a_test_case_name and a_name const string&'s +// to signify they cannot be NULLs. +TestInfo::TestInfo(const char* a_test_case_name, + const char* a_name, + const char* a_type_param, + const char* a_value_param, + internal::TypeId fixture_class_id, + internal::TestFactoryBase* factory) + : test_case_name_(a_test_case_name), + name_(a_name), + type_param_(a_type_param ? new std::string(a_type_param) : NULL), + value_param_(a_value_param ? new std::string(a_value_param) : NULL), + fixture_class_id_(fixture_class_id), + should_run_(false), + is_disabled_(false), + matches_filter_(false), + factory_(factory), + result_() {} + +// Destructs a TestInfo object. +TestInfo::~TestInfo() { delete factory_; } + +namespace internal { + +// Creates a new TestInfo object and registers it with Google Test; +// returns the created object. +// +// Arguments: +// +// test_case_name: name of the test case +// name: name of the test +// type_param: the name of the test's type parameter, or NULL if +// this is not a typed or a type-parameterized test. +// value_param: text representation of the test's value parameter, +// or NULL if this is not a value-parameterized test. +// fixture_class_id: ID of the test fixture class +// set_up_tc: pointer to the function that sets up the test case +// tear_down_tc: pointer to the function that tears down the test case +// factory: pointer to the factory that creates a test object. +// The newly created TestInfo instance will assume +// ownership of the factory object. +TestInfo* MakeAndRegisterTestInfo( + const char* test_case_name, const char* name, + const char* type_param, + const char* value_param, + TypeId fixture_class_id, + SetUpTestCaseFunc set_up_tc, + TearDownTestCaseFunc tear_down_tc, + TestFactoryBase* factory) { + TestInfo* const test_info = + new TestInfo(test_case_name, name, type_param, value_param, + fixture_class_id, factory); + GetUnitTestImpl()->AddTestInfo(set_up_tc, tear_down_tc, test_info); + return test_info; +} + +#if GTEST_HAS_PARAM_TEST +void ReportInvalidTestCaseType(const char* test_case_name, + const char* file, int line) { + Message errors; + errors + << "Attempted redefinition of test case " << test_case_name << ".\n" + << "All tests in the same test case must use the same test fixture\n" + << "class. However, in test case " << test_case_name << ", you tried\n" + << "to define a test using a fixture class different from the one\n" + << "used earlier. This can happen if the two fixture classes are\n" + << "from different namespaces and have the same name. You should\n" + << "probably rename one of the classes to put the tests into different\n" + << "test cases."; + + fprintf(stderr, "%s %s", FormatFileLocation(file, line).c_str(), + errors.GetString().c_str()); +} +#endif // GTEST_HAS_PARAM_TEST + +} // namespace internal + +namespace { + +// A predicate that checks the test name of a TestInfo against a known +// value. +// +// This is used for implementation of the TestCase class only. We put +// it in the anonymous namespace to prevent polluting the outer +// namespace. +// +// TestNameIs is copyable. +class TestNameIs { + public: + // Constructor. + // + // TestNameIs has NO default constructor. + explicit TestNameIs(const char* name) + : name_(name) {} + + // Returns true iff the test name of test_info matches name_. + bool operator()(const TestInfo * test_info) const { + return test_info && test_info->name() == name_; + } + + private: + std::string name_; +}; + +} // namespace + +namespace internal { + +// This method expands all parameterized tests registered with macros TEST_P +// and INSTANTIATE_TEST_CASE_P into regular tests and registers those. +// This will be done just once during the program runtime. +void UnitTestImpl::RegisterParameterizedTests() { +#if GTEST_HAS_PARAM_TEST + if (!parameterized_tests_registered_) { + parameterized_test_registry_.RegisterTests(); + parameterized_tests_registered_ = true; + } +#endif +} + +} // namespace internal + +// Creates the test object, runs it, records its result, and then +// deletes it. +void TestInfo::Run() { + if (!should_run_) return; + + // Tells UnitTest where to store test result. + internal::UnitTestImpl* const impl = internal::GetUnitTestImpl(); + impl->set_current_test_info(this); + + TestEventListener* repeater = UnitTest::GetInstance()->listeners().repeater(); + + // Notifies the unit test event listeners that a test is about to start. + repeater->OnTestStart(*this); + + const TimeInMillis start = internal::GetTimeInMillis(); + + impl->os_stack_trace_getter()->UponLeavingGTest(); + + // Creates the test object. + Test* const test = internal::HandleExceptionsInMethodIfSupported( + factory_, &internal::TestFactoryBase::CreateTest, + "the test fixture's constructor"); + + // Runs the test only if the test object was created and its + // constructor didn't generate a fatal failure. + if ((test != NULL) && !Test::HasFatalFailure()) { + // This doesn't throw as all user code that can throw are wrapped into + // exception handling code. + test->Run(); + } + + // Deletes the test object. + impl->os_stack_trace_getter()->UponLeavingGTest(); + internal::HandleExceptionsInMethodIfSupported( + test, &Test::DeleteSelf_, "the test fixture's destructor"); + + result_.set_elapsed_time(internal::GetTimeInMillis() - start); + + // Notifies the unit test event listener that a test has just finished. + repeater->OnTestEnd(*this); + + // Tells UnitTest to stop associating assertion results to this + // test. + impl->set_current_test_info(NULL); +} + +// class TestCase + +// Gets the number of successful tests in this test case. +int TestCase::successful_test_count() const { + return CountIf(test_info_list_, TestPassed); +} + +// Gets the number of failed tests in this test case. +int TestCase::failed_test_count() const { + return CountIf(test_info_list_, TestFailed); +} + +int TestCase::disabled_test_count() const { + return CountIf(test_info_list_, TestDisabled); +} + +// Get the number of tests in this test case that should run. +int TestCase::test_to_run_count() const { + return CountIf(test_info_list_, ShouldRunTest); +} + +// Gets the number of all tests. +int TestCase::total_test_count() const { + return static_cast(test_info_list_.size()); +} + +// Creates a TestCase with the given name. +// +// Arguments: +// +// name: name of the test case +// a_type_param: the name of the test case's type parameter, or NULL if +// this is not a typed or a type-parameterized test case. +// set_up_tc: pointer to the function that sets up the test case +// tear_down_tc: pointer to the function that tears down the test case +TestCase::TestCase(const char* a_name, const char* a_type_param, + Test::SetUpTestCaseFunc set_up_tc, + Test::TearDownTestCaseFunc tear_down_tc) + : name_(a_name), + type_param_(a_type_param ? new std::string(a_type_param) : NULL), + set_up_tc_(set_up_tc), + tear_down_tc_(tear_down_tc), + should_run_(false), + elapsed_time_(0) { +} + +// Destructor of TestCase. +TestCase::~TestCase() { + // Deletes every Test in the collection. + ForEach(test_info_list_, internal::Delete); +} + +// Returns the i-th test among all the tests. i can range from 0 to +// total_test_count() - 1. If i is not in that range, returns NULL. +const TestInfo* TestCase::GetTestInfo(int i) const { + const int index = GetElementOr(test_indices_, i, -1); + return index < 0 ? NULL : test_info_list_[index]; +} + +// Returns the i-th test among all the tests. i can range from 0 to +// total_test_count() - 1. If i is not in that range, returns NULL. +TestInfo* TestCase::GetMutableTestInfo(int i) { + const int index = GetElementOr(test_indices_, i, -1); + return index < 0 ? NULL : test_info_list_[index]; +} + +// Adds a test to this test case. Will delete the test upon +// destruction of the TestCase object. +void TestCase::AddTestInfo(TestInfo * test_info) { + test_info_list_.push_back(test_info); + test_indices_.push_back(static_cast(test_indices_.size())); +} + +// Runs every test in this TestCase. +void TestCase::Run() { + if (!should_run_) return; + + internal::UnitTestImpl* const impl = internal::GetUnitTestImpl(); + impl->set_current_test_case(this); + + TestEventListener* repeater = UnitTest::GetInstance()->listeners().repeater(); + + repeater->OnTestCaseStart(*this); + impl->os_stack_trace_getter()->UponLeavingGTest(); + internal::HandleExceptionsInMethodIfSupported( + this, &TestCase::RunSetUpTestCase, "SetUpTestCase()"); + + const internal::TimeInMillis start = internal::GetTimeInMillis(); + for (int i = 0; i < total_test_count(); i++) { + GetMutableTestInfo(i)->Run(); + } + elapsed_time_ = internal::GetTimeInMillis() - start; + + impl->os_stack_trace_getter()->UponLeavingGTest(); + internal::HandleExceptionsInMethodIfSupported( + this, &TestCase::RunTearDownTestCase, "TearDownTestCase()"); + + repeater->OnTestCaseEnd(*this); + impl->set_current_test_case(NULL); +} + +// Clears the results of all tests in this test case. +void TestCase::ClearResult() { + ForEach(test_info_list_, TestInfo::ClearTestResult); +} + +// Shuffles the tests in this test case. +void TestCase::ShuffleTests(internal::Random* random) { + Shuffle(random, &test_indices_); +} + +// Restores the test order to before the first shuffle. +void TestCase::UnshuffleTests() { + for (size_t i = 0; i < test_indices_.size(); i++) { + test_indices_[i] = static_cast(i); + } +} + +// Formats a countable noun. Depending on its quantity, either the +// singular form or the plural form is used. e.g. +// +// FormatCountableNoun(1, "formula", "formuli") returns "1 formula". +// FormatCountableNoun(5, "book", "books") returns "5 books". +static std::string FormatCountableNoun(int count, + const char * singular_form, + const char * plural_form) { + return internal::String::Format("%d %s", count, + count == 1 ? singular_form : plural_form); +} + +// Formats the count of tests. +static std::string FormatTestCount(int test_count) { + return FormatCountableNoun(test_count, "test", "tests"); +} + +// Formats the count of test cases. +static std::string FormatTestCaseCount(int test_case_count) { + return FormatCountableNoun(test_case_count, "test case", "test cases"); +} + +// Converts a TestPartResult::Type enum to human-friendly string +// representation. Both kNonFatalFailure and kFatalFailure are translated +// to "Failure", as the user usually doesn't care about the difference +// between the two when viewing the test result. +static const char * TestPartResultTypeToString(TestPartResult::Type type) { + switch (type) { + case TestPartResult::kSuccess: + return "Success"; + + case TestPartResult::kNonFatalFailure: + case TestPartResult::kFatalFailure: +#ifdef _MSC_VER + return "error: "; +#else + return "Failure\n"; +#endif + default: + return "Unknown result type"; + } +} + +// Prints a TestPartResult to an std::string. +static std::string PrintTestPartResultToString( + const TestPartResult& test_part_result) { + return (Message() + << internal::FormatFileLocation(test_part_result.file_name(), + test_part_result.line_number()) + << " " << TestPartResultTypeToString(test_part_result.type()) + << test_part_result.message()).GetString(); +} + +// Prints a TestPartResult. +static void PrintTestPartResult(const TestPartResult& test_part_result) { + const std::string& result = + PrintTestPartResultToString(test_part_result); + printf("%s\n", result.c_str()); + fflush(stdout); + // If the test program runs in Visual Studio or a debugger, the + // following statements add the test part result message to the Output + // window such that the user can double-click on it to jump to the + // corresponding source code location; otherwise they do nothing. +#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE + // We don't call OutputDebugString*() on Windows Mobile, as printing + // to stdout is done by OutputDebugString() there already - we don't + // want the same message printed twice. + ::OutputDebugStringA(result.c_str()); + ::OutputDebugStringA("\n"); +#endif +} + +// class PrettyUnitTestResultPrinter + +namespace internal { + +enum GTestColor { + COLOR_DEFAULT, + COLOR_RED, + COLOR_GREEN, + COLOR_YELLOW +}; + +#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE + +// Returns the character attribute for the given color. +WORD GetColorAttribute(GTestColor color) { + switch (color) { + case COLOR_RED: return FOREGROUND_RED; + case COLOR_GREEN: return FOREGROUND_GREEN; + case COLOR_YELLOW: return FOREGROUND_RED | FOREGROUND_GREEN; + default: return 0; + } +} + +#else + +// Returns the ANSI color code for the given color. COLOR_DEFAULT is +// an invalid input. +const char* GetAnsiColorCode(GTestColor color) { + switch (color) { + case COLOR_RED: return "1"; + case COLOR_GREEN: return "2"; + case COLOR_YELLOW: return "3"; + default: return NULL; + }; +} + +#endif // GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE + +// Returns true iff Google Test should use colors in the output. +bool ShouldUseColor(bool stdout_is_tty) { + const char* const gtest_color = GTEST_FLAG(color).c_str(); + + if (String::CaseInsensitiveCStringEquals(gtest_color, "auto")) { +#if GTEST_OS_WINDOWS + // On Windows the TERM variable is usually not set, but the + // console there does support colors. + return stdout_is_tty; +#else + // On non-Windows platforms, we rely on the TERM variable. + const char* const term = posix::GetEnv("TERM"); + const bool term_supports_color = + String::CStringEquals(term, "xterm") || + String::CStringEquals(term, "xterm-color") || + String::CStringEquals(term, "xterm-256color") || + String::CStringEquals(term, "screen") || + String::CStringEquals(term, "linux") || + String::CStringEquals(term, "cygwin"); + return stdout_is_tty && term_supports_color; +#endif // GTEST_OS_WINDOWS + } + + return String::CaseInsensitiveCStringEquals(gtest_color, "yes") || + String::CaseInsensitiveCStringEquals(gtest_color, "true") || + String::CaseInsensitiveCStringEquals(gtest_color, "t") || + String::CStringEquals(gtest_color, "1"); + // We take "yes", "true", "t", and "1" as meaning "yes". If the + // value is neither one of these nor "auto", we treat it as "no" to + // be conservative. +} + +// Helpers for printing colored strings to stdout. Note that on Windows, we +// cannot simply emit special characters and have the terminal change colors. +// This routine must actually emit the characters rather than return a string +// that would be colored when printed, as can be done on Linux. +void ColoredPrintf(GTestColor color, const char* fmt, ...) { + va_list args; + va_start(args, fmt); + +#if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN || GTEST_OS_ZOS || GTEST_OS_IOS + const bool use_color = false; +#else + static const bool in_color_mode = + ShouldUseColor(posix::IsATTY(posix::FileNo(stdout)) != 0); + const bool use_color = in_color_mode && (color != COLOR_DEFAULT); +#endif // GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN || GTEST_OS_ZOS + // The '!= 0' comparison is necessary to satisfy MSVC 7.1. + + if (!use_color) { + vprintf(fmt, args); + va_end(args); + return; + } + +#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE + const HANDLE stdout_handle = GetStdHandle(STD_OUTPUT_HANDLE); + + // Gets the current text color. + CONSOLE_SCREEN_BUFFER_INFO buffer_info; + GetConsoleScreenBufferInfo(stdout_handle, &buffer_info); + const WORD old_color_attrs = buffer_info.wAttributes; + + // We need to flush the stream buffers into the console before each + // SetConsoleTextAttribute call lest it affect the text that is already + // printed but has not yet reached the console. + fflush(stdout); + SetConsoleTextAttribute(stdout_handle, + GetColorAttribute(color) | FOREGROUND_INTENSITY); + vprintf(fmt, args); + + fflush(stdout); + // Restores the text color. + SetConsoleTextAttribute(stdout_handle, old_color_attrs); +#else + printf("\033[0;3%sm", GetAnsiColorCode(color)); + vprintf(fmt, args); + printf("\033[m"); // Resets the terminal to default. +#endif // GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE + va_end(args); +} + +void PrintFullTestCommentIfPresent(const TestInfo& test_info) { + const char* const type_param = test_info.type_param(); + const char* const value_param = test_info.value_param(); + + if (type_param != NULL || value_param != NULL) { + printf(", where "); + if (type_param != NULL) { + printf("TypeParam = %s", type_param); + if (value_param != NULL) + printf(" and "); + } + if (value_param != NULL) { + printf("GetParam() = %s", value_param); + } + } +} + +// This class implements the TestEventListener interface. +// +// Class PrettyUnitTestResultPrinter is copyable. +class PrettyUnitTestResultPrinter : public TestEventListener { + public: + PrettyUnitTestResultPrinter() {} + static void PrintTestName(const char * test_case, const char * test) { + printf("%s.%s", test_case, test); + } + + // The following methods override what's in the TestEventListener class. + virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) {} + virtual void OnTestIterationStart(const UnitTest& unit_test, int iteration); + virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test); + virtual void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) {} + virtual void OnTestCaseStart(const TestCase& test_case); + virtual void OnTestStart(const TestInfo& test_info); + virtual void OnTestPartResult(const TestPartResult& result); + virtual void OnTestEnd(const TestInfo& test_info); + virtual void OnTestCaseEnd(const TestCase& test_case); + virtual void OnEnvironmentsTearDownStart(const UnitTest& unit_test); + virtual void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) {} + virtual void OnTestIterationEnd(const UnitTest& unit_test, int iteration); + virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) {} + + private: + static void PrintFailedTests(const UnitTest& unit_test); +}; + + // Fired before each iteration of tests starts. +void PrettyUnitTestResultPrinter::OnTestIterationStart( + const UnitTest& unit_test, int iteration) { + if (GTEST_FLAG(repeat) != 1) + printf("\nRepeating all tests (iteration %d) . . .\n\n", iteration + 1); + + const char* const filter = GTEST_FLAG(filter).c_str(); + + // Prints the filter if it's not *. This reminds the user that some + // tests may be skipped. + if (!String::CStringEquals(filter, kUniversalFilter)) { + ColoredPrintf(COLOR_YELLOW, + "Note: %s filter = %s\n", GTEST_NAME_, filter); + } + + if (internal::ShouldShard(kTestTotalShards, kTestShardIndex, false)) { + const Int32 shard_index = Int32FromEnvOrDie(kTestShardIndex, -1); + ColoredPrintf(COLOR_YELLOW, + "Note: This is test shard %d of %s.\n", + static_cast(shard_index) + 1, + internal::posix::GetEnv(kTestTotalShards)); + } + + if (GTEST_FLAG(shuffle)) { + ColoredPrintf(COLOR_YELLOW, + "Note: Randomizing tests' orders with a seed of %d .\n", + unit_test.random_seed()); + } + + ColoredPrintf(COLOR_GREEN, "[==========] "); + printf("Running %s from %s.\n", + FormatTestCount(unit_test.test_to_run_count()).c_str(), + FormatTestCaseCount(unit_test.test_case_to_run_count()).c_str()); + fflush(stdout); +} + +void PrettyUnitTestResultPrinter::OnEnvironmentsSetUpStart( + const UnitTest& /*unit_test*/) { + ColoredPrintf(COLOR_GREEN, "[----------] "); + printf("Global test environment set-up.\n"); + fflush(stdout); +} + +void PrettyUnitTestResultPrinter::OnTestCaseStart(const TestCase& test_case) { + const std::string counts = + FormatCountableNoun(test_case.test_to_run_count(), "test", "tests"); + ColoredPrintf(COLOR_GREEN, "[----------] "); + printf("%s from %s", counts.c_str(), test_case.name()); + if (test_case.type_param() == NULL) { + printf("\n"); + } else { + printf(", where TypeParam = %s\n", test_case.type_param()); + } + fflush(stdout); +} + +void PrettyUnitTestResultPrinter::OnTestStart(const TestInfo& test_info) { + ColoredPrintf(COLOR_GREEN, "[ RUN ] "); + PrintTestName(test_info.test_case_name(), test_info.name()); + printf("\n"); + fflush(stdout); +} + +// Called after an assertion failure. +void PrettyUnitTestResultPrinter::OnTestPartResult( + const TestPartResult& result) { + // If the test part succeeded, we don't need to do anything. + if (result.type() == TestPartResult::kSuccess) + return; + + // Print failure message from the assertion (e.g. expected this and got that). + PrintTestPartResult(result); + fflush(stdout); +} + +void PrettyUnitTestResultPrinter::OnTestEnd(const TestInfo& test_info) { + if (test_info.result()->Passed()) { + ColoredPrintf(COLOR_GREEN, "[ OK ] "); + } else { + ColoredPrintf(COLOR_RED, "[ FAILED ] "); + } + PrintTestName(test_info.test_case_name(), test_info.name()); + if (test_info.result()->Failed()) + PrintFullTestCommentIfPresent(test_info); + + if (GTEST_FLAG(print_time)) { + printf(" (%s ms)\n", internal::StreamableToString( + test_info.result()->elapsed_time()).c_str()); + } else { + printf("\n"); + } + fflush(stdout); +} + +void PrettyUnitTestResultPrinter::OnTestCaseEnd(const TestCase& test_case) { + if (!GTEST_FLAG(print_time)) return; + + const std::string counts = + FormatCountableNoun(test_case.test_to_run_count(), "test", "tests"); + ColoredPrintf(COLOR_GREEN, "[----------] "); + printf("%s from %s (%s ms total)\n\n", + counts.c_str(), test_case.name(), + internal::StreamableToString(test_case.elapsed_time()).c_str()); + fflush(stdout); +} + +void PrettyUnitTestResultPrinter::OnEnvironmentsTearDownStart( + const UnitTest& /*unit_test*/) { + ColoredPrintf(COLOR_GREEN, "[----------] "); + printf("Global test environment tear-down\n"); + fflush(stdout); +} + +// Internal helper for printing the list of failed tests. +void PrettyUnitTestResultPrinter::PrintFailedTests(const UnitTest& unit_test) { + const int failed_test_count = unit_test.failed_test_count(); + if (failed_test_count == 0) { + return; + } + + for (int i = 0; i < unit_test.total_test_case_count(); ++i) { + const TestCase& test_case = *unit_test.GetTestCase(i); + if (!test_case.should_run() || (test_case.failed_test_count() == 0)) { + continue; + } + for (int j = 0; j < test_case.total_test_count(); ++j) { + const TestInfo& test_info = *test_case.GetTestInfo(j); + if (!test_info.should_run() || test_info.result()->Passed()) { + continue; + } + ColoredPrintf(COLOR_RED, "[ FAILED ] "); + printf("%s.%s", test_case.name(), test_info.name()); + PrintFullTestCommentIfPresent(test_info); + printf("\n"); + } + } +} + +void PrettyUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test, + int /*iteration*/) { + ColoredPrintf(COLOR_GREEN, "[==========] "); + printf("%s from %s ran.", + FormatTestCount(unit_test.test_to_run_count()).c_str(), + FormatTestCaseCount(unit_test.test_case_to_run_count()).c_str()); + if (GTEST_FLAG(print_time)) { + printf(" (%s ms total)", + internal::StreamableToString(unit_test.elapsed_time()).c_str()); + } + printf("\n"); + ColoredPrintf(COLOR_GREEN, "[ PASSED ] "); + printf("%s.\n", FormatTestCount(unit_test.successful_test_count()).c_str()); + + int num_failures = unit_test.failed_test_count(); + if (!unit_test.Passed()) { + const int failed_test_count = unit_test.failed_test_count(); + ColoredPrintf(COLOR_RED, "[ FAILED ] "); + printf("%s, listed below:\n", FormatTestCount(failed_test_count).c_str()); + PrintFailedTests(unit_test); + printf("\n%2d FAILED %s\n", num_failures, + num_failures == 1 ? "TEST" : "TESTS"); + } + + int num_disabled = unit_test.disabled_test_count(); + if (num_disabled && !GTEST_FLAG(also_run_disabled_tests)) { + if (!num_failures) { + printf("\n"); // Add a spacer if no FAILURE banner is displayed. + } + ColoredPrintf(COLOR_YELLOW, + " YOU HAVE %d DISABLED %s\n\n", + num_disabled, + num_disabled == 1 ? "TEST" : "TESTS"); + } + // Ensure that Google Test output is printed before, e.g., heapchecker output. + fflush(stdout); +} + +// End PrettyUnitTestResultPrinter + +// class TestEventRepeater +// +// This class forwards events to other event listeners. +class TestEventRepeater : public TestEventListener { + public: + TestEventRepeater() : forwarding_enabled_(true) {} + virtual ~TestEventRepeater(); + void Append(TestEventListener *listener); + TestEventListener* Release(TestEventListener* listener); + + // Controls whether events will be forwarded to listeners_. Set to false + // in death test child processes. + bool forwarding_enabled() const { return forwarding_enabled_; } + void set_forwarding_enabled(bool enable) { forwarding_enabled_ = enable; } + + virtual void OnTestProgramStart(const UnitTest& unit_test); + virtual void OnTestIterationStart(const UnitTest& unit_test, int iteration); + virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test); + virtual void OnEnvironmentsSetUpEnd(const UnitTest& unit_test); + virtual void OnTestCaseStart(const TestCase& test_case); + virtual void OnTestStart(const TestInfo& test_info); + virtual void OnTestPartResult(const TestPartResult& result); + virtual void OnTestEnd(const TestInfo& test_info); + virtual void OnTestCaseEnd(const TestCase& test_case); + virtual void OnEnvironmentsTearDownStart(const UnitTest& unit_test); + virtual void OnEnvironmentsTearDownEnd(const UnitTest& unit_test); + virtual void OnTestIterationEnd(const UnitTest& unit_test, int iteration); + virtual void OnTestProgramEnd(const UnitTest& unit_test); + + private: + // Controls whether events will be forwarded to listeners_. Set to false + // in death test child processes. + bool forwarding_enabled_; + // The list of listeners that receive events. + std::vector listeners_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(TestEventRepeater); +}; + +TestEventRepeater::~TestEventRepeater() { + ForEach(listeners_, Delete); +} + +void TestEventRepeater::Append(TestEventListener *listener) { + listeners_.push_back(listener); +} + +// TODO(vladl@google.com): Factor the search functionality into Vector::Find. +TestEventListener* TestEventRepeater::Release(TestEventListener *listener) { + for (size_t i = 0; i < listeners_.size(); ++i) { + if (listeners_[i] == listener) { + listeners_.erase(listeners_.begin() + i); + return listener; + } + } + + return NULL; +} + +// Since most methods are very similar, use macros to reduce boilerplate. +// This defines a member that forwards the call to all listeners. +#define GTEST_REPEATER_METHOD_(Name, Type) \ +void TestEventRepeater::Name(const Type& parameter) { \ + if (forwarding_enabled_) { \ + for (size_t i = 0; i < listeners_.size(); i++) { \ + listeners_[i]->Name(parameter); \ + } \ + } \ +} +// This defines a member that forwards the call to all listeners in reverse +// order. +#define GTEST_REVERSE_REPEATER_METHOD_(Name, Type) \ +void TestEventRepeater::Name(const Type& parameter) { \ + if (forwarding_enabled_) { \ + for (int i = static_cast(listeners_.size()) - 1; i >= 0; i--) { \ + listeners_[i]->Name(parameter); \ + } \ + } \ +} + +GTEST_REPEATER_METHOD_(OnTestProgramStart, UnitTest) +GTEST_REPEATER_METHOD_(OnEnvironmentsSetUpStart, UnitTest) +GTEST_REPEATER_METHOD_(OnTestCaseStart, TestCase) +GTEST_REPEATER_METHOD_(OnTestStart, TestInfo) +GTEST_REPEATER_METHOD_(OnTestPartResult, TestPartResult) +GTEST_REPEATER_METHOD_(OnEnvironmentsTearDownStart, UnitTest) +GTEST_REVERSE_REPEATER_METHOD_(OnEnvironmentsSetUpEnd, UnitTest) +GTEST_REVERSE_REPEATER_METHOD_(OnEnvironmentsTearDownEnd, UnitTest) +GTEST_REVERSE_REPEATER_METHOD_(OnTestEnd, TestInfo) +GTEST_REVERSE_REPEATER_METHOD_(OnTestCaseEnd, TestCase) +GTEST_REVERSE_REPEATER_METHOD_(OnTestProgramEnd, UnitTest) + +#undef GTEST_REPEATER_METHOD_ +#undef GTEST_REVERSE_REPEATER_METHOD_ + +void TestEventRepeater::OnTestIterationStart(const UnitTest& unit_test, + int iteration) { + if (forwarding_enabled_) { + for (size_t i = 0; i < listeners_.size(); i++) { + listeners_[i]->OnTestIterationStart(unit_test, iteration); + } + } +} + +void TestEventRepeater::OnTestIterationEnd(const UnitTest& unit_test, + int iteration) { + if (forwarding_enabled_) { + for (int i = static_cast(listeners_.size()) - 1; i >= 0; i--) { + listeners_[i]->OnTestIterationEnd(unit_test, iteration); + } + } +} + +// End TestEventRepeater + +// This class generates an XML output file. +class XmlUnitTestResultPrinter : public EmptyTestEventListener { + public: + explicit XmlUnitTestResultPrinter(const char* output_file); + + virtual void OnTestIterationEnd(const UnitTest& unit_test, int iteration); + + private: + // Is c a whitespace character that is normalized to a space character + // when it appears in an XML attribute value? + static bool IsNormalizableWhitespace(char c) { + return c == 0x9 || c == 0xA || c == 0xD; + } + + // May c appear in a well-formed XML document? + static bool IsValidXmlCharacter(char c) { + return IsNormalizableWhitespace(c) || c >= 0x20; + } + + // Returns an XML-escaped copy of the input string str. If + // is_attribute is true, the text is meant to appear as an attribute + // value, and normalizable whitespace is preserved by replacing it + // with character references. + static std::string EscapeXml(const char* str, bool is_attribute); + + // Returns the given string with all characters invalid in XML removed. + static string RemoveInvalidXmlCharacters(const string& str); + + // Convenience wrapper around EscapeXml when str is an attribute value. + static std::string EscapeXmlAttribute(const char* str) { + return EscapeXml(str, true); + } + + // Convenience wrapper around EscapeXml when str is not an attribute value. + static std::string EscapeXmlText(const char* str) { + return EscapeXml(str, false); + } + + // Streams an XML CDATA section, escaping invalid CDATA sequences as needed. + static void OutputXmlCDataSection(::std::ostream* stream, const char* data); + + // Streams an XML representation of a TestInfo object. + static void OutputXmlTestInfo(::std::ostream* stream, + const char* test_case_name, + const TestInfo& test_info); + + // Prints an XML representation of a TestCase object + static void PrintXmlTestCase(FILE* out, const TestCase& test_case); + + // Prints an XML summary of unit_test to output stream out. + static void PrintXmlUnitTest(FILE* out, const UnitTest& unit_test); + + // Produces a string representing the test properties in a result as space + // delimited XML attributes based on the property key="value" pairs. + // When the std::string is not empty, it includes a space at the beginning, + // to delimit this attribute from prior attributes. + static std::string TestPropertiesAsXmlAttributes(const TestResult& result); + + // The output file. + const std::string output_file_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(XmlUnitTestResultPrinter); +}; + +// Creates a new XmlUnitTestResultPrinter. +XmlUnitTestResultPrinter::XmlUnitTestResultPrinter(const char* output_file) + : output_file_(output_file) { + if (output_file_.c_str() == NULL || output_file_.empty()) { + fprintf(stderr, "XML output file may not be null\n"); + fflush(stderr); + exit(EXIT_FAILURE); + } +} + +// Called after the unit test ends. +void XmlUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test, + int /*iteration*/) { + FILE* xmlout = NULL; + FilePath output_file(output_file_); + FilePath output_dir(output_file.RemoveFileName()); + + if (output_dir.CreateDirectoriesRecursively()) { + xmlout = posix::FOpen(output_file_.c_str(), "w"); + } + if (xmlout == NULL) { + // TODO(wan): report the reason of the failure. + // + // We don't do it for now as: + // + // 1. There is no urgent need for it. + // 2. It's a bit involved to make the errno variable thread-safe on + // all three operating systems (Linux, Windows, and Mac OS). + // 3. To interpret the meaning of errno in a thread-safe way, + // we need the strerror_r() function, which is not available on + // Windows. + fprintf(stderr, + "Unable to open file \"%s\"\n", + output_file_.c_str()); + fflush(stderr); + exit(EXIT_FAILURE); + } + PrintXmlUnitTest(xmlout, unit_test); + fclose(xmlout); +} + +// Returns an XML-escaped copy of the input string str. If is_attribute +// is true, the text is meant to appear as an attribute value, and +// normalizable whitespace is preserved by replacing it with character +// references. +// +// Invalid XML characters in str, if any, are stripped from the output. +// It is expected that most, if not all, of the text processed by this +// module will consist of ordinary English text. +// If this module is ever modified to produce version 1.1 XML output, +// most invalid characters can be retained using character references. +// TODO(wan): It might be nice to have a minimally invasive, human-readable +// escaping scheme for invalid characters, rather than dropping them. +std::string XmlUnitTestResultPrinter::EscapeXml( + const char* str, bool is_attribute) { + Message m; + + if (str != NULL) { + for (const char* src = str; *src; ++src) { + switch (*src) { + case '<': + m << "<"; + break; + case '>': + m << ">"; + break; + case '&': + m << "&"; + break; + case '\'': + if (is_attribute) + m << "'"; + else + m << '\''; + break; + case '"': + if (is_attribute) + m << """; + else + m << '"'; + break; + default: + if (IsValidXmlCharacter(*src)) { + if (is_attribute && IsNormalizableWhitespace(*src)) + m << String::Format("&#x%02X;", unsigned(*src)); + else + m << *src; + } + break; + } + } + } + + return m.GetString(); +} + +// Returns the given string with all characters invalid in XML removed. +// Currently invalid characters are dropped from the string. An +// alternative is to replace them with certain characters such as . or ?. +string XmlUnitTestResultPrinter::RemoveInvalidXmlCharacters(const string& str) { + string output; + output.reserve(str.size()); + for (string::const_iterator it = str.begin(); it != str.end(); ++it) + if (IsValidXmlCharacter(*it)) + output.push_back(*it); + + return output; +} + +// The following routines generate an XML representation of a UnitTest +// object. +// +// This is how Google Test concepts map to the DTD: +// +// <-- corresponds to a UnitTest object +// <-- corresponds to a TestCase object +// <-- corresponds to a TestInfo object +// ... +// ... +// ... +// <-- individual assertion failures +// +// +// + +// Formats the given time in milliseconds as seconds. +std::string FormatTimeInMillisAsSeconds(TimeInMillis ms) { + ::std::stringstream ss; + ss << ms/1000.0; + return ss.str(); +} + +// Converts the given epoch time in milliseconds to a date string in the ISO +// 8601 format, without the timezone information. +std::string FormatEpochTimeInMillisAsIso8601(TimeInMillis ms) { + // Using non-reentrant version as localtime_r is not portable. + time_t seconds = static_cast(ms / 1000); +#ifdef _MSC_VER +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4996) // Temporarily disables warning 4996 + // (function or variable may be unsafe). + const struct tm* const time_struct = localtime(&seconds); // NOLINT +# pragma warning(pop) // Restores the warning state again. +#else + const struct tm* const time_struct = localtime(&seconds); // NOLINT +#endif + if (time_struct == NULL) + return ""; // Invalid ms value + + return String::Format("%d-%02d-%02dT%02d:%02d:%02d", // YYYY-MM-DDThh:mm:ss + time_struct->tm_year + 1900, + time_struct->tm_mon + 1, + time_struct->tm_mday, + time_struct->tm_hour, + time_struct->tm_min, + time_struct->tm_sec); +} + +// Streams an XML CDATA section, escaping invalid CDATA sequences as needed. +void XmlUnitTestResultPrinter::OutputXmlCDataSection(::std::ostream* stream, + const char* data) { + const char* segment = data; + *stream << ""); + if (next_segment != NULL) { + stream->write( + segment, static_cast(next_segment - segment)); + *stream << "]]>]]>"); + } else { + *stream << segment; + break; + } + } + *stream << "]]>"; +} + +// Prints an XML representation of a TestInfo object. +// TODO(wan): There is also value in printing properties with the plain printer. +void XmlUnitTestResultPrinter::OutputXmlTestInfo(::std::ostream* stream, + const char* test_case_name, + const TestInfo& test_info) { + const TestResult& result = *test_info.result(); + *stream << " \n"; + } + const string location = internal::FormatCompilerIndependentFileLocation( + part.file_name(), part.line_number()); + const string summary = location + "\n" + part.summary(); + *stream << " "; + const string detail = location + "\n" + part.message(); + OutputXmlCDataSection(stream, RemoveInvalidXmlCharacters(detail).c_str()); + *stream << "\n"; + } + } + + if (failures == 0) + *stream << " />\n"; + else + *stream << " \n"; +} + +// Prints an XML representation of a TestCase object +void XmlUnitTestResultPrinter::PrintXmlTestCase(FILE* out, + const TestCase& test_case) { + fprintf(out, + " \n", + FormatTimeInMillisAsSeconds(test_case.elapsed_time()).c_str()); + for (int i = 0; i < test_case.total_test_count(); ++i) { + ::std::stringstream stream; + OutputXmlTestInfo(&stream, test_case.name(), *test_case.GetTestInfo(i)); + fprintf(out, "%s", StringStreamToString(&stream).c_str()); + } + fprintf(out, " \n"); +} + +// Prints an XML summary of unit_test to output stream out. +void XmlUnitTestResultPrinter::PrintXmlUnitTest(FILE* out, + const UnitTest& unit_test) { + fprintf(out, "\n"); + fprintf(out, + "\n"); + for (int i = 0; i < unit_test.total_test_case_count(); ++i) + PrintXmlTestCase(out, *unit_test.GetTestCase(i)); + fprintf(out, "\n"); +} + +// Produces a string representing the test properties in a result as space +// delimited XML attributes based on the property key="value" pairs. +std::string XmlUnitTestResultPrinter::TestPropertiesAsXmlAttributes( + const TestResult& result) { + Message attributes; + for (int i = 0; i < result.test_property_count(); ++i) { + const TestProperty& property = result.GetTestProperty(i); + attributes << " " << property.key() << "=" + << "\"" << EscapeXmlAttribute(property.value()) << "\""; + } + return attributes.GetString(); +} + +// End XmlUnitTestResultPrinter + +#if GTEST_CAN_STREAM_RESULTS_ + +// Streams test results to the given port on the given host machine. +class StreamingListener : public EmptyTestEventListener { + public: + // Escapes '=', '&', '%', and '\n' characters in str as "%xx". + static string UrlEncode(const char* str); + + StreamingListener(const string& host, const string& port) + : sockfd_(-1), host_name_(host), port_num_(port) { + MakeConnection(); + Send("gtest_streaming_protocol_version=1.0\n"); + } + + virtual ~StreamingListener() { + if (sockfd_ != -1) + CloseConnection(); + } + + void OnTestProgramStart(const UnitTest& /* unit_test */) { + Send("event=TestProgramStart\n"); + } + + void OnTestProgramEnd(const UnitTest& unit_test) { + // Note that Google Test current only report elapsed time for each + // test iteration, not for the entire test program. + Send(String::Format("event=TestProgramEnd&passed=%d\n", + unit_test.Passed())); + + // Notify the streaming server to stop. + CloseConnection(); + } + + void OnTestIterationStart(const UnitTest& /* unit_test */, int iteration) { + Send(String::Format("event=TestIterationStart&iteration=%d\n", + iteration)); + } + + void OnTestIterationEnd(const UnitTest& unit_test, int /* iteration */) { + Send(String::Format("event=TestIterationEnd&passed=%d&elapsed_time=%sms\n", + unit_test.Passed(), + StreamableToString(unit_test.elapsed_time()).c_str())); + } + + void OnTestCaseStart(const TestCase& test_case) { + Send(String::Format("event=TestCaseStart&name=%s\n", test_case.name())); + } + + void OnTestCaseEnd(const TestCase& test_case) { + Send(String::Format("event=TestCaseEnd&passed=%d&elapsed_time=%sms\n", + test_case.Passed(), + StreamableToString(test_case.elapsed_time()).c_str())); + } + + void OnTestStart(const TestInfo& test_info) { + Send(String::Format("event=TestStart&name=%s\n", test_info.name())); + } + + void OnTestEnd(const TestInfo& test_info) { + Send(String::Format( + "event=TestEnd&passed=%d&elapsed_time=%sms\n", + (test_info.result())->Passed(), + StreamableToString((test_info.result())->elapsed_time()).c_str())); + } + + void OnTestPartResult(const TestPartResult& test_part_result) { + const char* file_name = test_part_result.file_name(); + if (file_name == NULL) + file_name = ""; + Send(String::Format("event=TestPartResult&file=%s&line=%d&message=", + UrlEncode(file_name).c_str(), + test_part_result.line_number())); + Send(UrlEncode(test_part_result.message()) + "\n"); + } + + private: + // Creates a client socket and connects to the server. + void MakeConnection(); + + // Closes the socket. + void CloseConnection() { + GTEST_CHECK_(sockfd_ != -1) + << "CloseConnection() can be called only when there is a connection."; + + close(sockfd_); + sockfd_ = -1; + } + + // Sends a string to the socket. + void Send(const string& message) { + GTEST_CHECK_(sockfd_ != -1) + << "Send() can be called only when there is a connection."; + + const int len = static_cast(message.length()); + if (write(sockfd_, message.c_str(), len) != len) { + GTEST_LOG_(WARNING) + << "stream_result_to: failed to stream to " + << host_name_ << ":" << port_num_; + } + } + + int sockfd_; // socket file descriptor + const string host_name_; + const string port_num_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(StreamingListener); +}; // class StreamingListener + +// Checks if str contains '=', '&', '%' or '\n' characters. If yes, +// replaces them by "%xx" where xx is their hexadecimal value. For +// example, replaces "=" with "%3D". This algorithm is O(strlen(str)) +// in both time and space -- important as the input str may contain an +// arbitrarily long test failure message and stack trace. +string StreamingListener::UrlEncode(const char* str) { + string result; + result.reserve(strlen(str) + 1); + for (char ch = *str; ch != '\0'; ch = *++str) { + switch (ch) { + case '%': + case '=': + case '&': + case '\n': + result.append(String::Format("%%%02x", static_cast(ch))); + break; + default: + result.push_back(ch); + break; + } + } + return result; +} + +void StreamingListener::MakeConnection() { + GTEST_CHECK_(sockfd_ == -1) + << "MakeConnection() can't be called when there is already a connection."; + + addrinfo hints; + memset(&hints, 0, sizeof(hints)); + hints.ai_family = AF_UNSPEC; // To allow both IPv4 and IPv6 addresses. + hints.ai_socktype = SOCK_STREAM; + addrinfo* servinfo = NULL; + + // Use the getaddrinfo() to get a linked list of IP addresses for + // the given host name. + const int error_num = getaddrinfo( + host_name_.c_str(), port_num_.c_str(), &hints, &servinfo); + if (error_num != 0) { + GTEST_LOG_(WARNING) << "stream_result_to: getaddrinfo() failed: " + << gai_strerror(error_num); + } + + // Loop through all the results and connect to the first we can. + for (addrinfo* cur_addr = servinfo; sockfd_ == -1 && cur_addr != NULL; + cur_addr = cur_addr->ai_next) { + sockfd_ = socket( + cur_addr->ai_family, cur_addr->ai_socktype, cur_addr->ai_protocol); + if (sockfd_ != -1) { + // Connect the client socket to the server socket. + if (connect(sockfd_, cur_addr->ai_addr, cur_addr->ai_addrlen) == -1) { + close(sockfd_); + sockfd_ = -1; + } + } + } + + freeaddrinfo(servinfo); // all done with this structure + + if (sockfd_ == -1) { + GTEST_LOG_(WARNING) << "stream_result_to: failed to connect to " + << host_name_ << ":" << port_num_; + } +} + +// End of class Streaming Listener +#endif // GTEST_CAN_STREAM_RESULTS__ + +// Class ScopedTrace + +// Pushes the given source file location and message onto a per-thread +// trace stack maintained by Google Test. +ScopedTrace::ScopedTrace(const char* file, int line, const Message& message) + GTEST_LOCK_EXCLUDED_(&UnitTest::mutex_) { + TraceInfo trace; + trace.file = file; + trace.line = line; + trace.message = message.GetString(); + + UnitTest::GetInstance()->PushGTestTrace(trace); +} + +// Pops the info pushed by the c'tor. +ScopedTrace::~ScopedTrace() + GTEST_LOCK_EXCLUDED_(&UnitTest::mutex_) { + UnitTest::GetInstance()->PopGTestTrace(); +} + + +// class OsStackTraceGetter + +// Returns the current OS stack trace as an std::string. Parameters: +// +// max_depth - the maximum number of stack frames to be included +// in the trace. +// skip_count - the number of top frames to be skipped; doesn't count +// against max_depth. +// +string OsStackTraceGetter::CurrentStackTrace(int /* max_depth */, + int /* skip_count */) + GTEST_LOCK_EXCLUDED_(mutex_) { + return ""; +} + +void OsStackTraceGetter::UponLeavingGTest() + GTEST_LOCK_EXCLUDED_(mutex_) { +} + +const char* const +OsStackTraceGetter::kElidedFramesMarker = + "... " GTEST_NAME_ " internal frames ..."; + +} // namespace internal + +// class TestEventListeners + +TestEventListeners::TestEventListeners() + : repeater_(new internal::TestEventRepeater()), + default_result_printer_(NULL), + default_xml_generator_(NULL) { +} + +TestEventListeners::~TestEventListeners() { delete repeater_; } + +// Returns the standard listener responsible for the default console +// output. Can be removed from the listeners list to shut down default +// console output. Note that removing this object from the listener list +// with Release transfers its ownership to the user. +void TestEventListeners::Append(TestEventListener* listener) { + repeater_->Append(listener); +} + +// Removes the given event listener from the list and returns it. It then +// becomes the caller's responsibility to delete the listener. Returns +// NULL if the listener is not found in the list. +TestEventListener* TestEventListeners::Release(TestEventListener* listener) { + if (listener == default_result_printer_) + default_result_printer_ = NULL; + else if (listener == default_xml_generator_) + default_xml_generator_ = NULL; + return repeater_->Release(listener); +} + +// Returns repeater that broadcasts the TestEventListener events to all +// subscribers. +TestEventListener* TestEventListeners::repeater() { return repeater_; } + +// Sets the default_result_printer attribute to the provided listener. +// The listener is also added to the listener list and previous +// default_result_printer is removed from it and deleted. The listener can +// also be NULL in which case it will not be added to the list. Does +// nothing if the previous and the current listener objects are the same. +void TestEventListeners::SetDefaultResultPrinter(TestEventListener* listener) { + if (default_result_printer_ != listener) { + // It is an error to pass this method a listener that is already in the + // list. + delete Release(default_result_printer_); + default_result_printer_ = listener; + if (listener != NULL) + Append(listener); + } +} + +// Sets the default_xml_generator attribute to the provided listener. The +// listener is also added to the listener list and previous +// default_xml_generator is removed from it and deleted. The listener can +// also be NULL in which case it will not be added to the list. Does +// nothing if the previous and the current listener objects are the same. +void TestEventListeners::SetDefaultXmlGenerator(TestEventListener* listener) { + if (default_xml_generator_ != listener) { + // It is an error to pass this method a listener that is already in the + // list. + delete Release(default_xml_generator_); + default_xml_generator_ = listener; + if (listener != NULL) + Append(listener); + } +} + +// Controls whether events will be forwarded by the repeater to the +// listeners in the list. +bool TestEventListeners::EventForwardingEnabled() const { + return repeater_->forwarding_enabled(); +} + +void TestEventListeners::SuppressEventForwarding() { + repeater_->set_forwarding_enabled(false); +} + +// class UnitTest + +// Gets the singleton UnitTest object. The first time this method is +// called, a UnitTest object is constructed and returned. Consecutive +// calls will return the same object. +// +// We don't protect this under mutex_ as a user is not supposed to +// call this before main() starts, from which point on the return +// value will never change. +UnitTest * UnitTest::GetInstance() { + // When compiled with MSVC 7.1 in optimized mode, destroying the + // UnitTest object upon exiting the program messes up the exit code, + // causing successful tests to appear failed. We have to use a + // different implementation in this case to bypass the compiler bug. + // This implementation makes the compiler happy, at the cost of + // leaking the UnitTest object. + + // CodeGear C++Builder insists on a public destructor for the + // default implementation. Use this implementation to keep good OO + // design with private destructor. + +#if (_MSC_VER == 1310 && !defined(_DEBUG)) || defined(__BORLANDC__) + static UnitTest* const instance = new UnitTest; + return instance; +#else + static UnitTest instance; + return &instance; +#endif // (_MSC_VER == 1310 && !defined(_DEBUG)) || defined(__BORLANDC__) +} + +// Gets the number of successful test cases. +int UnitTest::successful_test_case_count() const { + return impl()->successful_test_case_count(); +} + +// Gets the number of failed test cases. +int UnitTest::failed_test_case_count() const { + return impl()->failed_test_case_count(); +} + +// Gets the number of all test cases. +int UnitTest::total_test_case_count() const { + return impl()->total_test_case_count(); +} + +// Gets the number of all test cases that contain at least one test +// that should run. +int UnitTest::test_case_to_run_count() const { + return impl()->test_case_to_run_count(); +} + +// Gets the number of successful tests. +int UnitTest::successful_test_count() const { + return impl()->successful_test_count(); +} + +// Gets the number of failed tests. +int UnitTest::failed_test_count() const { return impl()->failed_test_count(); } + +// Gets the number of disabled tests. +int UnitTest::disabled_test_count() const { + return impl()->disabled_test_count(); +} + +// Gets the number of all tests. +int UnitTest::total_test_count() const { return impl()->total_test_count(); } + +// Gets the number of tests that should run. +int UnitTest::test_to_run_count() const { return impl()->test_to_run_count(); } + +// Gets the time of the test program start, in ms from the start of the +// UNIX epoch. +internal::TimeInMillis UnitTest::start_timestamp() const { + return impl()->start_timestamp(); +} + +// Gets the elapsed time, in milliseconds. +internal::TimeInMillis UnitTest::elapsed_time() const { + return impl()->elapsed_time(); +} + +// Returns true iff the unit test passed (i.e. all test cases passed). +bool UnitTest::Passed() const { return impl()->Passed(); } + +// Returns true iff the unit test failed (i.e. some test case failed +// or something outside of all tests failed). +bool UnitTest::Failed() const { return impl()->Failed(); } + +// Gets the i-th test case among all the test cases. i can range from 0 to +// total_test_case_count() - 1. If i is not in that range, returns NULL. +const TestCase* UnitTest::GetTestCase(int i) const { + return impl()->GetTestCase(i); +} + +// Gets the i-th test case among all the test cases. i can range from 0 to +// total_test_case_count() - 1. If i is not in that range, returns NULL. +TestCase* UnitTest::GetMutableTestCase(int i) { + return impl()->GetMutableTestCase(i); +} + +// Returns the list of event listeners that can be used to track events +// inside Google Test. +TestEventListeners& UnitTest::listeners() { + return *impl()->listeners(); +} + +// Registers and returns a global test environment. When a test +// program is run, all global test environments will be set-up in the +// order they were registered. After all tests in the program have +// finished, all global test environments will be torn-down in the +// *reverse* order they were registered. +// +// The UnitTest object takes ownership of the given environment. +// +// We don't protect this under mutex_, as we only support calling it +// from the main thread. +Environment* UnitTest::AddEnvironment(Environment* env) { + if (env == NULL) { + return NULL; + } + + impl_->environments().push_back(env); + return env; +} + +// Adds a TestPartResult to the current TestResult object. All Google Test +// assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc) eventually call +// this to report their results. The user code should use the +// assertion macros instead of calling this directly. +void UnitTest::AddTestPartResult( + TestPartResult::Type result_type, + const char* file_name, + int line_number, + const std::string& message, + const std::string& os_stack_trace) + GTEST_LOCK_EXCLUDED_(mutex_) { + Message msg; + msg << message; + + internal::MutexLock lock(&mutex_); + if (impl_->gtest_trace_stack().size() > 0) { + msg << "\n" << GTEST_NAME_ << " trace:"; + + for (int i = static_cast(impl_->gtest_trace_stack().size()); + i > 0; --i) { + const internal::TraceInfo& trace = impl_->gtest_trace_stack()[i - 1]; + msg << "\n" << internal::FormatFileLocation(trace.file, trace.line) + << " " << trace.message; + } + } + + if (os_stack_trace.c_str() != NULL && !os_stack_trace.empty()) { + msg << internal::kStackTraceMarker << os_stack_trace; + } + + const TestPartResult result = + TestPartResult(result_type, file_name, line_number, + msg.GetString().c_str()); + impl_->GetTestPartResultReporterForCurrentThread()-> + ReportTestPartResult(result); + + if (result_type != TestPartResult::kSuccess) { + // gtest_break_on_failure takes precedence over + // gtest_throw_on_failure. This allows a user to set the latter + // in the code (perhaps in order to use Google Test assertions + // with another testing framework) and specify the former on the + // command line for debugging. + if (GTEST_FLAG(break_on_failure)) { +#if GTEST_OS_WINDOWS + // Using DebugBreak on Windows allows gtest to still break into a debugger + // when a failure happens and both the --gtest_break_on_failure and + // the --gtest_catch_exceptions flags are specified. + DebugBreak(); +#else + // Dereference NULL through a volatile pointer to prevent the compiler + // from removing. We use this rather than abort() or __builtin_trap() for + // portability: Symbian doesn't implement abort() well, and some debuggers + // don't correctly trap abort(). + *static_cast(NULL) = 1; +#endif // GTEST_OS_WINDOWS + } else if (GTEST_FLAG(throw_on_failure)) { +#if GTEST_HAS_EXCEPTIONS + throw GoogleTestFailureException(result); +#else + // We cannot call abort() as it generates a pop-up in debug mode + // that cannot be suppressed in VC 7.1 or below. + exit(1); +#endif + } + } +} + +// Creates and adds a property to the current TestResult. If a property matching +// the supplied value already exists, updates its value instead. +void UnitTest::RecordPropertyForCurrentTest(const char* key, + const char* value) { + const TestProperty test_property(key, value); + impl_->current_test_result()->RecordProperty(test_property); +} + +// Runs all tests in this UnitTest object and prints the result. +// Returns 0 if successful, or 1 otherwise. +// +// We don't protect this under mutex_, as we only support calling it +// from the main thread. +int UnitTest::Run() { + // Captures the value of GTEST_FLAG(catch_exceptions). This value will be + // used for the duration of the program. + impl()->set_catch_exceptions(GTEST_FLAG(catch_exceptions)); + +#if GTEST_HAS_SEH + const bool in_death_test_child_process = + internal::GTEST_FLAG(internal_run_death_test).length() > 0; + + // Either the user wants Google Test to catch exceptions thrown by the + // tests or this is executing in the context of death test child + // process. In either case the user does not want to see pop-up dialogs + // about crashes - they are expected. + if (impl()->catch_exceptions() || in_death_test_child_process) { +# if !GTEST_OS_WINDOWS_MOBILE + // SetErrorMode doesn't exist on CE. + SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOALIGNMENTFAULTEXCEPT | + SEM_NOGPFAULTERRORBOX | SEM_NOOPENFILEERRORBOX); +# endif // !GTEST_OS_WINDOWS_MOBILE + +# if (defined(_MSC_VER) || GTEST_OS_WINDOWS_MINGW) && !GTEST_OS_WINDOWS_MOBILE + // Death test children can be terminated with _abort(). On Windows, + // _abort() can show a dialog with a warning message. This forces the + // abort message to go to stderr instead. + _set_error_mode(_OUT_TO_STDERR); +# endif + +# if _MSC_VER >= 1400 && !GTEST_OS_WINDOWS_MOBILE + // In the debug version, Visual Studio pops up a separate dialog + // offering a choice to debug the aborted program. We need to suppress + // this dialog or it will pop up for every EXPECT/ASSERT_DEATH statement + // executed. Google Test will notify the user of any unexpected + // failure via stderr. + // + // VC++ doesn't define _set_abort_behavior() prior to the version 8.0. + // Users of prior VC versions shall suffer the agony and pain of + // clicking through the countless debug dialogs. + // TODO(vladl@google.com): find a way to suppress the abort dialog() in the + // debug mode when compiled with VC 7.1 or lower. + if (!GTEST_FLAG(break_on_failure)) + _set_abort_behavior( + 0x0, // Clear the following flags: + _WRITE_ABORT_MSG | _CALL_REPORTFAULT); // pop-up window, core dump. +# endif + } +#endif // GTEST_HAS_SEH + + return internal::HandleExceptionsInMethodIfSupported( + impl(), + &internal::UnitTestImpl::RunAllTests, + "auxiliary test code (environments or event listeners)") ? 0 : 1; +} + +// Returns the working directory when the first TEST() or TEST_F() was +// executed. +const char* UnitTest::original_working_dir() const { + return impl_->original_working_dir_.c_str(); +} + +// Returns the TestCase object for the test that's currently running, +// or NULL if no test is running. +const TestCase* UnitTest::current_test_case() const + GTEST_LOCK_EXCLUDED_(mutex_) { + internal::MutexLock lock(&mutex_); + return impl_->current_test_case(); +} + +// Returns the TestInfo object for the test that's currently running, +// or NULL if no test is running. +const TestInfo* UnitTest::current_test_info() const + GTEST_LOCK_EXCLUDED_(mutex_) { + internal::MutexLock lock(&mutex_); + return impl_->current_test_info(); +} + +// Returns the random seed used at the start of the current test run. +int UnitTest::random_seed() const { return impl_->random_seed(); } + +#if GTEST_HAS_PARAM_TEST +// Returns ParameterizedTestCaseRegistry object used to keep track of +// value-parameterized tests and instantiate and register them. +internal::ParameterizedTestCaseRegistry& + UnitTest::parameterized_test_registry() + GTEST_LOCK_EXCLUDED_(mutex_) { + return impl_->parameterized_test_registry(); +} +#endif // GTEST_HAS_PARAM_TEST + +// Creates an empty UnitTest. +UnitTest::UnitTest() { + impl_ = new internal::UnitTestImpl(this); +} + +// Destructor of UnitTest. +UnitTest::~UnitTest() { + delete impl_; +} + +// Pushes a trace defined by SCOPED_TRACE() on to the per-thread +// Google Test trace stack. +void UnitTest::PushGTestTrace(const internal::TraceInfo& trace) + GTEST_LOCK_EXCLUDED_(mutex_) { + internal::MutexLock lock(&mutex_); + impl_->gtest_trace_stack().push_back(trace); +} + +// Pops a trace from the per-thread Google Test trace stack. +void UnitTest::PopGTestTrace() + GTEST_LOCK_EXCLUDED_(mutex_) { + internal::MutexLock lock(&mutex_); + impl_->gtest_trace_stack().pop_back(); +} + +namespace internal { + +UnitTestImpl::UnitTestImpl(UnitTest* parent) + : parent_(parent), +#ifdef _MSC_VER +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4355) // Temporarily disables warning 4355 + // (using this in initializer). + default_global_test_part_result_reporter_(this), + default_per_thread_test_part_result_reporter_(this), +# pragma warning(pop) // Restores the warning state again. +#else + default_global_test_part_result_reporter_(this), + default_per_thread_test_part_result_reporter_(this), +#endif // _MSC_VER + global_test_part_result_repoter_( + &default_global_test_part_result_reporter_), + per_thread_test_part_result_reporter_( + &default_per_thread_test_part_result_reporter_), +#if GTEST_HAS_PARAM_TEST + parameterized_test_registry_(), + parameterized_tests_registered_(false), +#endif // GTEST_HAS_PARAM_TEST + last_death_test_case_(-1), + current_test_case_(NULL), + current_test_info_(NULL), + ad_hoc_test_result_(), + os_stack_trace_getter_(NULL), + post_flag_parse_init_performed_(false), + random_seed_(0), // Will be overridden by the flag before first use. + random_(0), // Will be reseeded before first use. + start_timestamp_(0), + elapsed_time_(0), +#if GTEST_HAS_DEATH_TEST + internal_run_death_test_flag_(NULL), + death_test_factory_(new DefaultDeathTestFactory), +#endif + // Will be overridden by the flag before first use. + catch_exceptions_(false) { + listeners()->SetDefaultResultPrinter(new PrettyUnitTestResultPrinter); +} + +UnitTestImpl::~UnitTestImpl() { + // Deletes every TestCase. + ForEach(test_cases_, internal::Delete); + + // Deletes every Environment. + ForEach(environments_, internal::Delete); + + delete os_stack_trace_getter_; +} + +#if GTEST_HAS_DEATH_TEST +// Disables event forwarding if the control is currently in a death test +// subprocess. Must not be called before InitGoogleTest. +void UnitTestImpl::SuppressTestEventsIfInSubprocess() { + if (internal_run_death_test_flag_.get() != NULL) + listeners()->SuppressEventForwarding(); +} +#endif // GTEST_HAS_DEATH_TEST + +// Initializes event listeners performing XML output as specified by +// UnitTestOptions. Must not be called before InitGoogleTest. +void UnitTestImpl::ConfigureXmlOutput() { + const std::string& output_format = UnitTestOptions::GetOutputFormat(); + if (output_format == "xml") { + listeners()->SetDefaultXmlGenerator(new XmlUnitTestResultPrinter( + UnitTestOptions::GetAbsolutePathToOutputFile().c_str())); + } else if (output_format != "") { + printf("WARNING: unrecognized output format \"%s\" ignored.\n", + output_format.c_str()); + fflush(stdout); + } +} + +#if GTEST_CAN_STREAM_RESULTS_ +// Initializes event listeners for streaming test results in string form. +// Must not be called before InitGoogleTest. +void UnitTestImpl::ConfigureStreamingOutput() { + const std::string& target = GTEST_FLAG(stream_result_to); + if (!target.empty()) { + const size_t pos = target.find(':'); + if (pos != std::string::npos) { + listeners()->Append(new StreamingListener(target.substr(0, pos), + target.substr(pos+1))); + } else { + printf("WARNING: unrecognized streaming target \"%s\" ignored.\n", + target.c_str()); + fflush(stdout); + } + } +} +#endif // GTEST_CAN_STREAM_RESULTS_ + +// Performs initialization dependent upon flag values obtained in +// ParseGoogleTestFlagsOnly. Is called from InitGoogleTest after the call to +// ParseGoogleTestFlagsOnly. In case a user neglects to call InitGoogleTest +// this function is also called from RunAllTests. Since this function can be +// called more than once, it has to be idempotent. +void UnitTestImpl::PostFlagParsingInit() { + // Ensures that this function does not execute more than once. + if (!post_flag_parse_init_performed_) { + post_flag_parse_init_performed_ = true; + +#if GTEST_HAS_DEATH_TEST + InitDeathTestSubprocessControlInfo(); + SuppressTestEventsIfInSubprocess(); +#endif // GTEST_HAS_DEATH_TEST + + // Registers parameterized tests. This makes parameterized tests + // available to the UnitTest reflection API without running + // RUN_ALL_TESTS. + RegisterParameterizedTests(); + + // Configures listeners for XML output. This makes it possible for users + // to shut down the default XML output before invoking RUN_ALL_TESTS. + ConfigureXmlOutput(); + +#if GTEST_CAN_STREAM_RESULTS_ + // Configures listeners for streaming test results to the specified server. + ConfigureStreamingOutput(); +#endif // GTEST_CAN_STREAM_RESULTS_ + } +} + +// A predicate that checks the name of a TestCase against a known +// value. +// +// This is used for implementation of the UnitTest class only. We put +// it in the anonymous namespace to prevent polluting the outer +// namespace. +// +// TestCaseNameIs is copyable. +class TestCaseNameIs { + public: + // Constructor. + explicit TestCaseNameIs(const std::string& name) + : name_(name) {} + + // Returns true iff the name of test_case matches name_. + bool operator()(const TestCase* test_case) const { + return test_case != NULL && strcmp(test_case->name(), name_.c_str()) == 0; + } + + private: + std::string name_; +}; + +// Finds and returns a TestCase with the given name. If one doesn't +// exist, creates one and returns it. It's the CALLER'S +// RESPONSIBILITY to ensure that this function is only called WHEN THE +// TESTS ARE NOT SHUFFLED. +// +// Arguments: +// +// test_case_name: name of the test case +// type_param: the name of the test case's type parameter, or NULL if +// this is not a typed or a type-parameterized test case. +// set_up_tc: pointer to the function that sets up the test case +// tear_down_tc: pointer to the function that tears down the test case +TestCase* UnitTestImpl::GetTestCase(const char* test_case_name, + const char* type_param, + Test::SetUpTestCaseFunc set_up_tc, + Test::TearDownTestCaseFunc tear_down_tc) { + // Can we find a TestCase with the given name? + const std::vector::const_iterator test_case = + std::find_if(test_cases_.begin(), test_cases_.end(), + TestCaseNameIs(test_case_name)); + + if (test_case != test_cases_.end()) + return *test_case; + + // No. Let's create one. + TestCase* const new_test_case = + new TestCase(test_case_name, type_param, set_up_tc, tear_down_tc); + + // Is this a death test case? + if (internal::UnitTestOptions::MatchesFilter(test_case_name, + kDeathTestCaseFilter)) { + // Yes. Inserts the test case after the last death test case + // defined so far. This only works when the test cases haven't + // been shuffled. Otherwise we may end up running a death test + // after a non-death test. + ++last_death_test_case_; + test_cases_.insert(test_cases_.begin() + last_death_test_case_, + new_test_case); + } else { + // No. Appends to the end of the list. + test_cases_.push_back(new_test_case); + } + + test_case_indices_.push_back(static_cast(test_case_indices_.size())); + return new_test_case; +} + +// Helpers for setting up / tearing down the given environment. They +// are for use in the ForEach() function. +static void SetUpEnvironment(Environment* env) { env->SetUp(); } +static void TearDownEnvironment(Environment* env) { env->TearDown(); } + +// Runs all tests in this UnitTest object, prints the result, and +// returns true if all tests are successful. If any exception is +// thrown during a test, the test is considered to be failed, but the +// rest of the tests will still be run. +// +// When parameterized tests are enabled, it expands and registers +// parameterized tests first in RegisterParameterizedTests(). +// All other functions called from RunAllTests() may safely assume that +// parameterized tests are ready to be counted and run. +bool UnitTestImpl::RunAllTests() { + // Makes sure InitGoogleTest() was called. + if (!GTestIsInitialized()) { + printf("%s", + "\nThis test program did NOT call ::testing::InitGoogleTest " + "before calling RUN_ALL_TESTS(). Please fix it.\n"); + return false; + } + + // Do not run any test if the --help flag was specified. + if (g_help_flag) + return true; + + // Repeats the call to the post-flag parsing initialization in case the + // user didn't call InitGoogleTest. + PostFlagParsingInit(); + + // Even if sharding is not on, test runners may want to use the + // GTEST_SHARD_STATUS_FILE to query whether the test supports the sharding + // protocol. + internal::WriteToShardStatusFileIfNeeded(); + + // True iff we are in a subprocess for running a thread-safe-style + // death test. + bool in_subprocess_for_death_test = false; + +#if GTEST_HAS_DEATH_TEST + in_subprocess_for_death_test = (internal_run_death_test_flag_.get() != NULL); +#endif // GTEST_HAS_DEATH_TEST + + const bool should_shard = ShouldShard(kTestTotalShards, kTestShardIndex, + in_subprocess_for_death_test); + + // Compares the full test names with the filter to decide which + // tests to run. + const bool has_tests_to_run = FilterTests(should_shard + ? HONOR_SHARDING_PROTOCOL + : IGNORE_SHARDING_PROTOCOL) > 0; + + // Lists the tests and exits if the --gtest_list_tests flag was specified. + if (GTEST_FLAG(list_tests)) { + // This must be called *after* FilterTests() has been called. + ListTestsMatchingFilter(); + return true; + } + + random_seed_ = GTEST_FLAG(shuffle) ? + GetRandomSeedFromFlag(GTEST_FLAG(random_seed)) : 0; + + // True iff at least one test has failed. + bool failed = false; + + TestEventListener* repeater = listeners()->repeater(); + + start_timestamp_ = GetTimeInMillis(); + repeater->OnTestProgramStart(*parent_); + + // How many times to repeat the tests? We don't want to repeat them + // when we are inside the subprocess of a death test. + const int repeat = in_subprocess_for_death_test ? 1 : GTEST_FLAG(repeat); + // Repeats forever if the repeat count is negative. + const bool forever = repeat < 0; + for (int i = 0; forever || i != repeat; i++) { + // We want to preserve failures generated by ad-hoc test + // assertions executed before RUN_ALL_TESTS(). + ClearNonAdHocTestResult(); + + const TimeInMillis start = GetTimeInMillis(); + + // Shuffles test cases and tests if requested. + if (has_tests_to_run && GTEST_FLAG(shuffle)) { + random()->Reseed(random_seed_); + // This should be done before calling OnTestIterationStart(), + // such that a test event listener can see the actual test order + // in the event. + ShuffleTests(); + } + + // Tells the unit test event listeners that the tests are about to start. + repeater->OnTestIterationStart(*parent_, i); + + // Runs each test case if there is at least one test to run. + if (has_tests_to_run) { + // Sets up all environments beforehand. + repeater->OnEnvironmentsSetUpStart(*parent_); + ForEach(environments_, SetUpEnvironment); + repeater->OnEnvironmentsSetUpEnd(*parent_); + + // Runs the tests only if there was no fatal failure during global + // set-up. + if (!Test::HasFatalFailure()) { + for (int test_index = 0; test_index < total_test_case_count(); + test_index++) { + GetMutableTestCase(test_index)->Run(); + } + } + + // Tears down all environments in reverse order afterwards. + repeater->OnEnvironmentsTearDownStart(*parent_); + std::for_each(environments_.rbegin(), environments_.rend(), + TearDownEnvironment); + repeater->OnEnvironmentsTearDownEnd(*parent_); + } + + elapsed_time_ = GetTimeInMillis() - start; + + // Tells the unit test event listener that the tests have just finished. + repeater->OnTestIterationEnd(*parent_, i); + + // Gets the result and clears it. + if (!Passed()) { + failed = true; + } + + // Restores the original test order after the iteration. This + // allows the user to quickly repro a failure that happens in the + // N-th iteration without repeating the first (N - 1) iterations. + // This is not enclosed in "if (GTEST_FLAG(shuffle)) { ... }", in + // case the user somehow changes the value of the flag somewhere + // (it's always safe to unshuffle the tests). + UnshuffleTests(); + + if (GTEST_FLAG(shuffle)) { + // Picks a new random seed for each iteration. + random_seed_ = GetNextRandomSeed(random_seed_); + } + } + + repeater->OnTestProgramEnd(*parent_); + + return !failed; +} + +// Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file +// if the variable is present. If a file already exists at this location, this +// function will write over it. If the variable is present, but the file cannot +// be created, prints an error and exits. +void WriteToShardStatusFileIfNeeded() { + const char* const test_shard_file = posix::GetEnv(kTestShardStatusFile); + if (test_shard_file != NULL) { + FILE* const file = posix::FOpen(test_shard_file, "w"); + if (file == NULL) { + ColoredPrintf(COLOR_RED, + "Could not write to the test shard status file \"%s\" " + "specified by the %s environment variable.\n", + test_shard_file, kTestShardStatusFile); + fflush(stdout); + exit(EXIT_FAILURE); + } + fclose(file); + } +} + +// Checks whether sharding is enabled by examining the relevant +// environment variable values. If the variables are present, +// but inconsistent (i.e., shard_index >= total_shards), prints +// an error and exits. If in_subprocess_for_death_test, sharding is +// disabled because it must only be applied to the original test +// process. Otherwise, we could filter out death tests we intended to execute. +bool ShouldShard(const char* total_shards_env, + const char* shard_index_env, + bool in_subprocess_for_death_test) { + if (in_subprocess_for_death_test) { + return false; + } + + const Int32 total_shards = Int32FromEnvOrDie(total_shards_env, -1); + const Int32 shard_index = Int32FromEnvOrDie(shard_index_env, -1); + + if (total_shards == -1 && shard_index == -1) { + return false; + } else if (total_shards == -1 && shard_index != -1) { + const Message msg = Message() + << "Invalid environment variables: you have " + << kTestShardIndex << " = " << shard_index + << ", but have left " << kTestTotalShards << " unset.\n"; + ColoredPrintf(COLOR_RED, msg.GetString().c_str()); + fflush(stdout); + exit(EXIT_FAILURE); + } else if (total_shards != -1 && shard_index == -1) { + const Message msg = Message() + << "Invalid environment variables: you have " + << kTestTotalShards << " = " << total_shards + << ", but have left " << kTestShardIndex << " unset.\n"; + ColoredPrintf(COLOR_RED, msg.GetString().c_str()); + fflush(stdout); + exit(EXIT_FAILURE); + } else if (shard_index < 0 || shard_index >= total_shards) { + const Message msg = Message() + << "Invalid environment variables: we require 0 <= " + << kTestShardIndex << " < " << kTestTotalShards + << ", but you have " << kTestShardIndex << "=" << shard_index + << ", " << kTestTotalShards << "=" << total_shards << ".\n"; + ColoredPrintf(COLOR_RED, msg.GetString().c_str()); + fflush(stdout); + exit(EXIT_FAILURE); + } + + return total_shards > 1; +} + +// Parses the environment variable var as an Int32. If it is unset, +// returns default_val. If it is not an Int32, prints an error +// and aborts. +Int32 Int32FromEnvOrDie(const char* var, Int32 default_val) { + const char* str_val = posix::GetEnv(var); + if (str_val == NULL) { + return default_val; + } + + Int32 result; + if (!ParseInt32(Message() << "The value of environment variable " << var, + str_val, &result)) { + exit(EXIT_FAILURE); + } + return result; +} + +// Given the total number of shards, the shard index, and the test id, +// returns true iff the test should be run on this shard. The test id is +// some arbitrary but unique non-negative integer assigned to each test +// method. Assumes that 0 <= shard_index < total_shards. +bool ShouldRunTestOnShard(int total_shards, int shard_index, int test_id) { + return (test_id % total_shards) == shard_index; +} + +// Compares the name of each test with the user-specified filter to +// decide whether the test should be run, then records the result in +// each TestCase and TestInfo object. +// If shard_tests == true, further filters tests based on sharding +// variables in the environment - see +// http://code.google.com/p/googletest/wiki/GoogleTestAdvancedGuide. +// Returns the number of tests that should run. +int UnitTestImpl::FilterTests(ReactionToSharding shard_tests) { + const Int32 total_shards = shard_tests == HONOR_SHARDING_PROTOCOL ? + Int32FromEnvOrDie(kTestTotalShards, -1) : -1; + const Int32 shard_index = shard_tests == HONOR_SHARDING_PROTOCOL ? + Int32FromEnvOrDie(kTestShardIndex, -1) : -1; + + // num_runnable_tests are the number of tests that will + // run across all shards (i.e., match filter and are not disabled). + // num_selected_tests are the number of tests to be run on + // this shard. + int num_runnable_tests = 0; + int num_selected_tests = 0; + for (size_t i = 0; i < test_cases_.size(); i++) { + TestCase* const test_case = test_cases_[i]; + const std::string &test_case_name = test_case->name(); + test_case->set_should_run(false); + + for (size_t j = 0; j < test_case->test_info_list().size(); j++) { + TestInfo* const test_info = test_case->test_info_list()[j]; + const std::string test_name(test_info->name()); + // A test is disabled if test case name or test name matches + // kDisableTestFilter. + const bool is_disabled = + internal::UnitTestOptions::MatchesFilter(test_case_name, + kDisableTestFilter) || + internal::UnitTestOptions::MatchesFilter(test_name, + kDisableTestFilter); + test_info->is_disabled_ = is_disabled; + + const bool matches_filter = + internal::UnitTestOptions::FilterMatchesTest(test_case_name, + test_name); + test_info->matches_filter_ = matches_filter; + + const bool is_runnable = + (GTEST_FLAG(also_run_disabled_tests) || !is_disabled) && + matches_filter; + + const bool is_selected = is_runnable && + (shard_tests == IGNORE_SHARDING_PROTOCOL || + ShouldRunTestOnShard(total_shards, shard_index, + num_runnable_tests)); + + num_runnable_tests += is_runnable; + num_selected_tests += is_selected; + + test_info->should_run_ = is_selected; + test_case->set_should_run(test_case->should_run() || is_selected); + } + } + return num_selected_tests; +} + +// Prints the names of the tests matching the user-specified filter flag. +void UnitTestImpl::ListTestsMatchingFilter() { + for (size_t i = 0; i < test_cases_.size(); i++) { + const TestCase* const test_case = test_cases_[i]; + bool printed_test_case_name = false; + + for (size_t j = 0; j < test_case->test_info_list().size(); j++) { + const TestInfo* const test_info = + test_case->test_info_list()[j]; + if (test_info->matches_filter_) { + if (!printed_test_case_name) { + printed_test_case_name = true; + printf("%s.\n", test_case->name()); + } + printf(" %s\n", test_info->name()); + } + } + } + fflush(stdout); +} + +// Sets the OS stack trace getter. +// +// Does nothing if the input and the current OS stack trace getter are +// the same; otherwise, deletes the old getter and makes the input the +// current getter. +void UnitTestImpl::set_os_stack_trace_getter( + OsStackTraceGetterInterface* getter) { + if (os_stack_trace_getter_ != getter) { + delete os_stack_trace_getter_; + os_stack_trace_getter_ = getter; + } +} + +// Returns the current OS stack trace getter if it is not NULL; +// otherwise, creates an OsStackTraceGetter, makes it the current +// getter, and returns it. +OsStackTraceGetterInterface* UnitTestImpl::os_stack_trace_getter() { + if (os_stack_trace_getter_ == NULL) { + os_stack_trace_getter_ = new OsStackTraceGetter; + } + + return os_stack_trace_getter_; +} + +// Returns the TestResult for the test that's currently running, or +// the TestResult for the ad hoc test if no test is running. +TestResult* UnitTestImpl::current_test_result() { + return current_test_info_ ? + &(current_test_info_->result_) : &ad_hoc_test_result_; +} + +// Shuffles all test cases, and the tests within each test case, +// making sure that death tests are still run first. +void UnitTestImpl::ShuffleTests() { + // Shuffles the death test cases. + ShuffleRange(random(), 0, last_death_test_case_ + 1, &test_case_indices_); + + // Shuffles the non-death test cases. + ShuffleRange(random(), last_death_test_case_ + 1, + static_cast(test_cases_.size()), &test_case_indices_); + + // Shuffles the tests inside each test case. + for (size_t i = 0; i < test_cases_.size(); i++) { + test_cases_[i]->ShuffleTests(random()); + } +} + +// Restores the test cases and tests to their order before the first shuffle. +void UnitTestImpl::UnshuffleTests() { + for (size_t i = 0; i < test_cases_.size(); i++) { + // Unshuffles the tests in each test case. + test_cases_[i]->UnshuffleTests(); + // Resets the index of each test case. + test_case_indices_[i] = static_cast(i); + } +} + +// Returns the current OS stack trace as an std::string. +// +// The maximum number of stack frames to be included is specified by +// the gtest_stack_trace_depth flag. The skip_count parameter +// specifies the number of top frames to be skipped, which doesn't +// count against the number of frames to be included. +// +// For example, if Foo() calls Bar(), which in turn calls +// GetCurrentOsStackTraceExceptTop(..., 1), Foo() will be included in +// the trace but Bar() and GetCurrentOsStackTraceExceptTop() won't. +std::string GetCurrentOsStackTraceExceptTop(UnitTest* /*unit_test*/, + int skip_count) { + // We pass skip_count + 1 to skip this wrapper function in addition + // to what the user really wants to skip. + return GetUnitTestImpl()->CurrentOsStackTraceExceptTop(skip_count + 1); +} + +// Used by the GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_ macro to +// suppress unreachable code warnings. +namespace { +class ClassUniqueToAlwaysTrue {}; +} + +bool IsTrue(bool condition) { return condition; } + +bool AlwaysTrue() { +#if GTEST_HAS_EXCEPTIONS + // This condition is always false so AlwaysTrue() never actually throws, + // but it makes the compiler think that it may throw. + if (IsTrue(false)) + throw ClassUniqueToAlwaysTrue(); +#endif // GTEST_HAS_EXCEPTIONS + return true; +} + +// If *pstr starts with the given prefix, modifies *pstr to be right +// past the prefix and returns true; otherwise leaves *pstr unchanged +// and returns false. None of pstr, *pstr, and prefix can be NULL. +bool SkipPrefix(const char* prefix, const char** pstr) { + const size_t prefix_len = strlen(prefix); + if (strncmp(*pstr, prefix, prefix_len) == 0) { + *pstr += prefix_len; + return true; + } + return false; +} + +// Parses a string as a command line flag. The string should have +// the format "--flag=value". When def_optional is true, the "=value" +// part can be omitted. +// +// Returns the value of the flag, or NULL if the parsing failed. +const char* ParseFlagValue(const char* str, + const char* flag, + bool def_optional) { + // str and flag must not be NULL. + if (str == NULL || flag == NULL) return NULL; + + // The flag must start with "--" followed by GTEST_FLAG_PREFIX_. + const std::string flag_str = std::string("--") + GTEST_FLAG_PREFIX_ + flag; + const size_t flag_len = flag_str.length(); + if (strncmp(str, flag_str.c_str(), flag_len) != 0) return NULL; + + // Skips the flag name. + const char* flag_end = str + flag_len; + + // When def_optional is true, it's OK to not have a "=value" part. + if (def_optional && (flag_end[0] == '\0')) { + return flag_end; + } + + // If def_optional is true and there are more characters after the + // flag name, or if def_optional is false, there must be a '=' after + // the flag name. + if (flag_end[0] != '=') return NULL; + + // Returns the string after "=". + return flag_end + 1; +} + +// Parses a string for a bool flag, in the form of either +// "--flag=value" or "--flag". +// +// In the former case, the value is taken as true as long as it does +// not start with '0', 'f', or 'F'. +// +// In the latter case, the value is taken as true. +// +// On success, stores the value of the flag in *value, and returns +// true. On failure, returns false without changing *value. +bool ParseBoolFlag(const char* str, const char* flag, bool* value) { + // Gets the value of the flag as a string. + const char* const value_str = ParseFlagValue(str, flag, true); + + // Aborts if the parsing failed. + if (value_str == NULL) return false; + + // Converts the string value to a bool. + *value = !(*value_str == '0' || *value_str == 'f' || *value_str == 'F'); + return true; +} + +// Parses a string for an Int32 flag, in the form of +// "--flag=value". +// +// On success, stores the value of the flag in *value, and returns +// true. On failure, returns false without changing *value. +bool ParseInt32Flag(const char* str, const char* flag, Int32* value) { + // Gets the value of the flag as a string. + const char* const value_str = ParseFlagValue(str, flag, false); + + // Aborts if the parsing failed. + if (value_str == NULL) return false; + + // Sets *value to the value of the flag. + return ParseInt32(Message() << "The value of flag --" << flag, + value_str, value); +} + +// Parses a string for a string flag, in the form of +// "--flag=value". +// +// On success, stores the value of the flag in *value, and returns +// true. On failure, returns false without changing *value. +bool ParseStringFlag(const char* str, const char* flag, std::string* value) { + // Gets the value of the flag as a string. + const char* const value_str = ParseFlagValue(str, flag, false); + + // Aborts if the parsing failed. + if (value_str == NULL) return false; + + // Sets *value to the value of the flag. + *value = value_str; + return true; +} + +// Determines whether a string has a prefix that Google Test uses for its +// flags, i.e., starts with GTEST_FLAG_PREFIX_ or GTEST_FLAG_PREFIX_DASH_. +// If Google Test detects that a command line flag has its prefix but is not +// recognized, it will print its help message. Flags starting with +// GTEST_INTERNAL_PREFIX_ followed by "internal_" are considered Google Test +// internal flags and do not trigger the help message. +static bool HasGoogleTestFlagPrefix(const char* str) { + return (SkipPrefix("--", &str) || + SkipPrefix("-", &str) || + SkipPrefix("/", &str)) && + !SkipPrefix(GTEST_FLAG_PREFIX_ "internal_", &str) && + (SkipPrefix(GTEST_FLAG_PREFIX_, &str) || + SkipPrefix(GTEST_FLAG_PREFIX_DASH_, &str)); +} + +// Prints a string containing code-encoded text. The following escape +// sequences can be used in the string to control the text color: +// +// @@ prints a single '@' character. +// @R changes the color to red. +// @G changes the color to green. +// @Y changes the color to yellow. +// @D changes to the default terminal text color. +// +// TODO(wan@google.com): Write tests for this once we add stdout +// capturing to Google Test. +static void PrintColorEncoded(const char* str) { + GTestColor color = COLOR_DEFAULT; // The current color. + + // Conceptually, we split the string into segments divided by escape + // sequences. Then we print one segment at a time. At the end of + // each iteration, the str pointer advances to the beginning of the + // next segment. + for (;;) { + const char* p = strchr(str, '@'); + if (p == NULL) { + ColoredPrintf(color, "%s", str); + return; + } + + ColoredPrintf(color, "%s", std::string(str, p).c_str()); + + const char ch = p[1]; + str = p + 2; + if (ch == '@') { + ColoredPrintf(color, "@"); + } else if (ch == 'D') { + color = COLOR_DEFAULT; + } else if (ch == 'R') { + color = COLOR_RED; + } else if (ch == 'G') { + color = COLOR_GREEN; + } else if (ch == 'Y') { + color = COLOR_YELLOW; + } else { + --str; + } + } +} + +static const char kColorEncodedHelpMessage[] = +"This program contains tests written using " GTEST_NAME_ ". You can use the\n" +"following command line flags to control its behavior:\n" +"\n" +"Test Selection:\n" +" @G--" GTEST_FLAG_PREFIX_ "list_tests@D\n" +" List the names of all tests instead of running them. The name of\n" +" TEST(Foo, Bar) is \"Foo.Bar\".\n" +" @G--" GTEST_FLAG_PREFIX_ "filter=@YPOSTIVE_PATTERNS" + "[@G-@YNEGATIVE_PATTERNS]@D\n" +" Run only the tests whose name matches one of the positive patterns but\n" +" none of the negative patterns. '?' matches any single character; '*'\n" +" matches any substring; ':' separates two patterns.\n" +" @G--" GTEST_FLAG_PREFIX_ "also_run_disabled_tests@D\n" +" Run all disabled tests too.\n" +"\n" +"Test Execution:\n" +" @G--" GTEST_FLAG_PREFIX_ "repeat=@Y[COUNT]@D\n" +" Run the tests repeatedly; use a negative count to repeat forever.\n" +" @G--" GTEST_FLAG_PREFIX_ "shuffle@D\n" +" Randomize tests' orders on every iteration.\n" +" @G--" GTEST_FLAG_PREFIX_ "random_seed=@Y[NUMBER]@D\n" +" Random number seed to use for shuffling test orders (between 1 and\n" +" 99999, or 0 to use a seed based on the current time).\n" +"\n" +"Test Output:\n" +" @G--" GTEST_FLAG_PREFIX_ "color=@Y(@Gyes@Y|@Gno@Y|@Gauto@Y)@D\n" +" Enable/disable colored output. The default is @Gauto@D.\n" +" -@G-" GTEST_FLAG_PREFIX_ "print_time=0@D\n" +" Don't print the elapsed time of each test.\n" +" @G--" GTEST_FLAG_PREFIX_ "output=xml@Y[@G:@YDIRECTORY_PATH@G" + GTEST_PATH_SEP_ "@Y|@G:@YFILE_PATH]@D\n" +" Generate an XML report in the given directory or with the given file\n" +" name. @YFILE_PATH@D defaults to @Gtest_details.xml@D.\n" +#if GTEST_CAN_STREAM_RESULTS_ +" @G--" GTEST_FLAG_PREFIX_ "stream_result_to=@YHOST@G:@YPORT@D\n" +" Stream test results to the given server.\n" +#endif // GTEST_CAN_STREAM_RESULTS_ +"\n" +"Assertion Behavior:\n" +#if GTEST_HAS_DEATH_TEST && !GTEST_OS_WINDOWS +" @G--" GTEST_FLAG_PREFIX_ "death_test_style=@Y(@Gfast@Y|@Gthreadsafe@Y)@D\n" +" Set the default death test style.\n" +#endif // GTEST_HAS_DEATH_TEST && !GTEST_OS_WINDOWS +" @G--" GTEST_FLAG_PREFIX_ "break_on_failure@D\n" +" Turn assertion failures into debugger break-points.\n" +" @G--" GTEST_FLAG_PREFIX_ "throw_on_failure@D\n" +" Turn assertion failures into C++ exceptions.\n" +" @G--" GTEST_FLAG_PREFIX_ "catch_exceptions=0@D\n" +" Do not report exceptions as test failures. Instead, allow them\n" +" to crash the program or throw a pop-up (on Windows).\n" +"\n" +"Except for @G--" GTEST_FLAG_PREFIX_ "list_tests@D, you can alternatively set " + "the corresponding\n" +"environment variable of a flag (all letters in upper-case). For example, to\n" +"disable colored text output, you can either specify @G--" GTEST_FLAG_PREFIX_ + "color=no@D or set\n" +"the @G" GTEST_FLAG_PREFIX_UPPER_ "COLOR@D environment variable to @Gno@D.\n" +"\n" +"For more information, please read the " GTEST_NAME_ " documentation at\n" +"@G" GTEST_PROJECT_URL_ "@D. If you find a bug in " GTEST_NAME_ "\n" +"(not one in your own code or tests), please report it to\n" +"@G<" GTEST_DEV_EMAIL_ ">@D.\n"; + +// Parses the command line for Google Test flags, without initializing +// other parts of Google Test. The type parameter CharType can be +// instantiated to either char or wchar_t. +template +void ParseGoogleTestFlagsOnlyImpl(int* argc, CharType** argv) { + for (int i = 1; i < *argc; i++) { + const std::string arg_string = StreamableToString(argv[i]); + const char* const arg = arg_string.c_str(); + + using internal::ParseBoolFlag; + using internal::ParseInt32Flag; + using internal::ParseStringFlag; + + // Do we see a Google Test flag? + if (ParseBoolFlag(arg, kAlsoRunDisabledTestsFlag, + >EST_FLAG(also_run_disabled_tests)) || + ParseBoolFlag(arg, kBreakOnFailureFlag, + >EST_FLAG(break_on_failure)) || + ParseBoolFlag(arg, kCatchExceptionsFlag, + >EST_FLAG(catch_exceptions)) || + ParseStringFlag(arg, kColorFlag, >EST_FLAG(color)) || + ParseStringFlag(arg, kDeathTestStyleFlag, + >EST_FLAG(death_test_style)) || + ParseBoolFlag(arg, kDeathTestUseFork, + >EST_FLAG(death_test_use_fork)) || + ParseStringFlag(arg, kFilterFlag, >EST_FLAG(filter)) || + ParseStringFlag(arg, kInternalRunDeathTestFlag, + >EST_FLAG(internal_run_death_test)) || + ParseBoolFlag(arg, kListTestsFlag, >EST_FLAG(list_tests)) || + ParseStringFlag(arg, kOutputFlag, >EST_FLAG(output)) || + ParseBoolFlag(arg, kPrintTimeFlag, >EST_FLAG(print_time)) || + ParseInt32Flag(arg, kRandomSeedFlag, >EST_FLAG(random_seed)) || + ParseInt32Flag(arg, kRepeatFlag, >EST_FLAG(repeat)) || + ParseBoolFlag(arg, kShuffleFlag, >EST_FLAG(shuffle)) || + ParseInt32Flag(arg, kStackTraceDepthFlag, + >EST_FLAG(stack_trace_depth)) || + ParseStringFlag(arg, kStreamResultToFlag, + >EST_FLAG(stream_result_to)) || + ParseBoolFlag(arg, kThrowOnFailureFlag, + >EST_FLAG(throw_on_failure)) + ) { + // Yes. Shift the remainder of the argv list left by one. Note + // that argv has (*argc + 1) elements, the last one always being + // NULL. The following loop moves the trailing NULL element as + // well. + for (int j = i; j != *argc; j++) { + argv[j] = argv[j + 1]; + } + + // Decrements the argument count. + (*argc)--; + + // We also need to decrement the iterator as we just removed + // an element. + i--; + } else if (arg_string == "--help" || arg_string == "-h" || + arg_string == "-?" || arg_string == "/?" || + HasGoogleTestFlagPrefix(arg)) { + // Both help flag and unrecognized Google Test flags (excluding + // internal ones) trigger help display. + g_help_flag = true; + } + } + + if (g_help_flag) { + // We print the help here instead of in RUN_ALL_TESTS(), as the + // latter may not be called at all if the user is using Google + // Test with another testing framework. + PrintColorEncoded(kColorEncodedHelpMessage); + } +} + +// Parses the command line for Google Test flags, without initializing +// other parts of Google Test. +void ParseGoogleTestFlagsOnly(int* argc, char** argv) { + ParseGoogleTestFlagsOnlyImpl(argc, argv); +} +void ParseGoogleTestFlagsOnly(int* argc, wchar_t** argv) { + ParseGoogleTestFlagsOnlyImpl(argc, argv); +} + +// The internal implementation of InitGoogleTest(). +// +// The type parameter CharType can be instantiated to either char or +// wchar_t. +template +void InitGoogleTestImpl(int* argc, CharType** argv) { + g_init_gtest_count++; + + // We don't want to run the initialization code twice. + if (g_init_gtest_count != 1) return; + + if (*argc <= 0) return; + + internal::g_executable_path = internal::StreamableToString(argv[0]); + +#if GTEST_HAS_DEATH_TEST + + g_argvs.clear(); + for (int i = 0; i != *argc; i++) { + g_argvs.push_back(StreamableToString(argv[i])); + } + +#endif // GTEST_HAS_DEATH_TEST + + ParseGoogleTestFlagsOnly(argc, argv); + GetUnitTestImpl()->PostFlagParsingInit(); +} + +} // namespace internal + +// Initializes Google Test. This must be called before calling +// RUN_ALL_TESTS(). In particular, it parses a command line for the +// flags that Google Test recognizes. Whenever a Google Test flag is +// seen, it is removed from argv, and *argc is decremented. +// +// No value is returned. Instead, the Google Test flag variables are +// updated. +// +// Calling the function for the second time has no user-visible effect. +void InitGoogleTest(int* argc, char** argv) { + internal::InitGoogleTestImpl(argc, argv); +} + +// This overloaded version can be used in Windows programs compiled in +// UNICODE mode. +void InitGoogleTest(int* argc, wchar_t** argv) { + internal::InitGoogleTestImpl(argc, argv); +} + +} // namespace testing +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan), vladl@google.com (Vlad Losev) +// +// This file implements death tests. + + +#if GTEST_HAS_DEATH_TEST + +# if GTEST_OS_MAC +# include +# endif // GTEST_OS_MAC + +# include +# include +# include + +# if GTEST_OS_LINUX +# include +# endif // GTEST_OS_LINUX + +# include + +# if GTEST_OS_WINDOWS +# include +# else +# include +# include +# endif // GTEST_OS_WINDOWS + +# if GTEST_OS_QNX +# include +# endif // GTEST_OS_QNX + +#endif // GTEST_HAS_DEATH_TEST + + +// Indicates that this translation unit is part of Google Test's +// implementation. It must come before gtest-internal-inl.h is +// included, or there will be a compiler error. This trick is to +// prevent a user from accidentally including gtest-internal-inl.h in +// his code. +#define GTEST_IMPLEMENTATION_ 1 +#undef GTEST_IMPLEMENTATION_ + +namespace testing { + +// Constants. + +// The default death test style. +static const char kDefaultDeathTestStyle[] = "fast"; + +GTEST_DEFINE_string_( + death_test_style, + internal::StringFromGTestEnv("death_test_style", kDefaultDeathTestStyle), + "Indicates how to run a death test in a forked child process: " + "\"threadsafe\" (child process re-executes the test binary " + "from the beginning, running only the specific death test) or " + "\"fast\" (child process runs the death test immediately " + "after forking)."); + +GTEST_DEFINE_bool_( + death_test_use_fork, + internal::BoolFromGTestEnv("death_test_use_fork", false), + "Instructs to use fork()/_exit() instead of clone() in death tests. " + "Ignored and always uses fork() on POSIX systems where clone() is not " + "implemented. Useful when running under valgrind or similar tools if " + "those do not support clone(). Valgrind 3.3.1 will just fail if " + "it sees an unsupported combination of clone() flags. " + "It is not recommended to use this flag w/o valgrind though it will " + "work in 99% of the cases. Once valgrind is fixed, this flag will " + "most likely be removed."); + +namespace internal { +GTEST_DEFINE_string_( + internal_run_death_test, "", + "Indicates the file, line number, temporal index of " + "the single death test to run, and a file descriptor to " + "which a success code may be sent, all separated by " + "the '|' characters. This flag is specified if and only if the current " + "process is a sub-process launched for running a thread-safe " + "death test. FOR INTERNAL USE ONLY."); +} // namespace internal + +#if GTEST_HAS_DEATH_TEST + +namespace internal { + +// Valid only for fast death tests. Indicates the code is running in the +// child process of a fast style death test. +static bool g_in_fast_death_test_child = false; + +// Returns a Boolean value indicating whether the caller is currently +// executing in the context of the death test child process. Tools such as +// Valgrind heap checkers may need this to modify their behavior in death +// tests. IMPORTANT: This is an internal utility. Using it may break the +// implementation of death tests. User code MUST NOT use it. +bool InDeathTestChild() { +# if GTEST_OS_WINDOWS + + // On Windows, death tests are thread-safe regardless of the value of the + // death_test_style flag. + return !GTEST_FLAG(internal_run_death_test).empty(); + +# else + + if (GTEST_FLAG(death_test_style) == "threadsafe") + return !GTEST_FLAG(internal_run_death_test).empty(); + else + return g_in_fast_death_test_child; +#endif +} + +} // namespace internal + +// ExitedWithCode constructor. +ExitedWithCode::ExitedWithCode(int exit_code) : exit_code_(exit_code) { +} + +// ExitedWithCode function-call operator. +bool ExitedWithCode::operator()(int exit_status) const { +# if GTEST_OS_WINDOWS + + return exit_status == exit_code_; + +# else + + return WIFEXITED(exit_status) && WEXITSTATUS(exit_status) == exit_code_; + +# endif // GTEST_OS_WINDOWS +} + +# if !GTEST_OS_WINDOWS +// KilledBySignal constructor. +KilledBySignal::KilledBySignal(int signum) : signum_(signum) { +} + +// KilledBySignal function-call operator. +bool KilledBySignal::operator()(int exit_status) const { + return WIFSIGNALED(exit_status) && WTERMSIG(exit_status) == signum_; +} +# endif // !GTEST_OS_WINDOWS + +namespace internal { + +// Utilities needed for death tests. + +// Generates a textual description of a given exit code, in the format +// specified by wait(2). +static std::string ExitSummary(int exit_code) { + Message m; + +# if GTEST_OS_WINDOWS + + m << "Exited with exit status " << exit_code; + +# else + + if (WIFEXITED(exit_code)) { + m << "Exited with exit status " << WEXITSTATUS(exit_code); + } else if (WIFSIGNALED(exit_code)) { + m << "Terminated by signal " << WTERMSIG(exit_code); + } +# ifdef WCOREDUMP + if (WCOREDUMP(exit_code)) { + m << " (core dumped)"; + } +# endif +# endif // GTEST_OS_WINDOWS + + return m.GetString(); +} + +// Returns true if exit_status describes a process that was terminated +// by a signal, or exited normally with a nonzero exit code. +bool ExitedUnsuccessfully(int exit_status) { + return !ExitedWithCode(0)(exit_status); +} + +# if !GTEST_OS_WINDOWS +// Generates a textual failure message when a death test finds more than +// one thread running, or cannot determine the number of threads, prior +// to executing the given statement. It is the responsibility of the +// caller not to pass a thread_count of 1. +static std::string DeathTestThreadWarning(size_t thread_count) { + Message msg; + msg << "Death tests use fork(), which is unsafe particularly" + << " in a threaded context. For this test, " << GTEST_NAME_ << " "; + if (thread_count == 0) + msg << "couldn't detect the number of threads."; + else + msg << "detected " << thread_count << " threads."; + return msg.GetString(); +} +# endif // !GTEST_OS_WINDOWS + +// Flag characters for reporting a death test that did not die. +static const char kDeathTestLived = 'L'; +static const char kDeathTestReturned = 'R'; +static const char kDeathTestThrew = 'T'; +static const char kDeathTestInternalError = 'I'; + +// An enumeration describing all of the possible ways that a death test can +// conclude. DIED means that the process died while executing the test +// code; LIVED means that process lived beyond the end of the test code; +// RETURNED means that the test statement attempted to execute a return +// statement, which is not allowed; THREW means that the test statement +// returned control by throwing an exception. IN_PROGRESS means the test +// has not yet concluded. +// TODO(vladl@google.com): Unify names and possibly values for +// AbortReason, DeathTestOutcome, and flag characters above. +enum DeathTestOutcome { IN_PROGRESS, DIED, LIVED, RETURNED, THREW }; + +// Routine for aborting the program which is safe to call from an +// exec-style death test child process, in which case the error +// message is propagated back to the parent process. Otherwise, the +// message is simply printed to stderr. In either case, the program +// then exits with status 1. +void DeathTestAbort(const std::string& message) { + // On a POSIX system, this function may be called from a threadsafe-style + // death test child process, which operates on a very small stack. Use + // the heap for any additional non-minuscule memory requirements. + const InternalRunDeathTestFlag* const flag = + GetUnitTestImpl()->internal_run_death_test_flag(); + if (flag != NULL) { + FILE* parent = posix::FDOpen(flag->write_fd(), "w"); + fputc(kDeathTestInternalError, parent); + fprintf(parent, "%s", message.c_str()); + fflush(parent); + _exit(1); + } else { + fprintf(stderr, "%s", message.c_str()); + fflush(stderr); + posix::Abort(); + } +} + +// A replacement for CHECK that calls DeathTestAbort if the assertion +// fails. +# define GTEST_DEATH_TEST_CHECK_(expression) \ + do { \ + if (!::testing::internal::IsTrue(expression)) { \ + DeathTestAbort(::testing::internal::String::Format( \ + "CHECK failed: File %s, line %d: %s", \ + __FILE__, __LINE__, #expression)); \ + } \ + } while (::testing::internal::AlwaysFalse()) + +// This macro is similar to GTEST_DEATH_TEST_CHECK_, but it is meant for +// evaluating any system call that fulfills two conditions: it must return +// -1 on failure, and set errno to EINTR when it is interrupted and +// should be tried again. The macro expands to a loop that repeatedly +// evaluates the expression as long as it evaluates to -1 and sets +// errno to EINTR. If the expression evaluates to -1 but errno is +// something other than EINTR, DeathTestAbort is called. +# define GTEST_DEATH_TEST_CHECK_SYSCALL_(expression) \ + do { \ + int gtest_retval; \ + do { \ + gtest_retval = (expression); \ + } while (gtest_retval == -1 && errno == EINTR); \ + if (gtest_retval == -1) { \ + DeathTestAbort(::testing::internal::String::Format( \ + "CHECK failed: File %s, line %d: %s != -1", \ + __FILE__, __LINE__, #expression)); \ + } \ + } while (::testing::internal::AlwaysFalse()) + +// Returns the message describing the last system error in errno. +std::string GetLastErrnoDescription() { + return errno == 0 ? "" : posix::StrError(errno); +} + +// This is called from a death test parent process to read a failure +// message from the death test child process and log it with the FATAL +// severity. On Windows, the message is read from a pipe handle. On other +// platforms, it is read from a file descriptor. +static void FailFromInternalError(int fd) { + Message error; + char buffer[256]; + int num_read; + + do { + while ((num_read = posix::Read(fd, buffer, 255)) > 0) { + buffer[num_read] = '\0'; + error << buffer; + } + } while (num_read == -1 && errno == EINTR); + + if (num_read == 0) { + GTEST_LOG_(FATAL) << error.GetString(); + } else { + const int last_error = errno; + GTEST_LOG_(FATAL) << "Error while reading death test internal: " + << GetLastErrnoDescription() << " [" << last_error << "]"; + } +} + +// Death test constructor. Increments the running death test count +// for the current test. +DeathTest::DeathTest() { + TestInfo* const info = GetUnitTestImpl()->current_test_info(); + if (info == NULL) { + DeathTestAbort("Cannot run a death test outside of a TEST or " + "TEST_F construct"); + } +} + +// Creates and returns a death test by dispatching to the current +// death test factory. +bool DeathTest::Create(const char* statement, const RE* regex, + const char* file, int line, DeathTest** test) { + return GetUnitTestImpl()->death_test_factory()->Create( + statement, regex, file, line, test); +} + +const char* DeathTest::LastMessage() { + return last_death_test_message_.c_str(); +} + +void DeathTest::set_last_death_test_message(const std::string& message) { + last_death_test_message_ = message; +} + +std::string DeathTest::last_death_test_message_; + +// Provides cross platform implementation for some death functionality. +class DeathTestImpl : public DeathTest { + protected: + DeathTestImpl(const char* a_statement, const RE* a_regex) + : statement_(a_statement), + regex_(a_regex), + spawned_(false), + status_(-1), + outcome_(IN_PROGRESS), + read_fd_(-1), + write_fd_(-1) {} + + // read_fd_ is expected to be closed and cleared by a derived class. + ~DeathTestImpl() { GTEST_DEATH_TEST_CHECK_(read_fd_ == -1); } + + void Abort(AbortReason reason); + virtual bool Passed(bool status_ok); + + const char* statement() const { return statement_; } + const RE* regex() const { return regex_; } + bool spawned() const { return spawned_; } + void set_spawned(bool is_spawned) { spawned_ = is_spawned; } + int status() const { return status_; } + void set_status(int a_status) { status_ = a_status; } + DeathTestOutcome outcome() const { return outcome_; } + void set_outcome(DeathTestOutcome an_outcome) { outcome_ = an_outcome; } + int read_fd() const { return read_fd_; } + void set_read_fd(int fd) { read_fd_ = fd; } + int write_fd() const { return write_fd_; } + void set_write_fd(int fd) { write_fd_ = fd; } + + // Called in the parent process only. Reads the result code of the death + // test child process via a pipe, interprets it to set the outcome_ + // member, and closes read_fd_. Outputs diagnostics and terminates in + // case of unexpected codes. + void ReadAndInterpretStatusByte(); + + private: + // The textual content of the code this object is testing. This class + // doesn't own this string and should not attempt to delete it. + const char* const statement_; + // The regular expression which test output must match. DeathTestImpl + // doesn't own this object and should not attempt to delete it. + const RE* const regex_; + // True if the death test child process has been successfully spawned. + bool spawned_; + // The exit status of the child process. + int status_; + // How the death test concluded. + DeathTestOutcome outcome_; + // Descriptor to the read end of the pipe to the child process. It is + // always -1 in the child process. The child keeps its write end of the + // pipe in write_fd_. + int read_fd_; + // Descriptor to the child's write end of the pipe to the parent process. + // It is always -1 in the parent process. The parent keeps its end of the + // pipe in read_fd_. + int write_fd_; +}; + +// Called in the parent process only. Reads the result code of the death +// test child process via a pipe, interprets it to set the outcome_ +// member, and closes read_fd_. Outputs diagnostics and terminates in +// case of unexpected codes. +void DeathTestImpl::ReadAndInterpretStatusByte() { + char flag; + int bytes_read; + + // The read() here blocks until data is available (signifying the + // failure of the death test) or until the pipe is closed (signifying + // its success), so it's okay to call this in the parent before + // the child process has exited. + do { + bytes_read = posix::Read(read_fd(), &flag, 1); + } while (bytes_read == -1 && errno == EINTR); + + if (bytes_read == 0) { + set_outcome(DIED); + } else if (bytes_read == 1) { + switch (flag) { + case kDeathTestReturned: + set_outcome(RETURNED); + break; + case kDeathTestThrew: + set_outcome(THREW); + break; + case kDeathTestLived: + set_outcome(LIVED); + break; + case kDeathTestInternalError: + FailFromInternalError(read_fd()); // Does not return. + break; + default: + GTEST_LOG_(FATAL) << "Death test child process reported " + << "unexpected status byte (" + << static_cast(flag) << ")"; + } + } else { + GTEST_LOG_(FATAL) << "Read from death test child process failed: " + << GetLastErrnoDescription(); + } + GTEST_DEATH_TEST_CHECK_SYSCALL_(posix::Close(read_fd())); + set_read_fd(-1); +} + +// Signals that the death test code which should have exited, didn't. +// Should be called only in a death test child process. +// Writes a status byte to the child's status file descriptor, then +// calls _exit(1). +void DeathTestImpl::Abort(AbortReason reason) { + // The parent process considers the death test to be a failure if + // it finds any data in our pipe. So, here we write a single flag byte + // to the pipe, then exit. + const char status_ch = + reason == TEST_DID_NOT_DIE ? kDeathTestLived : + reason == TEST_THREW_EXCEPTION ? kDeathTestThrew : kDeathTestReturned; + + GTEST_DEATH_TEST_CHECK_SYSCALL_(posix::Write(write_fd(), &status_ch, 1)); + // We are leaking the descriptor here because on some platforms (i.e., + // when built as Windows DLL), destructors of global objects will still + // run after calling _exit(). On such systems, write_fd_ will be + // indirectly closed from the destructor of UnitTestImpl, causing double + // close if it is also closed here. On debug configurations, double close + // may assert. As there are no in-process buffers to flush here, we are + // relying on the OS to close the descriptor after the process terminates + // when the destructors are not run. + _exit(1); // Exits w/o any normal exit hooks (we were supposed to crash) +} + +// Returns an indented copy of stderr output for a death test. +// This makes distinguishing death test output lines from regular log lines +// much easier. +static ::std::string FormatDeathTestOutput(const ::std::string& output) { + ::std::string ret; + for (size_t at = 0; ; ) { + const size_t line_end = output.find('\n', at); + ret += "[ DEATH ] "; + if (line_end == ::std::string::npos) { + ret += output.substr(at); + break; + } + ret += output.substr(at, line_end + 1 - at); + at = line_end + 1; + } + return ret; +} + +// Assesses the success or failure of a death test, using both private +// members which have previously been set, and one argument: +// +// Private data members: +// outcome: An enumeration describing how the death test +// concluded: DIED, LIVED, THREW, or RETURNED. The death test +// fails in the latter three cases. +// status: The exit status of the child process. On *nix, it is in the +// in the format specified by wait(2). On Windows, this is the +// value supplied to the ExitProcess() API or a numeric code +// of the exception that terminated the program. +// regex: A regular expression object to be applied to +// the test's captured standard error output; the death test +// fails if it does not match. +// +// Argument: +// status_ok: true if exit_status is acceptable in the context of +// this particular death test, which fails if it is false +// +// Returns true iff all of the above conditions are met. Otherwise, the +// first failing condition, in the order given above, is the one that is +// reported. Also sets the last death test message string. +bool DeathTestImpl::Passed(bool status_ok) { + if (!spawned()) + return false; + + const std::string error_message = GetCapturedStderr(); + + bool success = false; + Message buffer; + + buffer << "Death test: " << statement() << "\n"; + switch (outcome()) { + case LIVED: + buffer << " Result: failed to die.\n" + << " Error msg:\n" << FormatDeathTestOutput(error_message); + break; + case THREW: + buffer << " Result: threw an exception.\n" + << " Error msg:\n" << FormatDeathTestOutput(error_message); + break; + case RETURNED: + buffer << " Result: illegal return in test statement.\n" + << " Error msg:\n" << FormatDeathTestOutput(error_message); + break; + case DIED: + if (status_ok) { + const bool matched = RE::PartialMatch(error_message.c_str(), *regex()); + if (matched) { + success = true; + } else { + buffer << " Result: died but not with expected error.\n" + << " Expected: " << regex()->pattern() << "\n" + << "Actual msg:\n" << FormatDeathTestOutput(error_message); + } + } else { + buffer << " Result: died but not with expected exit code:\n" + << " " << ExitSummary(status()) << "\n" + << "Actual msg:\n" << FormatDeathTestOutput(error_message); + } + break; + case IN_PROGRESS: + default: + GTEST_LOG_(FATAL) + << "DeathTest::Passed somehow called before conclusion of test"; + } + + DeathTest::set_last_death_test_message(buffer.GetString()); + return success; +} + +# if GTEST_OS_WINDOWS +// WindowsDeathTest implements death tests on Windows. Due to the +// specifics of starting new processes on Windows, death tests there are +// always threadsafe, and Google Test considers the +// --gtest_death_test_style=fast setting to be equivalent to +// --gtest_death_test_style=threadsafe there. +// +// A few implementation notes: Like the Linux version, the Windows +// implementation uses pipes for child-to-parent communication. But due to +// the specifics of pipes on Windows, some extra steps are required: +// +// 1. The parent creates a communication pipe and stores handles to both +// ends of it. +// 2. The parent starts the child and provides it with the information +// necessary to acquire the handle to the write end of the pipe. +// 3. The child acquires the write end of the pipe and signals the parent +// using a Windows event. +// 4. Now the parent can release the write end of the pipe on its side. If +// this is done before step 3, the object's reference count goes down to +// 0 and it is destroyed, preventing the child from acquiring it. The +// parent now has to release it, or read operations on the read end of +// the pipe will not return when the child terminates. +// 5. The parent reads child's output through the pipe (outcome code and +// any possible error messages) from the pipe, and its stderr and then +// determines whether to fail the test. +// +// Note: to distinguish Win32 API calls from the local method and function +// calls, the former are explicitly resolved in the global namespace. +// +class WindowsDeathTest : public DeathTestImpl { + public: + WindowsDeathTest(const char* a_statement, + const RE* a_regex, + const char* file, + int line) + : DeathTestImpl(a_statement, a_regex), file_(file), line_(line) {} + + // All of these virtual functions are inherited from DeathTest. + virtual int Wait(); + virtual TestRole AssumeRole(); + + private: + // The name of the file in which the death test is located. + const char* const file_; + // The line number on which the death test is located. + const int line_; + // Handle to the write end of the pipe to the child process. + AutoHandle write_handle_; + // Child process handle. + AutoHandle child_handle_; + // Event the child process uses to signal the parent that it has + // acquired the handle to the write end of the pipe. After seeing this + // event the parent can release its own handles to make sure its + // ReadFile() calls return when the child terminates. + AutoHandle event_handle_; +}; + +// Waits for the child in a death test to exit, returning its exit +// status, or 0 if no child process exists. As a side effect, sets the +// outcome data member. +int WindowsDeathTest::Wait() { + if (!spawned()) + return 0; + + // Wait until the child either signals that it has acquired the write end + // of the pipe or it dies. + const HANDLE wait_handles[2] = { child_handle_.Get(), event_handle_.Get() }; + switch (::WaitForMultipleObjects(2, + wait_handles, + FALSE, // Waits for any of the handles. + INFINITE)) { + case WAIT_OBJECT_0: + case WAIT_OBJECT_0 + 1: + break; + default: + GTEST_DEATH_TEST_CHECK_(false); // Should not get here. + } + + // The child has acquired the write end of the pipe or exited. + // We release the handle on our side and continue. + write_handle_.Reset(); + event_handle_.Reset(); + + ReadAndInterpretStatusByte(); + + // Waits for the child process to exit if it haven't already. This + // returns immediately if the child has already exited, regardless of + // whether previous calls to WaitForMultipleObjects synchronized on this + // handle or not. + GTEST_DEATH_TEST_CHECK_( + WAIT_OBJECT_0 == ::WaitForSingleObject(child_handle_.Get(), + INFINITE)); + DWORD status_code; + GTEST_DEATH_TEST_CHECK_( + ::GetExitCodeProcess(child_handle_.Get(), &status_code) != FALSE); + child_handle_.Reset(); + set_status(static_cast(status_code)); + return status(); +} + +// The AssumeRole process for a Windows death test. It creates a child +// process with the same executable as the current process to run the +// death test. The child process is given the --gtest_filter and +// --gtest_internal_run_death_test flags such that it knows to run the +// current death test only. +DeathTest::TestRole WindowsDeathTest::AssumeRole() { + const UnitTestImpl* const impl = GetUnitTestImpl(); + const InternalRunDeathTestFlag* const flag = + impl->internal_run_death_test_flag(); + const TestInfo* const info = impl->current_test_info(); + const int death_test_index = info->result()->death_test_count(); + + if (flag != NULL) { + // ParseInternalRunDeathTestFlag() has performed all the necessary + // processing. + set_write_fd(flag->write_fd()); + return EXECUTE_TEST; + } + + // WindowsDeathTest uses an anonymous pipe to communicate results of + // a death test. + SECURITY_ATTRIBUTES handles_are_inheritable = { + sizeof(SECURITY_ATTRIBUTES), NULL, TRUE }; + HANDLE read_handle, write_handle; + GTEST_DEATH_TEST_CHECK_( + ::CreatePipe(&read_handle, &write_handle, &handles_are_inheritable, + 0) // Default buffer size. + != FALSE); + set_read_fd(::_open_osfhandle(reinterpret_cast(read_handle), + O_RDONLY)); + write_handle_.Reset(write_handle); + event_handle_.Reset(::CreateEvent( + &handles_are_inheritable, + TRUE, // The event will automatically reset to non-signaled state. + FALSE, // The initial state is non-signalled. + NULL)); // The even is unnamed. + GTEST_DEATH_TEST_CHECK_(event_handle_.Get() != NULL); + const std::string filter_flag = + std::string("--") + GTEST_FLAG_PREFIX_ + kFilterFlag + "=" + + info->test_case_name() + "." + info->name(); + const std::string internal_flag = + std::string("--") + GTEST_FLAG_PREFIX_ + kInternalRunDeathTestFlag + + "=" + file_ + "|" + String::Format("%d|%d|%u|%Iu|%Iu", line_, + death_test_index, + static_cast(::GetCurrentProcessId()), + // size_t has the same with as pointers on both 32-bit and 64-bit + // Windows platforms. + // See http://msdn.microsoft.com/en-us/library/tcxf1dw6.aspx. + reinterpret_cast(write_handle), + reinterpret_cast(event_handle_.Get())); + + char executable_path[_MAX_PATH + 1]; // NOLINT + GTEST_DEATH_TEST_CHECK_( + _MAX_PATH + 1 != ::GetModuleFileNameA(NULL, + executable_path, + _MAX_PATH)); + + std::string command_line = + std::string(::GetCommandLineA()) + " " + filter_flag + " \"" + + internal_flag + "\""; + + DeathTest::set_last_death_test_message(""); + + CaptureStderr(); + // Flush the log buffers since the log streams are shared with the child. + FlushInfoLog(); + + // The child process will share the standard handles with the parent. + STARTUPINFOA startup_info; + memset(&startup_info, 0, sizeof(STARTUPINFO)); + startup_info.dwFlags = STARTF_USESTDHANDLES; + startup_info.hStdInput = ::GetStdHandle(STD_INPUT_HANDLE); + startup_info.hStdOutput = ::GetStdHandle(STD_OUTPUT_HANDLE); + startup_info.hStdError = ::GetStdHandle(STD_ERROR_HANDLE); + + PROCESS_INFORMATION process_info; + GTEST_DEATH_TEST_CHECK_(::CreateProcessA( + executable_path, + const_cast(command_line.c_str()), + NULL, // Retuned process handle is not inheritable. + NULL, // Retuned thread handle is not inheritable. + TRUE, // Child inherits all inheritable handles (for write_handle_). + 0x0, // Default creation flags. + NULL, // Inherit the parent's environment. + UnitTest::GetInstance()->original_working_dir(), + &startup_info, + &process_info) != FALSE); + child_handle_.Reset(process_info.hProcess); + ::CloseHandle(process_info.hThread); + set_spawned(true); + return OVERSEE_TEST; +} +# else // We are not on Windows. + +// ForkingDeathTest provides implementations for most of the abstract +// methods of the DeathTest interface. Only the AssumeRole method is +// left undefined. +class ForkingDeathTest : public DeathTestImpl { + public: + ForkingDeathTest(const char* statement, const RE* regex); + + // All of these virtual functions are inherited from DeathTest. + virtual int Wait(); + + protected: + void set_child_pid(pid_t child_pid) { child_pid_ = child_pid; } + + private: + // PID of child process during death test; 0 in the child process itself. + pid_t child_pid_; +}; + +// Constructs a ForkingDeathTest. +ForkingDeathTest::ForkingDeathTest(const char* a_statement, const RE* a_regex) + : DeathTestImpl(a_statement, a_regex), + child_pid_(-1) {} + +// Waits for the child in a death test to exit, returning its exit +// status, or 0 if no child process exists. As a side effect, sets the +// outcome data member. +int ForkingDeathTest::Wait() { + if (!spawned()) + return 0; + + ReadAndInterpretStatusByte(); + + int status_value; + GTEST_DEATH_TEST_CHECK_SYSCALL_(waitpid(child_pid_, &status_value, 0)); + set_status(status_value); + return status_value; +} + +// A concrete death test class that forks, then immediately runs the test +// in the child process. +class NoExecDeathTest : public ForkingDeathTest { + public: + NoExecDeathTest(const char* a_statement, const RE* a_regex) : + ForkingDeathTest(a_statement, a_regex) { } + virtual TestRole AssumeRole(); +}; + +// The AssumeRole process for a fork-and-run death test. It implements a +// straightforward fork, with a simple pipe to transmit the status byte. +DeathTest::TestRole NoExecDeathTest::AssumeRole() { + const size_t thread_count = GetThreadCount(); + if (thread_count != 1) { + GTEST_LOG_(WARNING) << DeathTestThreadWarning(thread_count); + } + + int pipe_fd[2]; + GTEST_DEATH_TEST_CHECK_(pipe(pipe_fd) != -1); + + DeathTest::set_last_death_test_message(""); + CaptureStderr(); + // When we fork the process below, the log file buffers are copied, but the + // file descriptors are shared. We flush all log files here so that closing + // the file descriptors in the child process doesn't throw off the + // synchronization between descriptors and buffers in the parent process. + // This is as close to the fork as possible to avoid a race condition in case + // there are multiple threads running before the death test, and another + // thread writes to the log file. + FlushInfoLog(); + + const pid_t child_pid = fork(); + GTEST_DEATH_TEST_CHECK_(child_pid != -1); + set_child_pid(child_pid); + if (child_pid == 0) { + GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[0])); + set_write_fd(pipe_fd[1]); + // Redirects all logging to stderr in the child process to prevent + // concurrent writes to the log files. We capture stderr in the parent + // process and append the child process' output to a log. + LogToStderr(); + // Event forwarding to the listeners of event listener API mush be shut + // down in death test subprocesses. + GetUnitTestImpl()->listeners()->SuppressEventForwarding(); + g_in_fast_death_test_child = true; + return EXECUTE_TEST; + } else { + GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[1])); + set_read_fd(pipe_fd[0]); + set_spawned(true); + return OVERSEE_TEST; + } +} + +// A concrete death test class that forks and re-executes the main +// program from the beginning, with command-line flags set that cause +// only this specific death test to be run. +class ExecDeathTest : public ForkingDeathTest { + public: + ExecDeathTest(const char* a_statement, const RE* a_regex, + const char* file, int line) : + ForkingDeathTest(a_statement, a_regex), file_(file), line_(line) { } + virtual TestRole AssumeRole(); + private: + static ::std::vector + GetArgvsForDeathTestChildProcess() { + ::std::vector args = GetInjectableArgvs(); + return args; + } + // The name of the file in which the death test is located. + const char* const file_; + // The line number on which the death test is located. + const int line_; +}; + +// Utility class for accumulating command-line arguments. +class Arguments { + public: + Arguments() { + args_.push_back(NULL); + } + + ~Arguments() { + for (std::vector::iterator i = args_.begin(); i != args_.end(); + ++i) { + free(*i); + } + } + void AddArgument(const char* argument) { + args_.insert(args_.end() - 1, posix::StrDup(argument)); + } + + template + void AddArguments(const ::std::vector& arguments) { + for (typename ::std::vector::const_iterator i = arguments.begin(); + i != arguments.end(); + ++i) { + args_.insert(args_.end() - 1, posix::StrDup(i->c_str())); + } + } + char* const* Argv() { + return &args_[0]; + } + + private: + std::vector args_; +}; + +// A struct that encompasses the arguments to the child process of a +// threadsafe-style death test process. +struct ExecDeathTestArgs { + char* const* argv; // Command-line arguments for the child's call to exec + int close_fd; // File descriptor to close; the read end of a pipe +}; + +# if GTEST_OS_MAC +inline char** GetEnviron() { + // When Google Test is built as a framework on MacOS X, the environ variable + // is unavailable. Apple's documentation (man environ) recommends using + // _NSGetEnviron() instead. + return *_NSGetEnviron(); +} +# else +// Some POSIX platforms expect you to declare environ. extern "C" makes +// it reside in the global namespace. +extern "C" char** environ; +inline char** GetEnviron() { return environ; } +# endif // GTEST_OS_MAC + +# if !GTEST_OS_QNX +// The main function for a threadsafe-style death test child process. +// This function is called in a clone()-ed process and thus must avoid +// any potentially unsafe operations like malloc or libc functions. +static int ExecDeathTestChildMain(void* child_arg) { + ExecDeathTestArgs* const args = static_cast(child_arg); + GTEST_DEATH_TEST_CHECK_SYSCALL_(close(args->close_fd)); + + // We need to execute the test program in the same environment where + // it was originally invoked. Therefore we change to the original + // working directory first. + const char* const original_dir = + UnitTest::GetInstance()->original_working_dir(); + // We can safely call chdir() as it's a direct system call. + if (chdir(original_dir) != 0) { + DeathTestAbort(std::string("chdir(\"") + original_dir + "\") failed: " + + GetLastErrnoDescription()); + return EXIT_FAILURE; + } + + // We can safely call execve() as it's a direct system call. We + // cannot use execvp() as it's a libc function and thus potentially + // unsafe. Since execve() doesn't search the PATH, the user must + // invoke the test program via a valid path that contains at least + // one path separator. + execve(args->argv[0], args->argv, GetEnviron()); + DeathTestAbort(std::string("execve(") + args->argv[0] + ", ...) in " + + original_dir + " failed: " + + GetLastErrnoDescription()); + return EXIT_FAILURE; +} +# endif // !GTEST_OS_QNX + +// Two utility routines that together determine the direction the stack +// grows. +// This could be accomplished more elegantly by a single recursive +// function, but we want to guard against the unlikely possibility of +// a smart compiler optimizing the recursion away. +// +// GTEST_NO_INLINE_ is required to prevent GCC 4.6 from inlining +// StackLowerThanAddress into StackGrowsDown, which then doesn't give +// correct answer. +void StackLowerThanAddress(const void* ptr, bool* result) GTEST_NO_INLINE_; +void StackLowerThanAddress(const void* ptr, bool* result) { + int dummy; + *result = (&dummy < ptr); +} + +bool StackGrowsDown() { + int dummy; + bool result; + StackLowerThanAddress(&dummy, &result); + return result; +} + +// Spawns a child process with the same executable as the current process in +// a thread-safe manner and instructs it to run the death test. The +// implementation uses fork(2) + exec. On systems where clone(2) is +// available, it is used instead, being slightly more thread-safe. On QNX, +// fork supports only single-threaded environments, so this function uses +// spawn(2) there instead. The function dies with an error message if +// anything goes wrong. +static pid_t ExecDeathTestSpawnChild(char* const* argv, int close_fd) { + ExecDeathTestArgs args = { argv, close_fd }; + pid_t child_pid = -1; + +# if GTEST_OS_QNX + // Obtains the current directory and sets it to be closed in the child + // process. + const int cwd_fd = open(".", O_RDONLY); + GTEST_DEATH_TEST_CHECK_(cwd_fd != -1); + GTEST_DEATH_TEST_CHECK_SYSCALL_(fcntl(cwd_fd, F_SETFD, FD_CLOEXEC)); + // We need to execute the test program in the same environment where + // it was originally invoked. Therefore we change to the original + // working directory first. + const char* const original_dir = + UnitTest::GetInstance()->original_working_dir(); + // We can safely call chdir() as it's a direct system call. + if (chdir(original_dir) != 0) { + DeathTestAbort(std::string("chdir(\"") + original_dir + "\") failed: " + + GetLastErrnoDescription()); + return EXIT_FAILURE; + } + + int fd_flags; + // Set close_fd to be closed after spawn. + GTEST_DEATH_TEST_CHECK_SYSCALL_(fd_flags = fcntl(close_fd, F_GETFD)); + GTEST_DEATH_TEST_CHECK_SYSCALL_(fcntl(close_fd, F_SETFD, + fd_flags | FD_CLOEXEC)); + struct inheritance inherit = {0}; + // spawn is a system call. + child_pid = spawn(args.argv[0], 0, NULL, &inherit, args.argv, GetEnviron()); + // Restores the current working directory. + GTEST_DEATH_TEST_CHECK_(fchdir(cwd_fd) != -1); + GTEST_DEATH_TEST_CHECK_SYSCALL_(close(cwd_fd)); + +# else // GTEST_OS_QNX +# if GTEST_OS_LINUX + // When a SIGPROF signal is received while fork() or clone() are executing, + // the process may hang. To avoid this, we ignore SIGPROF here and re-enable + // it after the call to fork()/clone() is complete. + struct sigaction saved_sigprof_action; + struct sigaction ignore_sigprof_action; + memset(&ignore_sigprof_action, 0, sizeof(ignore_sigprof_action)); + sigemptyset(&ignore_sigprof_action.sa_mask); + ignore_sigprof_action.sa_handler = SIG_IGN; + GTEST_DEATH_TEST_CHECK_SYSCALL_(sigaction( + SIGPROF, &ignore_sigprof_action, &saved_sigprof_action)); +# endif // GTEST_OS_LINUX + +# if GTEST_HAS_CLONE + const bool use_fork = GTEST_FLAG(death_test_use_fork); + + if (!use_fork) { + static const bool stack_grows_down = StackGrowsDown(); + const size_t stack_size = getpagesize(); + // MMAP_ANONYMOUS is not defined on Mac, so we use MAP_ANON instead. + void* const stack = mmap(NULL, stack_size, PROT_READ | PROT_WRITE, + MAP_ANON | MAP_PRIVATE, -1, 0); + GTEST_DEATH_TEST_CHECK_(stack != MAP_FAILED); + + // Maximum stack alignment in bytes: For a downward-growing stack, this + // amount is subtracted from size of the stack space to get an address + // that is within the stack space and is aligned on all systems we care + // about. As far as I know there is no ABI with stack alignment greater + // than 64. We assume stack and stack_size already have alignment of + // kMaxStackAlignment. + const size_t kMaxStackAlignment = 64; + void* const stack_top = + static_cast(stack) + + (stack_grows_down ? stack_size - kMaxStackAlignment : 0); + GTEST_DEATH_TEST_CHECK_(stack_size > kMaxStackAlignment && + reinterpret_cast(stack_top) % kMaxStackAlignment == 0); + + child_pid = clone(&ExecDeathTestChildMain, stack_top, SIGCHLD, &args); + + GTEST_DEATH_TEST_CHECK_(munmap(stack, stack_size) != -1); + } +# else + const bool use_fork = true; +# endif // GTEST_HAS_CLONE + + if (use_fork && (child_pid = fork()) == 0) { + ExecDeathTestChildMain(&args); + _exit(0); + } +# endif // GTEST_OS_QNX +# if GTEST_OS_LINUX + GTEST_DEATH_TEST_CHECK_SYSCALL_( + sigaction(SIGPROF, &saved_sigprof_action, NULL)); +# endif // GTEST_OS_LINUX + + GTEST_DEATH_TEST_CHECK_(child_pid != -1); + return child_pid; +} + +// The AssumeRole process for a fork-and-exec death test. It re-executes the +// main program from the beginning, setting the --gtest_filter +// and --gtest_internal_run_death_test flags to cause only the current +// death test to be re-run. +DeathTest::TestRole ExecDeathTest::AssumeRole() { + const UnitTestImpl* const impl = GetUnitTestImpl(); + const InternalRunDeathTestFlag* const flag = + impl->internal_run_death_test_flag(); + const TestInfo* const info = impl->current_test_info(); + const int death_test_index = info->result()->death_test_count(); + + if (flag != NULL) { + set_write_fd(flag->write_fd()); + return EXECUTE_TEST; + } + + int pipe_fd[2]; + GTEST_DEATH_TEST_CHECK_(pipe(pipe_fd) != -1); + // Clear the close-on-exec flag on the write end of the pipe, lest + // it be closed when the child process does an exec: + GTEST_DEATH_TEST_CHECK_(fcntl(pipe_fd[1], F_SETFD, 0) != -1); + + const std::string filter_flag = + String::Format("--%s%s=%s.%s", + GTEST_FLAG_PREFIX_, kFilterFlag, + info->test_case_name(), info->name()); + const std::string internal_flag = + String::Format("--%s%s=%s|%d|%d|%d", + GTEST_FLAG_PREFIX_, kInternalRunDeathTestFlag, + file_, line_, death_test_index, pipe_fd[1]); + Arguments args; + args.AddArguments(GetArgvsForDeathTestChildProcess()); + args.AddArgument(filter_flag.c_str()); + args.AddArgument(internal_flag.c_str()); + + DeathTest::set_last_death_test_message(""); + + CaptureStderr(); + // See the comment in NoExecDeathTest::AssumeRole for why the next line + // is necessary. + FlushInfoLog(); + + const pid_t child_pid = ExecDeathTestSpawnChild(args.Argv(), pipe_fd[0]); + GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[1])); + set_child_pid(child_pid); + set_read_fd(pipe_fd[0]); + set_spawned(true); + return OVERSEE_TEST; +} + +# endif // !GTEST_OS_WINDOWS + +// Creates a concrete DeathTest-derived class that depends on the +// --gtest_death_test_style flag, and sets the pointer pointed to +// by the "test" argument to its address. If the test should be +// skipped, sets that pointer to NULL. Returns true, unless the +// flag is set to an invalid value. +bool DefaultDeathTestFactory::Create(const char* statement, const RE* regex, + const char* file, int line, + DeathTest** test) { + UnitTestImpl* const impl = GetUnitTestImpl(); + const InternalRunDeathTestFlag* const flag = + impl->internal_run_death_test_flag(); + const int death_test_index = impl->current_test_info() + ->increment_death_test_count(); + + if (flag != NULL) { + if (death_test_index > flag->index()) { + DeathTest::set_last_death_test_message(String::Format( + "Death test count (%d) somehow exceeded expected maximum (%d)", + death_test_index, flag->index())); + return false; + } + + if (!(flag->file() == file && flag->line() == line && + flag->index() == death_test_index)) { + *test = NULL; + return true; + } + } + +# if GTEST_OS_WINDOWS + + if (GTEST_FLAG(death_test_style) == "threadsafe" || + GTEST_FLAG(death_test_style) == "fast") { + *test = new WindowsDeathTest(statement, regex, file, line); + } + +# else + + if (GTEST_FLAG(death_test_style) == "threadsafe") { + *test = new ExecDeathTest(statement, regex, file, line); + } else if (GTEST_FLAG(death_test_style) == "fast") { + *test = new NoExecDeathTest(statement, regex); + } + +# endif // GTEST_OS_WINDOWS + + else { // NOLINT - this is more readable than unbalanced brackets inside #if. + DeathTest::set_last_death_test_message(String::Format( + "Unknown death test style \"%s\" encountered", + GTEST_FLAG(death_test_style).c_str())); + return false; + } + + return true; +} + +// Splits a given string on a given delimiter, populating a given +// vector with the fields. GTEST_HAS_DEATH_TEST implies that we have +// ::std::string, so we can use it here. +static void SplitString(const ::std::string& str, char delimiter, + ::std::vector< ::std::string>* dest) { + ::std::vector< ::std::string> parsed; + ::std::string::size_type pos = 0; + while (::testing::internal::AlwaysTrue()) { + const ::std::string::size_type colon = str.find(delimiter, pos); + if (colon == ::std::string::npos) { + parsed.push_back(str.substr(pos)); + break; + } else { + parsed.push_back(str.substr(pos, colon - pos)); + pos = colon + 1; + } + } + dest->swap(parsed); +} + +# if GTEST_OS_WINDOWS +// Recreates the pipe and event handles from the provided parameters, +// signals the event, and returns a file descriptor wrapped around the pipe +// handle. This function is called in the child process only. +int GetStatusFileDescriptor(unsigned int parent_process_id, + size_t write_handle_as_size_t, + size_t event_handle_as_size_t) { + AutoHandle parent_process_handle(::OpenProcess(PROCESS_DUP_HANDLE, + FALSE, // Non-inheritable. + parent_process_id)); + if (parent_process_handle.Get() == INVALID_HANDLE_VALUE) { + DeathTestAbort(String::Format("Unable to open parent process %u", + parent_process_id)); + } + + // TODO(vladl@google.com): Replace the following check with a + // compile-time assertion when available. + GTEST_CHECK_(sizeof(HANDLE) <= sizeof(size_t)); + + const HANDLE write_handle = + reinterpret_cast(write_handle_as_size_t); + HANDLE dup_write_handle; + + // The newly initialized handle is accessible only in in the parent + // process. To obtain one accessible within the child, we need to use + // DuplicateHandle. + if (!::DuplicateHandle(parent_process_handle.Get(), write_handle, + ::GetCurrentProcess(), &dup_write_handle, + 0x0, // Requested privileges ignored since + // DUPLICATE_SAME_ACCESS is used. + FALSE, // Request non-inheritable handler. + DUPLICATE_SAME_ACCESS)) { + DeathTestAbort(String::Format( + "Unable to duplicate the pipe handle %Iu from the parent process %u", + write_handle_as_size_t, parent_process_id)); + } + + const HANDLE event_handle = reinterpret_cast(event_handle_as_size_t); + HANDLE dup_event_handle; + + if (!::DuplicateHandle(parent_process_handle.Get(), event_handle, + ::GetCurrentProcess(), &dup_event_handle, + 0x0, + FALSE, + DUPLICATE_SAME_ACCESS)) { + DeathTestAbort(String::Format( + "Unable to duplicate the event handle %Iu from the parent process %u", + event_handle_as_size_t, parent_process_id)); + } + + const int write_fd = + ::_open_osfhandle(reinterpret_cast(dup_write_handle), O_APPEND); + if (write_fd == -1) { + DeathTestAbort(String::Format( + "Unable to convert pipe handle %Iu to a file descriptor", + write_handle_as_size_t)); + } + + // Signals the parent that the write end of the pipe has been acquired + // so the parent can release its own write end. + ::SetEvent(dup_event_handle); + + return write_fd; +} +# endif // GTEST_OS_WINDOWS + +// Returns a newly created InternalRunDeathTestFlag object with fields +// initialized from the GTEST_FLAG(internal_run_death_test) flag if +// the flag is specified; otherwise returns NULL. +InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag() { + if (GTEST_FLAG(internal_run_death_test) == "") return NULL; + + // GTEST_HAS_DEATH_TEST implies that we have ::std::string, so we + // can use it here. + int line = -1; + int index = -1; + ::std::vector< ::std::string> fields; + SplitString(GTEST_FLAG(internal_run_death_test).c_str(), '|', &fields); + int write_fd = -1; + +# if GTEST_OS_WINDOWS + + unsigned int parent_process_id = 0; + size_t write_handle_as_size_t = 0; + size_t event_handle_as_size_t = 0; + + if (fields.size() != 6 + || !ParseNaturalNumber(fields[1], &line) + || !ParseNaturalNumber(fields[2], &index) + || !ParseNaturalNumber(fields[3], &parent_process_id) + || !ParseNaturalNumber(fields[4], &write_handle_as_size_t) + || !ParseNaturalNumber(fields[5], &event_handle_as_size_t)) { + DeathTestAbort(String::Format( + "Bad --gtest_internal_run_death_test flag: %s", + GTEST_FLAG(internal_run_death_test).c_str())); + } + write_fd = GetStatusFileDescriptor(parent_process_id, + write_handle_as_size_t, + event_handle_as_size_t); +# else + + if (fields.size() != 4 + || !ParseNaturalNumber(fields[1], &line) + || !ParseNaturalNumber(fields[2], &index) + || !ParseNaturalNumber(fields[3], &write_fd)) { + DeathTestAbort(String::Format( + "Bad --gtest_internal_run_death_test flag: %s", + GTEST_FLAG(internal_run_death_test).c_str())); + } + +# endif // GTEST_OS_WINDOWS + + return new InternalRunDeathTestFlag(fields[0], line, index, write_fd); +} + +} // namespace internal + +#endif // GTEST_HAS_DEATH_TEST + +} // namespace testing +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Authors: keith.ray@gmail.com (Keith Ray) + + +#include + +#if GTEST_OS_WINDOWS_MOBILE +# include +#elif GTEST_OS_WINDOWS +# include +# include +#elif GTEST_OS_SYMBIAN +// Symbian OpenC has PATH_MAX in sys/syslimits.h +# include +#else +# include +# include // Some Linux distributions define PATH_MAX here. +#endif // GTEST_OS_WINDOWS_MOBILE + +#if GTEST_OS_WINDOWS +# define GTEST_PATH_MAX_ _MAX_PATH +#elif defined(PATH_MAX) +# define GTEST_PATH_MAX_ PATH_MAX +#elif defined(_XOPEN_PATH_MAX) +# define GTEST_PATH_MAX_ _XOPEN_PATH_MAX +#else +# define GTEST_PATH_MAX_ _POSIX_PATH_MAX +#endif // GTEST_OS_WINDOWS + + +namespace testing { +namespace internal { + +#if GTEST_OS_WINDOWS +// On Windows, '\\' is the standard path separator, but many tools and the +// Windows API also accept '/' as an alternate path separator. Unless otherwise +// noted, a file path can contain either kind of path separators, or a mixture +// of them. +const char kPathSeparator = '\\'; +const char kAlternatePathSeparator = '/'; +const char kPathSeparatorString[] = "\\"; +const char kAlternatePathSeparatorString[] = "/"; +# if GTEST_OS_WINDOWS_MOBILE +// Windows CE doesn't have a current directory. You should not use +// the current directory in tests on Windows CE, but this at least +// provides a reasonable fallback. +const char kCurrentDirectoryString[] = "\\"; +// Windows CE doesn't define INVALID_FILE_ATTRIBUTES +const DWORD kInvalidFileAttributes = 0xffffffff; +# else +const char kCurrentDirectoryString[] = ".\\"; +# endif // GTEST_OS_WINDOWS_MOBILE +#else +const char kPathSeparator = '/'; +const char kPathSeparatorString[] = "/"; +const char kCurrentDirectoryString[] = "./"; +#endif // GTEST_OS_WINDOWS + +// Returns whether the given character is a valid path separator. +static bool IsPathSeparator(char c) { +#if GTEST_HAS_ALT_PATH_SEP_ + return (c == kPathSeparator) || (c == kAlternatePathSeparator); +#else + return c == kPathSeparator; +#endif +} + +// Returns the current working directory, or "" if unsuccessful. +FilePath FilePath::GetCurrentDir() { +#if GTEST_OS_WINDOWS_MOBILE + // Windows CE doesn't have a current directory, so we just return + // something reasonable. + return FilePath(kCurrentDirectoryString); +#elif GTEST_OS_WINDOWS + char cwd[GTEST_PATH_MAX_ + 1] = { '\0' }; + return FilePath(_getcwd(cwd, sizeof(cwd)) == NULL ? "" : cwd); +#else + char cwd[GTEST_PATH_MAX_ + 1] = { '\0' }; + return FilePath(getcwd(cwd, sizeof(cwd)) == NULL ? "" : cwd); +#endif // GTEST_OS_WINDOWS_MOBILE +} + +// Returns a copy of the FilePath with the case-insensitive extension removed. +// Example: FilePath("dir/file.exe").RemoveExtension("EXE") returns +// FilePath("dir/file"). If a case-insensitive extension is not +// found, returns a copy of the original FilePath. +FilePath FilePath::RemoveExtension(const char* extension) const { + const std::string dot_extension = std::string(".") + extension; + if (String::EndsWithCaseInsensitive(pathname_, dot_extension)) { + return FilePath(pathname_.substr( + 0, pathname_.length() - dot_extension.length())); + } + return *this; +} + +// Returns a pointer to the last occurence of a valid path separator in +// the FilePath. On Windows, for example, both '/' and '\' are valid path +// separators. Returns NULL if no path separator was found. +const char* FilePath::FindLastPathSeparator() const { + const char* const last_sep = strrchr(c_str(), kPathSeparator); +#if GTEST_HAS_ALT_PATH_SEP_ + const char* const last_alt_sep = strrchr(c_str(), kAlternatePathSeparator); + // Comparing two pointers of which only one is NULL is undefined. + if (last_alt_sep != NULL && + (last_sep == NULL || last_alt_sep > last_sep)) { + return last_alt_sep; + } +#endif + return last_sep; +} + +// Returns a copy of the FilePath with the directory part removed. +// Example: FilePath("path/to/file").RemoveDirectoryName() returns +// FilePath("file"). If there is no directory part ("just_a_file"), it returns +// the FilePath unmodified. If there is no file part ("just_a_dir/") it +// returns an empty FilePath (""). +// On Windows platform, '\' is the path separator, otherwise it is '/'. +FilePath FilePath::RemoveDirectoryName() const { + const char* const last_sep = FindLastPathSeparator(); + return last_sep ? FilePath(last_sep + 1) : *this; +} + +// RemoveFileName returns the directory path with the filename removed. +// Example: FilePath("path/to/file").RemoveFileName() returns "path/to/". +// If the FilePath is "a_file" or "/a_file", RemoveFileName returns +// FilePath("./") or, on Windows, FilePath(".\\"). If the filepath does +// not have a file, like "just/a/dir/", it returns the FilePath unmodified. +// On Windows platform, '\' is the path separator, otherwise it is '/'. +FilePath FilePath::RemoveFileName() const { + const char* const last_sep = FindLastPathSeparator(); + std::string dir; + if (last_sep) { + dir = std::string(c_str(), last_sep + 1 - c_str()); + } else { + dir = kCurrentDirectoryString; + } + return FilePath(dir); +} + +// Helper functions for naming files in a directory for xml output. + +// Given directory = "dir", base_name = "test", number = 0, +// extension = "xml", returns "dir/test.xml". If number is greater +// than zero (e.g., 12), returns "dir/test_12.xml". +// On Windows platform, uses \ as the separator rather than /. +FilePath FilePath::MakeFileName(const FilePath& directory, + const FilePath& base_name, + int number, + const char* extension) { + std::string file; + if (number == 0) { + file = base_name.string() + "." + extension; + } else { + file = base_name.string() + "_" + String::Format("%d", number).c_str() + + "." + extension; + } + return ConcatPaths(directory, FilePath(file)); +} + +// Given directory = "dir", relative_path = "test.xml", returns "dir/test.xml". +// On Windows, uses \ as the separator rather than /. +FilePath FilePath::ConcatPaths(const FilePath& directory, + const FilePath& relative_path) { + if (directory.IsEmpty()) + return relative_path; + const FilePath dir(directory.RemoveTrailingPathSeparator()); + return FilePath(dir.string() + kPathSeparator + relative_path.string()); +} + +// Returns true if pathname describes something findable in the file-system, +// either a file, directory, or whatever. +bool FilePath::FileOrDirectoryExists() const { +#if GTEST_OS_WINDOWS_MOBILE + LPCWSTR unicode = String::AnsiToUtf16(pathname_.c_str()); + const DWORD attributes = GetFileAttributes(unicode); + delete [] unicode; + return attributes != kInvalidFileAttributes; +#else + posix::StatStruct file_stat; + return posix::Stat(pathname_.c_str(), &file_stat) == 0; +#endif // GTEST_OS_WINDOWS_MOBILE +} + +// Returns true if pathname describes a directory in the file-system +// that exists. +bool FilePath::DirectoryExists() const { + bool result = false; +#if GTEST_OS_WINDOWS + // Don't strip off trailing separator if path is a root directory on + // Windows (like "C:\\"). + const FilePath& path(IsRootDirectory() ? *this : + RemoveTrailingPathSeparator()); +#else + const FilePath& path(*this); +#endif + +#if GTEST_OS_WINDOWS_MOBILE + LPCWSTR unicode = String::AnsiToUtf16(path.c_str()); + const DWORD attributes = GetFileAttributes(unicode); + delete [] unicode; + if ((attributes != kInvalidFileAttributes) && + (attributes & FILE_ATTRIBUTE_DIRECTORY)) { + result = true; + } +#else + posix::StatStruct file_stat; + result = posix::Stat(path.c_str(), &file_stat) == 0 && + posix::IsDir(file_stat); +#endif // GTEST_OS_WINDOWS_MOBILE + + return result; +} + +// Returns true if pathname describes a root directory. (Windows has one +// root directory per disk drive.) +bool FilePath::IsRootDirectory() const { +#if GTEST_OS_WINDOWS + // TODO(wan@google.com): on Windows a network share like + // \\server\share can be a root directory, although it cannot be the + // current directory. Handle this properly. + return pathname_.length() == 3 && IsAbsolutePath(); +#else + return pathname_.length() == 1 && IsPathSeparator(pathname_.c_str()[0]); +#endif +} + +// Returns true if pathname describes an absolute path. +bool FilePath::IsAbsolutePath() const { + const char* const name = pathname_.c_str(); +#if GTEST_OS_WINDOWS + return pathname_.length() >= 3 && + ((name[0] >= 'a' && name[0] <= 'z') || + (name[0] >= 'A' && name[0] <= 'Z')) && + name[1] == ':' && + IsPathSeparator(name[2]); +#else + return IsPathSeparator(name[0]); +#endif +} + +// Returns a pathname for a file that does not currently exist. The pathname +// will be directory/base_name.extension or +// directory/base_name_.extension if directory/base_name.extension +// already exists. The number will be incremented until a pathname is found +// that does not already exist. +// Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. +// There could be a race condition if two or more processes are calling this +// function at the same time -- they could both pick the same filename. +FilePath FilePath::GenerateUniqueFileName(const FilePath& directory, + const FilePath& base_name, + const char* extension) { + FilePath full_pathname; + int number = 0; + do { + full_pathname.Set(MakeFileName(directory, base_name, number++, extension)); + } while (full_pathname.FileOrDirectoryExists()); + return full_pathname; +} + +// Returns true if FilePath ends with a path separator, which indicates that +// it is intended to represent a directory. Returns false otherwise. +// This does NOT check that a directory (or file) actually exists. +bool FilePath::IsDirectory() const { + return !pathname_.empty() && + IsPathSeparator(pathname_.c_str()[pathname_.length() - 1]); +} + +// Create directories so that path exists. Returns true if successful or if +// the directories already exist; returns false if unable to create directories +// for any reason. +bool FilePath::CreateDirectoriesRecursively() const { + if (!this->IsDirectory()) { + return false; + } + + if (pathname_.length() == 0 || this->DirectoryExists()) { + return true; + } + + const FilePath parent(this->RemoveTrailingPathSeparator().RemoveFileName()); + return parent.CreateDirectoriesRecursively() && this->CreateFolder(); +} + +// Create the directory so that path exists. Returns true if successful or +// if the directory already exists; returns false if unable to create the +// directory for any reason, including if the parent directory does not +// exist. Not named "CreateDirectory" because that's a macro on Windows. +bool FilePath::CreateFolder() const { +#if GTEST_OS_WINDOWS_MOBILE + FilePath removed_sep(this->RemoveTrailingPathSeparator()); + LPCWSTR unicode = String::AnsiToUtf16(removed_sep.c_str()); + int result = CreateDirectory(unicode, NULL) ? 0 : -1; + delete [] unicode; +#elif GTEST_OS_WINDOWS + int result = _mkdir(pathname_.c_str()); +#else + int result = mkdir(pathname_.c_str(), 0777); +#endif // GTEST_OS_WINDOWS_MOBILE + + if (result == -1) { + return this->DirectoryExists(); // An error is OK if the directory exists. + } + return true; // No error. +} + +// If input name has a trailing separator character, remove it and return the +// name, otherwise return the name string unmodified. +// On Windows platform, uses \ as the separator, other platforms use /. +FilePath FilePath::RemoveTrailingPathSeparator() const { + return IsDirectory() + ? FilePath(pathname_.substr(0, pathname_.length() - 1)) + : *this; +} + +// Removes any redundant separators that might be in the pathname. +// For example, "bar///foo" becomes "bar/foo". Does not eliminate other +// redundancies that might be in a pathname involving "." or "..". +// TODO(wan@google.com): handle Windows network shares (e.g. \\server\share). +void FilePath::Normalize() { + if (pathname_.c_str() == NULL) { + pathname_ = ""; + return; + } + const char* src = pathname_.c_str(); + char* const dest = new char[pathname_.length() + 1]; + char* dest_ptr = dest; + memset(dest_ptr, 0, pathname_.length() + 1); + + while (*src != '\0') { + *dest_ptr = *src; + if (!IsPathSeparator(*src)) { + src++; + } else { +#if GTEST_HAS_ALT_PATH_SEP_ + if (*dest_ptr == kAlternatePathSeparator) { + *dest_ptr = kPathSeparator; + } +#endif + while (IsPathSeparator(*src)) + src++; + } + dest_ptr++; + } + *dest_ptr = '\0'; + pathname_ = dest; + delete[] dest; +} + +} // namespace internal +} // namespace testing +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + + +#include +#include +#include +#include + +#if GTEST_OS_WINDOWS_MOBILE +# include // For TerminateProcess() +#elif GTEST_OS_WINDOWS +# include +# include +#else +# include +#endif // GTEST_OS_WINDOWS_MOBILE + +#if GTEST_OS_MAC +# include +# include +# include +#endif // GTEST_OS_MAC + +#if GTEST_OS_QNX +# include +# include +#endif // GTEST_OS_QNX + + +// Indicates that this translation unit is part of Google Test's +// implementation. It must come before gtest-internal-inl.h is +// included, or there will be a compiler error. This trick is to +// prevent a user from accidentally including gtest-internal-inl.h in +// his code. +#define GTEST_IMPLEMENTATION_ 1 +#undef GTEST_IMPLEMENTATION_ + +namespace testing { +namespace internal { + +#if defined(_MSC_VER) || defined(__BORLANDC__) +// MSVC and C++Builder do not provide a definition of STDERR_FILENO. +const int kStdOutFileno = 1; +const int kStdErrFileno = 2; +#else +const int kStdOutFileno = STDOUT_FILENO; +const int kStdErrFileno = STDERR_FILENO; +#endif // _MSC_VER + +#if GTEST_OS_MAC + +// Returns the number of threads running in the process, or 0 to indicate that +// we cannot detect it. +size_t GetThreadCount() { + const task_t task = mach_task_self(); + mach_msg_type_number_t thread_count; + thread_act_array_t thread_list; + const kern_return_t status = task_threads(task, &thread_list, &thread_count); + if (status == KERN_SUCCESS) { + // task_threads allocates resources in thread_list and we need to free them + // to avoid leaks. + vm_deallocate(task, + reinterpret_cast(thread_list), + sizeof(thread_t) * thread_count); + return static_cast(thread_count); + } else { + return 0; + } +} + +#elif GTEST_OS_QNX + +// Returns the number of threads running in the process, or 0 to indicate that +// we cannot detect it. +size_t GetThreadCount() { + const int fd = open("/proc/self/as", O_RDONLY); + if (fd < 0) { + return 0; + } + procfs_info process_info; + const int status = + devctl(fd, DCMD_PROC_INFO, &process_info, sizeof(process_info), NULL); + close(fd); + if (status == EOK) { + return static_cast(process_info.num_threads); + } else { + return 0; + } +} + +#else + +size_t GetThreadCount() { + // There's no portable way to detect the number of threads, so we just + // return 0 to indicate that we cannot detect it. + return 0; +} + +#endif // GTEST_OS_MAC + +#if GTEST_USES_POSIX_RE + +// Implements RE. Currently only needed for death tests. + +RE::~RE() { + if (is_valid_) { + // regfree'ing an invalid regex might crash because the content + // of the regex is undefined. Since the regex's are essentially + // the same, one cannot be valid (or invalid) without the other + // being so too. + regfree(&partial_regex_); + regfree(&full_regex_); + } + free(const_cast(pattern_)); +} + +// Returns true iff regular expression re matches the entire str. +bool RE::FullMatch(const char* str, const RE& re) { + if (!re.is_valid_) return false; + + regmatch_t match; + return regexec(&re.full_regex_, str, 1, &match, 0) == 0; +} + +// Returns true iff regular expression re matches a substring of str +// (including str itself). +bool RE::PartialMatch(const char* str, const RE& re) { + if (!re.is_valid_) return false; + + regmatch_t match; + return regexec(&re.partial_regex_, str, 1, &match, 0) == 0; +} + +// Initializes an RE from its string representation. +void RE::Init(const char* regex) { + pattern_ = posix::StrDup(regex); + + // Reserves enough bytes to hold the regular expression used for a + // full match. + const size_t full_regex_len = strlen(regex) + 10; + char* const full_pattern = new char[full_regex_len]; + + snprintf(full_pattern, full_regex_len, "^(%s)$", regex); + is_valid_ = regcomp(&full_regex_, full_pattern, REG_EXTENDED) == 0; + // We want to call regcomp(&partial_regex_, ...) even if the + // previous expression returns false. Otherwise partial_regex_ may + // not be properly initialized can may cause trouble when it's + // freed. + // + // Some implementation of POSIX regex (e.g. on at least some + // versions of Cygwin) doesn't accept the empty string as a valid + // regex. We change it to an equivalent form "()" to be safe. + if (is_valid_) { + const char* const partial_regex = (*regex == '\0') ? "()" : regex; + is_valid_ = regcomp(&partial_regex_, partial_regex, REG_EXTENDED) == 0; + } + EXPECT_TRUE(is_valid_) + << "Regular expression \"" << regex + << "\" is not a valid POSIX Extended regular expression."; + + delete[] full_pattern; +} + +#elif GTEST_USES_SIMPLE_RE + +// Returns true iff ch appears anywhere in str (excluding the +// terminating '\0' character). +bool IsInSet(char ch, const char* str) { + return ch != '\0' && strchr(str, ch) != NULL; +} + +// Returns true iff ch belongs to the given classification. Unlike +// similar functions in , these aren't affected by the +// current locale. +bool IsAsciiDigit(char ch) { return '0' <= ch && ch <= '9'; } +bool IsAsciiPunct(char ch) { + return IsInSet(ch, "^-!\"#$%&'()*+,./:;<=>?@[\\]_`{|}~"); +} +bool IsRepeat(char ch) { return IsInSet(ch, "?*+"); } +bool IsAsciiWhiteSpace(char ch) { return IsInSet(ch, " \f\n\r\t\v"); } +bool IsAsciiWordChar(char ch) { + return ('a' <= ch && ch <= 'z') || ('A' <= ch && ch <= 'Z') || + ('0' <= ch && ch <= '9') || ch == '_'; +} + +// Returns true iff "\\c" is a supported escape sequence. +bool IsValidEscape(char c) { + return (IsAsciiPunct(c) || IsInSet(c, "dDfnrsStvwW")); +} + +// Returns true iff the given atom (specified by escaped and pattern) +// matches ch. The result is undefined if the atom is invalid. +bool AtomMatchesChar(bool escaped, char pattern_char, char ch) { + if (escaped) { // "\\p" where p is pattern_char. + switch (pattern_char) { + case 'd': return IsAsciiDigit(ch); + case 'D': return !IsAsciiDigit(ch); + case 'f': return ch == '\f'; + case 'n': return ch == '\n'; + case 'r': return ch == '\r'; + case 's': return IsAsciiWhiteSpace(ch); + case 'S': return !IsAsciiWhiteSpace(ch); + case 't': return ch == '\t'; + case 'v': return ch == '\v'; + case 'w': return IsAsciiWordChar(ch); + case 'W': return !IsAsciiWordChar(ch); + } + return IsAsciiPunct(pattern_char) && pattern_char == ch; + } + + return (pattern_char == '.' && ch != '\n') || pattern_char == ch; +} + +// Helper function used by ValidateRegex() to format error messages. +std::string FormatRegexSyntaxError(const char* regex, int index) { + return (Message() << "Syntax error at index " << index + << " in simple regular expression \"" << regex << "\": ").GetString(); +} + +// Generates non-fatal failures and returns false if regex is invalid; +// otherwise returns true. +bool ValidateRegex(const char* regex) { + if (regex == NULL) { + // TODO(wan@google.com): fix the source file location in the + // assertion failures to match where the regex is used in user + // code. + ADD_FAILURE() << "NULL is not a valid simple regular expression."; + return false; + } + + bool is_valid = true; + + // True iff ?, *, or + can follow the previous atom. + bool prev_repeatable = false; + for (int i = 0; regex[i]; i++) { + if (regex[i] == '\\') { // An escape sequence + i++; + if (regex[i] == '\0') { + ADD_FAILURE() << FormatRegexSyntaxError(regex, i - 1) + << "'\\' cannot appear at the end."; + return false; + } + + if (!IsValidEscape(regex[i])) { + ADD_FAILURE() << FormatRegexSyntaxError(regex, i - 1) + << "invalid escape sequence \"\\" << regex[i] << "\"."; + is_valid = false; + } + prev_repeatable = true; + } else { // Not an escape sequence. + const char ch = regex[i]; + + if (ch == '^' && i > 0) { + ADD_FAILURE() << FormatRegexSyntaxError(regex, i) + << "'^' can only appear at the beginning."; + is_valid = false; + } else if (ch == '$' && regex[i + 1] != '\0') { + ADD_FAILURE() << FormatRegexSyntaxError(regex, i) + << "'$' can only appear at the end."; + is_valid = false; + } else if (IsInSet(ch, "()[]{}|")) { + ADD_FAILURE() << FormatRegexSyntaxError(regex, i) + << "'" << ch << "' is unsupported."; + is_valid = false; + } else if (IsRepeat(ch) && !prev_repeatable) { + ADD_FAILURE() << FormatRegexSyntaxError(regex, i) + << "'" << ch << "' can only follow a repeatable token."; + is_valid = false; + } + + prev_repeatable = !IsInSet(ch, "^$?*+"); + } + } + + return is_valid; +} + +// Matches a repeated regex atom followed by a valid simple regular +// expression. The regex atom is defined as c if escaped is false, +// or \c otherwise. repeat is the repetition meta character (?, *, +// or +). The behavior is undefined if str contains too many +// characters to be indexable by size_t, in which case the test will +// probably time out anyway. We are fine with this limitation as +// std::string has it too. +bool MatchRepetitionAndRegexAtHead( + bool escaped, char c, char repeat, const char* regex, + const char* str) { + const size_t min_count = (repeat == '+') ? 1 : 0; + const size_t max_count = (repeat == '?') ? 1 : + static_cast(-1) - 1; + // We cannot call numeric_limits::max() as it conflicts with the + // max() macro on Windows. + + for (size_t i = 0; i <= max_count; ++i) { + // We know that the atom matches each of the first i characters in str. + if (i >= min_count && MatchRegexAtHead(regex, str + i)) { + // We have enough matches at the head, and the tail matches too. + // Since we only care about *whether* the pattern matches str + // (as opposed to *how* it matches), there is no need to find a + // greedy match. + return true; + } + if (str[i] == '\0' || !AtomMatchesChar(escaped, c, str[i])) + return false; + } + return false; +} + +// Returns true iff regex matches a prefix of str. regex must be a +// valid simple regular expression and not start with "^", or the +// result is undefined. +bool MatchRegexAtHead(const char* regex, const char* str) { + if (*regex == '\0') // An empty regex matches a prefix of anything. + return true; + + // "$" only matches the end of a string. Note that regex being + // valid guarantees that there's nothing after "$" in it. + if (*regex == '$') + return *str == '\0'; + + // Is the first thing in regex an escape sequence? + const bool escaped = *regex == '\\'; + if (escaped) + ++regex; + if (IsRepeat(regex[1])) { + // MatchRepetitionAndRegexAtHead() calls MatchRegexAtHead(), so + // here's an indirect recursion. It terminates as the regex gets + // shorter in each recursion. + return MatchRepetitionAndRegexAtHead( + escaped, regex[0], regex[1], regex + 2, str); + } else { + // regex isn't empty, isn't "$", and doesn't start with a + // repetition. We match the first atom of regex with the first + // character of str and recurse. + return (*str != '\0') && AtomMatchesChar(escaped, *regex, *str) && + MatchRegexAtHead(regex + 1, str + 1); + } +} + +// Returns true iff regex matches any substring of str. regex must be +// a valid simple regular expression, or the result is undefined. +// +// The algorithm is recursive, but the recursion depth doesn't exceed +// the regex length, so we won't need to worry about running out of +// stack space normally. In rare cases the time complexity can be +// exponential with respect to the regex length + the string length, +// but usually it's must faster (often close to linear). +bool MatchRegexAnywhere(const char* regex, const char* str) { + if (regex == NULL || str == NULL) + return false; + + if (*regex == '^') + return MatchRegexAtHead(regex + 1, str); + + // A successful match can be anywhere in str. + do { + if (MatchRegexAtHead(regex, str)) + return true; + } while (*str++ != '\0'); + return false; +} + +// Implements the RE class. + +RE::~RE() { + free(const_cast(pattern_)); + free(const_cast(full_pattern_)); +} + +// Returns true iff regular expression re matches the entire str. +bool RE::FullMatch(const char* str, const RE& re) { + return re.is_valid_ && MatchRegexAnywhere(re.full_pattern_, str); +} + +// Returns true iff regular expression re matches a substring of str +// (including str itself). +bool RE::PartialMatch(const char* str, const RE& re) { + return re.is_valid_ && MatchRegexAnywhere(re.pattern_, str); +} + +// Initializes an RE from its string representation. +void RE::Init(const char* regex) { + pattern_ = full_pattern_ = NULL; + if (regex != NULL) { + pattern_ = posix::StrDup(regex); + } + + is_valid_ = ValidateRegex(regex); + if (!is_valid_) { + // No need to calculate the full pattern when the regex is invalid. + return; + } + + const size_t len = strlen(regex); + // Reserves enough bytes to hold the regular expression used for a + // full match: we need space to prepend a '^', append a '$', and + // terminate the string with '\0'. + char* buffer = static_cast(malloc(len + 3)); + full_pattern_ = buffer; + + if (*regex != '^') + *buffer++ = '^'; // Makes sure full_pattern_ starts with '^'. + + // We don't use snprintf or strncpy, as they trigger a warning when + // compiled with VC++ 8.0. + memcpy(buffer, regex, len); + buffer += len; + + if (len == 0 || regex[len - 1] != '$') + *buffer++ = '$'; // Makes sure full_pattern_ ends with '$'. + + *buffer = '\0'; +} + +#endif // GTEST_USES_POSIX_RE + +const char kUnknownFile[] = "unknown file"; + +// Formats a source file path and a line number as they would appear +// in an error message from the compiler used to compile this code. +GTEST_API_ ::std::string FormatFileLocation(const char* file, int line) { + const char* const file_name = file == NULL ? kUnknownFile : file; + + if (line < 0) { + return String::Format("%s:", file_name).c_str(); + } +#ifdef _MSC_VER + return String::Format("%s(%d):", file_name, line).c_str(); +#else + return String::Format("%s:%d:", file_name, line).c_str(); +#endif // _MSC_VER +} + +// Formats a file location for compiler-independent XML output. +// Although this function is not platform dependent, we put it next to +// FormatFileLocation in order to contrast the two functions. +// Note that FormatCompilerIndependentFileLocation() does NOT append colon +// to the file location it produces, unlike FormatFileLocation(). +GTEST_API_ ::std::string FormatCompilerIndependentFileLocation( + const char* file, int line) { + const char* const file_name = file == NULL ? kUnknownFile : file; + + if (line < 0) + return file_name; + else + return String::Format("%s:%d", file_name, line).c_str(); +} + + +GTestLog::GTestLog(GTestLogSeverity severity, const char* file, int line) + : severity_(severity) { + const char* const marker = + severity == GTEST_INFO ? "[ INFO ]" : + severity == GTEST_WARNING ? "[WARNING]" : + severity == GTEST_ERROR ? "[ ERROR ]" : "[ FATAL ]"; + GetStream() << ::std::endl << marker << " " + << FormatFileLocation(file, line).c_str() << ": "; +} + +// Flushes the buffers and, if severity is GTEST_FATAL, aborts the program. +GTestLog::~GTestLog() { + GetStream() << ::std::endl; + if (severity_ == GTEST_FATAL) { + fflush(stderr); + posix::Abort(); + } +} +// Disable Microsoft deprecation warnings for POSIX functions called from +// this class (creat, dup, dup2, and close) +#ifdef _MSC_VER +# pragma warning(push) +# pragma warning(disable: 4996) +#endif // _MSC_VER + +#if GTEST_HAS_STREAM_REDIRECTION + +// Object that captures an output stream (stdout/stderr). +class CapturedStream { + public: + // The ctor redirects the stream to a temporary file. + explicit CapturedStream(int fd) : fd_(fd), uncaptured_fd_(dup(fd)) { +# if GTEST_OS_WINDOWS + char temp_dir_path[MAX_PATH + 1] = { '\0' }; // NOLINT + char temp_file_path[MAX_PATH + 1] = { '\0' }; // NOLINT + + ::GetTempPathA(sizeof(temp_dir_path), temp_dir_path); + const UINT success = ::GetTempFileNameA(temp_dir_path, + "gtest_redir", + 0, // Generate unique file name. + temp_file_path); + GTEST_CHECK_(success != 0) + << "Unable to create a temporary file in " << temp_dir_path; + const int captured_fd = creat(temp_file_path, _S_IREAD | _S_IWRITE); + GTEST_CHECK_(captured_fd != -1) << "Unable to open temporary file " + << temp_file_path; + filename_ = temp_file_path; +# else + // There's no guarantee that a test has write access to the current + // directory, so we create the temporary file in the /tmp directory + // instead. We use /tmp on most systems, and /sdcard on Android. + // That's because Android doesn't have /tmp. +# if GTEST_OS_LINUX_ANDROID + // Note: Android applications are expected to call the framework's + // Context.getExternalStorageDirectory() method through JNI to get + // the location of the world-writable SD Card directory. However, + // this requires a Context handle, which cannot be retrieved + // globally from native code. Doing so also precludes running the + // code as part of a regular standalone executable, which doesn't + // run in a Dalvik process (e.g. when running it through 'adb shell'). + // + // The location /sdcard is directly accessible from native code + // and is the only location (unofficially) supported by the Android + // team. It's generally a symlink to the real SD Card mount point + // which can be /mnt/sdcard, /mnt/sdcard0, /system/media/sdcard, or + // other OEM-customized locations. Never rely on these, and always + // use /sdcard. + char name_template[] = "/sdcard/gtest_captured_stream.XXXXXX"; +# else + char name_template[] = "/tmp/captured_stream.XXXXXX"; +# endif // GTEST_OS_LINUX_ANDROID + const int captured_fd = mkstemp(name_template); + filename_ = name_template; +# endif // GTEST_OS_WINDOWS + fflush(NULL); + dup2(captured_fd, fd_); + close(captured_fd); + } + + ~CapturedStream() { + remove(filename_.c_str()); + } + + std::string GetCapturedString() { + if (uncaptured_fd_ != -1) { + // Restores the original stream. + fflush(NULL); + dup2(uncaptured_fd_, fd_); + close(uncaptured_fd_); + uncaptured_fd_ = -1; + } + + FILE* const file = posix::FOpen(filename_.c_str(), "r"); + const std::string content = ReadEntireFile(file); + posix::FClose(file); + return content; + } + + private: + // Reads the entire content of a file as an std::string. + static std::string ReadEntireFile(FILE* file); + + // Returns the size (in bytes) of a file. + static size_t GetFileSize(FILE* file); + + const int fd_; // A stream to capture. + int uncaptured_fd_; + // Name of the temporary file holding the stderr output. + ::std::string filename_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(CapturedStream); +}; + +// Returns the size (in bytes) of a file. +size_t CapturedStream::GetFileSize(FILE* file) { + fseek(file, 0, SEEK_END); + return static_cast(ftell(file)); +} + +// Reads the entire content of a file as a string. +std::string CapturedStream::ReadEntireFile(FILE* file) { + const size_t file_size = GetFileSize(file); + char* const buffer = new char[file_size]; + + size_t bytes_last_read = 0; // # of bytes read in the last fread() + size_t bytes_read = 0; // # of bytes read so far + + fseek(file, 0, SEEK_SET); + + // Keeps reading the file until we cannot read further or the + // pre-determined file size is reached. + do { + bytes_last_read = fread(buffer+bytes_read, 1, file_size-bytes_read, file); + bytes_read += bytes_last_read; + } while (bytes_last_read > 0 && bytes_read < file_size); + + const std::string content(buffer, bytes_read); + delete[] buffer; + + return content; +} + +# ifdef _MSC_VER +# pragma warning(pop) +# endif // _MSC_VER + +static CapturedStream* g_captured_stderr = NULL; +static CapturedStream* g_captured_stdout = NULL; + +// Starts capturing an output stream (stdout/stderr). +void CaptureStream(int fd, const char* stream_name, CapturedStream** stream) { + if (*stream != NULL) { + GTEST_LOG_(FATAL) << "Only one " << stream_name + << " capturer can exist at a time."; + } + *stream = new CapturedStream(fd); +} + +// Stops capturing the output stream and returns the captured string. +std::string GetCapturedStream(CapturedStream** captured_stream) { + const std::string content = (*captured_stream)->GetCapturedString(); + + delete *captured_stream; + *captured_stream = NULL; + + return content; +} + +// Starts capturing stdout. +void CaptureStdout() { + CaptureStream(kStdOutFileno, "stdout", &g_captured_stdout); +} + +// Starts capturing stderr. +void CaptureStderr() { + CaptureStream(kStdErrFileno, "stderr", &g_captured_stderr); +} + +// Stops capturing stdout and returns the captured string. +std::string GetCapturedStdout() { + return GetCapturedStream(&g_captured_stdout); +} + +// Stops capturing stderr and returns the captured string. +std::string GetCapturedStderr() { + return GetCapturedStream(&g_captured_stderr); +} + +#endif // GTEST_HAS_STREAM_REDIRECTION + +#if GTEST_HAS_DEATH_TEST + +// A copy of all command line arguments. Set by InitGoogleTest(). +::std::vector g_argvs; + +static const ::std::vector* g_injected_test_argvs = + NULL; // Owned. + +void SetInjectableArgvs(const ::std::vector* argvs) { + if (g_injected_test_argvs != argvs) + delete g_injected_test_argvs; + g_injected_test_argvs = argvs; +} + +const ::std::vector& GetInjectableArgvs() { + if (g_injected_test_argvs != NULL) { + return *g_injected_test_argvs; + } + return g_argvs; +} +#endif // GTEST_HAS_DEATH_TEST + +#if GTEST_OS_WINDOWS_MOBILE +namespace posix { +void Abort() { + DebugBreak(); + TerminateProcess(GetCurrentProcess(), 1); +} +} // namespace posix +#endif // GTEST_OS_WINDOWS_MOBILE + +// Returns the name of the environment variable corresponding to the +// given flag. For example, FlagToEnvVar("foo") will return +// "GTEST_FOO" in the open-source version. +static std::string FlagToEnvVar(const char* flag) { + const std::string full_flag = + (Message() << GTEST_FLAG_PREFIX_ << flag).GetString(); + + Message env_var; + for (size_t i = 0; i != full_flag.length(); i++) { + env_var << ToUpper(full_flag.c_str()[i]); + } + + return env_var.GetString(); +} + +// Parses 'str' for a 32-bit signed integer. If successful, writes +// the result to *value and returns true; otherwise leaves *value +// unchanged and returns false. +bool ParseInt32(const Message& src_text, const char* str, Int32* value) { + // Parses the environment variable as a decimal integer. + char* end = NULL; + const long long_value = strtol(str, &end, 10); // NOLINT + + // Has strtol() consumed all characters in the string? + if (*end != '\0') { + // No - an invalid character was encountered. + Message msg; + msg << "WARNING: " << src_text + << " is expected to be a 32-bit integer, but actually" + << " has value \"" << str << "\".\n"; + printf("%s", msg.GetString().c_str()); + fflush(stdout); + return false; + } + + // Is the parsed value in the range of an Int32? + const Int32 result = static_cast(long_value); + if (long_value == LONG_MAX || long_value == LONG_MIN || + // The parsed value overflows as a long. (strtol() returns + // LONG_MAX or LONG_MIN when the input overflows.) + result != long_value + // The parsed value overflows as an Int32. + ) { + Message msg; + msg << "WARNING: " << src_text + << " is expected to be a 32-bit integer, but actually" + << " has value " << str << ", which overflows.\n"; + printf("%s", msg.GetString().c_str()); + fflush(stdout); + return false; + } + + *value = result; + return true; +} + +// Reads and returns the Boolean environment variable corresponding to +// the given flag; if it's not set, returns default_value. +// +// The value is considered true iff it's not "0". +bool BoolFromGTestEnv(const char* flag, bool default_value) { + const std::string env_var = FlagToEnvVar(flag); + const char* const string_value = posix::GetEnv(env_var.c_str()); + return string_value == NULL ? + default_value : strcmp(string_value, "0") != 0; +} + +// Reads and returns a 32-bit integer stored in the environment +// variable corresponding to the given flag; if it isn't set or +// doesn't represent a valid 32-bit integer, returns default_value. +Int32 Int32FromGTestEnv(const char* flag, Int32 default_value) { + const std::string env_var = FlagToEnvVar(flag); + const char* const string_value = posix::GetEnv(env_var.c_str()); + if (string_value == NULL) { + // The environment variable is not set. + return default_value; + } + + Int32 result = default_value; + if (!ParseInt32(Message() << "Environment variable " << env_var, + string_value, &result)) { + printf("The default value %s is used.\n", + (Message() << default_value).GetString().c_str()); + fflush(stdout); + return default_value; + } + + return result; +} + +// Reads and returns the string environment variable corresponding to +// the given flag; if it's not set, returns default_value. +const char* StringFromGTestEnv(const char* flag, const char* default_value) { + const std::string env_var = FlagToEnvVar(flag); + const char* const value = posix::GetEnv(env_var.c_str()); + return value == NULL ? default_value : value; +} + +} // namespace internal +} // namespace testing +// Copyright 2007, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +// Google Test - The Google C++ Testing Framework +// +// This file implements a universal value printer that can print a +// value of any type T: +// +// void ::testing::internal::UniversalPrinter::Print(value, ostream_ptr); +// +// It uses the << operator when possible, and prints the bytes in the +// object otherwise. A user can override its behavior for a class +// type Foo by defining either operator<<(::std::ostream&, const Foo&) +// or void PrintTo(const Foo&, ::std::ostream*) in the namespace that +// defines Foo. + +#include +#include +#include // NOLINT +#include + +namespace testing { + +namespace { + +using ::std::ostream; + +// Prints a segment of bytes in the given object. +void PrintByteSegmentInObjectTo(const unsigned char* obj_bytes, size_t start, + size_t count, ostream* os) { + char text[5] = ""; + for (size_t i = 0; i != count; i++) { + const size_t j = start + i; + if (i != 0) { + // Organizes the bytes into groups of 2 for easy parsing by + // human. + if ((j % 2) == 0) + *os << ' '; + else + *os << '-'; + } + GTEST_SNPRINTF_(text, sizeof(text), "%02X", obj_bytes[j]); + *os << text; + } +} + +// Prints the bytes in the given value to the given ostream. +void PrintBytesInObjectToImpl(const unsigned char* obj_bytes, size_t count, + ostream* os) { + // Tells the user how big the object is. + *os << count << "-byte object <"; + + const size_t kThreshold = 132; + const size_t kChunkSize = 64; + // If the object size is bigger than kThreshold, we'll have to omit + // some details by printing only the first and the last kChunkSize + // bytes. + // TODO(wan): let the user control the threshold using a flag. + if (count < kThreshold) { + PrintByteSegmentInObjectTo(obj_bytes, 0, count, os); + } else { + PrintByteSegmentInObjectTo(obj_bytes, 0, kChunkSize, os); + *os << " ... "; + // Rounds up to 2-byte boundary. + const size_t resume_pos = (count - kChunkSize + 1)/2*2; + PrintByteSegmentInObjectTo(obj_bytes, resume_pos, count - resume_pos, os); + } + *os << ">"; +} + +} // namespace + +namespace internal2 { + +// Delegates to PrintBytesInObjectToImpl() to print the bytes in the +// given object. The delegation simplifies the implementation, which +// uses the << operator and thus is easier done outside of the +// ::testing::internal namespace, which contains a << operator that +// sometimes conflicts with the one in STL. +void PrintBytesInObjectTo(const unsigned char* obj_bytes, size_t count, + ostream* os) { + PrintBytesInObjectToImpl(obj_bytes, count, os); +} + +} // namespace internal2 + +namespace internal { + +// Depending on the value of a char (or wchar_t), we print it in one +// of three formats: +// - as is if it's a printable ASCII (e.g. 'a', '2', ' '), +// - as a hexidecimal escape sequence (e.g. '\x7F'), or +// - as a special escape sequence (e.g. '\r', '\n'). +enum CharFormat { + kAsIs, + kHexEscape, + kSpecialEscape +}; + +// Returns true if c is a printable ASCII character. We test the +// value of c directly instead of calling isprint(), which is buggy on +// Windows Mobile. +inline bool IsPrintableAscii(wchar_t c) { + return 0x20 <= c && c <= 0x7E; +} + +// Prints a wide or narrow char c as a character literal without the +// quotes, escaping it when necessary; returns how c was formatted. +// The template argument UnsignedChar is the unsigned version of Char, +// which is the type of c. +template +static CharFormat PrintAsCharLiteralTo(Char c, ostream* os) { + switch (static_cast(c)) { + case L'\0': + *os << "\\0"; + break; + case L'\'': + *os << "\\'"; + break; + case L'\\': + *os << "\\\\"; + break; + case L'\a': + *os << "\\a"; + break; + case L'\b': + *os << "\\b"; + break; + case L'\f': + *os << "\\f"; + break; + case L'\n': + *os << "\\n"; + break; + case L'\r': + *os << "\\r"; + break; + case L'\t': + *os << "\\t"; + break; + case L'\v': + *os << "\\v"; + break; + default: + if (IsPrintableAscii(c)) { + *os << static_cast(c); + return kAsIs; + } else { + *os << String::Format("\\x%X", static_cast(c)); + return kHexEscape; + } + } + return kSpecialEscape; +} + +// Prints a wchar_t c as if it's part of a string literal, escaping it when +// necessary; returns how c was formatted. +static CharFormat PrintAsStringLiteralTo(wchar_t c, ostream* os) { + switch (c) { + case L'\'': + *os << "'"; + return kAsIs; + case L'"': + *os << "\\\""; + return kSpecialEscape; + default: + return PrintAsCharLiteralTo(c, os); + } +} + +// Prints a char c as if it's part of a string literal, escaping it when +// necessary; returns how c was formatted. +static CharFormat PrintAsStringLiteralTo(char c, ostream* os) { + return PrintAsStringLiteralTo( + static_cast(static_cast(c)), os); +} + +// Prints a wide or narrow character c and its code. '\0' is printed +// as "'\\0'", other unprintable characters are also properly escaped +// using the standard C++ escape sequence. The template argument +// UnsignedChar is the unsigned version of Char, which is the type of c. +template +void PrintCharAndCodeTo(Char c, ostream* os) { + // First, print c as a literal in the most readable form we can find. + *os << ((sizeof(c) > 1) ? "L'" : "'"); + const CharFormat format = PrintAsCharLiteralTo(c, os); + *os << "'"; + + // To aid user debugging, we also print c's code in decimal, unless + // it's 0 (in which case c was printed as '\\0', making the code + // obvious). + if (c == 0) + return; + *os << " (" << String::Format("%d", c).c_str(); + + // For more convenience, we print c's code again in hexidecimal, + // unless c was already printed in the form '\x##' or the code is in + // [1, 9]. + if (format == kHexEscape || (1 <= c && c <= 9)) { + // Do nothing. + } else { + *os << String::Format(", 0x%X", + static_cast(c)).c_str(); + } + *os << ")"; +} + +void PrintTo(unsigned char c, ::std::ostream* os) { + PrintCharAndCodeTo(c, os); +} +void PrintTo(signed char c, ::std::ostream* os) { + PrintCharAndCodeTo(c, os); +} + +// Prints a wchar_t as a symbol if it is printable or as its internal +// code otherwise and also as its code. L'\0' is printed as "L'\\0'". +void PrintTo(wchar_t wc, ostream* os) { + PrintCharAndCodeTo(wc, os); +} + +// Prints the given array of characters to the ostream. CharType must be either +// char or wchar_t. +// The array starts at begin, the length is len, it may include '\0' characters +// and may not be NUL-terminated. +template +static void PrintCharsAsStringTo( + const CharType* begin, size_t len, ostream* os) { + const char* const kQuoteBegin = sizeof(CharType) == 1 ? "\"" : "L\""; + *os << kQuoteBegin; + bool is_previous_hex = false; + for (size_t index = 0; index < len; ++index) { + const CharType cur = begin[index]; + if (is_previous_hex && IsXDigit(cur)) { + // Previous character is of '\x..' form and this character can be + // interpreted as another hexadecimal digit in its number. Break string to + // disambiguate. + *os << "\" " << kQuoteBegin; + } + is_previous_hex = PrintAsStringLiteralTo(cur, os) == kHexEscape; + } + *os << "\""; +} + +// Prints a (const) char/wchar_t array of 'len' elements, starting at address +// 'begin'. CharType must be either char or wchar_t. +template +static void UniversalPrintCharArray( + const CharType* begin, size_t len, ostream* os) { + // The code + // const char kFoo[] = "foo"; + // generates an array of 4, not 3, elements, with the last one being '\0'. + // + // Therefore when printing a char array, we don't print the last element if + // it's '\0', such that the output matches the string literal as it's + // written in the source code. + if (len > 0 && begin[len - 1] == '\0') { + PrintCharsAsStringTo(begin, len - 1, os); + return; + } + + // If, however, the last element in the array is not '\0', e.g. + // const char kFoo[] = { 'f', 'o', 'o' }; + // we must print the entire array. We also print a message to indicate + // that the array is not NUL-terminated. + PrintCharsAsStringTo(begin, len, os); + *os << " (no terminating NUL)"; +} + +// Prints a (const) char array of 'len' elements, starting at address 'begin'. +void UniversalPrintArray(const char* begin, size_t len, ostream* os) { + UniversalPrintCharArray(begin, len, os); +} + +// Prints a (const) wchar_t array of 'len' elements, starting at address +// 'begin'. +void UniversalPrintArray(const wchar_t* begin, size_t len, ostream* os) { + UniversalPrintCharArray(begin, len, os); +} + +// Prints the given C string to the ostream. +void PrintTo(const char* s, ostream* os) { + if (s == NULL) { + *os << "NULL"; + } else { + *os << ImplicitCast_(s) << " pointing to "; + PrintCharsAsStringTo(s, strlen(s), os); + } +} + +// MSVC compiler can be configured to define whar_t as a typedef +// of unsigned short. Defining an overload for const wchar_t* in that case +// would cause pointers to unsigned shorts be printed as wide strings, +// possibly accessing more memory than intended and causing invalid +// memory accesses. MSVC defines _NATIVE_WCHAR_T_DEFINED symbol when +// wchar_t is implemented as a native type. +#if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED) +// Prints the given wide C string to the ostream. +void PrintTo(const wchar_t* s, ostream* os) { + if (s == NULL) { + *os << "NULL"; + } else { + *os << ImplicitCast_(s) << " pointing to "; + PrintCharsAsStringTo(s, wcslen(s), os); + } +} +#endif // wchar_t is native + +// Prints a ::string object. +#if GTEST_HAS_GLOBAL_STRING +void PrintStringTo(const ::string& s, ostream* os) { + PrintCharsAsStringTo(s.data(), s.size(), os); +} +#endif // GTEST_HAS_GLOBAL_STRING + +void PrintStringTo(const ::std::string& s, ostream* os) { + PrintCharsAsStringTo(s.data(), s.size(), os); +} + +// Prints a ::wstring object. +#if GTEST_HAS_GLOBAL_WSTRING +void PrintWideStringTo(const ::wstring& s, ostream* os) { + PrintCharsAsStringTo(s.data(), s.size(), os); +} +#endif // GTEST_HAS_GLOBAL_WSTRING + +#if GTEST_HAS_STD_WSTRING +void PrintWideStringTo(const ::std::wstring& s, ostream* os) { + PrintCharsAsStringTo(s.data(), s.size(), os); +} +#endif // GTEST_HAS_STD_WSTRING + +} // namespace internal + +} // namespace testing +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: mheule@google.com (Markus Heule) +// +// The Google C++ Testing Framework (Google Test) + + +// Indicates that this translation unit is part of Google Test's +// implementation. It must come before gtest-internal-inl.h is +// included, or there will be a compiler error. This trick is to +// prevent a user from accidentally including gtest-internal-inl.h in +// his code. +#define GTEST_IMPLEMENTATION_ 1 +#undef GTEST_IMPLEMENTATION_ + +namespace testing { + +using internal::GetUnitTestImpl; + +// Gets the summary of the failure message by omitting the stack trace +// in it. +std::string TestPartResult::ExtractSummary(const char* message) { + const char* const stack_trace = strstr(message, internal::kStackTraceMarker); + return stack_trace == NULL ? message : + std::string(message, stack_trace); +} + +// Prints a TestPartResult object. +std::ostream& operator<<(std::ostream& os, const TestPartResult& result) { + return os + << result.file_name() << ":" << result.line_number() << ": " + << (result.type() == TestPartResult::kSuccess ? "Success" : + result.type() == TestPartResult::kFatalFailure ? "Fatal failure" : + "Non-fatal failure") << ":\n" + << result.message() << std::endl; +} + +// Appends a TestPartResult to the array. +void TestPartResultArray::Append(const TestPartResult& result) { + array_.push_back(result); +} + +// Returns the TestPartResult at the given index (0-based). +const TestPartResult& TestPartResultArray::GetTestPartResult(int index) const { + if (index < 0 || index >= size()) { + printf("\nInvalid index (%d) into TestPartResultArray.\n", index); + internal::posix::Abort(); + } + + return array_[index]; +} + +// Returns the number of TestPartResult objects in the array. +int TestPartResultArray::size() const { + return static_cast(array_.size()); +} + +namespace internal { + +HasNewFatalFailureHelper::HasNewFatalFailureHelper() + : has_new_fatal_failure_(false), + original_reporter_(GetUnitTestImpl()-> + GetTestPartResultReporterForCurrentThread()) { + GetUnitTestImpl()->SetTestPartResultReporterForCurrentThread(this); +} + +HasNewFatalFailureHelper::~HasNewFatalFailureHelper() { + GetUnitTestImpl()->SetTestPartResultReporterForCurrentThread( + original_reporter_); +} + +void HasNewFatalFailureHelper::ReportTestPartResult( + const TestPartResult& result) { + if (result.fatally_failed()) + has_new_fatal_failure_ = true; + original_reporter_->ReportTestPartResult(result); +} + +} // namespace internal + +} // namespace testing +// Copyright 2008 Google Inc. +// All Rights Reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + + +namespace testing { +namespace internal { + +#if GTEST_HAS_TYPED_TEST_P + +// Skips to the first non-space char in str. Returns an empty string if str +// contains only whitespace characters. +static const char* SkipSpaces(const char* str) { + while (IsSpace(*str)) + str++; + return str; +} + +// Verifies that registered_tests match the test names in +// defined_test_names_; returns registered_tests if successful, or +// aborts the program otherwise. +const char* TypedTestCasePState::VerifyRegisteredTestNames( + const char* file, int line, const char* registered_tests) { + typedef ::std::set::const_iterator DefinedTestIter; + registered_ = true; + + // Skip initial whitespace in registered_tests since some + // preprocessors prefix stringizied literals with whitespace. + registered_tests = SkipSpaces(registered_tests); + + Message errors; + ::std::set tests; + for (const char* names = registered_tests; names != NULL; + names = SkipComma(names)) { + const std::string name = GetPrefixUntilComma(names); + if (tests.count(name) != 0) { + errors << "Test " << name << " is listed more than once.\n"; + continue; + } + + bool found = false; + for (DefinedTestIter it = defined_test_names_.begin(); + it != defined_test_names_.end(); + ++it) { + if (name == *it) { + found = true; + break; + } + } + + if (found) { + tests.insert(name); + } else { + errors << "No test named " << name + << " can be found in this test case.\n"; + } + } + + for (DefinedTestIter it = defined_test_names_.begin(); + it != defined_test_names_.end(); + ++it) { + if (tests.count(*it) == 0) { + errors << "You forgot to list test " << *it << ".\n"; + } + } + + const std::string& errors_str = errors.GetString(); + if (errors_str != "") { + fprintf(stderr, "%s %s", FormatFileLocation(file, line).c_str(), + errors_str.c_str()); + fflush(stderr); + posix::Abort(); + } + + return registered_tests; +} + +#endif // GTEST_HAS_TYPED_TEST_P + +} // namespace internal +} // namespace testing diff --git a/thirdparty/protobuf-2.6.1/gtest/fused-src/gtest/gtest.h b/thirdparty/protobuf-2.6.1/gtest/fused-src/gtest/gtest.h new file mode 100644 index 00000000..1ad79356 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/fused-src/gtest/gtest.h @@ -0,0 +1,20012 @@ +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) +// +// The Google C++ Testing Framework (Google Test) +// +// This header file defines the public API for Google Test. It should be +// included by any test program that uses Google Test. +// +// IMPORTANT NOTE: Due to limitation of the C++ language, we have to +// leave some internal implementation details in this header file. +// They are clearly marked by comments like this: +// +// // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +// +// Such code is NOT meant to be used by a user directly, and is subject +// to CHANGE WITHOUT NOTICE. Therefore DO NOT DEPEND ON IT in a user +// program! +// +// Acknowledgment: Google Test borrowed the idea of automatic test +// registration from Barthelemy Dagenais' (barthelemy@prologique.com) +// easyUnit framework. + +#ifndef GTEST_INCLUDE_GTEST_GTEST_H_ +#define GTEST_INCLUDE_GTEST_GTEST_H_ + +#include +#include +#include + +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Authors: wan@google.com (Zhanyong Wan), eefacm@gmail.com (Sean Mcafee) +// +// The Google C++ Testing Framework (Google Test) +// +// This header file declares functions and macros used internally by +// Google Test. They are subject to change without notice. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_ + +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Authors: wan@google.com (Zhanyong Wan) +// +// Low-level types and utilities for porting Google Test to various +// platforms. They are subject to change without notice. DO NOT USE +// THEM IN USER CODE. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_ + +// The user can define the following macros in the build script to +// control Google Test's behavior. If the user doesn't define a macro +// in this list, Google Test will define it. +// +// GTEST_HAS_CLONE - Define it to 1/0 to indicate that clone(2) +// is/isn't available. +// GTEST_HAS_EXCEPTIONS - Define it to 1/0 to indicate that exceptions +// are enabled. +// GTEST_HAS_GLOBAL_STRING - Define it to 1/0 to indicate that ::string +// is/isn't available (some systems define +// ::string, which is different to std::string). +// GTEST_HAS_GLOBAL_WSTRING - Define it to 1/0 to indicate that ::string +// is/isn't available (some systems define +// ::wstring, which is different to std::wstring). +// GTEST_HAS_POSIX_RE - Define it to 1/0 to indicate that POSIX regular +// expressions are/aren't available. +// GTEST_HAS_PTHREAD - Define it to 1/0 to indicate that +// is/isn't available. +// GTEST_HAS_RTTI - Define it to 1/0 to indicate that RTTI is/isn't +// enabled. +// GTEST_HAS_STD_WSTRING - Define it to 1/0 to indicate that +// std::wstring does/doesn't work (Google Test can +// be used where std::wstring is unavailable). +// GTEST_HAS_TR1_TUPLE - Define it to 1/0 to indicate tr1::tuple +// is/isn't available. +// GTEST_HAS_SEH - Define it to 1/0 to indicate whether the +// compiler supports Microsoft's "Structured +// Exception Handling". +// GTEST_HAS_STREAM_REDIRECTION +// - Define it to 1/0 to indicate whether the +// platform supports I/O stream redirection using +// dup() and dup2(). +// GTEST_USE_OWN_TR1_TUPLE - Define it to 1/0 to indicate whether Google +// Test's own tr1 tuple implementation should be +// used. Unused when the user sets +// GTEST_HAS_TR1_TUPLE to 0. +// GTEST_LANG_CXX11 - Define it to 1/0 to indicate that Google Test +// is building in C++11/C++98 mode. +// GTEST_LINKED_AS_SHARED_LIBRARY +// - Define to 1 when compiling tests that use +// Google Test as a shared library (known as +// DLL on Windows). +// GTEST_CREATE_SHARED_LIBRARY +// - Define to 1 when compiling Google Test itself +// as a shared library. + +// This header defines the following utilities: +// +// Macros indicating the current platform (defined to 1 if compiled on +// the given platform; otherwise undefined): +// GTEST_OS_AIX - IBM AIX +// GTEST_OS_CYGWIN - Cygwin +// GTEST_OS_HPUX - HP-UX +// GTEST_OS_LINUX - Linux +// GTEST_OS_LINUX_ANDROID - Google Android +// GTEST_OS_MAC - Mac OS X +// GTEST_OS_IOS - iOS +// GTEST_OS_IOS_SIMULATOR - iOS simulator +// GTEST_OS_NACL - Google Native Client (NaCl) +// GTEST_OS_OPENBSD - OpenBSD +// GTEST_OS_QNX - QNX +// GTEST_OS_SOLARIS - Sun Solaris +// GTEST_OS_SYMBIAN - Symbian +// GTEST_OS_WINDOWS - Windows (Desktop, MinGW, or Mobile) +// GTEST_OS_WINDOWS_DESKTOP - Windows Desktop +// GTEST_OS_WINDOWS_MINGW - MinGW +// GTEST_OS_WINDOWS_MOBILE - Windows Mobile +// GTEST_OS_ZOS - z/OS +// +// Among the platforms, Cygwin, Linux, Max OS X, and Windows have the +// most stable support. Since core members of the Google Test project +// don't have access to other platforms, support for them may be less +// stable. If you notice any problems on your platform, please notify +// googletestframework@googlegroups.com (patches for fixing them are +// even more welcome!). +// +// Note that it is possible that none of the GTEST_OS_* macros are defined. +// +// Macros indicating available Google Test features (defined to 1 if +// the corresponding feature is supported; otherwise undefined): +// GTEST_HAS_COMBINE - the Combine() function (for value-parameterized +// tests) +// GTEST_HAS_DEATH_TEST - death tests +// GTEST_HAS_PARAM_TEST - value-parameterized tests +// GTEST_HAS_TYPED_TEST - typed tests +// GTEST_HAS_TYPED_TEST_P - type-parameterized tests +// GTEST_USES_POSIX_RE - enhanced POSIX regex is used. Do not confuse with +// GTEST_HAS_POSIX_RE (see above) which users can +// define themselves. +// GTEST_USES_SIMPLE_RE - our own simple regex is used; +// the above two are mutually exclusive. +// GTEST_CAN_COMPARE_NULL - accepts untyped NULL in EXPECT_EQ(). +// +// Macros for basic C++ coding: +// GTEST_AMBIGUOUS_ELSE_BLOCKER_ - for disabling a gcc warning. +// GTEST_ATTRIBUTE_UNUSED_ - declares that a class' instances or a +// variable don't have to be used. +// GTEST_DISALLOW_ASSIGN_ - disables operator=. +// GTEST_DISALLOW_COPY_AND_ASSIGN_ - disables copy ctor and operator=. +// GTEST_MUST_USE_RESULT_ - declares that a function's result must be used. +// +// Synchronization: +// Mutex, MutexLock, ThreadLocal, GetThreadCount() +// - synchronization primitives. +// GTEST_IS_THREADSAFE - defined to 1 to indicate that the above +// synchronization primitives have real implementations +// and Google Test is thread-safe; or 0 otherwise. +// +// Template meta programming: +// is_pointer - as in TR1; needed on Symbian and IBM XL C/C++ only. +// IteratorTraits - partial implementation of std::iterator_traits, which +// is not available in libCstd when compiled with Sun C++. +// +// Smart pointers: +// scoped_ptr - as in TR2. +// +// Regular expressions: +// RE - a simple regular expression class using the POSIX +// Extended Regular Expression syntax on UNIX-like +// platforms, or a reduced regular exception syntax on +// other platforms, including Windows. +// +// Logging: +// GTEST_LOG_() - logs messages at the specified severity level. +// LogToStderr() - directs all log messages to stderr. +// FlushInfoLog() - flushes informational log messages. +// +// Stdout and stderr capturing: +// CaptureStdout() - starts capturing stdout. +// GetCapturedStdout() - stops capturing stdout and returns the captured +// string. +// CaptureStderr() - starts capturing stderr. +// GetCapturedStderr() - stops capturing stderr and returns the captured +// string. +// +// Integer types: +// TypeWithSize - maps an integer to a int type. +// Int32, UInt32, Int64, UInt64, TimeInMillis +// - integers of known sizes. +// BiggestInt - the biggest signed integer type. +// +// Command-line utilities: +// GTEST_FLAG() - references a flag. +// GTEST_DECLARE_*() - declares a flag. +// GTEST_DEFINE_*() - defines a flag. +// GetInjectableArgvs() - returns the command line as a vector of strings. +// +// Environment variable utilities: +// GetEnv() - gets the value of an environment variable. +// BoolFromGTestEnv() - parses a bool environment variable. +// Int32FromGTestEnv() - parses an Int32 environment variable. +// StringFromGTestEnv() - parses a string environment variable. + +#include // for isspace, etc +#include // for ptrdiff_t +#include +#include +#include +#ifndef _WIN32_WCE +# include +# include +#endif // !_WIN32_WCE + +#if defined __APPLE__ +# include +# include +#endif + +#include // NOLINT +#include // NOLINT +#include // NOLINT + +#define GTEST_DEV_EMAIL_ "googletestframework@@googlegroups.com" +#define GTEST_FLAG_PREFIX_ "gtest_" +#define GTEST_FLAG_PREFIX_DASH_ "gtest-" +#define GTEST_FLAG_PREFIX_UPPER_ "GTEST_" +#define GTEST_NAME_ "Google Test" +#define GTEST_PROJECT_URL_ "http://code.google.com/p/googletest/" + +// Determines the version of gcc that is used to compile this. +#ifdef __GNUC__ +// 40302 means version 4.3.2. +# define GTEST_GCC_VER_ \ + (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__) +#endif // __GNUC__ + +// Determines the platform on which Google Test is compiled. +#ifdef __CYGWIN__ +# define GTEST_OS_CYGWIN 1 +#elif defined __SYMBIAN32__ +# define GTEST_OS_SYMBIAN 1 +#elif defined _WIN32 +# define GTEST_OS_WINDOWS 1 +# ifdef _WIN32_WCE +# define GTEST_OS_WINDOWS_MOBILE 1 +# elif defined(__MINGW__) || defined(__MINGW32__) +# define GTEST_OS_WINDOWS_MINGW 1 +# else +# define GTEST_OS_WINDOWS_DESKTOP 1 +# endif // _WIN32_WCE +#elif defined __APPLE__ +# define GTEST_OS_MAC 1 +# if TARGET_OS_IPHONE +# define GTEST_OS_IOS 1 +# if TARGET_IPHONE_SIMULATOR +# define GTEST_OS_IOS_SIMULATOR 1 +# endif +# endif +#elif defined __linux__ +# define GTEST_OS_LINUX 1 +# if defined __ANDROID__ +# define GTEST_OS_LINUX_ANDROID 1 +# endif +#elif defined __MVS__ +# define GTEST_OS_ZOS 1 +#elif defined(__sun) && defined(__SVR4) +# define GTEST_OS_SOLARIS 1 +#elif defined(_AIX) +# define GTEST_OS_AIX 1 +#elif defined(__hpux) +# define GTEST_OS_HPUX 1 +#elif defined __native_client__ +# define GTEST_OS_NACL 1 +#elif defined __OpenBSD__ +# define GTEST_OS_OPENBSD 1 +#elif defined __QNX__ +# define GTEST_OS_QNX 1 +#endif // __CYGWIN__ + +#ifndef GTEST_LANG_CXX11 +// gcc and clang define __GXX_EXPERIMENTAL_CXX0X__ when +// -std={c,gnu}++{0x,11} is passed. The C++11 standard specifies a +// value for __cplusplus, and recent versions of clang, gcc, and +// probably other compilers set that too in C++11 mode. +# if __GXX_EXPERIMENTAL_CXX0X__ || __cplusplus >= 201103L +// Compiling in at least C++11 mode. +# define GTEST_LANG_CXX11 1 +# else +# define GTEST_LANG_CXX11 0 +# endif +#endif + +// Brings in definitions for functions used in the testing::internal::posix +// namespace (read, write, close, chdir, isatty, stat). We do not currently +// use them on Windows Mobile. +#if !GTEST_OS_WINDOWS +// This assumes that non-Windows OSes provide unistd.h. For OSes where this +// is not the case, we need to include headers that provide the functions +// mentioned above. +# include +# include +#elif !GTEST_OS_WINDOWS_MOBILE +# include +# include +#endif + +#if GTEST_OS_LINUX_ANDROID +// Used to define __ANDROID_API__ matching the target NDK API level. +# include // NOLINT +#endif + +// Defines this to true iff Google Test can use POSIX regular expressions. +#ifndef GTEST_HAS_POSIX_RE +# if GTEST_OS_LINUX_ANDROID +// On Android, is only available starting with Gingerbread. +# define GTEST_HAS_POSIX_RE (__ANDROID_API__ >= 9) +# else +# define GTEST_HAS_POSIX_RE (!GTEST_OS_WINDOWS) +# endif +#endif + +#if GTEST_HAS_POSIX_RE + +// On some platforms, needs someone to define size_t, and +// won't compile otherwise. We can #include it here as we already +// included , which is guaranteed to define size_t through +// . +# include // NOLINT + +# define GTEST_USES_POSIX_RE 1 + +#elif GTEST_OS_WINDOWS + +// is not available on Windows. Use our own simple regex +// implementation instead. +# define GTEST_USES_SIMPLE_RE 1 + +#else + +// may not be available on this platform. Use our own +// simple regex implementation instead. +# define GTEST_USES_SIMPLE_RE 1 + +#endif // GTEST_HAS_POSIX_RE + +#ifndef GTEST_HAS_EXCEPTIONS +// The user didn't tell us whether exceptions are enabled, so we need +// to figure it out. +# if defined(_MSC_VER) || defined(__BORLANDC__) +// MSVC's and C++Builder's implementations of the STL use the _HAS_EXCEPTIONS +// macro to enable exceptions, so we'll do the same. +// Assumes that exceptions are enabled by default. +# ifndef _HAS_EXCEPTIONS +# define _HAS_EXCEPTIONS 1 +# endif // _HAS_EXCEPTIONS +# define GTEST_HAS_EXCEPTIONS _HAS_EXCEPTIONS +# elif defined(__GNUC__) && __EXCEPTIONS +// gcc defines __EXCEPTIONS to 1 iff exceptions are enabled. +# define GTEST_HAS_EXCEPTIONS 1 +# elif defined(__SUNPRO_CC) +// Sun Pro CC supports exceptions. However, there is no compile-time way of +// detecting whether they are enabled or not. Therefore, we assume that +// they are enabled unless the user tells us otherwise. +# define GTEST_HAS_EXCEPTIONS 1 +# elif defined(__IBMCPP__) && __EXCEPTIONS +// xlC defines __EXCEPTIONS to 1 iff exceptions are enabled. +# define GTEST_HAS_EXCEPTIONS 1 +# elif defined(__HP_aCC) +// Exception handling is in effect by default in HP aCC compiler. It has to +// be turned of by +noeh compiler option if desired. +# define GTEST_HAS_EXCEPTIONS 1 +# else +// For other compilers, we assume exceptions are disabled to be +// conservative. +# define GTEST_HAS_EXCEPTIONS 0 +# endif // defined(_MSC_VER) || defined(__BORLANDC__) +#endif // GTEST_HAS_EXCEPTIONS + +#if !defined(GTEST_HAS_STD_STRING) +// Even though we don't use this macro any longer, we keep it in case +// some clients still depend on it. +# define GTEST_HAS_STD_STRING 1 +#elif !GTEST_HAS_STD_STRING +// The user told us that ::std::string isn't available. +# error "Google Test cannot be used where ::std::string isn't available." +#endif // !defined(GTEST_HAS_STD_STRING) + +#ifndef GTEST_HAS_GLOBAL_STRING +// The user didn't tell us whether ::string is available, so we need +// to figure it out. + +# define GTEST_HAS_GLOBAL_STRING 0 + +#endif // GTEST_HAS_GLOBAL_STRING + +#ifndef GTEST_HAS_STD_WSTRING +// The user didn't tell us whether ::std::wstring is available, so we need +// to figure it out. +// TODO(wan@google.com): uses autoconf to detect whether ::std::wstring +// is available. + +// Cygwin 1.7 and below doesn't support ::std::wstring. +// Solaris' libc++ doesn't support it either. Android has +// no support for it at least as recent as Froyo (2.2). +# define GTEST_HAS_STD_WSTRING \ + (!(GTEST_OS_LINUX_ANDROID || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS)) + +#endif // GTEST_HAS_STD_WSTRING + +#ifndef GTEST_HAS_GLOBAL_WSTRING +// The user didn't tell us whether ::wstring is available, so we need +// to figure it out. +# define GTEST_HAS_GLOBAL_WSTRING \ + (GTEST_HAS_STD_WSTRING && GTEST_HAS_GLOBAL_STRING) +#endif // GTEST_HAS_GLOBAL_WSTRING + +// Determines whether RTTI is available. +#ifndef GTEST_HAS_RTTI +// The user didn't tell us whether RTTI is enabled, so we need to +// figure it out. + +# ifdef _MSC_VER + +# ifdef _CPPRTTI // MSVC defines this macro iff RTTI is enabled. +# define GTEST_HAS_RTTI 1 +# else +# define GTEST_HAS_RTTI 0 +# endif + +// Starting with version 4.3.2, gcc defines __GXX_RTTI iff RTTI is enabled. +# elif defined(__GNUC__) && (GTEST_GCC_VER_ >= 40302) + +# ifdef __GXX_RTTI +// When building against STLport with the Android NDK and with +// -frtti -fno-exceptions, the build fails at link time with undefined +// references to __cxa_bad_typeid. Note sure if STL or toolchain bug, +// so disable RTTI when detected. +# if GTEST_OS_LINUX_ANDROID && defined(_STLPORT_MAJOR) && \ + !defined(__EXCEPTIONS) +# define GTEST_HAS_RTTI 0 +# else +# define GTEST_HAS_RTTI 1 +# endif // GTEST_OS_LINUX_ANDROID && __STLPORT_MAJOR && !__EXCEPTIONS +# else +# define GTEST_HAS_RTTI 0 +# endif // __GXX_RTTI + +// Clang defines __GXX_RTTI starting with version 3.0, but its manual recommends +// using has_feature instead. has_feature(cxx_rtti) is supported since 2.7, the +// first version with C++ support. +# elif defined(__clang__) + +# define GTEST_HAS_RTTI __has_feature(cxx_rtti) + +// Starting with version 9.0 IBM Visual Age defines __RTTI_ALL__ to 1 if +// both the typeid and dynamic_cast features are present. +# elif defined(__IBMCPP__) && (__IBMCPP__ >= 900) + +# ifdef __RTTI_ALL__ +# define GTEST_HAS_RTTI 1 +# else +# define GTEST_HAS_RTTI 0 +# endif + +# else + +// For all other compilers, we assume RTTI is enabled. +# define GTEST_HAS_RTTI 1 + +# endif // _MSC_VER + +#endif // GTEST_HAS_RTTI + +// It's this header's responsibility to #include when RTTI +// is enabled. +#if GTEST_HAS_RTTI +# include +#endif + +// Determines whether Google Test can use the pthreads library. +#ifndef GTEST_HAS_PTHREAD +// The user didn't tell us explicitly, so we assume pthreads support is +// available on Linux and Mac. +// +// To disable threading support in Google Test, add -DGTEST_HAS_PTHREAD=0 +// to your compiler flags. +# define GTEST_HAS_PTHREAD (GTEST_OS_LINUX || GTEST_OS_MAC || GTEST_OS_HPUX \ + || GTEST_OS_QNX) +#endif // GTEST_HAS_PTHREAD + +#ifdef GTEST_OS_WINDOWS_MINGW +// Disable pthread support for MinGW for now. To enable it, we need to: +// 1) Implement ThreadLocal object under MinGW. The internal pthread calls are +// not available on MinGW. +// 2) Replace the nanosleep() with usleep() for MinGW. +#undef GTEST_HAS_PTHREAD +#define GTEST_HAS_PTHREAD 0 +#endif + +#if GTEST_HAS_PTHREAD +// gtest-port.h guarantees to #include when GTEST_HAS_PTHREAD is +// true. +# include // NOLINT + +// For timespec and nanosleep, used below. +# include // NOLINT +#endif + +// Determines whether Google Test can use tr1/tuple. You can define +// this macro to 0 to prevent Google Test from using tuple (any +// feature depending on tuple with be disabled in this mode). +#ifndef GTEST_HAS_TR1_TUPLE +# if GTEST_OS_LINUX_ANDROID && defined(_STLPORT_MAJOR) +// STLport, provided with the Android NDK, has neither or . +# define GTEST_HAS_TR1_TUPLE 0 +# else +// The user didn't tell us not to do it, so we assume it's OK. +# define GTEST_HAS_TR1_TUPLE 1 +# endif +#endif // GTEST_HAS_TR1_TUPLE + +// Determines whether Google Test's own tr1 tuple implementation +// should be used. +#ifndef GTEST_USE_OWN_TR1_TUPLE +// The user didn't tell us, so we need to figure it out. + +// We use our own TR1 tuple if we aren't sure the user has an +// implementation of it already. At this time, libstdc++ 4.0.0+ and +// MSVC 2010 are the only mainstream standard libraries that come +// with a TR1 tuple implementation. NVIDIA's CUDA NVCC compiler +// pretends to be GCC by defining __GNUC__ and friends, but cannot +// compile GCC's tuple implementation. MSVC 2008 (9.0) provides TR1 +// tuple in a 323 MB Feature Pack download, which we cannot assume the +// user has. QNX's QCC compiler is a modified GCC but it doesn't +// support TR1 tuple. libc++ only provides std::tuple, in C++11 mode, +// and it can be used with some compilers that define __GNUC__. +# if (defined(__GNUC__) && !defined(__CUDACC__) && (GTEST_GCC_VER_ >= 40000) \ + && !GTEST_OS_QNX && !defined(_LIBCPP_VERSION)) || _MSC_VER >= 1600 +# define GTEST_ENV_HAS_TR1_TUPLE_ 1 +# endif + +// C++11 specifies that provides std::tuple. Use that if gtest is used +// in C++11 mode and libstdc++ isn't very old (binaries targeting OS X 10.6 +// can build with clang but need to use gcc4.2's libstdc++). +# if GTEST_LANG_CXX11 && (!defined(__GLIBCXX__) || __GLIBCXX__ > 20110325) +# define GTEST_ENV_HAS_STD_TUPLE_ 1 +# endif + +# if GTEST_ENV_HAS_TR1_TUPLE_ || GTEST_ENV_HAS_STD_TUPLE_ +# define GTEST_USE_OWN_TR1_TUPLE 0 +# else +# define GTEST_USE_OWN_TR1_TUPLE 1 +# endif + +#endif // GTEST_USE_OWN_TR1_TUPLE + +// To avoid conditional compilation everywhere, we make it +// gtest-port.h's responsibility to #include the header implementing +// tr1/tuple. +#if GTEST_HAS_TR1_TUPLE + +# if GTEST_USE_OWN_TR1_TUPLE +// This file was GENERATED by command: +// pump.py gtest-tuple.h.pump +// DO NOT EDIT BY HAND!!! + +// Copyright 2009 Google Inc. +// All Rights Reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +// Implements a subset of TR1 tuple needed by Google Test and Google Mock. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_ + +#include // For ::std::pair. + +// The compiler used in Symbian has a bug that prevents us from declaring the +// tuple template as a friend (it complains that tuple is redefined). This +// hack bypasses the bug by declaring the members that should otherwise be +// private as public. +// Sun Studio versions < 12 also have the above bug. +#if defined(__SYMBIAN32__) || (defined(__SUNPRO_CC) && __SUNPRO_CC < 0x590) +# define GTEST_DECLARE_TUPLE_AS_FRIEND_ public: +#else +# define GTEST_DECLARE_TUPLE_AS_FRIEND_ \ + template friend class tuple; \ + private: +#endif + +// GTEST_n_TUPLE_(T) is the type of an n-tuple. +#define GTEST_0_TUPLE_(T) tuple<> +#define GTEST_1_TUPLE_(T) tuple +#define GTEST_2_TUPLE_(T) tuple +#define GTEST_3_TUPLE_(T) tuple +#define GTEST_4_TUPLE_(T) tuple +#define GTEST_5_TUPLE_(T) tuple +#define GTEST_6_TUPLE_(T) tuple +#define GTEST_7_TUPLE_(T) tuple +#define GTEST_8_TUPLE_(T) tuple +#define GTEST_9_TUPLE_(T) tuple +#define GTEST_10_TUPLE_(T) tuple + +// GTEST_n_TYPENAMES_(T) declares a list of n typenames. +#define GTEST_0_TYPENAMES_(T) +#define GTEST_1_TYPENAMES_(T) typename T##0 +#define GTEST_2_TYPENAMES_(T) typename T##0, typename T##1 +#define GTEST_3_TYPENAMES_(T) typename T##0, typename T##1, typename T##2 +#define GTEST_4_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ + typename T##3 +#define GTEST_5_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ + typename T##3, typename T##4 +#define GTEST_6_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ + typename T##3, typename T##4, typename T##5 +#define GTEST_7_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ + typename T##3, typename T##4, typename T##5, typename T##6 +#define GTEST_8_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ + typename T##3, typename T##4, typename T##5, typename T##6, typename T##7 +#define GTEST_9_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ + typename T##3, typename T##4, typename T##5, typename T##6, \ + typename T##7, typename T##8 +#define GTEST_10_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ + typename T##3, typename T##4, typename T##5, typename T##6, \ + typename T##7, typename T##8, typename T##9 + +// In theory, defining stuff in the ::std namespace is undefined +// behavior. We can do this as we are playing the role of a standard +// library vendor. +namespace std { +namespace tr1 { + +template +class tuple; + +// Anything in namespace gtest_internal is Google Test's INTERNAL +// IMPLEMENTATION DETAIL and MUST NOT BE USED DIRECTLY in user code. +namespace gtest_internal { + +// ByRef::type is T if T is a reference; otherwise it's const T&. +template +struct ByRef { typedef const T& type; }; // NOLINT +template +struct ByRef { typedef T& type; }; // NOLINT + +// A handy wrapper for ByRef. +#define GTEST_BY_REF_(T) typename ::std::tr1::gtest_internal::ByRef::type + +// AddRef::type is T if T is a reference; otherwise it's T&. This +// is the same as tr1::add_reference::type. +template +struct AddRef { typedef T& type; }; // NOLINT +template +struct AddRef { typedef T& type; }; // NOLINT + +// A handy wrapper for AddRef. +#define GTEST_ADD_REF_(T) typename ::std::tr1::gtest_internal::AddRef::type + +// A helper for implementing get(). +template class Get; + +// A helper for implementing tuple_element. kIndexValid is true +// iff k < the number of fields in tuple type T. +template +struct TupleElement; + +template +struct TupleElement { + typedef T0 type; +}; + +template +struct TupleElement { + typedef T1 type; +}; + +template +struct TupleElement { + typedef T2 type; +}; + +template +struct TupleElement { + typedef T3 type; +}; + +template +struct TupleElement { + typedef T4 type; +}; + +template +struct TupleElement { + typedef T5 type; +}; + +template +struct TupleElement { + typedef T6 type; +}; + +template +struct TupleElement { + typedef T7 type; +}; + +template +struct TupleElement { + typedef T8 type; +}; + +template +struct TupleElement { + typedef T9 type; +}; + +} // namespace gtest_internal + +template <> +class tuple<> { + public: + tuple() {} + tuple(const tuple& /* t */) {} + tuple& operator=(const tuple& /* t */) { return *this; } +}; + +template +class GTEST_1_TUPLE_(T) { + public: + template friend class gtest_internal::Get; + + tuple() : f0_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0) : f0_(f0) {} + + tuple(const tuple& t) : f0_(t.f0_) {} + + template + tuple(const GTEST_1_TUPLE_(U)& t) : f0_(t.f0_) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_1_TUPLE_(U)& t) { + return CopyFrom(t); + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_1_TUPLE_(U)& t) { + f0_ = t.f0_; + return *this; + } + + T0 f0_; +}; + +template +class GTEST_2_TUPLE_(T) { + public: + template friend class gtest_internal::Get; + + tuple() : f0_(), f1_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1) : f0_(f0), + f1_(f1) {} + + tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_) {} + + template + tuple(const GTEST_2_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_) {} + template + tuple(const ::std::pair& p) : f0_(p.first), f1_(p.second) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_2_TUPLE_(U)& t) { + return CopyFrom(t); + } + template + tuple& operator=(const ::std::pair& p) { + f0_ = p.first; + f1_ = p.second; + return *this; + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_2_TUPLE_(U)& t) { + f0_ = t.f0_; + f1_ = t.f1_; + return *this; + } + + T0 f0_; + T1 f1_; +}; + +template +class GTEST_3_TUPLE_(T) { + public: + template friend class gtest_internal::Get; + + tuple() : f0_(), f1_(), f2_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, + GTEST_BY_REF_(T2) f2) : f0_(f0), f1_(f1), f2_(f2) {} + + tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_) {} + + template + tuple(const GTEST_3_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_3_TUPLE_(U)& t) { + return CopyFrom(t); + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_3_TUPLE_(U)& t) { + f0_ = t.f0_; + f1_ = t.f1_; + f2_ = t.f2_; + return *this; + } + + T0 f0_; + T1 f1_; + T2 f2_; +}; + +template +class GTEST_4_TUPLE_(T) { + public: + template friend class gtest_internal::Get; + + tuple() : f0_(), f1_(), f2_(), f3_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, + GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3) : f0_(f0), f1_(f1), f2_(f2), + f3_(f3) {} + + tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_) {} + + template + tuple(const GTEST_4_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), + f3_(t.f3_) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_4_TUPLE_(U)& t) { + return CopyFrom(t); + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_4_TUPLE_(U)& t) { + f0_ = t.f0_; + f1_ = t.f1_; + f2_ = t.f2_; + f3_ = t.f3_; + return *this; + } + + T0 f0_; + T1 f1_; + T2 f2_; + T3 f3_; +}; + +template +class GTEST_5_TUPLE_(T) { + public: + template friend class gtest_internal::Get; + + tuple() : f0_(), f1_(), f2_(), f3_(), f4_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, + GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, + GTEST_BY_REF_(T4) f4) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4) {} + + tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), + f4_(t.f4_) {} + + template + tuple(const GTEST_5_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), + f3_(t.f3_), f4_(t.f4_) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_5_TUPLE_(U)& t) { + return CopyFrom(t); + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_5_TUPLE_(U)& t) { + f0_ = t.f0_; + f1_ = t.f1_; + f2_ = t.f2_; + f3_ = t.f3_; + f4_ = t.f4_; + return *this; + } + + T0 f0_; + T1 f1_; + T2 f2_; + T3 f3_; + T4 f4_; +}; + +template +class GTEST_6_TUPLE_(T) { + public: + template friend class gtest_internal::Get; + + tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, + GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, + GTEST_BY_REF_(T5) f5) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4), + f5_(f5) {} + + tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), + f4_(t.f4_), f5_(t.f5_) {} + + template + tuple(const GTEST_6_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), + f3_(t.f3_), f4_(t.f4_), f5_(t.f5_) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_6_TUPLE_(U)& t) { + return CopyFrom(t); + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_6_TUPLE_(U)& t) { + f0_ = t.f0_; + f1_ = t.f1_; + f2_ = t.f2_; + f3_ = t.f3_; + f4_ = t.f4_; + f5_ = t.f5_; + return *this; + } + + T0 f0_; + T1 f1_; + T2 f2_; + T3 f3_; + T4 f4_; + T5 f5_; +}; + +template +class GTEST_7_TUPLE_(T) { + public: + template friend class gtest_internal::Get; + + tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, + GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, + GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6) : f0_(f0), f1_(f1), f2_(f2), + f3_(f3), f4_(f4), f5_(f5), f6_(f6) {} + + tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), + f4_(t.f4_), f5_(t.f5_), f6_(t.f6_) {} + + template + tuple(const GTEST_7_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), + f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_7_TUPLE_(U)& t) { + return CopyFrom(t); + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_7_TUPLE_(U)& t) { + f0_ = t.f0_; + f1_ = t.f1_; + f2_ = t.f2_; + f3_ = t.f3_; + f4_ = t.f4_; + f5_ = t.f5_; + f6_ = t.f6_; + return *this; + } + + T0 f0_; + T1 f1_; + T2 f2_; + T3 f3_; + T4 f4_; + T5 f5_; + T6 f6_; +}; + +template +class GTEST_8_TUPLE_(T) { + public: + template friend class gtest_internal::Get; + + tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, + GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, + GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, + GTEST_BY_REF_(T7) f7) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4), + f5_(f5), f6_(f6), f7_(f7) {} + + tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), + f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_) {} + + template + tuple(const GTEST_8_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), + f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_8_TUPLE_(U)& t) { + return CopyFrom(t); + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_8_TUPLE_(U)& t) { + f0_ = t.f0_; + f1_ = t.f1_; + f2_ = t.f2_; + f3_ = t.f3_; + f4_ = t.f4_; + f5_ = t.f5_; + f6_ = t.f6_; + f7_ = t.f7_; + return *this; + } + + T0 f0_; + T1 f1_; + T2 f2_; + T3 f3_; + T4 f4_; + T5 f5_; + T6 f6_; + T7 f7_; +}; + +template +class GTEST_9_TUPLE_(T) { + public: + template friend class gtest_internal::Get; + + tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_(), f8_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, + GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, + GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, GTEST_BY_REF_(T7) f7, + GTEST_BY_REF_(T8) f8) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4), + f5_(f5), f6_(f6), f7_(f7), f8_(f8) {} + + tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), + f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_) {} + + template + tuple(const GTEST_9_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), + f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_9_TUPLE_(U)& t) { + return CopyFrom(t); + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_9_TUPLE_(U)& t) { + f0_ = t.f0_; + f1_ = t.f1_; + f2_ = t.f2_; + f3_ = t.f3_; + f4_ = t.f4_; + f5_ = t.f5_; + f6_ = t.f6_; + f7_ = t.f7_; + f8_ = t.f8_; + return *this; + } + + T0 f0_; + T1 f1_; + T2 f2_; + T3 f3_; + T4 f4_; + T5 f5_; + T6 f6_; + T7 f7_; + T8 f8_; +}; + +template +class tuple { + public: + template friend class gtest_internal::Get; + + tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_(), f8_(), + f9_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, + GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, + GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, GTEST_BY_REF_(T7) f7, + GTEST_BY_REF_(T8) f8, GTEST_BY_REF_(T9) f9) : f0_(f0), f1_(f1), f2_(f2), + f3_(f3), f4_(f4), f5_(f5), f6_(f6), f7_(f7), f8_(f8), f9_(f9) {} + + tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), + f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_), f9_(t.f9_) {} + + template + tuple(const GTEST_10_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), + f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_), + f9_(t.f9_) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_10_TUPLE_(U)& t) { + return CopyFrom(t); + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_10_TUPLE_(U)& t) { + f0_ = t.f0_; + f1_ = t.f1_; + f2_ = t.f2_; + f3_ = t.f3_; + f4_ = t.f4_; + f5_ = t.f5_; + f6_ = t.f6_; + f7_ = t.f7_; + f8_ = t.f8_; + f9_ = t.f9_; + return *this; + } + + T0 f0_; + T1 f1_; + T2 f2_; + T3 f3_; + T4 f4_; + T5 f5_; + T6 f6_; + T7 f7_; + T8 f8_; + T9 f9_; +}; + +// 6.1.3.2 Tuple creation functions. + +// Known limitations: we don't support passing an +// std::tr1::reference_wrapper to make_tuple(). And we don't +// implement tie(). + +inline tuple<> make_tuple() { return tuple<>(); } + +template +inline GTEST_1_TUPLE_(T) make_tuple(const T0& f0) { + return GTEST_1_TUPLE_(T)(f0); +} + +template +inline GTEST_2_TUPLE_(T) make_tuple(const T0& f0, const T1& f1) { + return GTEST_2_TUPLE_(T)(f0, f1); +} + +template +inline GTEST_3_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2) { + return GTEST_3_TUPLE_(T)(f0, f1, f2); +} + +template +inline GTEST_4_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, + const T3& f3) { + return GTEST_4_TUPLE_(T)(f0, f1, f2, f3); +} + +template +inline GTEST_5_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, + const T3& f3, const T4& f4) { + return GTEST_5_TUPLE_(T)(f0, f1, f2, f3, f4); +} + +template +inline GTEST_6_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, + const T3& f3, const T4& f4, const T5& f5) { + return GTEST_6_TUPLE_(T)(f0, f1, f2, f3, f4, f5); +} + +template +inline GTEST_7_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, + const T3& f3, const T4& f4, const T5& f5, const T6& f6) { + return GTEST_7_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6); +} + +template +inline GTEST_8_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, + const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7) { + return GTEST_8_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7); +} + +template +inline GTEST_9_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, + const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7, + const T8& f8) { + return GTEST_9_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7, f8); +} + +template +inline GTEST_10_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, + const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7, + const T8& f8, const T9& f9) { + return GTEST_10_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7, f8, f9); +} + +// 6.1.3.3 Tuple helper classes. + +template struct tuple_size; + +template +struct tuple_size { + static const int value = 0; +}; + +template +struct tuple_size { + static const int value = 1; +}; + +template +struct tuple_size { + static const int value = 2; +}; + +template +struct tuple_size { + static const int value = 3; +}; + +template +struct tuple_size { + static const int value = 4; +}; + +template +struct tuple_size { + static const int value = 5; +}; + +template +struct tuple_size { + static const int value = 6; +}; + +template +struct tuple_size { + static const int value = 7; +}; + +template +struct tuple_size { + static const int value = 8; +}; + +template +struct tuple_size { + static const int value = 9; +}; + +template +struct tuple_size { + static const int value = 10; +}; + +template +struct tuple_element { + typedef typename gtest_internal::TupleElement< + k < (tuple_size::value), k, Tuple>::type type; +}; + +#define GTEST_TUPLE_ELEMENT_(k, Tuple) typename tuple_element::type + +// 6.1.3.4 Element access. + +namespace gtest_internal { + +template <> +class Get<0> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(0, Tuple)) + Field(Tuple& t) { return t.f0_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(0, Tuple)) + ConstField(const Tuple& t) { return t.f0_; } +}; + +template <> +class Get<1> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(1, Tuple)) + Field(Tuple& t) { return t.f1_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(1, Tuple)) + ConstField(const Tuple& t) { return t.f1_; } +}; + +template <> +class Get<2> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(2, Tuple)) + Field(Tuple& t) { return t.f2_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(2, Tuple)) + ConstField(const Tuple& t) { return t.f2_; } +}; + +template <> +class Get<3> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(3, Tuple)) + Field(Tuple& t) { return t.f3_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(3, Tuple)) + ConstField(const Tuple& t) { return t.f3_; } +}; + +template <> +class Get<4> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(4, Tuple)) + Field(Tuple& t) { return t.f4_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(4, Tuple)) + ConstField(const Tuple& t) { return t.f4_; } +}; + +template <> +class Get<5> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(5, Tuple)) + Field(Tuple& t) { return t.f5_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(5, Tuple)) + ConstField(const Tuple& t) { return t.f5_; } +}; + +template <> +class Get<6> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(6, Tuple)) + Field(Tuple& t) { return t.f6_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(6, Tuple)) + ConstField(const Tuple& t) { return t.f6_; } +}; + +template <> +class Get<7> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(7, Tuple)) + Field(Tuple& t) { return t.f7_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(7, Tuple)) + ConstField(const Tuple& t) { return t.f7_; } +}; + +template <> +class Get<8> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(8, Tuple)) + Field(Tuple& t) { return t.f8_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(8, Tuple)) + ConstField(const Tuple& t) { return t.f8_; } +}; + +template <> +class Get<9> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(9, Tuple)) + Field(Tuple& t) { return t.f9_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(9, Tuple)) + ConstField(const Tuple& t) { return t.f9_; } +}; + +} // namespace gtest_internal + +template +GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(k, GTEST_10_TUPLE_(T))) +get(GTEST_10_TUPLE_(T)& t) { + return gtest_internal::Get::Field(t); +} + +template +GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(k, GTEST_10_TUPLE_(T))) +get(const GTEST_10_TUPLE_(T)& t) { + return gtest_internal::Get::ConstField(t); +} + +// 6.1.3.5 Relational operators + +// We only implement == and !=, as we don't have a need for the rest yet. + +namespace gtest_internal { + +// SameSizeTuplePrefixComparator::Eq(t1, t2) returns true if the +// first k fields of t1 equals the first k fields of t2. +// SameSizeTuplePrefixComparator(k1, k2) would be a compiler error if +// k1 != k2. +template +struct SameSizeTuplePrefixComparator; + +template <> +struct SameSizeTuplePrefixComparator<0, 0> { + template + static bool Eq(const Tuple1& /* t1 */, const Tuple2& /* t2 */) { + return true; + } +}; + +template +struct SameSizeTuplePrefixComparator { + template + static bool Eq(const Tuple1& t1, const Tuple2& t2) { + return SameSizeTuplePrefixComparator::Eq(t1, t2) && + ::std::tr1::get(t1) == ::std::tr1::get(t2); + } +}; + +} // namespace gtest_internal + +template +inline bool operator==(const GTEST_10_TUPLE_(T)& t, + const GTEST_10_TUPLE_(U)& u) { + return gtest_internal::SameSizeTuplePrefixComparator< + tuple_size::value, + tuple_size::value>::Eq(t, u); +} + +template +inline bool operator!=(const GTEST_10_TUPLE_(T)& t, + const GTEST_10_TUPLE_(U)& u) { return !(t == u); } + +// 6.1.4 Pairs. +// Unimplemented. + +} // namespace tr1 +} // namespace std + +#undef GTEST_0_TUPLE_ +#undef GTEST_1_TUPLE_ +#undef GTEST_2_TUPLE_ +#undef GTEST_3_TUPLE_ +#undef GTEST_4_TUPLE_ +#undef GTEST_5_TUPLE_ +#undef GTEST_6_TUPLE_ +#undef GTEST_7_TUPLE_ +#undef GTEST_8_TUPLE_ +#undef GTEST_9_TUPLE_ +#undef GTEST_10_TUPLE_ + +#undef GTEST_0_TYPENAMES_ +#undef GTEST_1_TYPENAMES_ +#undef GTEST_2_TYPENAMES_ +#undef GTEST_3_TYPENAMES_ +#undef GTEST_4_TYPENAMES_ +#undef GTEST_5_TYPENAMES_ +#undef GTEST_6_TYPENAMES_ +#undef GTEST_7_TYPENAMES_ +#undef GTEST_8_TYPENAMES_ +#undef GTEST_9_TYPENAMES_ +#undef GTEST_10_TYPENAMES_ + +#undef GTEST_DECLARE_TUPLE_AS_FRIEND_ +#undef GTEST_BY_REF_ +#undef GTEST_ADD_REF_ +#undef GTEST_TUPLE_ELEMENT_ + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_ +# elif GTEST_ENV_HAS_STD_TUPLE_ +# include +// C++11 puts its tuple into the ::std namespace rather than +// ::std::tr1. gtest expects tuple to live in ::std::tr1, so put it there. +// This causes undefined behavior, but supported compilers react in +// the way we intend. +namespace std { +namespace tr1 { +using ::std::get; +using ::std::make_tuple; +using ::std::tuple; +using ::std::tuple_element; +using ::std::tuple_size; +} +} + +# elif GTEST_OS_SYMBIAN + +// On Symbian, BOOST_HAS_TR1_TUPLE causes Boost's TR1 tuple library to +// use STLport's tuple implementation, which unfortunately doesn't +// work as the copy of STLport distributed with Symbian is incomplete. +// By making sure BOOST_HAS_TR1_TUPLE is undefined, we force Boost to +// use its own tuple implementation. +# ifdef BOOST_HAS_TR1_TUPLE +# undef BOOST_HAS_TR1_TUPLE +# endif // BOOST_HAS_TR1_TUPLE + +// This prevents , which defines +// BOOST_HAS_TR1_TUPLE, from being #included by Boost's . +# define BOOST_TR1_DETAIL_CONFIG_HPP_INCLUDED +# include + +# elif defined(__GNUC__) && (GTEST_GCC_VER_ >= 40000) +// GCC 4.0+ implements tr1/tuple in the header. This does +// not conform to the TR1 spec, which requires the header to be . + +# if !GTEST_HAS_RTTI && GTEST_GCC_VER_ < 40302 +// Until version 4.3.2, gcc has a bug that causes , +// which is #included by , to not compile when RTTI is +// disabled. _TR1_FUNCTIONAL is the header guard for +// . Hence the following #define is a hack to prevent +// from being included. +# define _TR1_FUNCTIONAL 1 +# include +# undef _TR1_FUNCTIONAL // Allows the user to #include + // if he chooses to. +# else +# include // NOLINT +# endif // !GTEST_HAS_RTTI && GTEST_GCC_VER_ < 40302 + +# else +// If the compiler is not GCC 4.0+, we assume the user is using a +// spec-conforming TR1 implementation. +# include // NOLINT +# endif // GTEST_USE_OWN_TR1_TUPLE + +#endif // GTEST_HAS_TR1_TUPLE + +// Determines whether clone(2) is supported. +// Usually it will only be available on Linux, excluding +// Linux on the Itanium architecture. +// Also see http://linux.die.net/man/2/clone. +#ifndef GTEST_HAS_CLONE +// The user didn't tell us, so we need to figure it out. + +# if GTEST_OS_LINUX && !defined(__ia64__) +# if GTEST_OS_LINUX_ANDROID +// On Android, clone() is only available on ARM starting with Gingerbread. +# if defined(__arm__) && __ANDROID_API__ >= 9 +# define GTEST_HAS_CLONE 1 +# else +# define GTEST_HAS_CLONE 0 +# endif +# else +# define GTEST_HAS_CLONE 1 +# endif +# else +# define GTEST_HAS_CLONE 0 +# endif // GTEST_OS_LINUX && !defined(__ia64__) + +#endif // GTEST_HAS_CLONE + +// Determines whether to support stream redirection. This is used to test +// output correctness and to implement death tests. +#ifndef GTEST_HAS_STREAM_REDIRECTION +// By default, we assume that stream redirection is supported on all +// platforms except known mobile ones. +# if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN +# define GTEST_HAS_STREAM_REDIRECTION 0 +# else +# define GTEST_HAS_STREAM_REDIRECTION 1 +# endif // !GTEST_OS_WINDOWS_MOBILE && !GTEST_OS_SYMBIAN +#endif // GTEST_HAS_STREAM_REDIRECTION + +// Determines whether to support death tests. +// Google Test does not support death tests for VC 7.1 and earlier as +// abort() in a VC 7.1 application compiled as GUI in debug config +// pops up a dialog window that cannot be suppressed programmatically. +#if (GTEST_OS_LINUX || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS || \ + (GTEST_OS_MAC && !GTEST_OS_IOS) || GTEST_OS_IOS_SIMULATOR || \ + (GTEST_OS_WINDOWS_DESKTOP && _MSC_VER >= 1400) || \ + GTEST_OS_WINDOWS_MINGW || GTEST_OS_AIX || GTEST_OS_HPUX || \ + GTEST_OS_OPENBSD || GTEST_OS_QNX) +# define GTEST_HAS_DEATH_TEST 1 +# include // NOLINT +#endif + +// We don't support MSVC 7.1 with exceptions disabled now. Therefore +// all the compilers we care about are adequate for supporting +// value-parameterized tests. +#define GTEST_HAS_PARAM_TEST 1 + +// Determines whether to support type-driven tests. + +// Typed tests need and variadic macros, which GCC, VC++ 8.0, +// Sun Pro CC, IBM Visual Age, and HP aCC support. +#if defined(__GNUC__) || (_MSC_VER >= 1400) || defined(__SUNPRO_CC) || \ + defined(__IBMCPP__) || defined(__HP_aCC) +# define GTEST_HAS_TYPED_TEST 1 +# define GTEST_HAS_TYPED_TEST_P 1 +#endif + +// Determines whether to support Combine(). This only makes sense when +// value-parameterized tests are enabled. The implementation doesn't +// work on Sun Studio since it doesn't understand templated conversion +// operators. +#if GTEST_HAS_PARAM_TEST && GTEST_HAS_TR1_TUPLE && !defined(__SUNPRO_CC) +# define GTEST_HAS_COMBINE 1 +#endif + +// Determines whether the system compiler uses UTF-16 for encoding wide strings. +#define GTEST_WIDE_STRING_USES_UTF16_ \ + (GTEST_OS_WINDOWS || GTEST_OS_CYGWIN || GTEST_OS_SYMBIAN || GTEST_OS_AIX) + +// Determines whether test results can be streamed to a socket. +#if GTEST_OS_LINUX +# define GTEST_CAN_STREAM_RESULTS_ 1 +#endif + +// Defines some utility macros. + +// The GNU compiler emits a warning if nested "if" statements are followed by +// an "else" statement and braces are not used to explicitly disambiguate the +// "else" binding. This leads to problems with code like: +// +// if (gate) +// ASSERT_*(condition) << "Some message"; +// +// The "switch (0) case 0:" idiom is used to suppress this. +#ifdef __INTEL_COMPILER +# define GTEST_AMBIGUOUS_ELSE_BLOCKER_ +#else +# define GTEST_AMBIGUOUS_ELSE_BLOCKER_ switch (0) case 0: default: // NOLINT +#endif + +// Use this annotation at the end of a struct/class definition to +// prevent the compiler from optimizing away instances that are never +// used. This is useful when all interesting logic happens inside the +// c'tor and / or d'tor. Example: +// +// struct Foo { +// Foo() { ... } +// } GTEST_ATTRIBUTE_UNUSED_; +// +// Also use it after a variable or parameter declaration to tell the +// compiler the variable/parameter does not have to be used. +#if defined(__GNUC__) && !defined(COMPILER_ICC) +# define GTEST_ATTRIBUTE_UNUSED_ __attribute__ ((unused)) +#else +# define GTEST_ATTRIBUTE_UNUSED_ +#endif + +// A macro to disallow operator= +// This should be used in the private: declarations for a class. +#define GTEST_DISALLOW_ASSIGN_(type)\ + void operator=(type const &) + +// A macro to disallow copy constructor and operator= +// This should be used in the private: declarations for a class. +#define GTEST_DISALLOW_COPY_AND_ASSIGN_(type)\ + type(type const &);\ + GTEST_DISALLOW_ASSIGN_(type) + +// Tell the compiler to warn about unused return values for functions declared +// with this macro. The macro should be used on function declarations +// following the argument list: +// +// Sprocket* AllocateSprocket() GTEST_MUST_USE_RESULT_; +#if defined(__GNUC__) && (GTEST_GCC_VER_ >= 30400) && !defined(COMPILER_ICC) +# define GTEST_MUST_USE_RESULT_ __attribute__ ((warn_unused_result)) +#else +# define GTEST_MUST_USE_RESULT_ +#endif // __GNUC__ && (GTEST_GCC_VER_ >= 30400) && !COMPILER_ICC + +// Determine whether the compiler supports Microsoft's Structured Exception +// Handling. This is supported by several Windows compilers but generally +// does not exist on any other system. +#ifndef GTEST_HAS_SEH +// The user didn't tell us, so we need to figure it out. + +# if defined(_MSC_VER) || defined(__BORLANDC__) +// These two compilers are known to support SEH. +# define GTEST_HAS_SEH 1 +# else +// Assume no SEH. +# define GTEST_HAS_SEH 0 +# endif + +#endif // GTEST_HAS_SEH + +#ifdef _MSC_VER + +# if GTEST_LINKED_AS_SHARED_LIBRARY +# define GTEST_API_ __declspec(dllimport) +# elif GTEST_CREATE_SHARED_LIBRARY +# define GTEST_API_ __declspec(dllexport) +# endif + +#endif // _MSC_VER + +#ifndef GTEST_API_ +# define GTEST_API_ +#endif + +#ifdef __GNUC__ +// Ask the compiler to never inline a given function. +# define GTEST_NO_INLINE_ __attribute__((noinline)) +#else +# define GTEST_NO_INLINE_ +#endif + +// _LIBCPP_VERSION is defined by the libc++ library from the LLVM project. +#if defined(__GLIBCXX__) || defined(_LIBCPP_VERSION) +# define GTEST_HAS_CXXABI_H_ 1 +#else +# define GTEST_HAS_CXXABI_H_ 0 +#endif + +namespace testing { + +class Message; + +namespace internal { + +// The GTEST_COMPILE_ASSERT_ macro can be used to verify that a compile time +// expression is true. For example, you could use it to verify the +// size of a static array: +// +// GTEST_COMPILE_ASSERT_(ARRAYSIZE(content_type_names) == CONTENT_NUM_TYPES, +// content_type_names_incorrect_size); +// +// or to make sure a struct is smaller than a certain size: +// +// GTEST_COMPILE_ASSERT_(sizeof(foo) < 128, foo_too_large); +// +// The second argument to the macro is the name of the variable. If +// the expression is false, most compilers will issue a warning/error +// containing the name of the variable. + +template +struct CompileAssert { +}; + +#define GTEST_COMPILE_ASSERT_(expr, msg) \ + typedef ::testing::internal::CompileAssert<(bool(expr))> \ + msg[bool(expr) ? 1 : -1] + +// Implementation details of GTEST_COMPILE_ASSERT_: +// +// - GTEST_COMPILE_ASSERT_ works by defining an array type that has -1 +// elements (and thus is invalid) when the expression is false. +// +// - The simpler definition +// +// #define GTEST_COMPILE_ASSERT_(expr, msg) typedef char msg[(expr) ? 1 : -1] +// +// does not work, as gcc supports variable-length arrays whose sizes +// are determined at run-time (this is gcc's extension and not part +// of the C++ standard). As a result, gcc fails to reject the +// following code with the simple definition: +// +// int foo; +// GTEST_COMPILE_ASSERT_(foo, msg); // not supposed to compile as foo is +// // not a compile-time constant. +// +// - By using the type CompileAssert<(bool(expr))>, we ensures that +// expr is a compile-time constant. (Template arguments must be +// determined at compile-time.) +// +// - The outter parentheses in CompileAssert<(bool(expr))> are necessary +// to work around a bug in gcc 3.4.4 and 4.0.1. If we had written +// +// CompileAssert +// +// instead, these compilers will refuse to compile +// +// GTEST_COMPILE_ASSERT_(5 > 0, some_message); +// +// (They seem to think the ">" in "5 > 0" marks the end of the +// template argument list.) +// +// - The array size is (bool(expr) ? 1 : -1), instead of simply +// +// ((expr) ? 1 : -1). +// +// This is to avoid running into a bug in MS VC 7.1, which +// causes ((0.0) ? 1 : -1) to incorrectly evaluate to 1. + +// StaticAssertTypeEqHelper is used by StaticAssertTypeEq defined in gtest.h. +// +// This template is declared, but intentionally undefined. +template +struct StaticAssertTypeEqHelper; + +template +struct StaticAssertTypeEqHelper {}; + +#if GTEST_HAS_GLOBAL_STRING +typedef ::string string; +#else +typedef ::std::string string; +#endif // GTEST_HAS_GLOBAL_STRING + +#if GTEST_HAS_GLOBAL_WSTRING +typedef ::wstring wstring; +#elif GTEST_HAS_STD_WSTRING +typedef ::std::wstring wstring; +#endif // GTEST_HAS_GLOBAL_WSTRING + +// A helper for suppressing warnings on constant condition. It just +// returns 'condition'. +GTEST_API_ bool IsTrue(bool condition); + +// Defines scoped_ptr. + +// This implementation of scoped_ptr is PARTIAL - it only contains +// enough stuff to satisfy Google Test's need. +template +class scoped_ptr { + public: + typedef T element_type; + + explicit scoped_ptr(T* p = NULL) : ptr_(p) {} + ~scoped_ptr() { reset(); } + + T& operator*() const { return *ptr_; } + T* operator->() const { return ptr_; } + T* get() const { return ptr_; } + + T* release() { + T* const ptr = ptr_; + ptr_ = NULL; + return ptr; + } + + void reset(T* p = NULL) { + if (p != ptr_) { + if (IsTrue(sizeof(T) > 0)) { // Makes sure T is a complete type. + delete ptr_; + } + ptr_ = p; + } + } + + private: + T* ptr_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(scoped_ptr); +}; + +// Defines RE. + +// A simple C++ wrapper for . It uses the POSIX Extended +// Regular Expression syntax. +class GTEST_API_ RE { + public: + // A copy constructor is required by the Standard to initialize object + // references from r-values. + RE(const RE& other) { Init(other.pattern()); } + + // Constructs an RE from a string. + RE(const ::std::string& regex) { Init(regex.c_str()); } // NOLINT + +#if GTEST_HAS_GLOBAL_STRING + + RE(const ::string& regex) { Init(regex.c_str()); } // NOLINT + +#endif // GTEST_HAS_GLOBAL_STRING + + RE(const char* regex) { Init(regex); } // NOLINT + ~RE(); + + // Returns the string representation of the regex. + const char* pattern() const { return pattern_; } + + // FullMatch(str, re) returns true iff regular expression re matches + // the entire str. + // PartialMatch(str, re) returns true iff regular expression re + // matches a substring of str (including str itself). + // + // TODO(wan@google.com): make FullMatch() and PartialMatch() work + // when str contains NUL characters. + static bool FullMatch(const ::std::string& str, const RE& re) { + return FullMatch(str.c_str(), re); + } + static bool PartialMatch(const ::std::string& str, const RE& re) { + return PartialMatch(str.c_str(), re); + } + +#if GTEST_HAS_GLOBAL_STRING + + static bool FullMatch(const ::string& str, const RE& re) { + return FullMatch(str.c_str(), re); + } + static bool PartialMatch(const ::string& str, const RE& re) { + return PartialMatch(str.c_str(), re); + } + +#endif // GTEST_HAS_GLOBAL_STRING + + static bool FullMatch(const char* str, const RE& re); + static bool PartialMatch(const char* str, const RE& re); + + private: + void Init(const char* regex); + + // We use a const char* instead of an std::string, as Google Test used to be + // used where std::string is not available. TODO(wan@google.com): change to + // std::string. + const char* pattern_; + bool is_valid_; + +#if GTEST_USES_POSIX_RE + + regex_t full_regex_; // For FullMatch(). + regex_t partial_regex_; // For PartialMatch(). + +#else // GTEST_USES_SIMPLE_RE + + const char* full_pattern_; // For FullMatch(); + +#endif + + GTEST_DISALLOW_ASSIGN_(RE); +}; + +// Formats a source file path and a line number as they would appear +// in an error message from the compiler used to compile this code. +GTEST_API_ ::std::string FormatFileLocation(const char* file, int line); + +// Formats a file location for compiler-independent XML output. +// Although this function is not platform dependent, we put it next to +// FormatFileLocation in order to contrast the two functions. +GTEST_API_ ::std::string FormatCompilerIndependentFileLocation(const char* file, + int line); + +// Defines logging utilities: +// GTEST_LOG_(severity) - logs messages at the specified severity level. The +// message itself is streamed into the macro. +// LogToStderr() - directs all log messages to stderr. +// FlushInfoLog() - flushes informational log messages. + +enum GTestLogSeverity { + GTEST_INFO, + GTEST_WARNING, + GTEST_ERROR, + GTEST_FATAL +}; + +// Formats log entry severity, provides a stream object for streaming the +// log message, and terminates the message with a newline when going out of +// scope. +class GTEST_API_ GTestLog { + public: + GTestLog(GTestLogSeverity severity, const char* file, int line); + + // Flushes the buffers and, if severity is GTEST_FATAL, aborts the program. + ~GTestLog(); + + ::std::ostream& GetStream() { return ::std::cerr; } + + private: + const GTestLogSeverity severity_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestLog); +}; + +#define GTEST_LOG_(severity) \ + ::testing::internal::GTestLog(::testing::internal::GTEST_##severity, \ + __FILE__, __LINE__).GetStream() + +inline void LogToStderr() {} +inline void FlushInfoLog() { fflush(NULL); } + +// INTERNAL IMPLEMENTATION - DO NOT USE. +// +// GTEST_CHECK_ is an all-mode assert. It aborts the program if the condition +// is not satisfied. +// Synopsys: +// GTEST_CHECK_(boolean_condition); +// or +// GTEST_CHECK_(boolean_condition) << "Additional message"; +// +// This checks the condition and if the condition is not satisfied +// it prints message about the condition violation, including the +// condition itself, plus additional message streamed into it, if any, +// and then it aborts the program. It aborts the program irrespective of +// whether it is built in the debug mode or not. +#define GTEST_CHECK_(condition) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::IsTrue(condition)) \ + ; \ + else \ + GTEST_LOG_(FATAL) << "Condition " #condition " failed. " + +// An all-mode assert to verify that the given POSIX-style function +// call returns 0 (indicating success). Known limitation: this +// doesn't expand to a balanced 'if' statement, so enclose the macro +// in {} if you need to use it as the only statement in an 'if' +// branch. +#define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ + if (const int gtest_error = (posix_call)) \ + GTEST_LOG_(FATAL) << #posix_call << "failed with error " \ + << gtest_error + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// Use ImplicitCast_ as a safe version of static_cast for upcasting in +// the type hierarchy (e.g. casting a Foo* to a SuperclassOfFoo* or a +// const Foo*). When you use ImplicitCast_, the compiler checks that +// the cast is safe. Such explicit ImplicitCast_s are necessary in +// surprisingly many situations where C++ demands an exact type match +// instead of an argument type convertable to a target type. +// +// The syntax for using ImplicitCast_ is the same as for static_cast: +// +// ImplicitCast_(expr) +// +// ImplicitCast_ would have been part of the C++ standard library, +// but the proposal was submitted too late. It will probably make +// its way into the language in the future. +// +// This relatively ugly name is intentional. It prevents clashes with +// similar functions users may have (e.g., implicit_cast). The internal +// namespace alone is not enough because the function can be found by ADL. +template +inline To ImplicitCast_(To x) { return x; } + +// When you upcast (that is, cast a pointer from type Foo to type +// SuperclassOfFoo), it's fine to use ImplicitCast_<>, since upcasts +// always succeed. When you downcast (that is, cast a pointer from +// type Foo to type SubclassOfFoo), static_cast<> isn't safe, because +// how do you know the pointer is really of type SubclassOfFoo? It +// could be a bare Foo, or of type DifferentSubclassOfFoo. Thus, +// when you downcast, you should use this macro. In debug mode, we +// use dynamic_cast<> to double-check the downcast is legal (we die +// if it's not). In normal mode, we do the efficient static_cast<> +// instead. Thus, it's important to test in debug mode to make sure +// the cast is legal! +// This is the only place in the code we should use dynamic_cast<>. +// In particular, you SHOULDN'T be using dynamic_cast<> in order to +// do RTTI (eg code like this: +// if (dynamic_cast(foo)) HandleASubclass1Object(foo); +// if (dynamic_cast(foo)) HandleASubclass2Object(foo); +// You should design the code some other way not to need this. +// +// This relatively ugly name is intentional. It prevents clashes with +// similar functions users may have (e.g., down_cast). The internal +// namespace alone is not enough because the function can be found by ADL. +template // use like this: DownCast_(foo); +inline To DownCast_(From* f) { // so we only accept pointers + // Ensures that To is a sub-type of From *. This test is here only + // for compile-time type checking, and has no overhead in an + // optimized build at run-time, as it will be optimized away + // completely. + if (false) { + const To to = NULL; + ::testing::internal::ImplicitCast_(to); + } + +#if GTEST_HAS_RTTI + // RTTI: debug mode only! + GTEST_CHECK_(f == NULL || dynamic_cast(f) != NULL); +#endif + return static_cast(f); +} + +// Downcasts the pointer of type Base to Derived. +// Derived must be a subclass of Base. The parameter MUST +// point to a class of type Derived, not any subclass of it. +// When RTTI is available, the function performs a runtime +// check to enforce this. +template +Derived* CheckedDowncastToActualType(Base* base) { +#if GTEST_HAS_RTTI + GTEST_CHECK_(typeid(*base) == typeid(Derived)); + return dynamic_cast(base); // NOLINT +#else + return static_cast(base); // Poor man's downcast. +#endif +} + +#if GTEST_HAS_STREAM_REDIRECTION + +// Defines the stderr capturer: +// CaptureStdout - starts capturing stdout. +// GetCapturedStdout - stops capturing stdout and returns the captured string. +// CaptureStderr - starts capturing stderr. +// GetCapturedStderr - stops capturing stderr and returns the captured string. +// +GTEST_API_ void CaptureStdout(); +GTEST_API_ std::string GetCapturedStdout(); +GTEST_API_ void CaptureStderr(); +GTEST_API_ std::string GetCapturedStderr(); + +#endif // GTEST_HAS_STREAM_REDIRECTION + + +#if GTEST_HAS_DEATH_TEST + +const ::std::vector& GetInjectableArgvs(); +void SetInjectableArgvs(const ::std::vector* + new_argvs); + +// A copy of all command line arguments. Set by InitGoogleTest(). +extern ::std::vector g_argvs; + +#endif // GTEST_HAS_DEATH_TEST + +// Defines synchronization primitives. + +#if GTEST_HAS_PTHREAD + +// Sleeps for (roughly) n milli-seconds. This function is only for +// testing Google Test's own constructs. Don't use it in user tests, +// either directly or indirectly. +inline void SleepMilliseconds(int n) { + const timespec time = { + 0, // 0 seconds. + n * 1000L * 1000L, // And n ms. + }; + nanosleep(&time, NULL); +} + +// Allows a controller thread to pause execution of newly created +// threads until notified. Instances of this class must be created +// and destroyed in the controller thread. +// +// This class is only for testing Google Test's own constructs. Do not +// use it in user tests, either directly or indirectly. +class Notification { + public: + Notification() : notified_(false) { + GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_init(&mutex_, NULL)); + } + ~Notification() { + pthread_mutex_destroy(&mutex_); + } + + // Notifies all threads created with this notification to start. Must + // be called from the controller thread. + void Notify() { + pthread_mutex_lock(&mutex_); + notified_ = true; + pthread_mutex_unlock(&mutex_); + } + + // Blocks until the controller thread notifies. Must be called from a test + // thread. + void WaitForNotification() { + for (;;) { + pthread_mutex_lock(&mutex_); + const bool notified = notified_; + pthread_mutex_unlock(&mutex_); + if (notified) + break; + SleepMilliseconds(10); + } + } + + private: + pthread_mutex_t mutex_; + bool notified_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(Notification); +}; + +// As a C-function, ThreadFuncWithCLinkage cannot be templated itself. +// Consequently, it cannot select a correct instantiation of ThreadWithParam +// in order to call its Run(). Introducing ThreadWithParamBase as a +// non-templated base class for ThreadWithParam allows us to bypass this +// problem. +class ThreadWithParamBase { + public: + virtual ~ThreadWithParamBase() {} + virtual void Run() = 0; +}; + +// pthread_create() accepts a pointer to a function type with the C linkage. +// According to the Standard (7.5/1), function types with different linkages +// are different even if they are otherwise identical. Some compilers (for +// example, SunStudio) treat them as different types. Since class methods +// cannot be defined with C-linkage we need to define a free C-function to +// pass into pthread_create(). +extern "C" inline void* ThreadFuncWithCLinkage(void* thread) { + static_cast(thread)->Run(); + return NULL; +} + +// Helper class for testing Google Test's multi-threading constructs. +// To use it, write: +// +// void ThreadFunc(int param) { /* Do things with param */ } +// Notification thread_can_start; +// ... +// // The thread_can_start parameter is optional; you can supply NULL. +// ThreadWithParam thread(&ThreadFunc, 5, &thread_can_start); +// thread_can_start.Notify(); +// +// These classes are only for testing Google Test's own constructs. Do +// not use them in user tests, either directly or indirectly. +template +class ThreadWithParam : public ThreadWithParamBase { + public: + typedef void (*UserThreadFunc)(T); + + ThreadWithParam( + UserThreadFunc func, T param, Notification* thread_can_start) + : func_(func), + param_(param), + thread_can_start_(thread_can_start), + finished_(false) { + ThreadWithParamBase* const base = this; + // The thread can be created only after all fields except thread_ + // have been initialized. + GTEST_CHECK_POSIX_SUCCESS_( + pthread_create(&thread_, 0, &ThreadFuncWithCLinkage, base)); + } + ~ThreadWithParam() { Join(); } + + void Join() { + if (!finished_) { + GTEST_CHECK_POSIX_SUCCESS_(pthread_join(thread_, 0)); + finished_ = true; + } + } + + virtual void Run() { + if (thread_can_start_ != NULL) + thread_can_start_->WaitForNotification(); + func_(param_); + } + + private: + const UserThreadFunc func_; // User-supplied thread function. + const T param_; // User-supplied parameter to the thread function. + // When non-NULL, used to block execution until the controller thread + // notifies. + Notification* const thread_can_start_; + bool finished_; // true iff we know that the thread function has finished. + pthread_t thread_; // The native thread object. + + GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParam); +}; + +// MutexBase and Mutex implement mutex on pthreads-based platforms. They +// are used in conjunction with class MutexLock: +// +// Mutex mutex; +// ... +// MutexLock lock(&mutex); // Acquires the mutex and releases it at the end +// // of the current scope. +// +// MutexBase implements behavior for both statically and dynamically +// allocated mutexes. Do not use MutexBase directly. Instead, write +// the following to define a static mutex: +// +// GTEST_DEFINE_STATIC_MUTEX_(g_some_mutex); +// +// You can forward declare a static mutex like this: +// +// GTEST_DECLARE_STATIC_MUTEX_(g_some_mutex); +// +// To create a dynamic mutex, just define an object of type Mutex. +class MutexBase { + public: + // Acquires this mutex. + void Lock() { + GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_lock(&mutex_)); + owner_ = pthread_self(); + has_owner_ = true; + } + + // Releases this mutex. + void Unlock() { + // Since the lock is being released the owner_ field should no longer be + // considered valid. We don't protect writing to has_owner_ here, as it's + // the caller's responsibility to ensure that the current thread holds the + // mutex when this is called. + has_owner_ = false; + GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_unlock(&mutex_)); + } + + // Does nothing if the current thread holds the mutex. Otherwise, crashes + // with high probability. + void AssertHeld() const { + GTEST_CHECK_(has_owner_ && pthread_equal(owner_, pthread_self())) + << "The current thread is not holding the mutex @" << this; + } + + // A static mutex may be used before main() is entered. It may even + // be used before the dynamic initialization stage. Therefore we + // must be able to initialize a static mutex object at link time. + // This means MutexBase has to be a POD and its member variables + // have to be public. + public: + pthread_mutex_t mutex_; // The underlying pthread mutex. + // has_owner_ indicates whether the owner_ field below contains a valid thread + // ID and is therefore safe to inspect (e.g., to use in pthread_equal()). All + // accesses to the owner_ field should be protected by a check of this field. + // An alternative might be to memset() owner_ to all zeros, but there's no + // guarantee that a zero'd pthread_t is necessarily invalid or even different + // from pthread_self(). + bool has_owner_; + pthread_t owner_; // The thread holding the mutex. +}; + +// Forward-declares a static mutex. +# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \ + extern ::testing::internal::MutexBase mutex + +// Defines and statically (i.e. at link time) initializes a static mutex. +// The initialization list here does not explicitly initialize each field, +// instead relying on default initialization for the unspecified fields. In +// particular, the owner_ field (a pthread_t) is not explicitly initialized. +// This allows initialization to work whether pthread_t is a scalar or struct. +// The flag -Wmissing-field-initializers must not be specified for this to work. +# define GTEST_DEFINE_STATIC_MUTEX_(mutex) \ + ::testing::internal::MutexBase mutex = { PTHREAD_MUTEX_INITIALIZER, false } + +// The Mutex class can only be used for mutexes created at runtime. It +// shares its API with MutexBase otherwise. +class Mutex : public MutexBase { + public: + Mutex() { + GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_init(&mutex_, NULL)); + has_owner_ = false; + } + ~Mutex() { + GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_destroy(&mutex_)); + } + + private: + GTEST_DISALLOW_COPY_AND_ASSIGN_(Mutex); +}; + +// We cannot name this class MutexLock as the ctor declaration would +// conflict with a macro named MutexLock, which is defined on some +// platforms. Hence the typedef trick below. +class GTestMutexLock { + public: + explicit GTestMutexLock(MutexBase* mutex) + : mutex_(mutex) { mutex_->Lock(); } + + ~GTestMutexLock() { mutex_->Unlock(); } + + private: + MutexBase* const mutex_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestMutexLock); +}; + +typedef GTestMutexLock MutexLock; + +// Helpers for ThreadLocal. + +// pthread_key_create() requires DeleteThreadLocalValue() to have +// C-linkage. Therefore it cannot be templatized to access +// ThreadLocal. Hence the need for class +// ThreadLocalValueHolderBase. +class ThreadLocalValueHolderBase { + public: + virtual ~ThreadLocalValueHolderBase() {} +}; + +// Called by pthread to delete thread-local data stored by +// pthread_setspecific(). +extern "C" inline void DeleteThreadLocalValue(void* value_holder) { + delete static_cast(value_holder); +} + +// Implements thread-local storage on pthreads-based systems. +// +// // Thread 1 +// ThreadLocal tl(100); // 100 is the default value for each thread. +// +// // Thread 2 +// tl.set(150); // Changes the value for thread 2 only. +// EXPECT_EQ(150, tl.get()); +// +// // Thread 1 +// EXPECT_EQ(100, tl.get()); // In thread 1, tl has the original value. +// tl.set(200); +// EXPECT_EQ(200, tl.get()); +// +// The template type argument T must have a public copy constructor. +// In addition, the default ThreadLocal constructor requires T to have +// a public default constructor. +// +// An object managed for a thread by a ThreadLocal instance is deleted +// when the thread exits. Or, if the ThreadLocal instance dies in +// that thread, when the ThreadLocal dies. It's the user's +// responsibility to ensure that all other threads using a ThreadLocal +// have exited when it dies, or the per-thread objects for those +// threads will not be deleted. +// +// Google Test only uses global ThreadLocal objects. That means they +// will die after main() has returned. Therefore, no per-thread +// object managed by Google Test will be leaked as long as all threads +// using Google Test have exited when main() returns. +template +class ThreadLocal { + public: + ThreadLocal() : key_(CreateKey()), + default_() {} + explicit ThreadLocal(const T& value) : key_(CreateKey()), + default_(value) {} + + ~ThreadLocal() { + // Destroys the managed object for the current thread, if any. + DeleteThreadLocalValue(pthread_getspecific(key_)); + + // Releases resources associated with the key. This will *not* + // delete managed objects for other threads. + GTEST_CHECK_POSIX_SUCCESS_(pthread_key_delete(key_)); + } + + T* pointer() { return GetOrCreateValue(); } + const T* pointer() const { return GetOrCreateValue(); } + const T& get() const { return *pointer(); } + void set(const T& value) { *pointer() = value; } + + private: + // Holds a value of type T. + class ValueHolder : public ThreadLocalValueHolderBase { + public: + explicit ValueHolder(const T& value) : value_(value) {} + + T* pointer() { return &value_; } + + private: + T value_; + GTEST_DISALLOW_COPY_AND_ASSIGN_(ValueHolder); + }; + + static pthread_key_t CreateKey() { + pthread_key_t key; + // When a thread exits, DeleteThreadLocalValue() will be called on + // the object managed for that thread. + GTEST_CHECK_POSIX_SUCCESS_( + pthread_key_create(&key, &DeleteThreadLocalValue)); + return key; + } + + T* GetOrCreateValue() const { + ThreadLocalValueHolderBase* const holder = + static_cast(pthread_getspecific(key_)); + if (holder != NULL) { + return CheckedDowncastToActualType(holder)->pointer(); + } + + ValueHolder* const new_holder = new ValueHolder(default_); + ThreadLocalValueHolderBase* const holder_base = new_holder; + GTEST_CHECK_POSIX_SUCCESS_(pthread_setspecific(key_, holder_base)); + return new_holder->pointer(); + } + + // A key pthreads uses for looking up per-thread values. + const pthread_key_t key_; + const T default_; // The default value for each thread. + + GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadLocal); +}; + +# define GTEST_IS_THREADSAFE 1 + +#else // GTEST_HAS_PTHREAD + +// A dummy implementation of synchronization primitives (mutex, lock, +// and thread-local variable). Necessary for compiling Google Test where +// mutex is not supported - using Google Test in multiple threads is not +// supported on such platforms. + +class Mutex { + public: + Mutex() {} + void Lock() {} + void Unlock() {} + void AssertHeld() const {} +}; + +# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \ + extern ::testing::internal::Mutex mutex + +# define GTEST_DEFINE_STATIC_MUTEX_(mutex) ::testing::internal::Mutex mutex + +class GTestMutexLock { + public: + explicit GTestMutexLock(Mutex*) {} // NOLINT +}; + +typedef GTestMutexLock MutexLock; + +template +class ThreadLocal { + public: + ThreadLocal() : value_() {} + explicit ThreadLocal(const T& value) : value_(value) {} + T* pointer() { return &value_; } + const T* pointer() const { return &value_; } + const T& get() const { return value_; } + void set(const T& value) { value_ = value; } + private: + T value_; +}; + +// The above synchronization primitives have dummy implementations. +// Therefore Google Test is not thread-safe. +# define GTEST_IS_THREADSAFE 0 + +#endif // GTEST_HAS_PTHREAD + +// Returns the number of threads running in the process, or 0 to indicate that +// we cannot detect it. +GTEST_API_ size_t GetThreadCount(); + +// Passing non-POD classes through ellipsis (...) crashes the ARM +// compiler and generates a warning in Sun Studio. The Nokia Symbian +// and the IBM XL C/C++ compiler try to instantiate a copy constructor +// for objects passed through ellipsis (...), failing for uncopyable +// objects. We define this to ensure that only POD is passed through +// ellipsis on these systems. +#if defined(__SYMBIAN32__) || defined(__IBMCPP__) || defined(__SUNPRO_CC) +// We lose support for NULL detection where the compiler doesn't like +// passing non-POD classes through ellipsis (...). +# define GTEST_ELLIPSIS_NEEDS_POD_ 1 +#else +# define GTEST_CAN_COMPARE_NULL 1 +#endif + +// The Nokia Symbian and IBM XL C/C++ compilers cannot decide between +// const T& and const T* in a function template. These compilers +// _can_ decide between class template specializations for T and T*, +// so a tr1::type_traits-like is_pointer works. +#if defined(__SYMBIAN32__) || defined(__IBMCPP__) +# define GTEST_NEEDS_IS_POINTER_ 1 +#endif + +template +struct bool_constant { + typedef bool_constant type; + static const bool value = bool_value; +}; +template const bool bool_constant::value; + +typedef bool_constant false_type; +typedef bool_constant true_type; + +template +struct is_pointer : public false_type {}; + +template +struct is_pointer : public true_type {}; + +template +struct IteratorTraits { + typedef typename Iterator::value_type value_type; +}; + +template +struct IteratorTraits { + typedef T value_type; +}; + +template +struct IteratorTraits { + typedef T value_type; +}; + +#if GTEST_OS_WINDOWS +# define GTEST_PATH_SEP_ "\\" +# define GTEST_HAS_ALT_PATH_SEP_ 1 +// The biggest signed integer type the compiler supports. +typedef __int64 BiggestInt; +#else +# define GTEST_PATH_SEP_ "/" +# define GTEST_HAS_ALT_PATH_SEP_ 0 +typedef long long BiggestInt; // NOLINT +#endif // GTEST_OS_WINDOWS + +// Utilities for char. + +// isspace(int ch) and friends accept an unsigned char or EOF. char +// may be signed, depending on the compiler (or compiler flags). +// Therefore we need to cast a char to unsigned char before calling +// isspace(), etc. + +inline bool IsAlpha(char ch) { + return isalpha(static_cast(ch)) != 0; +} +inline bool IsAlNum(char ch) { + return isalnum(static_cast(ch)) != 0; +} +inline bool IsDigit(char ch) { + return isdigit(static_cast(ch)) != 0; +} +inline bool IsLower(char ch) { + return islower(static_cast(ch)) != 0; +} +inline bool IsSpace(char ch) { + return isspace(static_cast(ch)) != 0; +} +inline bool IsUpper(char ch) { + return isupper(static_cast(ch)) != 0; +} +inline bool IsXDigit(char ch) { + return isxdigit(static_cast(ch)) != 0; +} +inline bool IsXDigit(wchar_t ch) { + const unsigned char low_byte = static_cast(ch); + return ch == low_byte && isxdigit(low_byte) != 0; +} + +inline char ToLower(char ch) { + return static_cast(tolower(static_cast(ch))); +} +inline char ToUpper(char ch) { + return static_cast(toupper(static_cast(ch))); +} + +// The testing::internal::posix namespace holds wrappers for common +// POSIX functions. These wrappers hide the differences between +// Windows/MSVC and POSIX systems. Since some compilers define these +// standard functions as macros, the wrapper cannot have the same name +// as the wrapped function. + +namespace posix { + +// Functions with a different name on Windows. + +#if GTEST_OS_WINDOWS + +typedef struct _stat StatStruct; + +# ifdef __BORLANDC__ +inline int IsATTY(int fd) { return isatty(fd); } +inline int StrCaseCmp(const char* s1, const char* s2) { + return stricmp(s1, s2); +} +inline char* StrDup(const char* src) { return strdup(src); } +# else // !__BORLANDC__ +# if GTEST_OS_WINDOWS_MOBILE +inline int IsATTY(int /* fd */) { return 0; } +# else +inline int IsATTY(int fd) { return _isatty(fd); } +# endif // GTEST_OS_WINDOWS_MOBILE +inline int StrCaseCmp(const char* s1, const char* s2) { + return _stricmp(s1, s2); +} +inline char* StrDup(const char* src) { return _strdup(src); } +# endif // __BORLANDC__ + +# if GTEST_OS_WINDOWS_MOBILE +inline int FileNo(FILE* file) { return reinterpret_cast(_fileno(file)); } +// Stat(), RmDir(), and IsDir() are not needed on Windows CE at this +// time and thus not defined there. +# else +inline int FileNo(FILE* file) { return _fileno(file); } +inline int Stat(const char* path, StatStruct* buf) { return _stat(path, buf); } +inline int RmDir(const char* dir) { return _rmdir(dir); } +inline bool IsDir(const StatStruct& st) { + return (_S_IFDIR & st.st_mode) != 0; +} +# endif // GTEST_OS_WINDOWS_MOBILE + +#else + +typedef struct stat StatStruct; + +inline int FileNo(FILE* file) { return fileno(file); } +inline int IsATTY(int fd) { return isatty(fd); } +inline int Stat(const char* path, StatStruct* buf) { return stat(path, buf); } +inline int StrCaseCmp(const char* s1, const char* s2) { + return strcasecmp(s1, s2); +} +inline char* StrDup(const char* src) { return strdup(src); } +inline int RmDir(const char* dir) { return rmdir(dir); } +inline bool IsDir(const StatStruct& st) { return S_ISDIR(st.st_mode); } + +#endif // GTEST_OS_WINDOWS + +// Functions deprecated by MSVC 8.0. + +#ifdef _MSC_VER +// Temporarily disable warning 4996 (deprecated function). +# pragma warning(push) +# pragma warning(disable:4996) +#endif + +inline const char* StrNCpy(char* dest, const char* src, size_t n) { + return strncpy(dest, src, n); +} + +// ChDir(), FReopen(), FDOpen(), Read(), Write(), Close(), and +// StrError() aren't needed on Windows CE at this time and thus not +// defined there. + +#if !GTEST_OS_WINDOWS_MOBILE +inline int ChDir(const char* dir) { return chdir(dir); } +#endif +inline FILE* FOpen(const char* path, const char* mode) { + return fopen(path, mode); +} +#if !GTEST_OS_WINDOWS_MOBILE +inline FILE *FReopen(const char* path, const char* mode, FILE* stream) { + return freopen(path, mode, stream); +} +inline FILE* FDOpen(int fd, const char* mode) { return fdopen(fd, mode); } +#endif +inline int FClose(FILE* fp) { return fclose(fp); } +#if !GTEST_OS_WINDOWS_MOBILE +inline int Read(int fd, void* buf, unsigned int count) { + return static_cast(read(fd, buf, count)); +} +inline int Write(int fd, const void* buf, unsigned int count) { + return static_cast(write(fd, buf, count)); +} +inline int Close(int fd) { return close(fd); } +inline const char* StrError(int errnum) { return strerror(errnum); } +#endif +inline const char* GetEnv(const char* name) { +#if GTEST_OS_WINDOWS_MOBILE + // We are on Windows CE, which has no environment variables. + return NULL; +#elif defined(__BORLANDC__) || defined(__SunOS_5_8) || defined(__SunOS_5_9) + // Environment variables which we programmatically clear will be set to the + // empty string rather than unset (NULL). Handle that case. + const char* const env = getenv(name); + return (env != NULL && env[0] != '\0') ? env : NULL; +#else + return getenv(name); +#endif +} + +#ifdef _MSC_VER +# pragma warning(pop) // Restores the warning state. +#endif + +#if GTEST_OS_WINDOWS_MOBILE +// Windows CE has no C library. The abort() function is used in +// several places in Google Test. This implementation provides a reasonable +// imitation of standard behaviour. +void Abort(); +#else +inline void Abort() { abort(); } +#endif // GTEST_OS_WINDOWS_MOBILE + +} // namespace posix + +// MSVC "deprecates" snprintf and issues warnings wherever it is used. In +// order to avoid these warnings, we need to use _snprintf or _snprintf_s on +// MSVC-based platforms. We map the GTEST_SNPRINTF_ macro to the appropriate +// function in order to achieve that. We use macro definition here because +// snprintf is a variadic function. +#if _MSC_VER >= 1400 && !GTEST_OS_WINDOWS_MOBILE +// MSVC 2005 and above support variadic macros. +# define GTEST_SNPRINTF_(buffer, size, format, ...) \ + _snprintf_s(buffer, size, size, format, __VA_ARGS__) +#elif defined(_MSC_VER) +// Windows CE does not define _snprintf_s and MSVC prior to 2005 doesn't +// complain about _snprintf. +# define GTEST_SNPRINTF_ _snprintf +#else +# define GTEST_SNPRINTF_ snprintf +#endif + +// The maximum number a BiggestInt can represent. This definition +// works no matter BiggestInt is represented in one's complement or +// two's complement. +// +// We cannot rely on numeric_limits in STL, as __int64 and long long +// are not part of standard C++ and numeric_limits doesn't need to be +// defined for them. +const BiggestInt kMaxBiggestInt = + ~(static_cast(1) << (8*sizeof(BiggestInt) - 1)); + +// This template class serves as a compile-time function from size to +// type. It maps a size in bytes to a primitive type with that +// size. e.g. +// +// TypeWithSize<4>::UInt +// +// is typedef-ed to be unsigned int (unsigned integer made up of 4 +// bytes). +// +// Such functionality should belong to STL, but I cannot find it +// there. +// +// Google Test uses this class in the implementation of floating-point +// comparison. +// +// For now it only handles UInt (unsigned int) as that's all Google Test +// needs. Other types can be easily added in the future if need +// arises. +template +class TypeWithSize { + public: + // This prevents the user from using TypeWithSize with incorrect + // values of N. + typedef void UInt; +}; + +// The specialization for size 4. +template <> +class TypeWithSize<4> { + public: + // unsigned int has size 4 in both gcc and MSVC. + // + // As base/basictypes.h doesn't compile on Windows, we cannot use + // uint32, uint64, and etc here. + typedef int Int; + typedef unsigned int UInt; +}; + +// The specialization for size 8. +template <> +class TypeWithSize<8> { + public: +#if GTEST_OS_WINDOWS + typedef __int64 Int; + typedef unsigned __int64 UInt; +#else + typedef long long Int; // NOLINT + typedef unsigned long long UInt; // NOLINT +#endif // GTEST_OS_WINDOWS +}; + +// Integer types of known sizes. +typedef TypeWithSize<4>::Int Int32; +typedef TypeWithSize<4>::UInt UInt32; +typedef TypeWithSize<8>::Int Int64; +typedef TypeWithSize<8>::UInt UInt64; +typedef TypeWithSize<8>::Int TimeInMillis; // Represents time in milliseconds. + +// Utilities for command line flags and environment variables. + +// Macro for referencing flags. +#define GTEST_FLAG(name) FLAGS_gtest_##name + +// Macros for declaring flags. +#define GTEST_DECLARE_bool_(name) GTEST_API_ extern bool GTEST_FLAG(name) +#define GTEST_DECLARE_int32_(name) \ + GTEST_API_ extern ::testing::internal::Int32 GTEST_FLAG(name) +#define GTEST_DECLARE_string_(name) \ + GTEST_API_ extern ::std::string GTEST_FLAG(name) + +// Macros for defining flags. +#define GTEST_DEFINE_bool_(name, default_val, doc) \ + GTEST_API_ bool GTEST_FLAG(name) = (default_val) +#define GTEST_DEFINE_int32_(name, default_val, doc) \ + GTEST_API_ ::testing::internal::Int32 GTEST_FLAG(name) = (default_val) +#define GTEST_DEFINE_string_(name, default_val, doc) \ + GTEST_API_ ::std::string GTEST_FLAG(name) = (default_val) + +// Thread annotations +#define GTEST_EXCLUSIVE_LOCK_REQUIRED_(locks) +#define GTEST_LOCK_EXCLUDED_(locks) + +// Parses 'str' for a 32-bit signed integer. If successful, writes the result +// to *value and returns true; otherwise leaves *value unchanged and returns +// false. +// TODO(chandlerc): Find a better way to refactor flag and environment parsing +// out of both gtest-port.cc and gtest.cc to avoid exporting this utility +// function. +bool ParseInt32(const Message& src_text, const char* str, Int32* value); + +// Parses a bool/Int32/string from the environment variable +// corresponding to the given Google Test flag. +bool BoolFromGTestEnv(const char* flag, bool default_val); +GTEST_API_ Int32 Int32FromGTestEnv(const char* flag, Int32 default_val); +const char* StringFromGTestEnv(const char* flag, const char* default_val); + +} // namespace internal +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_ + +#if GTEST_OS_LINUX +# include +# include +# include +# include +#endif // GTEST_OS_LINUX + +#include +#include +#include +#include +#include + +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Authors: wan@google.com (Zhanyong Wan), eefacm@gmail.com (Sean Mcafee) +// +// The Google C++ Testing Framework (Google Test) +// +// This header file declares the String class and functions used internally by +// Google Test. They are subject to change without notice. They should not used +// by code external to Google Test. +// +// This header file is #included by . +// It should not be #included by other files. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_ + +#ifdef __BORLANDC__ +// string.h is not guaranteed to provide strcpy on C++ Builder. +# include +#endif + +#include +#include + + +namespace testing { +namespace internal { + +// String - an abstract class holding static string utilities. +class GTEST_API_ String { + public: + // Static utility methods + + // Clones a 0-terminated C string, allocating memory using new. The + // caller is responsible for deleting the return value using + // delete[]. Returns the cloned string, or NULL if the input is + // NULL. + // + // This is different from strdup() in string.h, which allocates + // memory using malloc(). + static const char* CloneCString(const char* c_str); + +#if GTEST_OS_WINDOWS_MOBILE + // Windows CE does not have the 'ANSI' versions of Win32 APIs. To be + // able to pass strings to Win32 APIs on CE we need to convert them + // to 'Unicode', UTF-16. + + // Creates a UTF-16 wide string from the given ANSI string, allocating + // memory using new. The caller is responsible for deleting the return + // value using delete[]. Returns the wide string, or NULL if the + // input is NULL. + // + // The wide string is created using the ANSI codepage (CP_ACP) to + // match the behaviour of the ANSI versions of Win32 calls and the + // C runtime. + static LPCWSTR AnsiToUtf16(const char* c_str); + + // Creates an ANSI string from the given wide string, allocating + // memory using new. The caller is responsible for deleting the return + // value using delete[]. Returns the ANSI string, or NULL if the + // input is NULL. + // + // The returned string is created using the ANSI codepage (CP_ACP) to + // match the behaviour of the ANSI versions of Win32 calls and the + // C runtime. + static const char* Utf16ToAnsi(LPCWSTR utf16_str); +#endif + + // Compares two C strings. Returns true iff they have the same content. + // + // Unlike strcmp(), this function can handle NULL argument(s). A + // NULL C string is considered different to any non-NULL C string, + // including the empty string. + static bool CStringEquals(const char* lhs, const char* rhs); + + // Converts a wide C string to a String using the UTF-8 encoding. + // NULL will be converted to "(null)". If an error occurred during + // the conversion, "(failed to convert from wide string)" is + // returned. + static std::string ShowWideCString(const wchar_t* wide_c_str); + + // Compares two wide C strings. Returns true iff they have the same + // content. + // + // Unlike wcscmp(), this function can handle NULL argument(s). A + // NULL C string is considered different to any non-NULL C string, + // including the empty string. + static bool WideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); + + // Compares two C strings, ignoring case. Returns true iff they + // have the same content. + // + // Unlike strcasecmp(), this function can handle NULL argument(s). + // A NULL C string is considered different to any non-NULL C string, + // including the empty string. + static bool CaseInsensitiveCStringEquals(const char* lhs, + const char* rhs); + + // Compares two wide C strings, ignoring case. Returns true iff they + // have the same content. + // + // Unlike wcscasecmp(), this function can handle NULL argument(s). + // A NULL C string is considered different to any non-NULL wide C string, + // including the empty string. + // NB: The implementations on different platforms slightly differ. + // On windows, this method uses _wcsicmp which compares according to LC_CTYPE + // environment variable. On GNU platform this method uses wcscasecmp + // which compares according to LC_CTYPE category of the current locale. + // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the + // current locale. + static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, + const wchar_t* rhs); + + // Returns true iff the given string ends with the given suffix, ignoring + // case. Any string is considered to end with an empty suffix. + static bool EndsWithCaseInsensitive( + const std::string& str, const std::string& suffix); + + // Formats a list of arguments to an std::string, using the same format + // spec string as for printf. + // + // We do not use the StringPrintf class as it is not universally + // available. + // + // The result is limited to 4096 characters (including the tailing + // 0). If 4096 characters are not enough to format the input, + // "" is returned. + static std::string Format(const char* format, ...); + + private: + String(); // Not meant to be instantiated. +}; // class String + +// Gets the content of the stringstream's buffer as an std::string. Each '\0' +// character in the buffer is replaced with "\\0". +GTEST_API_ std::string StringStreamToString(::std::stringstream* stream); + +// Converts a streamable value to an std::string. A NULL pointer is +// converted to "(null)". When the input value is a ::string, +// ::std::string, ::wstring, or ::std::wstring object, each NUL +// character in it is replaced with "\\0". + +// Declared here but defined in gtest.h, so that it has access +// to the definition of the Message class, required by the ARM +// compiler. +template +std::string StreamableToString(const T& streamable); + +} // namespace internal +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_ +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: keith.ray@gmail.com (Keith Ray) +// +// Google Test filepath utilities +// +// This header file declares classes and functions used internally by +// Google Test. They are subject to change without notice. +// +// This file is #included in . +// Do not include this header file separately! + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_ + + +namespace testing { +namespace internal { + +// FilePath - a class for file and directory pathname manipulation which +// handles platform-specific conventions (like the pathname separator). +// Used for helper functions for naming files in a directory for xml output. +// Except for Set methods, all methods are const or static, which provides an +// "immutable value object" -- useful for peace of mind. +// A FilePath with a value ending in a path separator ("like/this/") represents +// a directory, otherwise it is assumed to represent a file. In either case, +// it may or may not represent an actual file or directory in the file system. +// Names are NOT checked for syntax correctness -- no checking for illegal +// characters, malformed paths, etc. + +class GTEST_API_ FilePath { + public: + FilePath() : pathname_("") { } + FilePath(const FilePath& rhs) : pathname_(rhs.pathname_) { } + + explicit FilePath(const std::string& pathname) : pathname_(pathname) { + Normalize(); + } + + FilePath& operator=(const FilePath& rhs) { + Set(rhs); + return *this; + } + + void Set(const FilePath& rhs) { + pathname_ = rhs.pathname_; + } + + const std::string& string() const { return pathname_; } + const char* c_str() const { return pathname_.c_str(); } + + // Returns the current working directory, or "" if unsuccessful. + static FilePath GetCurrentDir(); + + // Given directory = "dir", base_name = "test", number = 0, + // extension = "xml", returns "dir/test.xml". If number is greater + // than zero (e.g., 12), returns "dir/test_12.xml". + // On Windows platform, uses \ as the separator rather than /. + static FilePath MakeFileName(const FilePath& directory, + const FilePath& base_name, + int number, + const char* extension); + + // Given directory = "dir", relative_path = "test.xml", + // returns "dir/test.xml". + // On Windows, uses \ as the separator rather than /. + static FilePath ConcatPaths(const FilePath& directory, + const FilePath& relative_path); + + // Returns a pathname for a file that does not currently exist. The pathname + // will be directory/base_name.extension or + // directory/base_name_.extension if directory/base_name.extension + // already exists. The number will be incremented until a pathname is found + // that does not already exist. + // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. + // There could be a race condition if two or more processes are calling this + // function at the same time -- they could both pick the same filename. + static FilePath GenerateUniqueFileName(const FilePath& directory, + const FilePath& base_name, + const char* extension); + + // Returns true iff the path is "". + bool IsEmpty() const { return pathname_.empty(); } + + // If input name has a trailing separator character, removes it and returns + // the name, otherwise return the name string unmodified. + // On Windows platform, uses \ as the separator, other platforms use /. + FilePath RemoveTrailingPathSeparator() const; + + // Returns a copy of the FilePath with the directory part removed. + // Example: FilePath("path/to/file").RemoveDirectoryName() returns + // FilePath("file"). If there is no directory part ("just_a_file"), it returns + // the FilePath unmodified. If there is no file part ("just_a_dir/") it + // returns an empty FilePath (""). + // On Windows platform, '\' is the path separator, otherwise it is '/'. + FilePath RemoveDirectoryName() const; + + // RemoveFileName returns the directory path with the filename removed. + // Example: FilePath("path/to/file").RemoveFileName() returns "path/to/". + // If the FilePath is "a_file" or "/a_file", RemoveFileName returns + // FilePath("./") or, on Windows, FilePath(".\\"). If the filepath does + // not have a file, like "just/a/dir/", it returns the FilePath unmodified. + // On Windows platform, '\' is the path separator, otherwise it is '/'. + FilePath RemoveFileName() const; + + // Returns a copy of the FilePath with the case-insensitive extension removed. + // Example: FilePath("dir/file.exe").RemoveExtension("EXE") returns + // FilePath("dir/file"). If a case-insensitive extension is not + // found, returns a copy of the original FilePath. + FilePath RemoveExtension(const char* extension) const; + + // Creates directories so that path exists. Returns true if successful or if + // the directories already exist; returns false if unable to create + // directories for any reason. Will also return false if the FilePath does + // not represent a directory (that is, it doesn't end with a path separator). + bool CreateDirectoriesRecursively() const; + + // Create the directory so that path exists. Returns true if successful or + // if the directory already exists; returns false if unable to create the + // directory for any reason, including if the parent directory does not + // exist. Not named "CreateDirectory" because that's a macro on Windows. + bool CreateFolder() const; + + // Returns true if FilePath describes something in the file-system, + // either a file, directory, or whatever, and that something exists. + bool FileOrDirectoryExists() const; + + // Returns true if pathname describes a directory in the file-system + // that exists. + bool DirectoryExists() const; + + // Returns true if FilePath ends with a path separator, which indicates that + // it is intended to represent a directory. Returns false otherwise. + // This does NOT check that a directory (or file) actually exists. + bool IsDirectory() const; + + // Returns true if pathname describes a root directory. (Windows has one + // root directory per disk drive.) + bool IsRootDirectory() const; + + // Returns true if pathname describes an absolute path. + bool IsAbsolutePath() const; + + private: + // Replaces multiple consecutive separators with a single separator. + // For example, "bar///foo" becomes "bar/foo". Does not eliminate other + // redundancies that might be in a pathname involving "." or "..". + // + // A pathname with multiple consecutive separators may occur either through + // user error or as a result of some scripts or APIs that generate a pathname + // with a trailing separator. On other platforms the same API or script + // may NOT generate a pathname with a trailing "/". Then elsewhere that + // pathname may have another "/" and pathname components added to it, + // without checking for the separator already being there. + // The script language and operating system may allow paths like "foo//bar" + // but some of the functions in FilePath will not handle that correctly. In + // particular, RemoveTrailingPathSeparator() only removes one separator, and + // it is called in CreateDirectoriesRecursively() assuming that it will change + // a pathname from directory syntax (trailing separator) to filename syntax. + // + // On Windows this method also replaces the alternate path separator '/' with + // the primary path separator '\\', so that for example "bar\\/\\foo" becomes + // "bar\\foo". + + void Normalize(); + + // Returns a pointer to the last occurence of a valid path separator in + // the FilePath. On Windows, for example, both '/' and '\' are valid path + // separators. Returns NULL if no path separator was found. + const char* FindLastPathSeparator() const; + + std::string pathname_; +}; // class FilePath + +} // namespace internal +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_ +// This file was GENERATED by command: +// pump.py gtest-type-util.h.pump +// DO NOT EDIT BY HAND!!! + +// Copyright 2008 Google Inc. +// All Rights Reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +// Type utilities needed for implementing typed and type-parameterized +// tests. This file is generated by a SCRIPT. DO NOT EDIT BY HAND! +// +// Currently we support at most 50 types in a list, and at most 50 +// type-parameterized tests in one type-parameterized test case. +// Please contact googletestframework@googlegroups.com if you need +// more. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_ + + +// #ifdef __GNUC__ is too general here. It is possible to use gcc without using +// libstdc++ (which is where cxxabi.h comes from). +# if GTEST_HAS_CXXABI_H_ +# include +# elif defined(__HP_aCC) +# include +# endif // GTEST_HASH_CXXABI_H_ + +namespace testing { +namespace internal { + +// GetTypeName() returns a human-readable name of type T. +// NB: This function is also used in Google Mock, so don't move it inside of +// the typed-test-only section below. +template +std::string GetTypeName() { +# if GTEST_HAS_RTTI + + const char* const name = typeid(T).name(); +# if GTEST_HAS_CXXABI_H_ || defined(__HP_aCC) + int status = 0; + // gcc's implementation of typeid(T).name() mangles the type name, + // so we have to demangle it. +# if GTEST_HAS_CXXABI_H_ + using abi::__cxa_demangle; +# endif // GTEST_HAS_CXXABI_H_ + char* const readable_name = __cxa_demangle(name, 0, 0, &status); + const std::string name_str(status == 0 ? readable_name : name); + free(readable_name); + return name_str; +# else + return name; +# endif // GTEST_HAS_CXXABI_H_ || __HP_aCC + +# else + + return ""; + +# endif // GTEST_HAS_RTTI +} + +#if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P + +// AssertyTypeEq::type is defined iff T1 and T2 are the same +// type. This can be used as a compile-time assertion to ensure that +// two types are equal. + +template +struct AssertTypeEq; + +template +struct AssertTypeEq { + typedef bool type; +}; + +// A unique type used as the default value for the arguments of class +// template Types. This allows us to simulate variadic templates +// (e.g. Types, Type, and etc), which C++ doesn't +// support directly. +struct None {}; + +// The following family of struct and struct templates are used to +// represent type lists. In particular, TypesN +// represents a type list with N types (T1, T2, ..., and TN) in it. +// Except for Types0, every struct in the family has two member types: +// Head for the first type in the list, and Tail for the rest of the +// list. + +// The empty type list. +struct Types0 {}; + +// Type lists of length 1, 2, 3, and so on. + +template +struct Types1 { + typedef T1 Head; + typedef Types0 Tail; +}; +template +struct Types2 { + typedef T1 Head; + typedef Types1 Tail; +}; + +template +struct Types3 { + typedef T1 Head; + typedef Types2 Tail; +}; + +template +struct Types4 { + typedef T1 Head; + typedef Types3 Tail; +}; + +template +struct Types5 { + typedef T1 Head; + typedef Types4 Tail; +}; + +template +struct Types6 { + typedef T1 Head; + typedef Types5 Tail; +}; + +template +struct Types7 { + typedef T1 Head; + typedef Types6 Tail; +}; + +template +struct Types8 { + typedef T1 Head; + typedef Types7 Tail; +}; + +template +struct Types9 { + typedef T1 Head; + typedef Types8 Tail; +}; + +template +struct Types10 { + typedef T1 Head; + typedef Types9 Tail; +}; + +template +struct Types11 { + typedef T1 Head; + typedef Types10 Tail; +}; + +template +struct Types12 { + typedef T1 Head; + typedef Types11 Tail; +}; + +template +struct Types13 { + typedef T1 Head; + typedef Types12 Tail; +}; + +template +struct Types14 { + typedef T1 Head; + typedef Types13 Tail; +}; + +template +struct Types15 { + typedef T1 Head; + typedef Types14 Tail; +}; + +template +struct Types16 { + typedef T1 Head; + typedef Types15 Tail; +}; + +template +struct Types17 { + typedef T1 Head; + typedef Types16 Tail; +}; + +template +struct Types18 { + typedef T1 Head; + typedef Types17 Tail; +}; + +template +struct Types19 { + typedef T1 Head; + typedef Types18 Tail; +}; + +template +struct Types20 { + typedef T1 Head; + typedef Types19 Tail; +}; + +template +struct Types21 { + typedef T1 Head; + typedef Types20 Tail; +}; + +template +struct Types22 { + typedef T1 Head; + typedef Types21 Tail; +}; + +template +struct Types23 { + typedef T1 Head; + typedef Types22 Tail; +}; + +template +struct Types24 { + typedef T1 Head; + typedef Types23 Tail; +}; + +template +struct Types25 { + typedef T1 Head; + typedef Types24 Tail; +}; + +template +struct Types26 { + typedef T1 Head; + typedef Types25 Tail; +}; + +template +struct Types27 { + typedef T1 Head; + typedef Types26 Tail; +}; + +template +struct Types28 { + typedef T1 Head; + typedef Types27 Tail; +}; + +template +struct Types29 { + typedef T1 Head; + typedef Types28 Tail; +}; + +template +struct Types30 { + typedef T1 Head; + typedef Types29 Tail; +}; + +template +struct Types31 { + typedef T1 Head; + typedef Types30 Tail; +}; + +template +struct Types32 { + typedef T1 Head; + typedef Types31 Tail; +}; + +template +struct Types33 { + typedef T1 Head; + typedef Types32 Tail; +}; + +template +struct Types34 { + typedef T1 Head; + typedef Types33 Tail; +}; + +template +struct Types35 { + typedef T1 Head; + typedef Types34 Tail; +}; + +template +struct Types36 { + typedef T1 Head; + typedef Types35 Tail; +}; + +template +struct Types37 { + typedef T1 Head; + typedef Types36 Tail; +}; + +template +struct Types38 { + typedef T1 Head; + typedef Types37 Tail; +}; + +template +struct Types39 { + typedef T1 Head; + typedef Types38 Tail; +}; + +template +struct Types40 { + typedef T1 Head; + typedef Types39 Tail; +}; + +template +struct Types41 { + typedef T1 Head; + typedef Types40 Tail; +}; + +template +struct Types42 { + typedef T1 Head; + typedef Types41 Tail; +}; + +template +struct Types43 { + typedef T1 Head; + typedef Types42 Tail; +}; + +template +struct Types44 { + typedef T1 Head; + typedef Types43 Tail; +}; + +template +struct Types45 { + typedef T1 Head; + typedef Types44 Tail; +}; + +template +struct Types46 { + typedef T1 Head; + typedef Types45 Tail; +}; + +template +struct Types47 { + typedef T1 Head; + typedef Types46 Tail; +}; + +template +struct Types48 { + typedef T1 Head; + typedef Types47 Tail; +}; + +template +struct Types49 { + typedef T1 Head; + typedef Types48 Tail; +}; + +template +struct Types50 { + typedef T1 Head; + typedef Types49 Tail; +}; + + +} // namespace internal + +// We don't want to require the users to write TypesN<...> directly, +// as that would require them to count the length. Types<...> is much +// easier to write, but generates horrible messages when there is a +// compiler error, as gcc insists on printing out each template +// argument, even if it has the default value (this means Types +// will appear as Types in the compiler +// errors). +// +// Our solution is to combine the best part of the two approaches: a +// user would write Types, and Google Test will translate +// that to TypesN internally to make error messages +// readable. The translation is done by the 'type' member of the +// Types template. +template +struct Types { + typedef internal::Types50 type; +}; + +template <> +struct Types { + typedef internal::Types0 type; +}; +template +struct Types { + typedef internal::Types1 type; +}; +template +struct Types { + typedef internal::Types2 type; +}; +template +struct Types { + typedef internal::Types3 type; +}; +template +struct Types { + typedef internal::Types4 type; +}; +template +struct Types { + typedef internal::Types5 type; +}; +template +struct Types { + typedef internal::Types6 type; +}; +template +struct Types { + typedef internal::Types7 type; +}; +template +struct Types { + typedef internal::Types8 type; +}; +template +struct Types { + typedef internal::Types9 type; +}; +template +struct Types { + typedef internal::Types10 type; +}; +template +struct Types { + typedef internal::Types11 type; +}; +template +struct Types { + typedef internal::Types12 type; +}; +template +struct Types { + typedef internal::Types13 type; +}; +template +struct Types { + typedef internal::Types14 type; +}; +template +struct Types { + typedef internal::Types15 type; +}; +template +struct Types { + typedef internal::Types16 type; +}; +template +struct Types { + typedef internal::Types17 type; +}; +template +struct Types { + typedef internal::Types18 type; +}; +template +struct Types { + typedef internal::Types19 type; +}; +template +struct Types { + typedef internal::Types20 type; +}; +template +struct Types { + typedef internal::Types21 type; +}; +template +struct Types { + typedef internal::Types22 type; +}; +template +struct Types { + typedef internal::Types23 type; +}; +template +struct Types { + typedef internal::Types24 type; +}; +template +struct Types { + typedef internal::Types25 type; +}; +template +struct Types { + typedef internal::Types26 type; +}; +template +struct Types { + typedef internal::Types27 type; +}; +template +struct Types { + typedef internal::Types28 type; +}; +template +struct Types { + typedef internal::Types29 type; +}; +template +struct Types { + typedef internal::Types30 type; +}; +template +struct Types { + typedef internal::Types31 type; +}; +template +struct Types { + typedef internal::Types32 type; +}; +template +struct Types { + typedef internal::Types33 type; +}; +template +struct Types { + typedef internal::Types34 type; +}; +template +struct Types { + typedef internal::Types35 type; +}; +template +struct Types { + typedef internal::Types36 type; +}; +template +struct Types { + typedef internal::Types37 type; +}; +template +struct Types { + typedef internal::Types38 type; +}; +template +struct Types { + typedef internal::Types39 type; +}; +template +struct Types { + typedef internal::Types40 type; +}; +template +struct Types { + typedef internal::Types41 type; +}; +template +struct Types { + typedef internal::Types42 type; +}; +template +struct Types { + typedef internal::Types43 type; +}; +template +struct Types { + typedef internal::Types44 type; +}; +template +struct Types { + typedef internal::Types45 type; +}; +template +struct Types { + typedef internal::Types46 type; +}; +template +struct Types { + typedef internal::Types47 type; +}; +template +struct Types { + typedef internal::Types48 type; +}; +template +struct Types { + typedef internal::Types49 type; +}; + +namespace internal { + +# define GTEST_TEMPLATE_ template class + +// The template "selector" struct TemplateSel is used to +// represent Tmpl, which must be a class template with one type +// parameter, as a type. TemplateSel::Bind::type is defined +// as the type Tmpl. This allows us to actually instantiate the +// template "selected" by TemplateSel. +// +// This trick is necessary for simulating typedef for class templates, +// which C++ doesn't support directly. +template +struct TemplateSel { + template + struct Bind { + typedef Tmpl type; + }; +}; + +# define GTEST_BIND_(TmplSel, T) \ + TmplSel::template Bind::type + +// A unique struct template used as the default value for the +// arguments of class template Templates. This allows us to simulate +// variadic templates (e.g. Templates, Templates, +// and etc), which C++ doesn't support directly. +template +struct NoneT {}; + +// The following family of struct and struct templates are used to +// represent template lists. In particular, TemplatesN represents a list of N templates (T1, T2, ..., and TN). Except +// for Templates0, every struct in the family has two member types: +// Head for the selector of the first template in the list, and Tail +// for the rest of the list. + +// The empty template list. +struct Templates0 {}; + +// Template lists of length 1, 2, 3, and so on. + +template +struct Templates1 { + typedef TemplateSel Head; + typedef Templates0 Tail; +}; +template +struct Templates2 { + typedef TemplateSel Head; + typedef Templates1 Tail; +}; + +template +struct Templates3 { + typedef TemplateSel Head; + typedef Templates2 Tail; +}; + +template +struct Templates4 { + typedef TemplateSel Head; + typedef Templates3 Tail; +}; + +template +struct Templates5 { + typedef TemplateSel Head; + typedef Templates4 Tail; +}; + +template +struct Templates6 { + typedef TemplateSel Head; + typedef Templates5 Tail; +}; + +template +struct Templates7 { + typedef TemplateSel Head; + typedef Templates6 Tail; +}; + +template +struct Templates8 { + typedef TemplateSel Head; + typedef Templates7 Tail; +}; + +template +struct Templates9 { + typedef TemplateSel Head; + typedef Templates8 Tail; +}; + +template +struct Templates10 { + typedef TemplateSel Head; + typedef Templates9 Tail; +}; + +template +struct Templates11 { + typedef TemplateSel Head; + typedef Templates10 Tail; +}; + +template +struct Templates12 { + typedef TemplateSel Head; + typedef Templates11 Tail; +}; + +template +struct Templates13 { + typedef TemplateSel Head; + typedef Templates12 Tail; +}; + +template +struct Templates14 { + typedef TemplateSel Head; + typedef Templates13 Tail; +}; + +template +struct Templates15 { + typedef TemplateSel Head; + typedef Templates14 Tail; +}; + +template +struct Templates16 { + typedef TemplateSel Head; + typedef Templates15 Tail; +}; + +template +struct Templates17 { + typedef TemplateSel Head; + typedef Templates16 Tail; +}; + +template +struct Templates18 { + typedef TemplateSel Head; + typedef Templates17 Tail; +}; + +template +struct Templates19 { + typedef TemplateSel Head; + typedef Templates18 Tail; +}; + +template +struct Templates20 { + typedef TemplateSel Head; + typedef Templates19 Tail; +}; + +template +struct Templates21 { + typedef TemplateSel Head; + typedef Templates20 Tail; +}; + +template +struct Templates22 { + typedef TemplateSel Head; + typedef Templates21 Tail; +}; + +template +struct Templates23 { + typedef TemplateSel Head; + typedef Templates22 Tail; +}; + +template +struct Templates24 { + typedef TemplateSel Head; + typedef Templates23 Tail; +}; + +template +struct Templates25 { + typedef TemplateSel Head; + typedef Templates24 Tail; +}; + +template +struct Templates26 { + typedef TemplateSel Head; + typedef Templates25 Tail; +}; + +template +struct Templates27 { + typedef TemplateSel Head; + typedef Templates26 Tail; +}; + +template +struct Templates28 { + typedef TemplateSel Head; + typedef Templates27 Tail; +}; + +template +struct Templates29 { + typedef TemplateSel Head; + typedef Templates28 Tail; +}; + +template +struct Templates30 { + typedef TemplateSel Head; + typedef Templates29 Tail; +}; + +template +struct Templates31 { + typedef TemplateSel Head; + typedef Templates30 Tail; +}; + +template +struct Templates32 { + typedef TemplateSel Head; + typedef Templates31 Tail; +}; + +template +struct Templates33 { + typedef TemplateSel Head; + typedef Templates32 Tail; +}; + +template +struct Templates34 { + typedef TemplateSel Head; + typedef Templates33 Tail; +}; + +template +struct Templates35 { + typedef TemplateSel Head; + typedef Templates34 Tail; +}; + +template +struct Templates36 { + typedef TemplateSel Head; + typedef Templates35 Tail; +}; + +template +struct Templates37 { + typedef TemplateSel Head; + typedef Templates36 Tail; +}; + +template +struct Templates38 { + typedef TemplateSel Head; + typedef Templates37 Tail; +}; + +template +struct Templates39 { + typedef TemplateSel Head; + typedef Templates38 Tail; +}; + +template +struct Templates40 { + typedef TemplateSel Head; + typedef Templates39 Tail; +}; + +template +struct Templates41 { + typedef TemplateSel Head; + typedef Templates40 Tail; +}; + +template +struct Templates42 { + typedef TemplateSel Head; + typedef Templates41 Tail; +}; + +template +struct Templates43 { + typedef TemplateSel Head; + typedef Templates42 Tail; +}; + +template +struct Templates44 { + typedef TemplateSel Head; + typedef Templates43 Tail; +}; + +template +struct Templates45 { + typedef TemplateSel Head; + typedef Templates44 Tail; +}; + +template +struct Templates46 { + typedef TemplateSel Head; + typedef Templates45 Tail; +}; + +template +struct Templates47 { + typedef TemplateSel Head; + typedef Templates46 Tail; +}; + +template +struct Templates48 { + typedef TemplateSel Head; + typedef Templates47 Tail; +}; + +template +struct Templates49 { + typedef TemplateSel Head; + typedef Templates48 Tail; +}; + +template +struct Templates50 { + typedef TemplateSel Head; + typedef Templates49 Tail; +}; + + +// We don't want to require the users to write TemplatesN<...> directly, +// as that would require them to count the length. Templates<...> is much +// easier to write, but generates horrible messages when there is a +// compiler error, as gcc insists on printing out each template +// argument, even if it has the default value (this means Templates +// will appear as Templates in the compiler +// errors). +// +// Our solution is to combine the best part of the two approaches: a +// user would write Templates, and Google Test will translate +// that to TemplatesN internally to make error messages +// readable. The translation is done by the 'type' member of the +// Templates template. +template +struct Templates { + typedef Templates50 type; +}; + +template <> +struct Templates { + typedef Templates0 type; +}; +template +struct Templates { + typedef Templates1 type; +}; +template +struct Templates { + typedef Templates2 type; +}; +template +struct Templates { + typedef Templates3 type; +}; +template +struct Templates { + typedef Templates4 type; +}; +template +struct Templates { + typedef Templates5 type; +}; +template +struct Templates { + typedef Templates6 type; +}; +template +struct Templates { + typedef Templates7 type; +}; +template +struct Templates { + typedef Templates8 type; +}; +template +struct Templates { + typedef Templates9 type; +}; +template +struct Templates { + typedef Templates10 type; +}; +template +struct Templates { + typedef Templates11 type; +}; +template +struct Templates { + typedef Templates12 type; +}; +template +struct Templates { + typedef Templates13 type; +}; +template +struct Templates { + typedef Templates14 type; +}; +template +struct Templates { + typedef Templates15 type; +}; +template +struct Templates { + typedef Templates16 type; +}; +template +struct Templates { + typedef Templates17 type; +}; +template +struct Templates { + typedef Templates18 type; +}; +template +struct Templates { + typedef Templates19 type; +}; +template +struct Templates { + typedef Templates20 type; +}; +template +struct Templates { + typedef Templates21 type; +}; +template +struct Templates { + typedef Templates22 type; +}; +template +struct Templates { + typedef Templates23 type; +}; +template +struct Templates { + typedef Templates24 type; +}; +template +struct Templates { + typedef Templates25 type; +}; +template +struct Templates { + typedef Templates26 type; +}; +template +struct Templates { + typedef Templates27 type; +}; +template +struct Templates { + typedef Templates28 type; +}; +template +struct Templates { + typedef Templates29 type; +}; +template +struct Templates { + typedef Templates30 type; +}; +template +struct Templates { + typedef Templates31 type; +}; +template +struct Templates { + typedef Templates32 type; +}; +template +struct Templates { + typedef Templates33 type; +}; +template +struct Templates { + typedef Templates34 type; +}; +template +struct Templates { + typedef Templates35 type; +}; +template +struct Templates { + typedef Templates36 type; +}; +template +struct Templates { + typedef Templates37 type; +}; +template +struct Templates { + typedef Templates38 type; +}; +template +struct Templates { + typedef Templates39 type; +}; +template +struct Templates { + typedef Templates40 type; +}; +template +struct Templates { + typedef Templates41 type; +}; +template +struct Templates { + typedef Templates42 type; +}; +template +struct Templates { + typedef Templates43 type; +}; +template +struct Templates { + typedef Templates44 type; +}; +template +struct Templates { + typedef Templates45 type; +}; +template +struct Templates { + typedef Templates46 type; +}; +template +struct Templates { + typedef Templates47 type; +}; +template +struct Templates { + typedef Templates48 type; +}; +template +struct Templates { + typedef Templates49 type; +}; + +// The TypeList template makes it possible to use either a single type +// or a Types<...> list in TYPED_TEST_CASE() and +// INSTANTIATE_TYPED_TEST_CASE_P(). + +template +struct TypeList { + typedef Types1 type; +}; + +template +struct TypeList > { + typedef typename Types::type type; +}; + +#endif // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P + +} // namespace internal +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_ + +// Due to C++ preprocessor weirdness, we need double indirection to +// concatenate two tokens when one of them is __LINE__. Writing +// +// foo ## __LINE__ +// +// will result in the token foo__LINE__, instead of foo followed by +// the current line number. For more details, see +// http://www.parashift.com/c++-faq-lite/misc-technical-issues.html#faq-39.6 +#define GTEST_CONCAT_TOKEN_(foo, bar) GTEST_CONCAT_TOKEN_IMPL_(foo, bar) +#define GTEST_CONCAT_TOKEN_IMPL_(foo, bar) foo ## bar + +// Google Test defines the testing::Message class to allow construction of +// test messages via the << operator. The idea is that anything +// streamable to std::ostream can be streamed to a testing::Message. +// This allows a user to use his own types in Google Test assertions by +// overloading the << operator. +// +// util/gtl/stl_logging.h overloads << for STL containers. These +// overloads cannot be defined in the std namespace, as that will be +// undefined behavior. Therefore, they are defined in the global +// namespace instead. +// +// C++'s symbol lookup rule (i.e. Koenig lookup) says that these +// overloads are visible in either the std namespace or the global +// namespace, but not other namespaces, including the testing +// namespace which Google Test's Message class is in. +// +// To allow STL containers (and other types that has a << operator +// defined in the global namespace) to be used in Google Test assertions, +// testing::Message must access the custom << operator from the global +// namespace. Hence this helper function. +// +// Note: Jeffrey Yasskin suggested an alternative fix by "using +// ::operator<<;" in the definition of Message's operator<<. That fix +// doesn't require a helper function, but unfortunately doesn't +// compile with MSVC. +template +inline void GTestStreamToHelper(std::ostream* os, const T& val) { + *os << val; +} + +class ProtocolMessage; +namespace proto2 { class Message; } + +namespace testing { + +// Forward declarations. + +class AssertionResult; // Result of an assertion. +class Message; // Represents a failure message. +class Test; // Represents a test. +class TestInfo; // Information about a test. +class TestPartResult; // Result of a test part. +class UnitTest; // A collection of test cases. + +template +::std::string PrintToString(const T& value); + +namespace internal { + +struct TraceInfo; // Information about a trace point. +class ScopedTrace; // Implements scoped trace. +class TestInfoImpl; // Opaque implementation of TestInfo +class UnitTestImpl; // Opaque implementation of UnitTest + +// How many times InitGoogleTest() has been called. +GTEST_API_ extern int g_init_gtest_count; + +// The text used in failure messages to indicate the start of the +// stack trace. +GTEST_API_ extern const char kStackTraceMarker[]; + +// A secret type that Google Test users don't know about. It has no +// definition on purpose. Therefore it's impossible to create a +// Secret object, which is what we want. +class Secret; + +// Two overloaded helpers for checking at compile time whether an +// expression is a null pointer literal (i.e. NULL or any 0-valued +// compile-time integral constant). Their return values have +// different sizes, so we can use sizeof() to test which version is +// picked by the compiler. These helpers have no implementations, as +// we only need their signatures. +// +// Given IsNullLiteralHelper(x), the compiler will pick the first +// version if x can be implicitly converted to Secret*, and pick the +// second version otherwise. Since Secret is a secret and incomplete +// type, the only expression a user can write that has type Secret* is +// a null pointer literal. Therefore, we know that x is a null +// pointer literal if and only if the first version is picked by the +// compiler. +char IsNullLiteralHelper(Secret* p); +char (&IsNullLiteralHelper(...))[2]; // NOLINT + +// A compile-time bool constant that is true if and only if x is a +// null pointer literal (i.e. NULL or any 0-valued compile-time +// integral constant). +#ifdef GTEST_ELLIPSIS_NEEDS_POD_ +// We lose support for NULL detection where the compiler doesn't like +// passing non-POD classes through ellipsis (...). +# define GTEST_IS_NULL_LITERAL_(x) false +#else +# define GTEST_IS_NULL_LITERAL_(x) \ + (sizeof(::testing::internal::IsNullLiteralHelper(x)) == 1) +#endif // GTEST_ELLIPSIS_NEEDS_POD_ + +// Appends the user-supplied message to the Google-Test-generated message. +GTEST_API_ std::string AppendUserMessage( + const std::string& gtest_msg, const Message& user_msg); + +// A helper class for creating scoped traces in user programs. +class GTEST_API_ ScopedTrace { + public: + // The c'tor pushes the given source file location and message onto + // a trace stack maintained by Google Test. + ScopedTrace(const char* file, int line, const Message& message); + + // The d'tor pops the info pushed by the c'tor. + // + // Note that the d'tor is not virtual in order to be efficient. + // Don't inherit from ScopedTrace! + ~ScopedTrace(); + + private: + GTEST_DISALLOW_COPY_AND_ASSIGN_(ScopedTrace); +} GTEST_ATTRIBUTE_UNUSED_; // A ScopedTrace object does its job in its + // c'tor and d'tor. Therefore it doesn't + // need to be used otherwise. + +// Converts a streamable value to an std::string. A NULL pointer is +// converted to "(null)". When the input value is a ::string, +// ::std::string, ::wstring, or ::std::wstring object, each NUL +// character in it is replaced with "\\0". +// Declared here but defined in gtest.h, so that it has access +// to the definition of the Message class, required by the ARM +// compiler. +template +std::string StreamableToString(const T& streamable); + +// Constructs and returns the message for an equality assertion +// (e.g. ASSERT_EQ, EXPECT_STREQ, etc) failure. +// +// The first four parameters are the expressions used in the assertion +// and their values, as strings. For example, for ASSERT_EQ(foo, bar) +// where foo is 5 and bar is 6, we have: +// +// expected_expression: "foo" +// actual_expression: "bar" +// expected_value: "5" +// actual_value: "6" +// +// The ignoring_case parameter is true iff the assertion is a +// *_STRCASEEQ*. When it's true, the string " (ignoring case)" will +// be inserted into the message. +GTEST_API_ AssertionResult EqFailure(const char* expected_expression, + const char* actual_expression, + const std::string& expected_value, + const std::string& actual_value, + bool ignoring_case); + +// Constructs a failure message for Boolean assertions such as EXPECT_TRUE. +GTEST_API_ std::string GetBoolAssertionFailureMessage( + const AssertionResult& assertion_result, + const char* expression_text, + const char* actual_predicate_value, + const char* expected_predicate_value); + +// This template class represents an IEEE floating-point number +// (either single-precision or double-precision, depending on the +// template parameters). +// +// The purpose of this class is to do more sophisticated number +// comparison. (Due to round-off error, etc, it's very unlikely that +// two floating-points will be equal exactly. Hence a naive +// comparison by the == operation often doesn't work.) +// +// Format of IEEE floating-point: +// +// The most-significant bit being the leftmost, an IEEE +// floating-point looks like +// +// sign_bit exponent_bits fraction_bits +// +// Here, sign_bit is a single bit that designates the sign of the +// number. +// +// For float, there are 8 exponent bits and 23 fraction bits. +// +// For double, there are 11 exponent bits and 52 fraction bits. +// +// More details can be found at +// http://en.wikipedia.org/wiki/IEEE_floating-point_standard. +// +// Template parameter: +// +// RawType: the raw floating-point type (either float or double) +template +class FloatingPoint { + public: + // Defines the unsigned integer type that has the same size as the + // floating point number. + typedef typename TypeWithSize::UInt Bits; + + // Constants. + + // # of bits in a number. + static const size_t kBitCount = 8*sizeof(RawType); + + // # of fraction bits in a number. + static const size_t kFractionBitCount = + std::numeric_limits::digits - 1; + + // # of exponent bits in a number. + static const size_t kExponentBitCount = kBitCount - 1 - kFractionBitCount; + + // The mask for the sign bit. + static const Bits kSignBitMask = static_cast(1) << (kBitCount - 1); + + // The mask for the fraction bits. + static const Bits kFractionBitMask = + ~static_cast(0) >> (kExponentBitCount + 1); + + // The mask for the exponent bits. + static const Bits kExponentBitMask = ~(kSignBitMask | kFractionBitMask); + + // How many ULP's (Units in the Last Place) we want to tolerate when + // comparing two numbers. The larger the value, the more error we + // allow. A 0 value means that two numbers must be exactly the same + // to be considered equal. + // + // The maximum error of a single floating-point operation is 0.5 + // units in the last place. On Intel CPU's, all floating-point + // calculations are done with 80-bit precision, while double has 64 + // bits. Therefore, 4 should be enough for ordinary use. + // + // See the following article for more details on ULP: + // http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm. + static const size_t kMaxUlps = 4; + + // Constructs a FloatingPoint from a raw floating-point number. + // + // On an Intel CPU, passing a non-normalized NAN (Not a Number) + // around may change its bits, although the new value is guaranteed + // to be also a NAN. Therefore, don't expect this constructor to + // preserve the bits in x when x is a NAN. + explicit FloatingPoint(const RawType& x) { u_.value_ = x; } + + // Static methods + + // Reinterprets a bit pattern as a floating-point number. + // + // This function is needed to test the AlmostEquals() method. + static RawType ReinterpretBits(const Bits bits) { + FloatingPoint fp(0); + fp.u_.bits_ = bits; + return fp.u_.value_; + } + + // Returns the floating-point number that represent positive infinity. + static RawType Infinity() { + return ReinterpretBits(kExponentBitMask); + } + + // Non-static methods + + // Returns the bits that represents this number. + const Bits &bits() const { return u_.bits_; } + + // Returns the exponent bits of this number. + Bits exponent_bits() const { return kExponentBitMask & u_.bits_; } + + // Returns the fraction bits of this number. + Bits fraction_bits() const { return kFractionBitMask & u_.bits_; } + + // Returns the sign bit of this number. + Bits sign_bit() const { return kSignBitMask & u_.bits_; } + + // Returns true iff this is NAN (not a number). + bool is_nan() const { + // It's a NAN if the exponent bits are all ones and the fraction + // bits are not entirely zeros. + return (exponent_bits() == kExponentBitMask) && (fraction_bits() != 0); + } + + // Returns true iff this number is at most kMaxUlps ULP's away from + // rhs. In particular, this function: + // + // - returns false if either number is (or both are) NAN. + // - treats really large numbers as almost equal to infinity. + // - thinks +0.0 and -0.0 are 0 DLP's apart. + bool AlmostEquals(const FloatingPoint& rhs) const { + // The IEEE standard says that any comparison operation involving + // a NAN must return false. + if (is_nan() || rhs.is_nan()) return false; + + return DistanceBetweenSignAndMagnitudeNumbers(u_.bits_, rhs.u_.bits_) + <= kMaxUlps; + } + + private: + // The data type used to store the actual floating-point number. + union FloatingPointUnion { + RawType value_; // The raw floating-point number. + Bits bits_; // The bits that represent the number. + }; + + // Converts an integer from the sign-and-magnitude representation to + // the biased representation. More precisely, let N be 2 to the + // power of (kBitCount - 1), an integer x is represented by the + // unsigned number x + N. + // + // For instance, + // + // -N + 1 (the most negative number representable using + // sign-and-magnitude) is represented by 1; + // 0 is represented by N; and + // N - 1 (the biggest number representable using + // sign-and-magnitude) is represented by 2N - 1. + // + // Read http://en.wikipedia.org/wiki/Signed_number_representations + // for more details on signed number representations. + static Bits SignAndMagnitudeToBiased(const Bits &sam) { + if (kSignBitMask & sam) { + // sam represents a negative number. + return ~sam + 1; + } else { + // sam represents a positive number. + return kSignBitMask | sam; + } + } + + // Given two numbers in the sign-and-magnitude representation, + // returns the distance between them as an unsigned number. + static Bits DistanceBetweenSignAndMagnitudeNumbers(const Bits &sam1, + const Bits &sam2) { + const Bits biased1 = SignAndMagnitudeToBiased(sam1); + const Bits biased2 = SignAndMagnitudeToBiased(sam2); + return (biased1 >= biased2) ? (biased1 - biased2) : (biased2 - biased1); + } + + FloatingPointUnion u_; +}; + +// Typedefs the instances of the FloatingPoint template class that we +// care to use. +typedef FloatingPoint Float; +typedef FloatingPoint Double; + +// In order to catch the mistake of putting tests that use different +// test fixture classes in the same test case, we need to assign +// unique IDs to fixture classes and compare them. The TypeId type is +// used to hold such IDs. The user should treat TypeId as an opaque +// type: the only operation allowed on TypeId values is to compare +// them for equality using the == operator. +typedef const void* TypeId; + +template +class TypeIdHelper { + public: + // dummy_ must not have a const type. Otherwise an overly eager + // compiler (e.g. MSVC 7.1 & 8.0) may try to merge + // TypeIdHelper::dummy_ for different Ts as an "optimization". + static bool dummy_; +}; + +template +bool TypeIdHelper::dummy_ = false; + +// GetTypeId() returns the ID of type T. Different values will be +// returned for different types. Calling the function twice with the +// same type argument is guaranteed to return the same ID. +template +TypeId GetTypeId() { + // The compiler is required to allocate a different + // TypeIdHelper::dummy_ variable for each T used to instantiate + // the template. Therefore, the address of dummy_ is guaranteed to + // be unique. + return &(TypeIdHelper::dummy_); +} + +// Returns the type ID of ::testing::Test. Always call this instead +// of GetTypeId< ::testing::Test>() to get the type ID of +// ::testing::Test, as the latter may give the wrong result due to a +// suspected linker bug when compiling Google Test as a Mac OS X +// framework. +GTEST_API_ TypeId GetTestTypeId(); + +// Defines the abstract factory interface that creates instances +// of a Test object. +class TestFactoryBase { + public: + virtual ~TestFactoryBase() {} + + // Creates a test instance to run. The instance is both created and destroyed + // within TestInfoImpl::Run() + virtual Test* CreateTest() = 0; + + protected: + TestFactoryBase() {} + + private: + GTEST_DISALLOW_COPY_AND_ASSIGN_(TestFactoryBase); +}; + +// This class provides implementation of TeastFactoryBase interface. +// It is used in TEST and TEST_F macros. +template +class TestFactoryImpl : public TestFactoryBase { + public: + virtual Test* CreateTest() { return new TestClass; } +}; + +#if GTEST_OS_WINDOWS + +// Predicate-formatters for implementing the HRESULT checking macros +// {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED} +// We pass a long instead of HRESULT to avoid causing an +// include dependency for the HRESULT type. +GTEST_API_ AssertionResult IsHRESULTSuccess(const char* expr, + long hr); // NOLINT +GTEST_API_ AssertionResult IsHRESULTFailure(const char* expr, + long hr); // NOLINT + +#endif // GTEST_OS_WINDOWS + +// Types of SetUpTestCase() and TearDownTestCase() functions. +typedef void (*SetUpTestCaseFunc)(); +typedef void (*TearDownTestCaseFunc)(); + +// Creates a new TestInfo object and registers it with Google Test; +// returns the created object. +// +// Arguments: +// +// test_case_name: name of the test case +// name: name of the test +// type_param the name of the test's type parameter, or NULL if +// this is not a typed or a type-parameterized test. +// value_param text representation of the test's value parameter, +// or NULL if this is not a type-parameterized test. +// fixture_class_id: ID of the test fixture class +// set_up_tc: pointer to the function that sets up the test case +// tear_down_tc: pointer to the function that tears down the test case +// factory: pointer to the factory that creates a test object. +// The newly created TestInfo instance will assume +// ownership of the factory object. +GTEST_API_ TestInfo* MakeAndRegisterTestInfo( + const char* test_case_name, const char* name, + const char* type_param, + const char* value_param, + TypeId fixture_class_id, + SetUpTestCaseFunc set_up_tc, + TearDownTestCaseFunc tear_down_tc, + TestFactoryBase* factory); + +// If *pstr starts with the given prefix, modifies *pstr to be right +// past the prefix and returns true; otherwise leaves *pstr unchanged +// and returns false. None of pstr, *pstr, and prefix can be NULL. +GTEST_API_ bool SkipPrefix(const char* prefix, const char** pstr); + +#if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P + +// State of the definition of a type-parameterized test case. +class GTEST_API_ TypedTestCasePState { + public: + TypedTestCasePState() : registered_(false) {} + + // Adds the given test name to defined_test_names_ and return true + // if the test case hasn't been registered; otherwise aborts the + // program. + bool AddTestName(const char* file, int line, const char* case_name, + const char* test_name) { + if (registered_) { + fprintf(stderr, "%s Test %s must be defined before " + "REGISTER_TYPED_TEST_CASE_P(%s, ...).\n", + FormatFileLocation(file, line).c_str(), test_name, case_name); + fflush(stderr); + posix::Abort(); + } + defined_test_names_.insert(test_name); + return true; + } + + // Verifies that registered_tests match the test names in + // defined_test_names_; returns registered_tests if successful, or + // aborts the program otherwise. + const char* VerifyRegisteredTestNames( + const char* file, int line, const char* registered_tests); + + private: + bool registered_; + ::std::set defined_test_names_; +}; + +// Skips to the first non-space char after the first comma in 'str'; +// returns NULL if no comma is found in 'str'. +inline const char* SkipComma(const char* str) { + const char* comma = strchr(str, ','); + if (comma == NULL) { + return NULL; + } + while (IsSpace(*(++comma))) {} + return comma; +} + +// Returns the prefix of 'str' before the first comma in it; returns +// the entire string if it contains no comma. +inline std::string GetPrefixUntilComma(const char* str) { + const char* comma = strchr(str, ','); + return comma == NULL ? str : std::string(str, comma); +} + +// TypeParameterizedTest::Register() +// registers a list of type-parameterized tests with Google Test. The +// return value is insignificant - we just need to return something +// such that we can call this function in a namespace scope. +// +// Implementation note: The GTEST_TEMPLATE_ macro declares a template +// template parameter. It's defined in gtest-type-util.h. +template +class TypeParameterizedTest { + public: + // 'index' is the index of the test in the type list 'Types' + // specified in INSTANTIATE_TYPED_TEST_CASE_P(Prefix, TestCase, + // Types). Valid values for 'index' are [0, N - 1] where N is the + // length of Types. + static bool Register(const char* prefix, const char* case_name, + const char* test_names, int index) { + typedef typename Types::Head Type; + typedef Fixture FixtureClass; + typedef typename GTEST_BIND_(TestSel, Type) TestClass; + + // First, registers the first type-parameterized test in the type + // list. + MakeAndRegisterTestInfo( + String::Format("%s%s%s/%d", prefix, prefix[0] == '\0' ? "" : "/", + case_name, index).c_str(), + GetPrefixUntilComma(test_names).c_str(), + GetTypeName().c_str(), + NULL, // No value parameter. + GetTypeId(), + TestClass::SetUpTestCase, + TestClass::TearDownTestCase, + new TestFactoryImpl); + + // Next, recurses (at compile time) with the tail of the type list. + return TypeParameterizedTest + ::Register(prefix, case_name, test_names, index + 1); + } +}; + +// The base case for the compile time recursion. +template +class TypeParameterizedTest { + public: + static bool Register(const char* /*prefix*/, const char* /*case_name*/, + const char* /*test_names*/, int /*index*/) { + return true; + } +}; + +// TypeParameterizedTestCase::Register() +// registers *all combinations* of 'Tests' and 'Types' with Google +// Test. The return value is insignificant - we just need to return +// something such that we can call this function in a namespace scope. +template +class TypeParameterizedTestCase { + public: + static bool Register(const char* prefix, const char* case_name, + const char* test_names) { + typedef typename Tests::Head Head; + + // First, register the first test in 'Test' for each type in 'Types'. + TypeParameterizedTest::Register( + prefix, case_name, test_names, 0); + + // Next, recurses (at compile time) with the tail of the test list. + return TypeParameterizedTestCase + ::Register(prefix, case_name, SkipComma(test_names)); + } +}; + +// The base case for the compile time recursion. +template +class TypeParameterizedTestCase { + public: + static bool Register(const char* /*prefix*/, const char* /*case_name*/, + const char* /*test_names*/) { + return true; + } +}; + +#endif // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P + +// Returns the current OS stack trace as an std::string. +// +// The maximum number of stack frames to be included is specified by +// the gtest_stack_trace_depth flag. The skip_count parameter +// specifies the number of top frames to be skipped, which doesn't +// count against the number of frames to be included. +// +// For example, if Foo() calls Bar(), which in turn calls +// GetCurrentOsStackTraceExceptTop(..., 1), Foo() will be included in +// the trace but Bar() and GetCurrentOsStackTraceExceptTop() won't. +GTEST_API_ std::string GetCurrentOsStackTraceExceptTop( + UnitTest* unit_test, int skip_count); + +// Helpers for suppressing warnings on unreachable code or constant +// condition. + +// Always returns true. +GTEST_API_ bool AlwaysTrue(); + +// Always returns false. +inline bool AlwaysFalse() { return !AlwaysTrue(); } + +// Helper for suppressing false warning from Clang on a const char* +// variable declared in a conditional expression always being NULL in +// the else branch. +struct GTEST_API_ ConstCharPtr { + ConstCharPtr(const char* str) : value(str) {} + operator bool() const { return true; } + const char* value; +}; + +// A simple Linear Congruential Generator for generating random +// numbers with a uniform distribution. Unlike rand() and srand(), it +// doesn't use global state (and therefore can't interfere with user +// code). Unlike rand_r(), it's portable. An LCG isn't very random, +// but it's good enough for our purposes. +class GTEST_API_ Random { + public: + static const UInt32 kMaxRange = 1u << 31; + + explicit Random(UInt32 seed) : state_(seed) {} + + void Reseed(UInt32 seed) { state_ = seed; } + + // Generates a random number from [0, range). Crashes if 'range' is + // 0 or greater than kMaxRange. + UInt32 Generate(UInt32 range); + + private: + UInt32 state_; + GTEST_DISALLOW_COPY_AND_ASSIGN_(Random); +}; + +// Defining a variable of type CompileAssertTypesEqual will cause a +// compiler error iff T1 and T2 are different types. +template +struct CompileAssertTypesEqual; + +template +struct CompileAssertTypesEqual { +}; + +// Removes the reference from a type if it is a reference type, +// otherwise leaves it unchanged. This is the same as +// tr1::remove_reference, which is not widely available yet. +template +struct RemoveReference { typedef T type; }; // NOLINT +template +struct RemoveReference { typedef T type; }; // NOLINT + +// A handy wrapper around RemoveReference that works when the argument +// T depends on template parameters. +#define GTEST_REMOVE_REFERENCE_(T) \ + typename ::testing::internal::RemoveReference::type + +// Removes const from a type if it is a const type, otherwise leaves +// it unchanged. This is the same as tr1::remove_const, which is not +// widely available yet. +template +struct RemoveConst { typedef T type; }; // NOLINT +template +struct RemoveConst { typedef T type; }; // NOLINT + +// MSVC 8.0, Sun C++, and IBM XL C++ have a bug which causes the above +// definition to fail to remove the const in 'const int[3]' and 'const +// char[3][4]'. The following specialization works around the bug. +template +struct RemoveConst { + typedef typename RemoveConst::type type[N]; +}; + +#if defined(_MSC_VER) && _MSC_VER < 1400 +// This is the only specialization that allows VC++ 7.1 to remove const in +// 'const int[3] and 'const int[3][4]'. However, it causes trouble with GCC +// and thus needs to be conditionally compiled. +template +struct RemoveConst { + typedef typename RemoveConst::type type[N]; +}; +#endif + +// A handy wrapper around RemoveConst that works when the argument +// T depends on template parameters. +#define GTEST_REMOVE_CONST_(T) \ + typename ::testing::internal::RemoveConst::type + +// Turns const U&, U&, const U, and U all into U. +#define GTEST_REMOVE_REFERENCE_AND_CONST_(T) \ + GTEST_REMOVE_CONST_(GTEST_REMOVE_REFERENCE_(T)) + +// Adds reference to a type if it is not a reference type, +// otherwise leaves it unchanged. This is the same as +// tr1::add_reference, which is not widely available yet. +template +struct AddReference { typedef T& type; }; // NOLINT +template +struct AddReference { typedef T& type; }; // NOLINT + +// A handy wrapper around AddReference that works when the argument T +// depends on template parameters. +#define GTEST_ADD_REFERENCE_(T) \ + typename ::testing::internal::AddReference::type + +// Adds a reference to const on top of T as necessary. For example, +// it transforms +// +// char ==> const char& +// const char ==> const char& +// char& ==> const char& +// const char& ==> const char& +// +// The argument T must depend on some template parameters. +#define GTEST_REFERENCE_TO_CONST_(T) \ + GTEST_ADD_REFERENCE_(const GTEST_REMOVE_REFERENCE_(T)) + +// ImplicitlyConvertible::value is a compile-time bool +// constant that's true iff type From can be implicitly converted to +// type To. +template +class ImplicitlyConvertible { + private: + // We need the following helper functions only for their types. + // They have no implementations. + + // MakeFrom() is an expression whose type is From. We cannot simply + // use From(), as the type From may not have a public default + // constructor. + static From MakeFrom(); + + // These two functions are overloaded. Given an expression + // Helper(x), the compiler will pick the first version if x can be + // implicitly converted to type To; otherwise it will pick the + // second version. + // + // The first version returns a value of size 1, and the second + // version returns a value of size 2. Therefore, by checking the + // size of Helper(x), which can be done at compile time, we can tell + // which version of Helper() is used, and hence whether x can be + // implicitly converted to type To. + static char Helper(To); + static char (&Helper(...))[2]; // NOLINT + + // We have to put the 'public' section after the 'private' section, + // or MSVC refuses to compile the code. + public: + // MSVC warns about implicitly converting from double to int for + // possible loss of data, so we need to temporarily disable the + // warning. +#ifdef _MSC_VER +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4244) // Temporarily disables warning 4244. + + static const bool value = + sizeof(Helper(ImplicitlyConvertible::MakeFrom())) == 1; +# pragma warning(pop) // Restores the warning state. +#elif defined(__BORLANDC__) + // C++Builder cannot use member overload resolution during template + // instantiation. The simplest workaround is to use its C++0x type traits + // functions (C++Builder 2009 and above only). + static const bool value = __is_convertible(From, To); +#else + static const bool value = + sizeof(Helper(ImplicitlyConvertible::MakeFrom())) == 1; +#endif // _MSV_VER +}; +template +const bool ImplicitlyConvertible::value; + +// IsAProtocolMessage::value is a compile-time bool constant that's +// true iff T is type ProtocolMessage, proto2::Message, or a subclass +// of those. +template +struct IsAProtocolMessage + : public bool_constant< + ImplicitlyConvertible::value || + ImplicitlyConvertible::value> { +}; + +// When the compiler sees expression IsContainerTest(0), if C is an +// STL-style container class, the first overload of IsContainerTest +// will be viable (since both C::iterator* and C::const_iterator* are +// valid types and NULL can be implicitly converted to them). It will +// be picked over the second overload as 'int' is a perfect match for +// the type of argument 0. If C::iterator or C::const_iterator is not +// a valid type, the first overload is not viable, and the second +// overload will be picked. Therefore, we can determine whether C is +// a container class by checking the type of IsContainerTest(0). +// The value of the expression is insignificant. +// +// Note that we look for both C::iterator and C::const_iterator. The +// reason is that C++ injects the name of a class as a member of the +// class itself (e.g. you can refer to class iterator as either +// 'iterator' or 'iterator::iterator'). If we look for C::iterator +// only, for example, we would mistakenly think that a class named +// iterator is an STL container. +// +// Also note that the simpler approach of overloading +// IsContainerTest(typename C::const_iterator*) and +// IsContainerTest(...) doesn't work with Visual Age C++ and Sun C++. +typedef int IsContainer; +template +IsContainer IsContainerTest(int /* dummy */, + typename C::iterator* /* it */ = NULL, + typename C::const_iterator* /* const_it */ = NULL) { + return 0; +} + +typedef char IsNotContainer; +template +IsNotContainer IsContainerTest(long /* dummy */) { return '\0'; } + +// EnableIf::type is void when 'Cond' is true, and +// undefined when 'Cond' is false. To use SFINAE to make a function +// overload only apply when a particular expression is true, add +// "typename EnableIf::type* = 0" as the last parameter. +template struct EnableIf; +template<> struct EnableIf { typedef void type; }; // NOLINT + +// Utilities for native arrays. + +// ArrayEq() compares two k-dimensional native arrays using the +// elements' operator==, where k can be any integer >= 0. When k is +// 0, ArrayEq() degenerates into comparing a single pair of values. + +template +bool ArrayEq(const T* lhs, size_t size, const U* rhs); + +// This generic version is used when k is 0. +template +inline bool ArrayEq(const T& lhs, const U& rhs) { return lhs == rhs; } + +// This overload is used when k >= 1. +template +inline bool ArrayEq(const T(&lhs)[N], const U(&rhs)[N]) { + return internal::ArrayEq(lhs, N, rhs); +} + +// This helper reduces code bloat. If we instead put its logic inside +// the previous ArrayEq() function, arrays with different sizes would +// lead to different copies of the template code. +template +bool ArrayEq(const T* lhs, size_t size, const U* rhs) { + for (size_t i = 0; i != size; i++) { + if (!internal::ArrayEq(lhs[i], rhs[i])) + return false; + } + return true; +} + +// Finds the first element in the iterator range [begin, end) that +// equals elem. Element may be a native array type itself. +template +Iter ArrayAwareFind(Iter begin, Iter end, const Element& elem) { + for (Iter it = begin; it != end; ++it) { + if (internal::ArrayEq(*it, elem)) + return it; + } + return end; +} + +// CopyArray() copies a k-dimensional native array using the elements' +// operator=, where k can be any integer >= 0. When k is 0, +// CopyArray() degenerates into copying a single value. + +template +void CopyArray(const T* from, size_t size, U* to); + +// This generic version is used when k is 0. +template +inline void CopyArray(const T& from, U* to) { *to = from; } + +// This overload is used when k >= 1. +template +inline void CopyArray(const T(&from)[N], U(*to)[N]) { + internal::CopyArray(from, N, *to); +} + +// This helper reduces code bloat. If we instead put its logic inside +// the previous CopyArray() function, arrays with different sizes +// would lead to different copies of the template code. +template +void CopyArray(const T* from, size_t size, U* to) { + for (size_t i = 0; i != size; i++) { + internal::CopyArray(from[i], to + i); + } +} + +// The relation between an NativeArray object (see below) and the +// native array it represents. +enum RelationToSource { + kReference, // The NativeArray references the native array. + kCopy // The NativeArray makes a copy of the native array and + // owns the copy. +}; + +// Adapts a native array to a read-only STL-style container. Instead +// of the complete STL container concept, this adaptor only implements +// members useful for Google Mock's container matchers. New members +// should be added as needed. To simplify the implementation, we only +// support Element being a raw type (i.e. having no top-level const or +// reference modifier). It's the client's responsibility to satisfy +// this requirement. Element can be an array type itself (hence +// multi-dimensional arrays are supported). +template +class NativeArray { + public: + // STL-style container typedefs. + typedef Element value_type; + typedef Element* iterator; + typedef const Element* const_iterator; + + // Constructs from a native array. + NativeArray(const Element* array, size_t count, RelationToSource relation) { + Init(array, count, relation); + } + + // Copy constructor. + NativeArray(const NativeArray& rhs) { + Init(rhs.array_, rhs.size_, rhs.relation_to_source_); + } + + ~NativeArray() { + // Ensures that the user doesn't instantiate NativeArray with a + // const or reference type. + static_cast(StaticAssertTypeEqHelper()); + if (relation_to_source_ == kCopy) + delete[] array_; + } + + // STL-style container methods. + size_t size() const { return size_; } + const_iterator begin() const { return array_; } + const_iterator end() const { return array_ + size_; } + bool operator==(const NativeArray& rhs) const { + return size() == rhs.size() && + ArrayEq(begin(), size(), rhs.begin()); + } + + private: + // Initializes this object; makes a copy of the input array if + // 'relation' is kCopy. + void Init(const Element* array, size_t a_size, RelationToSource relation) { + if (relation == kReference) { + array_ = array; + } else { + Element* const copy = new Element[a_size]; + CopyArray(array, a_size, copy); + array_ = copy; + } + size_ = a_size; + relation_to_source_ = relation; + } + + const Element* array_; + size_t size_; + RelationToSource relation_to_source_; + + GTEST_DISALLOW_ASSIGN_(NativeArray); +}; + +} // namespace internal +} // namespace testing + +#define GTEST_MESSAGE_AT_(file, line, message, result_type) \ + ::testing::internal::AssertHelper(result_type, file, line, message) \ + = ::testing::Message() + +#define GTEST_MESSAGE_(message, result_type) \ + GTEST_MESSAGE_AT_(__FILE__, __LINE__, message, result_type) + +#define GTEST_FATAL_FAILURE_(message) \ + return GTEST_MESSAGE_(message, ::testing::TestPartResult::kFatalFailure) + +#define GTEST_NONFATAL_FAILURE_(message) \ + GTEST_MESSAGE_(message, ::testing::TestPartResult::kNonFatalFailure) + +#define GTEST_SUCCESS_(message) \ + GTEST_MESSAGE_(message, ::testing::TestPartResult::kSuccess) + +// Suppresses MSVC warnings 4072 (unreachable code) for the code following +// statement if it returns or throws (or doesn't return or throw in some +// situations). +#define GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement) \ + if (::testing::internal::AlwaysTrue()) { statement; } + +#define GTEST_TEST_THROW_(statement, expected_exception, fail) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::ConstCharPtr gtest_msg = "") { \ + bool gtest_caught_expected = false; \ + try { \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ + } \ + catch (expected_exception const&) { \ + gtest_caught_expected = true; \ + } \ + catch (...) { \ + gtest_msg.value = \ + "Expected: " #statement " throws an exception of type " \ + #expected_exception ".\n Actual: it throws a different type."; \ + goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \ + } \ + if (!gtest_caught_expected) { \ + gtest_msg.value = \ + "Expected: " #statement " throws an exception of type " \ + #expected_exception ".\n Actual: it throws nothing."; \ + goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \ + } \ + } else \ + GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__): \ + fail(gtest_msg.value) + +#define GTEST_TEST_NO_THROW_(statement, fail) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::AlwaysTrue()) { \ + try { \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ + } \ + catch (...) { \ + goto GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__); \ + } \ + } else \ + GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__): \ + fail("Expected: " #statement " doesn't throw an exception.\n" \ + " Actual: it throws.") + +#define GTEST_TEST_ANY_THROW_(statement, fail) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::AlwaysTrue()) { \ + bool gtest_caught_any = false; \ + try { \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ + } \ + catch (...) { \ + gtest_caught_any = true; \ + } \ + if (!gtest_caught_any) { \ + goto GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__); \ + } \ + } else \ + GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__): \ + fail("Expected: " #statement " throws an exception.\n" \ + " Actual: it doesn't.") + + +// Implements Boolean test assertions such as EXPECT_TRUE. expression can be +// either a boolean expression or an AssertionResult. text is a textual +// represenation of expression as it was passed into the EXPECT_TRUE. +#define GTEST_TEST_BOOLEAN_(expression, text, actual, expected, fail) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (const ::testing::AssertionResult gtest_ar_ = \ + ::testing::AssertionResult(expression)) \ + ; \ + else \ + fail(::testing::internal::GetBoolAssertionFailureMessage(\ + gtest_ar_, text, #actual, #expected).c_str()) + +#define GTEST_TEST_NO_FATAL_FAILURE_(statement, fail) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::AlwaysTrue()) { \ + ::testing::internal::HasNewFatalFailureHelper gtest_fatal_failure_checker; \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ + if (gtest_fatal_failure_checker.has_new_fatal_failure()) { \ + goto GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__); \ + } \ + } else \ + GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__): \ + fail("Expected: " #statement " doesn't generate new fatal " \ + "failures in the current thread.\n" \ + " Actual: it does.") + +// Expands to the name of the class that implements the given test. +#define GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \ + test_case_name##_##test_name##_Test + +// Helper macro for defining tests. +#define GTEST_TEST_(test_case_name, test_name, parent_class, parent_id)\ +class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) : public parent_class {\ + public:\ + GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {}\ + private:\ + virtual void TestBody();\ + static ::testing::TestInfo* const test_info_ GTEST_ATTRIBUTE_UNUSED_;\ + GTEST_DISALLOW_COPY_AND_ASSIGN_(\ + GTEST_TEST_CLASS_NAME_(test_case_name, test_name));\ +};\ +\ +::testing::TestInfo* const GTEST_TEST_CLASS_NAME_(test_case_name, test_name)\ + ::test_info_ =\ + ::testing::internal::MakeAndRegisterTestInfo(\ + #test_case_name, #test_name, NULL, NULL, \ + (parent_id), \ + parent_class::SetUpTestCase, \ + parent_class::TearDownTestCase, \ + new ::testing::internal::TestFactoryImpl<\ + GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>);\ +void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody() + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_ +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) +// +// The Google C++ Testing Framework (Google Test) +// +// This header file defines the public API for death tests. It is +// #included by gtest.h so a user doesn't need to include this +// directly. + +#ifndef GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_ +#define GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_ + +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Authors: wan@google.com (Zhanyong Wan), eefacm@gmail.com (Sean Mcafee) +// +// The Google C++ Testing Framework (Google Test) +// +// This header file defines internal utilities needed for implementing +// death tests. They are subject to change without notice. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_ + + +#include + +namespace testing { +namespace internal { + +GTEST_DECLARE_string_(internal_run_death_test); + +// Names of the flags (needed for parsing Google Test flags). +const char kDeathTestStyleFlag[] = "death_test_style"; +const char kDeathTestUseFork[] = "death_test_use_fork"; +const char kInternalRunDeathTestFlag[] = "internal_run_death_test"; + +#if GTEST_HAS_DEATH_TEST + +// DeathTest is a class that hides much of the complexity of the +// GTEST_DEATH_TEST_ macro. It is abstract; its static Create method +// returns a concrete class that depends on the prevailing death test +// style, as defined by the --gtest_death_test_style and/or +// --gtest_internal_run_death_test flags. + +// In describing the results of death tests, these terms are used with +// the corresponding definitions: +// +// exit status: The integer exit information in the format specified +// by wait(2) +// exit code: The integer code passed to exit(3), _exit(2), or +// returned from main() +class GTEST_API_ DeathTest { + public: + // Create returns false if there was an error determining the + // appropriate action to take for the current death test; for example, + // if the gtest_death_test_style flag is set to an invalid value. + // The LastMessage method will return a more detailed message in that + // case. Otherwise, the DeathTest pointer pointed to by the "test" + // argument is set. If the death test should be skipped, the pointer + // is set to NULL; otherwise, it is set to the address of a new concrete + // DeathTest object that controls the execution of the current test. + static bool Create(const char* statement, const RE* regex, + const char* file, int line, DeathTest** test); + DeathTest(); + virtual ~DeathTest() { } + + // A helper class that aborts a death test when it's deleted. + class ReturnSentinel { + public: + explicit ReturnSentinel(DeathTest* test) : test_(test) { } + ~ReturnSentinel() { test_->Abort(TEST_ENCOUNTERED_RETURN_STATEMENT); } + private: + DeathTest* const test_; + GTEST_DISALLOW_COPY_AND_ASSIGN_(ReturnSentinel); + } GTEST_ATTRIBUTE_UNUSED_; + + // An enumeration of possible roles that may be taken when a death + // test is encountered. EXECUTE means that the death test logic should + // be executed immediately. OVERSEE means that the program should prepare + // the appropriate environment for a child process to execute the death + // test, then wait for it to complete. + enum TestRole { OVERSEE_TEST, EXECUTE_TEST }; + + // An enumeration of the three reasons that a test might be aborted. + enum AbortReason { + TEST_ENCOUNTERED_RETURN_STATEMENT, + TEST_THREW_EXCEPTION, + TEST_DID_NOT_DIE + }; + + // Assumes one of the above roles. + virtual TestRole AssumeRole() = 0; + + // Waits for the death test to finish and returns its status. + virtual int Wait() = 0; + + // Returns true if the death test passed; that is, the test process + // exited during the test, its exit status matches a user-supplied + // predicate, and its stderr output matches a user-supplied regular + // expression. + // The user-supplied predicate may be a macro expression rather + // than a function pointer or functor, or else Wait and Passed could + // be combined. + virtual bool Passed(bool exit_status_ok) = 0; + + // Signals that the death test did not die as expected. + virtual void Abort(AbortReason reason) = 0; + + // Returns a human-readable outcome message regarding the outcome of + // the last death test. + static const char* LastMessage(); + + static void set_last_death_test_message(const std::string& message); + + private: + // A string containing a description of the outcome of the last death test. + static std::string last_death_test_message_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(DeathTest); +}; + +// Factory interface for death tests. May be mocked out for testing. +class DeathTestFactory { + public: + virtual ~DeathTestFactory() { } + virtual bool Create(const char* statement, const RE* regex, + const char* file, int line, DeathTest** test) = 0; +}; + +// A concrete DeathTestFactory implementation for normal use. +class DefaultDeathTestFactory : public DeathTestFactory { + public: + virtual bool Create(const char* statement, const RE* regex, + const char* file, int line, DeathTest** test); +}; + +// Returns true if exit_status describes a process that was terminated +// by a signal, or exited normally with a nonzero exit code. +GTEST_API_ bool ExitedUnsuccessfully(int exit_status); + +// Traps C++ exceptions escaping statement and reports them as test +// failures. Note that trapping SEH exceptions is not implemented here. +# if GTEST_HAS_EXCEPTIONS +# define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \ + try { \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ + } catch (const ::std::exception& gtest_exception) { \ + fprintf(\ + stderr, \ + "\n%s: Caught std::exception-derived exception escaping the " \ + "death test statement. Exception message: %s\n", \ + ::testing::internal::FormatFileLocation(__FILE__, __LINE__).c_str(), \ + gtest_exception.what()); \ + fflush(stderr); \ + death_test->Abort(::testing::internal::DeathTest::TEST_THREW_EXCEPTION); \ + } catch (...) { \ + death_test->Abort(::testing::internal::DeathTest::TEST_THREW_EXCEPTION); \ + } + +# else +# define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement) + +# endif + +// This macro is for implementing ASSERT_DEATH*, EXPECT_DEATH*, +// ASSERT_EXIT*, and EXPECT_EXIT*. +# define GTEST_DEATH_TEST_(statement, predicate, regex, fail) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::AlwaysTrue()) { \ + const ::testing::internal::RE& gtest_regex = (regex); \ + ::testing::internal::DeathTest* gtest_dt; \ + if (!::testing::internal::DeathTest::Create(#statement, >est_regex, \ + __FILE__, __LINE__, >est_dt)) { \ + goto GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__); \ + } \ + if (gtest_dt != NULL) { \ + ::testing::internal::scoped_ptr< ::testing::internal::DeathTest> \ + gtest_dt_ptr(gtest_dt); \ + switch (gtest_dt->AssumeRole()) { \ + case ::testing::internal::DeathTest::OVERSEE_TEST: \ + if (!gtest_dt->Passed(predicate(gtest_dt->Wait()))) { \ + goto GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__); \ + } \ + break; \ + case ::testing::internal::DeathTest::EXECUTE_TEST: { \ + ::testing::internal::DeathTest::ReturnSentinel \ + gtest_sentinel(gtest_dt); \ + GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, gtest_dt); \ + gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE); \ + break; \ + } \ + default: \ + break; \ + } \ + } \ + } else \ + GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__): \ + fail(::testing::internal::DeathTest::LastMessage()) +// The symbol "fail" here expands to something into which a message +// can be streamed. + +// This macro is for implementing ASSERT/EXPECT_DEBUG_DEATH when compiled in +// NDEBUG mode. In this case we need the statements to be executed, the regex is +// ignored, and the macro must accept a streamed message even though the message +// is never printed. +# define GTEST_EXECUTE_STATEMENT_(statement, regex) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::AlwaysTrue()) { \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ + } else \ + ::testing::Message() + +// A class representing the parsed contents of the +// --gtest_internal_run_death_test flag, as it existed when +// RUN_ALL_TESTS was called. +class InternalRunDeathTestFlag { + public: + InternalRunDeathTestFlag(const std::string& a_file, + int a_line, + int an_index, + int a_write_fd) + : file_(a_file), line_(a_line), index_(an_index), + write_fd_(a_write_fd) {} + + ~InternalRunDeathTestFlag() { + if (write_fd_ >= 0) + posix::Close(write_fd_); + } + + const std::string& file() const { return file_; } + int line() const { return line_; } + int index() const { return index_; } + int write_fd() const { return write_fd_; } + + private: + std::string file_; + int line_; + int index_; + int write_fd_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(InternalRunDeathTestFlag); +}; + +// Returns a newly created InternalRunDeathTestFlag object with fields +// initialized from the GTEST_FLAG(internal_run_death_test) flag if +// the flag is specified; otherwise returns NULL. +InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag(); + +#else // GTEST_HAS_DEATH_TEST + +// This macro is used for implementing macros such as +// EXPECT_DEATH_IF_SUPPORTED and ASSERT_DEATH_IF_SUPPORTED on systems where +// death tests are not supported. Those macros must compile on such systems +// iff EXPECT_DEATH and ASSERT_DEATH compile with the same parameters on +// systems that support death tests. This allows one to write such a macro +// on a system that does not support death tests and be sure that it will +// compile on a death-test supporting system. +// +// Parameters: +// statement - A statement that a macro such as EXPECT_DEATH would test +// for program termination. This macro has to make sure this +// statement is compiled but not executed, to ensure that +// EXPECT_DEATH_IF_SUPPORTED compiles with a certain +// parameter iff EXPECT_DEATH compiles with it. +// regex - A regex that a macro such as EXPECT_DEATH would use to test +// the output of statement. This parameter has to be +// compiled but not evaluated by this macro, to ensure that +// this macro only accepts expressions that a macro such as +// EXPECT_DEATH would accept. +// terminator - Must be an empty statement for EXPECT_DEATH_IF_SUPPORTED +// and a return statement for ASSERT_DEATH_IF_SUPPORTED. +// This ensures that ASSERT_DEATH_IF_SUPPORTED will not +// compile inside functions where ASSERT_DEATH doesn't +// compile. +// +// The branch that has an always false condition is used to ensure that +// statement and regex are compiled (and thus syntactically correct) but +// never executed. The unreachable code macro protects the terminator +// statement from generating an 'unreachable code' warning in case +// statement unconditionally returns or throws. The Message constructor at +// the end allows the syntax of streaming additional messages into the +// macro, for compilational compatibility with EXPECT_DEATH/ASSERT_DEATH. +# define GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, terminator) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::AlwaysTrue()) { \ + GTEST_LOG_(WARNING) \ + << "Death tests are not supported on this platform.\n" \ + << "Statement '" #statement "' cannot be verified."; \ + } else if (::testing::internal::AlwaysFalse()) { \ + ::testing::internal::RE::PartialMatch(".*", (regex)); \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ + terminator; \ + } else \ + ::testing::Message() + +#endif // GTEST_HAS_DEATH_TEST + +} // namespace internal +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_ + +namespace testing { + +// This flag controls the style of death tests. Valid values are "threadsafe", +// meaning that the death test child process will re-execute the test binary +// from the start, running only a single death test, or "fast", +// meaning that the child process will execute the test logic immediately +// after forking. +GTEST_DECLARE_string_(death_test_style); + +#if GTEST_HAS_DEATH_TEST + +namespace internal { + +// Returns a Boolean value indicating whether the caller is currently +// executing in the context of the death test child process. Tools such as +// Valgrind heap checkers may need this to modify their behavior in death +// tests. IMPORTANT: This is an internal utility. Using it may break the +// implementation of death tests. User code MUST NOT use it. +GTEST_API_ bool InDeathTestChild(); + +} // namespace internal + +// The following macros are useful for writing death tests. + +// Here's what happens when an ASSERT_DEATH* or EXPECT_DEATH* is +// executed: +// +// 1. It generates a warning if there is more than one active +// thread. This is because it's safe to fork() or clone() only +// when there is a single thread. +// +// 2. The parent process clone()s a sub-process and runs the death +// test in it; the sub-process exits with code 0 at the end of the +// death test, if it hasn't exited already. +// +// 3. The parent process waits for the sub-process to terminate. +// +// 4. The parent process checks the exit code and error message of +// the sub-process. +// +// Examples: +// +// ASSERT_DEATH(server.SendMessage(56, "Hello"), "Invalid port number"); +// for (int i = 0; i < 5; i++) { +// EXPECT_DEATH(server.ProcessRequest(i), +// "Invalid request .* in ProcessRequest()") +// << "Failed to die on request " << i; +// } +// +// ASSERT_EXIT(server.ExitNow(), ::testing::ExitedWithCode(0), "Exiting"); +// +// bool KilledBySIGHUP(int exit_code) { +// return WIFSIGNALED(exit_code) && WTERMSIG(exit_code) == SIGHUP; +// } +// +// ASSERT_EXIT(client.HangUpServer(), KilledBySIGHUP, "Hanging up!"); +// +// On the regular expressions used in death tests: +// +// On POSIX-compliant systems (*nix), we use the library, +// which uses the POSIX extended regex syntax. +// +// On other platforms (e.g. Windows), we only support a simple regex +// syntax implemented as part of Google Test. This limited +// implementation should be enough most of the time when writing +// death tests; though it lacks many features you can find in PCRE +// or POSIX extended regex syntax. For example, we don't support +// union ("x|y"), grouping ("(xy)"), brackets ("[xy]"), and +// repetition count ("x{5,7}"), among others. +// +// Below is the syntax that we do support. We chose it to be a +// subset of both PCRE and POSIX extended regex, so it's easy to +// learn wherever you come from. In the following: 'A' denotes a +// literal character, period (.), or a single \\ escape sequence; +// 'x' and 'y' denote regular expressions; 'm' and 'n' are for +// natural numbers. +// +// c matches any literal character c +// \\d matches any decimal digit +// \\D matches any character that's not a decimal digit +// \\f matches \f +// \\n matches \n +// \\r matches \r +// \\s matches any ASCII whitespace, including \n +// \\S matches any character that's not a whitespace +// \\t matches \t +// \\v matches \v +// \\w matches any letter, _, or decimal digit +// \\W matches any character that \\w doesn't match +// \\c matches any literal character c, which must be a punctuation +// . matches any single character except \n +// A? matches 0 or 1 occurrences of A +// A* matches 0 or many occurrences of A +// A+ matches 1 or many occurrences of A +// ^ matches the beginning of a string (not that of each line) +// $ matches the end of a string (not that of each line) +// xy matches x followed by y +// +// If you accidentally use PCRE or POSIX extended regex features +// not implemented by us, you will get a run-time failure. In that +// case, please try to rewrite your regular expression within the +// above syntax. +// +// This implementation is *not* meant to be as highly tuned or robust +// as a compiled regex library, but should perform well enough for a +// death test, which already incurs significant overhead by launching +// a child process. +// +// Known caveats: +// +// A "threadsafe" style death test obtains the path to the test +// program from argv[0] and re-executes it in the sub-process. For +// simplicity, the current implementation doesn't search the PATH +// when launching the sub-process. This means that the user must +// invoke the test program via a path that contains at least one +// path separator (e.g. path/to/foo_test and +// /absolute/path/to/bar_test are fine, but foo_test is not). This +// is rarely a problem as people usually don't put the test binary +// directory in PATH. +// +// TODO(wan@google.com): make thread-safe death tests search the PATH. + +// Asserts that a given statement causes the program to exit, with an +// integer exit status that satisfies predicate, and emitting error output +// that matches regex. +# define ASSERT_EXIT(statement, predicate, regex) \ + GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) + +// Like ASSERT_EXIT, but continues on to successive tests in the +// test case, if any: +# define EXPECT_EXIT(statement, predicate, regex) \ + GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) + +// Asserts that a given statement causes the program to exit, either by +// explicitly exiting with a nonzero exit code or being killed by a +// signal, and emitting error output that matches regex. +# define ASSERT_DEATH(statement, regex) \ + ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) + +// Like ASSERT_DEATH, but continues on to successive tests in the +// test case, if any: +# define EXPECT_DEATH(statement, regex) \ + EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) + +// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: + +// Tests that an exit code describes a normal exit with a given exit code. +class GTEST_API_ ExitedWithCode { + public: + explicit ExitedWithCode(int exit_code); + bool operator()(int exit_status) const; + private: + // No implementation - assignment is unsupported. + void operator=(const ExitedWithCode& other); + + const int exit_code_; +}; + +# if !GTEST_OS_WINDOWS +// Tests that an exit code describes an exit due to termination by a +// given signal. +class GTEST_API_ KilledBySignal { + public: + explicit KilledBySignal(int signum); + bool operator()(int exit_status) const; + private: + const int signum_; +}; +# endif // !GTEST_OS_WINDOWS + +// EXPECT_DEBUG_DEATH asserts that the given statements die in debug mode. +// The death testing framework causes this to have interesting semantics, +// since the sideeffects of the call are only visible in opt mode, and not +// in debug mode. +// +// In practice, this can be used to test functions that utilize the +// LOG(DFATAL) macro using the following style: +// +// int DieInDebugOr12(int* sideeffect) { +// if (sideeffect) { +// *sideeffect = 12; +// } +// LOG(DFATAL) << "death"; +// return 12; +// } +// +// TEST(TestCase, TestDieOr12WorksInDgbAndOpt) { +// int sideeffect = 0; +// // Only asserts in dbg. +// EXPECT_DEBUG_DEATH(DieInDebugOr12(&sideeffect), "death"); +// +// #ifdef NDEBUG +// // opt-mode has sideeffect visible. +// EXPECT_EQ(12, sideeffect); +// #else +// // dbg-mode no visible sideeffect. +// EXPECT_EQ(0, sideeffect); +// #endif +// } +// +// This will assert that DieInDebugReturn12InOpt() crashes in debug +// mode, usually due to a DCHECK or LOG(DFATAL), but returns the +// appropriate fallback value (12 in this case) in opt mode. If you +// need to test that a function has appropriate side-effects in opt +// mode, include assertions against the side-effects. A general +// pattern for this is: +// +// EXPECT_DEBUG_DEATH({ +// // Side-effects here will have an effect after this statement in +// // opt mode, but none in debug mode. +// EXPECT_EQ(12, DieInDebugOr12(&sideeffect)); +// }, "death"); +// +# ifdef NDEBUG + +# define EXPECT_DEBUG_DEATH(statement, regex) \ + GTEST_EXECUTE_STATEMENT_(statement, regex) + +# define ASSERT_DEBUG_DEATH(statement, regex) \ + GTEST_EXECUTE_STATEMENT_(statement, regex) + +# else + +# define EXPECT_DEBUG_DEATH(statement, regex) \ + EXPECT_DEATH(statement, regex) + +# define ASSERT_DEBUG_DEATH(statement, regex) \ + ASSERT_DEATH(statement, regex) + +# endif // NDEBUG for EXPECT_DEBUG_DEATH +#endif // GTEST_HAS_DEATH_TEST + +// EXPECT_DEATH_IF_SUPPORTED(statement, regex) and +// ASSERT_DEATH_IF_SUPPORTED(statement, regex) expand to real death tests if +// death tests are supported; otherwise they just issue a warning. This is +// useful when you are combining death test assertions with normal test +// assertions in one test. +#if GTEST_HAS_DEATH_TEST +# define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \ + EXPECT_DEATH(statement, regex) +# define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \ + ASSERT_DEATH(statement, regex) +#else +# define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \ + GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, ) +# define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \ + GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, return) +#endif + +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_ +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) +// +// The Google C++ Testing Framework (Google Test) +// +// This header file defines the Message class. +// +// IMPORTANT NOTE: Due to limitation of the C++ language, we have to +// leave some internal implementation details in this header file. +// They are clearly marked by comments like this: +// +// // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +// +// Such code is NOT meant to be used by a user directly, and is subject +// to CHANGE WITHOUT NOTICE. Therefore DO NOT DEPEND ON IT in a user +// program! + +#ifndef GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_ +#define GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_ + +#include + + +namespace testing { + +// The Message class works like an ostream repeater. +// +// Typical usage: +// +// 1. You stream a bunch of values to a Message object. +// It will remember the text in a stringstream. +// 2. Then you stream the Message object to an ostream. +// This causes the text in the Message to be streamed +// to the ostream. +// +// For example; +// +// testing::Message foo; +// foo << 1 << " != " << 2; +// std::cout << foo; +// +// will print "1 != 2". +// +// Message is not intended to be inherited from. In particular, its +// destructor is not virtual. +// +// Note that stringstream behaves differently in gcc and in MSVC. You +// can stream a NULL char pointer to it in the former, but not in the +// latter (it causes an access violation if you do). The Message +// class hides this difference by treating a NULL char pointer as +// "(null)". +class GTEST_API_ Message { + private: + // The type of basic IO manipulators (endl, ends, and flush) for + // narrow streams. + typedef std::ostream& (*BasicNarrowIoManip)(std::ostream&); + + public: + // Constructs an empty Message. + // We allocate the stringstream separately because otherwise each use of + // ASSERT/EXPECT in a procedure adds over 200 bytes to the procedure's + // stack frame leading to huge stack frames in some cases; gcc does not reuse + // the stack space. + Message() : ss_(new ::std::stringstream) { + // By default, we want there to be enough precision when printing + // a double to a Message. + *ss_ << std::setprecision(std::numeric_limits::digits10 + 2); + } + + // Copy constructor. + Message(const Message& msg) : ss_(new ::std::stringstream) { // NOLINT + *ss_ << msg.GetString(); + } + + // Constructs a Message from a C-string. + explicit Message(const char* str) : ss_(new ::std::stringstream) { + *ss_ << str; + } + +#if GTEST_OS_SYMBIAN + // Streams a value (either a pointer or not) to this object. + template + inline Message& operator <<(const T& value) { + StreamHelper(typename internal::is_pointer::type(), value); + return *this; + } +#else + // Streams a non-pointer value to this object. + template + inline Message& operator <<(const T& val) { + ::GTestStreamToHelper(ss_.get(), val); + return *this; + } + + // Streams a pointer value to this object. + // + // This function is an overload of the previous one. When you + // stream a pointer to a Message, this definition will be used as it + // is more specialized. (The C++ Standard, section + // [temp.func.order].) If you stream a non-pointer, then the + // previous definition will be used. + // + // The reason for this overload is that streaming a NULL pointer to + // ostream is undefined behavior. Depending on the compiler, you + // may get "0", "(nil)", "(null)", or an access violation. To + // ensure consistent result across compilers, we always treat NULL + // as "(null)". + template + inline Message& operator <<(T* const& pointer) { // NOLINT + if (pointer == NULL) { + *ss_ << "(null)"; + } else { + ::GTestStreamToHelper(ss_.get(), pointer); + } + return *this; + } +#endif // GTEST_OS_SYMBIAN + + // Since the basic IO manipulators are overloaded for both narrow + // and wide streams, we have to provide this specialized definition + // of operator <<, even though its body is the same as the + // templatized version above. Without this definition, streaming + // endl or other basic IO manipulators to Message will confuse the + // compiler. + Message& operator <<(BasicNarrowIoManip val) { + *ss_ << val; + return *this; + } + + // Instead of 1/0, we want to see true/false for bool values. + Message& operator <<(bool b) { + return *this << (b ? "true" : "false"); + } + + // These two overloads allow streaming a wide C string to a Message + // using the UTF-8 encoding. + Message& operator <<(const wchar_t* wide_c_str) { + return *this << internal::String::ShowWideCString(wide_c_str); + } + Message& operator <<(wchar_t* wide_c_str) { + return *this << internal::String::ShowWideCString(wide_c_str); + } + +#if GTEST_HAS_STD_WSTRING + // Converts the given wide string to a narrow string using the UTF-8 + // encoding, and streams the result to this Message object. + Message& operator <<(const ::std::wstring& wstr); +#endif // GTEST_HAS_STD_WSTRING + +#if GTEST_HAS_GLOBAL_WSTRING + // Converts the given wide string to a narrow string using the UTF-8 + // encoding, and streams the result to this Message object. + Message& operator <<(const ::wstring& wstr); +#endif // GTEST_HAS_GLOBAL_WSTRING + + // Gets the text streamed to this object so far as an std::string. + // Each '\0' character in the buffer is replaced with "\\0". + // + // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. + std::string GetString() const { + return internal::StringStreamToString(ss_.get()); + } + + private: + +#if GTEST_OS_SYMBIAN + // These are needed as the Nokia Symbian Compiler cannot decide between + // const T& and const T* in a function template. The Nokia compiler _can_ + // decide between class template specializations for T and T*, so a + // tr1::type_traits-like is_pointer works, and we can overload on that. + template + inline void StreamHelper(internal::true_type /*dummy*/, T* pointer) { + if (pointer == NULL) { + *ss_ << "(null)"; + } else { + ::GTestStreamToHelper(ss_.get(), pointer); + } + } + template + inline void StreamHelper(internal::false_type /*dummy*/, const T& value) { + ::GTestStreamToHelper(ss_.get(), value); + } +#endif // GTEST_OS_SYMBIAN + + // We'll hold the text streamed to this object here. + const internal::scoped_ptr< ::std::stringstream> ss_; + + // We declare (but don't implement) this to prevent the compiler + // from implementing the assignment operator. + void operator=(const Message&); +}; + +// Streams a Message to an ostream. +inline std::ostream& operator <<(std::ostream& os, const Message& sb) { + return os << sb.GetString(); +} + +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_ +// This file was GENERATED by command: +// pump.py gtest-param-test.h.pump +// DO NOT EDIT BY HAND!!! + +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Authors: vladl@google.com (Vlad Losev) +// +// Macros and functions for implementing parameterized tests +// in Google C++ Testing Framework (Google Test) +// +// This file is generated by a SCRIPT. DO NOT EDIT BY HAND! +// +#ifndef GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ +#define GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ + + +// Value-parameterized tests allow you to test your code with different +// parameters without writing multiple copies of the same test. +// +// Here is how you use value-parameterized tests: + +#if 0 + +// To write value-parameterized tests, first you should define a fixture +// class. It is usually derived from testing::TestWithParam (see below for +// another inheritance scheme that's sometimes useful in more complicated +// class hierarchies), where the type of your parameter values. +// TestWithParam is itself derived from testing::Test. T can be any +// copyable type. If it's a raw pointer, you are responsible for managing the +// lifespan of the pointed values. + +class FooTest : public ::testing::TestWithParam { + // You can implement all the usual class fixture members here. +}; + +// Then, use the TEST_P macro to define as many parameterized tests +// for this fixture as you want. The _P suffix is for "parameterized" +// or "pattern", whichever you prefer to think. + +TEST_P(FooTest, DoesBlah) { + // Inside a test, access the test parameter with the GetParam() method + // of the TestWithParam class: + EXPECT_TRUE(foo.Blah(GetParam())); + ... +} + +TEST_P(FooTest, HasBlahBlah) { + ... +} + +// Finally, you can use INSTANTIATE_TEST_CASE_P to instantiate the test +// case with any set of parameters you want. Google Test defines a number +// of functions for generating test parameters. They return what we call +// (surprise!) parameter generators. Here is a summary of them, which +// are all in the testing namespace: +// +// +// Range(begin, end [, step]) - Yields values {begin, begin+step, +// begin+step+step, ...}. The values do not +// include end. step defaults to 1. +// Values(v1, v2, ..., vN) - Yields values {v1, v2, ..., vN}. +// ValuesIn(container) - Yields values from a C-style array, an STL +// ValuesIn(begin,end) container, or an iterator range [begin, end). +// Bool() - Yields sequence {false, true}. +// Combine(g1, g2, ..., gN) - Yields all combinations (the Cartesian product +// for the math savvy) of the values generated +// by the N generators. +// +// For more details, see comments at the definitions of these functions below +// in this file. +// +// The following statement will instantiate tests from the FooTest test case +// each with parameter values "meeny", "miny", and "moe". + +INSTANTIATE_TEST_CASE_P(InstantiationName, + FooTest, + Values("meeny", "miny", "moe")); + +// To distinguish different instances of the pattern, (yes, you +// can instantiate it more then once) the first argument to the +// INSTANTIATE_TEST_CASE_P macro is a prefix that will be added to the +// actual test case name. Remember to pick unique prefixes for different +// instantiations. The tests from the instantiation above will have +// these names: +// +// * InstantiationName/FooTest.DoesBlah/0 for "meeny" +// * InstantiationName/FooTest.DoesBlah/1 for "miny" +// * InstantiationName/FooTest.DoesBlah/2 for "moe" +// * InstantiationName/FooTest.HasBlahBlah/0 for "meeny" +// * InstantiationName/FooTest.HasBlahBlah/1 for "miny" +// * InstantiationName/FooTest.HasBlahBlah/2 for "moe" +// +// You can use these names in --gtest_filter. +// +// This statement will instantiate all tests from FooTest again, each +// with parameter values "cat" and "dog": + +const char* pets[] = {"cat", "dog"}; +INSTANTIATE_TEST_CASE_P(AnotherInstantiationName, FooTest, ValuesIn(pets)); + +// The tests from the instantiation above will have these names: +// +// * AnotherInstantiationName/FooTest.DoesBlah/0 for "cat" +// * AnotherInstantiationName/FooTest.DoesBlah/1 for "dog" +// * AnotherInstantiationName/FooTest.HasBlahBlah/0 for "cat" +// * AnotherInstantiationName/FooTest.HasBlahBlah/1 for "dog" +// +// Please note that INSTANTIATE_TEST_CASE_P will instantiate all tests +// in the given test case, whether their definitions come before or +// AFTER the INSTANTIATE_TEST_CASE_P statement. +// +// Please also note that generator expressions (including parameters to the +// generators) are evaluated in InitGoogleTest(), after main() has started. +// This allows the user on one hand, to adjust generator parameters in order +// to dynamically determine a set of tests to run and on the other hand, +// give the user a chance to inspect the generated tests with Google Test +// reflection API before RUN_ALL_TESTS() is executed. +// +// You can see samples/sample7_unittest.cc and samples/sample8_unittest.cc +// for more examples. +// +// In the future, we plan to publish the API for defining new parameter +// generators. But for now this interface remains part of the internal +// implementation and is subject to change. +// +// +// A parameterized test fixture must be derived from testing::Test and from +// testing::WithParamInterface, where T is the type of the parameter +// values. Inheriting from TestWithParam satisfies that requirement because +// TestWithParam inherits from both Test and WithParamInterface. In more +// complicated hierarchies, however, it is occasionally useful to inherit +// separately from Test and WithParamInterface. For example: + +class BaseTest : public ::testing::Test { + // You can inherit all the usual members for a non-parameterized test + // fixture here. +}; + +class DerivedTest : public BaseTest, public ::testing::WithParamInterface { + // The usual test fixture members go here too. +}; + +TEST_F(BaseTest, HasFoo) { + // This is an ordinary non-parameterized test. +} + +TEST_P(DerivedTest, DoesBlah) { + // GetParam works just the same here as if you inherit from TestWithParam. + EXPECT_TRUE(foo.Blah(GetParam())); +} + +#endif // 0 + + +#if !GTEST_OS_SYMBIAN +# include +#endif + +// scripts/fuse_gtest.py depends on gtest's own header being #included +// *unconditionally*. Therefore these #includes cannot be moved +// inside #if GTEST_HAS_PARAM_TEST. +// Copyright 2008 Google Inc. +// All Rights Reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: vladl@google.com (Vlad Losev) + +// Type and function utilities for implementing parameterized tests. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_ + +#include +#include +#include + +// scripts/fuse_gtest.py depends on gtest's own header being #included +// *unconditionally*. Therefore these #includes cannot be moved +// inside #if GTEST_HAS_PARAM_TEST. +// Copyright 2003 Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Authors: Dan Egnor (egnor@google.com) +// +// A "smart" pointer type with reference tracking. Every pointer to a +// particular object is kept on a circular linked list. When the last pointer +// to an object is destroyed or reassigned, the object is deleted. +// +// Used properly, this deletes the object when the last reference goes away. +// There are several caveats: +// - Like all reference counting schemes, cycles lead to leaks. +// - Each smart pointer is actually two pointers (8 bytes instead of 4). +// - Every time a pointer is assigned, the entire list of pointers to that +// object is traversed. This class is therefore NOT SUITABLE when there +// will often be more than two or three pointers to a particular object. +// - References are only tracked as long as linked_ptr<> objects are copied. +// If a linked_ptr<> is converted to a raw pointer and back, BAD THINGS +// will happen (double deletion). +// +// A good use of this class is storing object references in STL containers. +// You can safely put linked_ptr<> in a vector<>. +// Other uses may not be as good. +// +// Note: If you use an incomplete type with linked_ptr<>, the class +// *containing* linked_ptr<> must have a constructor and destructor (even +// if they do nothing!). +// +// Bill Gibbons suggested we use something like this. +// +// Thread Safety: +// Unlike other linked_ptr implementations, in this implementation +// a linked_ptr object is thread-safe in the sense that: +// - it's safe to copy linked_ptr objects concurrently, +// - it's safe to copy *from* a linked_ptr and read its underlying +// raw pointer (e.g. via get()) concurrently, and +// - it's safe to write to two linked_ptrs that point to the same +// shared object concurrently. +// TODO(wan@google.com): rename this to safe_linked_ptr to avoid +// confusion with normal linked_ptr. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_ + +#include +#include + + +namespace testing { +namespace internal { + +// Protects copying of all linked_ptr objects. +GTEST_API_ GTEST_DECLARE_STATIC_MUTEX_(g_linked_ptr_mutex); + +// This is used internally by all instances of linked_ptr<>. It needs to be +// a non-template class because different types of linked_ptr<> can refer to +// the same object (linked_ptr(obj) vs linked_ptr(obj)). +// So, it needs to be possible for different types of linked_ptr to participate +// in the same circular linked list, so we need a single class type here. +// +// DO NOT USE THIS CLASS DIRECTLY YOURSELF. Use linked_ptr. +class linked_ptr_internal { + public: + // Create a new circle that includes only this instance. + void join_new() { + next_ = this; + } + + // Many linked_ptr operations may change p.link_ for some linked_ptr + // variable p in the same circle as this object. Therefore we need + // to prevent two such operations from occurring concurrently. + // + // Note that different types of linked_ptr objects can coexist in a + // circle (e.g. linked_ptr, linked_ptr, and + // linked_ptr). Therefore we must use a single mutex to + // protect all linked_ptr objects. This can create serious + // contention in production code, but is acceptable in a testing + // framework. + + // Join an existing circle. + void join(linked_ptr_internal const* ptr) + GTEST_LOCK_EXCLUDED_(g_linked_ptr_mutex) { + MutexLock lock(&g_linked_ptr_mutex); + + linked_ptr_internal const* p = ptr; + while (p->next_ != ptr) p = p->next_; + p->next_ = this; + next_ = ptr; + } + + // Leave whatever circle we're part of. Returns true if we were the + // last member of the circle. Once this is done, you can join() another. + bool depart() + GTEST_LOCK_EXCLUDED_(g_linked_ptr_mutex) { + MutexLock lock(&g_linked_ptr_mutex); + + if (next_ == this) return true; + linked_ptr_internal const* p = next_; + while (p->next_ != this) p = p->next_; + p->next_ = next_; + return false; + } + + private: + mutable linked_ptr_internal const* next_; +}; + +template +class linked_ptr { + public: + typedef T element_type; + + // Take over ownership of a raw pointer. This should happen as soon as + // possible after the object is created. + explicit linked_ptr(T* ptr = NULL) { capture(ptr); } + ~linked_ptr() { depart(); } + + // Copy an existing linked_ptr<>, adding ourselves to the list of references. + template linked_ptr(linked_ptr const& ptr) { copy(&ptr); } + linked_ptr(linked_ptr const& ptr) { // NOLINT + assert(&ptr != this); + copy(&ptr); + } + + // Assignment releases the old value and acquires the new. + template linked_ptr& operator=(linked_ptr const& ptr) { + depart(); + copy(&ptr); + return *this; + } + + linked_ptr& operator=(linked_ptr const& ptr) { + if (&ptr != this) { + depart(); + copy(&ptr); + } + return *this; + } + + // Smart pointer members. + void reset(T* ptr = NULL) { + depart(); + capture(ptr); + } + T* get() const { return value_; } + T* operator->() const { return value_; } + T& operator*() const { return *value_; } + + bool operator==(T* p) const { return value_ == p; } + bool operator!=(T* p) const { return value_ != p; } + template + bool operator==(linked_ptr const& ptr) const { + return value_ == ptr.get(); + } + template + bool operator!=(linked_ptr const& ptr) const { + return value_ != ptr.get(); + } + + private: + template + friend class linked_ptr; + + T* value_; + linked_ptr_internal link_; + + void depart() { + if (link_.depart()) delete value_; + } + + void capture(T* ptr) { + value_ = ptr; + link_.join_new(); + } + + template void copy(linked_ptr const* ptr) { + value_ = ptr->get(); + if (value_) + link_.join(&ptr->link_); + else + link_.join_new(); + } +}; + +template inline +bool operator==(T* ptr, const linked_ptr& x) { + return ptr == x.get(); +} + +template inline +bool operator!=(T* ptr, const linked_ptr& x) { + return ptr != x.get(); +} + +// A function to convert T* into linked_ptr +// Doing e.g. make_linked_ptr(new FooBarBaz(arg)) is a shorter notation +// for linked_ptr >(new FooBarBaz(arg)) +template +linked_ptr make_linked_ptr(T* ptr) { + return linked_ptr(ptr); +} + +} // namespace internal +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_ +// Copyright 2007, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +// Google Test - The Google C++ Testing Framework +// +// This file implements a universal value printer that can print a +// value of any type T: +// +// void ::testing::internal::UniversalPrinter::Print(value, ostream_ptr); +// +// A user can teach this function how to print a class type T by +// defining either operator<<() or PrintTo() in the namespace that +// defines T. More specifically, the FIRST defined function in the +// following list will be used (assuming T is defined in namespace +// foo): +// +// 1. foo::PrintTo(const T&, ostream*) +// 2. operator<<(ostream&, const T&) defined in either foo or the +// global namespace. +// +// If none of the above is defined, it will print the debug string of +// the value if it is a protocol buffer, or print the raw bytes in the +// value otherwise. +// +// To aid debugging: when T is a reference type, the address of the +// value is also printed; when T is a (const) char pointer, both the +// pointer value and the NUL-terminated string it points to are +// printed. +// +// We also provide some convenient wrappers: +// +// // Prints a value to a string. For a (const or not) char +// // pointer, the NUL-terminated string (but not the pointer) is +// // printed. +// std::string ::testing::PrintToString(const T& value); +// +// // Prints a value tersely: for a reference type, the referenced +// // value (but not the address) is printed; for a (const or not) char +// // pointer, the NUL-terminated string (but not the pointer) is +// // printed. +// void ::testing::internal::UniversalTersePrint(const T& value, ostream*); +// +// // Prints value using the type inferred by the compiler. The difference +// // from UniversalTersePrint() is that this function prints both the +// // pointer and the NUL-terminated string for a (const or not) char pointer. +// void ::testing::internal::UniversalPrint(const T& value, ostream*); +// +// // Prints the fields of a tuple tersely to a string vector, one +// // element for each field. Tuple support must be enabled in +// // gtest-port.h. +// std::vector UniversalTersePrintTupleFieldsToStrings( +// const Tuple& value); +// +// Known limitation: +// +// The print primitives print the elements of an STL-style container +// using the compiler-inferred type of *iter where iter is a +// const_iterator of the container. When const_iterator is an input +// iterator but not a forward iterator, this inferred type may not +// match value_type, and the print output may be incorrect. In +// practice, this is rarely a problem as for most containers +// const_iterator is a forward iterator. We'll fix this if there's an +// actual need for it. Note that this fix cannot rely on value_type +// being defined as many user-defined container types don't have +// value_type. + +#ifndef GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_ +#define GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_ + +#include // NOLINT +#include +#include +#include +#include + +namespace testing { + +// Definitions in the 'internal' and 'internal2' name spaces are +// subject to change without notice. DO NOT USE THEM IN USER CODE! +namespace internal2 { + +// Prints the given number of bytes in the given object to the given +// ostream. +GTEST_API_ void PrintBytesInObjectTo(const unsigned char* obj_bytes, + size_t count, + ::std::ostream* os); + +// For selecting which printer to use when a given type has neither << +// nor PrintTo(). +enum TypeKind { + kProtobuf, // a protobuf type + kConvertibleToInteger, // a type implicitly convertible to BiggestInt + // (e.g. a named or unnamed enum type) + kOtherType // anything else +}; + +// TypeWithoutFormatter::PrintValue(value, os) is called +// by the universal printer to print a value of type T when neither +// operator<< nor PrintTo() is defined for T, where kTypeKind is the +// "kind" of T as defined by enum TypeKind. +template +class TypeWithoutFormatter { + public: + // This default version is called when kTypeKind is kOtherType. + static void PrintValue(const T& value, ::std::ostream* os) { + PrintBytesInObjectTo(reinterpret_cast(&value), + sizeof(value), os); + } +}; + +// We print a protobuf using its ShortDebugString() when the string +// doesn't exceed this many characters; otherwise we print it using +// DebugString() for better readability. +const size_t kProtobufOneLinerMaxLength = 50; + +template +class TypeWithoutFormatter { + public: + static void PrintValue(const T& value, ::std::ostream* os) { + const ::testing::internal::string short_str = value.ShortDebugString(); + const ::testing::internal::string pretty_str = + short_str.length() <= kProtobufOneLinerMaxLength ? + short_str : ("\n" + value.DebugString()); + *os << ("<" + pretty_str + ">"); + } +}; + +template +class TypeWithoutFormatter { + public: + // Since T has no << operator or PrintTo() but can be implicitly + // converted to BiggestInt, we print it as a BiggestInt. + // + // Most likely T is an enum type (either named or unnamed), in which + // case printing it as an integer is the desired behavior. In case + // T is not an enum, printing it as an integer is the best we can do + // given that it has no user-defined printer. + static void PrintValue(const T& value, ::std::ostream* os) { + const internal::BiggestInt kBigInt = value; + *os << kBigInt; + } +}; + +// Prints the given value to the given ostream. If the value is a +// protocol message, its debug string is printed; if it's an enum or +// of a type implicitly convertible to BiggestInt, it's printed as an +// integer; otherwise the bytes in the value are printed. This is +// what UniversalPrinter::Print() does when it knows nothing about +// type T and T has neither << operator nor PrintTo(). +// +// A user can override this behavior for a class type Foo by defining +// a << operator in the namespace where Foo is defined. +// +// We put this operator in namespace 'internal2' instead of 'internal' +// to simplify the implementation, as much code in 'internal' needs to +// use << in STL, which would conflict with our own << were it defined +// in 'internal'. +// +// Note that this operator<< takes a generic std::basic_ostream type instead of the more restricted std::ostream. If +// we define it to take an std::ostream instead, we'll get an +// "ambiguous overloads" compiler error when trying to print a type +// Foo that supports streaming to std::basic_ostream, as the compiler cannot tell whether +// operator<<(std::ostream&, const T&) or +// operator<<(std::basic_stream, const Foo&) is more +// specific. +template +::std::basic_ostream& operator<<( + ::std::basic_ostream& os, const T& x) { + TypeWithoutFormatter::value ? kProtobuf : + internal::ImplicitlyConvertible::value ? + kConvertibleToInteger : kOtherType)>::PrintValue(x, &os); + return os; +} + +} // namespace internal2 +} // namespace testing + +// This namespace MUST NOT BE NESTED IN ::testing, or the name look-up +// magic needed for implementing UniversalPrinter won't work. +namespace testing_internal { + +// Used to print a value that is not an STL-style container when the +// user doesn't define PrintTo() for it. +template +void DefaultPrintNonContainerTo(const T& value, ::std::ostream* os) { + // With the following statement, during unqualified name lookup, + // testing::internal2::operator<< appears as if it was declared in + // the nearest enclosing namespace that contains both + // ::testing_internal and ::testing::internal2, i.e. the global + // namespace. For more details, refer to the C++ Standard section + // 7.3.4-1 [namespace.udir]. This allows us to fall back onto + // testing::internal2::operator<< in case T doesn't come with a << + // operator. + // + // We cannot write 'using ::testing::internal2::operator<<;', which + // gcc 3.3 fails to compile due to a compiler bug. + using namespace ::testing::internal2; // NOLINT + + // Assuming T is defined in namespace foo, in the next statement, + // the compiler will consider all of: + // + // 1. foo::operator<< (thanks to Koenig look-up), + // 2. ::operator<< (as the current namespace is enclosed in ::), + // 3. testing::internal2::operator<< (thanks to the using statement above). + // + // The operator<< whose type matches T best will be picked. + // + // We deliberately allow #2 to be a candidate, as sometimes it's + // impossible to define #1 (e.g. when foo is ::std, defining + // anything in it is undefined behavior unless you are a compiler + // vendor.). + *os << value; +} + +} // namespace testing_internal + +namespace testing { +namespace internal { + +// UniversalPrinter::Print(value, ostream_ptr) prints the given +// value to the given ostream. The caller must ensure that +// 'ostream_ptr' is not NULL, or the behavior is undefined. +// +// We define UniversalPrinter as a class template (as opposed to a +// function template), as we need to partially specialize it for +// reference types, which cannot be done with function templates. +template +class UniversalPrinter; + +template +void UniversalPrint(const T& value, ::std::ostream* os); + +// Used to print an STL-style container when the user doesn't define +// a PrintTo() for it. +template +void DefaultPrintTo(IsContainer /* dummy */, + false_type /* is not a pointer */, + const C& container, ::std::ostream* os) { + const size_t kMaxCount = 32; // The maximum number of elements to print. + *os << '{'; + size_t count = 0; + for (typename C::const_iterator it = container.begin(); + it != container.end(); ++it, ++count) { + if (count > 0) { + *os << ','; + if (count == kMaxCount) { // Enough has been printed. + *os << " ..."; + break; + } + } + *os << ' '; + // We cannot call PrintTo(*it, os) here as PrintTo() doesn't + // handle *it being a native array. + internal::UniversalPrint(*it, os); + } + + if (count > 0) { + *os << ' '; + } + *os << '}'; +} + +// Used to print a pointer that is neither a char pointer nor a member +// pointer, when the user doesn't define PrintTo() for it. (A member +// variable pointer or member function pointer doesn't really point to +// a location in the address space. Their representation is +// implementation-defined. Therefore they will be printed as raw +// bytes.) +template +void DefaultPrintTo(IsNotContainer /* dummy */, + true_type /* is a pointer */, + T* p, ::std::ostream* os) { + if (p == NULL) { + *os << "NULL"; + } else { + // C++ doesn't allow casting from a function pointer to any object + // pointer. + // + // IsTrue() silences warnings: "Condition is always true", + // "unreachable code". + if (IsTrue(ImplicitlyConvertible::value)) { + // T is not a function type. We just call << to print p, + // relying on ADL to pick up user-defined << for their pointer + // types, if any. + *os << p; + } else { + // T is a function type, so '*os << p' doesn't do what we want + // (it just prints p as bool). We want to print p as a const + // void*. However, we cannot cast it to const void* directly, + // even using reinterpret_cast, as earlier versions of gcc + // (e.g. 3.4.5) cannot compile the cast when p is a function + // pointer. Casting to UInt64 first solves the problem. + *os << reinterpret_cast( + reinterpret_cast(p)); + } + } +} + +// Used to print a non-container, non-pointer value when the user +// doesn't define PrintTo() for it. +template +void DefaultPrintTo(IsNotContainer /* dummy */, + false_type /* is not a pointer */, + const T& value, ::std::ostream* os) { + ::testing_internal::DefaultPrintNonContainerTo(value, os); +} + +// Prints the given value using the << operator if it has one; +// otherwise prints the bytes in it. This is what +// UniversalPrinter::Print() does when PrintTo() is not specialized +// or overloaded for type T. +// +// A user can override this behavior for a class type Foo by defining +// an overload of PrintTo() in the namespace where Foo is defined. We +// give the user this option as sometimes defining a << operator for +// Foo is not desirable (e.g. the coding style may prevent doing it, +// or there is already a << operator but it doesn't do what the user +// wants). +template +void PrintTo(const T& value, ::std::ostream* os) { + // DefaultPrintTo() is overloaded. The type of its first two + // arguments determine which version will be picked. If T is an + // STL-style container, the version for container will be called; if + // T is a pointer, the pointer version will be called; otherwise the + // generic version will be called. + // + // Note that we check for container types here, prior to we check + // for protocol message types in our operator<<. The rationale is: + // + // For protocol messages, we want to give people a chance to + // override Google Mock's format by defining a PrintTo() or + // operator<<. For STL containers, other formats can be + // incompatible with Google Mock's format for the container + // elements; therefore we check for container types here to ensure + // that our format is used. + // + // The second argument of DefaultPrintTo() is needed to bypass a bug + // in Symbian's C++ compiler that prevents it from picking the right + // overload between: + // + // PrintTo(const T& x, ...); + // PrintTo(T* x, ...); + DefaultPrintTo(IsContainerTest(0), is_pointer(), value, os); +} + +// The following list of PrintTo() overloads tells +// UniversalPrinter::Print() how to print standard types (built-in +// types, strings, plain arrays, and pointers). + +// Overloads for various char types. +GTEST_API_ void PrintTo(unsigned char c, ::std::ostream* os); +GTEST_API_ void PrintTo(signed char c, ::std::ostream* os); +inline void PrintTo(char c, ::std::ostream* os) { + // When printing a plain char, we always treat it as unsigned. This + // way, the output won't be affected by whether the compiler thinks + // char is signed or not. + PrintTo(static_cast(c), os); +} + +// Overloads for other simple built-in types. +inline void PrintTo(bool x, ::std::ostream* os) { + *os << (x ? "true" : "false"); +} + +// Overload for wchar_t type. +// Prints a wchar_t as a symbol if it is printable or as its internal +// code otherwise and also as its decimal code (except for L'\0'). +// The L'\0' char is printed as "L'\\0'". The decimal code is printed +// as signed integer when wchar_t is implemented by the compiler +// as a signed type and is printed as an unsigned integer when wchar_t +// is implemented as an unsigned type. +GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os); + +// Overloads for C strings. +GTEST_API_ void PrintTo(const char* s, ::std::ostream* os); +inline void PrintTo(char* s, ::std::ostream* os) { + PrintTo(ImplicitCast_(s), os); +} + +// signed/unsigned char is often used for representing binary data, so +// we print pointers to it as void* to be safe. +inline void PrintTo(const signed char* s, ::std::ostream* os) { + PrintTo(ImplicitCast_(s), os); +} +inline void PrintTo(signed char* s, ::std::ostream* os) { + PrintTo(ImplicitCast_(s), os); +} +inline void PrintTo(const unsigned char* s, ::std::ostream* os) { + PrintTo(ImplicitCast_(s), os); +} +inline void PrintTo(unsigned char* s, ::std::ostream* os) { + PrintTo(ImplicitCast_(s), os); +} + +// MSVC can be configured to define wchar_t as a typedef of unsigned +// short. It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native +// type. When wchar_t is a typedef, defining an overload for const +// wchar_t* would cause unsigned short* be printed as a wide string, +// possibly causing invalid memory accesses. +#if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED) +// Overloads for wide C strings +GTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os); +inline void PrintTo(wchar_t* s, ::std::ostream* os) { + PrintTo(ImplicitCast_(s), os); +} +#endif + +// Overload for C arrays. Multi-dimensional arrays are printed +// properly. + +// Prints the given number of elements in an array, without printing +// the curly braces. +template +void PrintRawArrayTo(const T a[], size_t count, ::std::ostream* os) { + UniversalPrint(a[0], os); + for (size_t i = 1; i != count; i++) { + *os << ", "; + UniversalPrint(a[i], os); + } +} + +// Overloads for ::string and ::std::string. +#if GTEST_HAS_GLOBAL_STRING +GTEST_API_ void PrintStringTo(const ::string&s, ::std::ostream* os); +inline void PrintTo(const ::string& s, ::std::ostream* os) { + PrintStringTo(s, os); +} +#endif // GTEST_HAS_GLOBAL_STRING + +GTEST_API_ void PrintStringTo(const ::std::string&s, ::std::ostream* os); +inline void PrintTo(const ::std::string& s, ::std::ostream* os) { + PrintStringTo(s, os); +} + +// Overloads for ::wstring and ::std::wstring. +#if GTEST_HAS_GLOBAL_WSTRING +GTEST_API_ void PrintWideStringTo(const ::wstring&s, ::std::ostream* os); +inline void PrintTo(const ::wstring& s, ::std::ostream* os) { + PrintWideStringTo(s, os); +} +#endif // GTEST_HAS_GLOBAL_WSTRING + +#if GTEST_HAS_STD_WSTRING +GTEST_API_ void PrintWideStringTo(const ::std::wstring&s, ::std::ostream* os); +inline void PrintTo(const ::std::wstring& s, ::std::ostream* os) { + PrintWideStringTo(s, os); +} +#endif // GTEST_HAS_STD_WSTRING + +#if GTEST_HAS_TR1_TUPLE +// Overload for ::std::tr1::tuple. Needed for printing function arguments, +// which are packed as tuples. + +// Helper function for printing a tuple. T must be instantiated with +// a tuple type. +template +void PrintTupleTo(const T& t, ::std::ostream* os); + +// Overloaded PrintTo() for tuples of various arities. We support +// tuples of up-to 10 fields. The following implementation works +// regardless of whether tr1::tuple is implemented using the +// non-standard variadic template feature or not. + +inline void PrintTo(const ::std::tr1::tuple<>& t, ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, + ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, + ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, + ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, + ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, + ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo( + const ::std::tr1::tuple& t, + ::std::ostream* os) { + PrintTupleTo(t, os); +} +#endif // GTEST_HAS_TR1_TUPLE + +// Overload for std::pair. +template +void PrintTo(const ::std::pair& value, ::std::ostream* os) { + *os << '('; + // We cannot use UniversalPrint(value.first, os) here, as T1 may be + // a reference type. The same for printing value.second. + UniversalPrinter::Print(value.first, os); + *os << ", "; + UniversalPrinter::Print(value.second, os); + *os << ')'; +} + +// Implements printing a non-reference type T by letting the compiler +// pick the right overload of PrintTo() for T. +template +class UniversalPrinter { + public: + // MSVC warns about adding const to a function type, so we want to + // disable the warning. +#ifdef _MSC_VER +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4180) // Temporarily disables warning 4180. +#endif // _MSC_VER + + // Note: we deliberately don't call this PrintTo(), as that name + // conflicts with ::testing::internal::PrintTo in the body of the + // function. + static void Print(const T& value, ::std::ostream* os) { + // By default, ::testing::internal::PrintTo() is used for printing + // the value. + // + // Thanks to Koenig look-up, if T is a class and has its own + // PrintTo() function defined in its namespace, that function will + // be visible here. Since it is more specific than the generic ones + // in ::testing::internal, it will be picked by the compiler in the + // following statement - exactly what we want. + PrintTo(value, os); + } + +#ifdef _MSC_VER +# pragma warning(pop) // Restores the warning state. +#endif // _MSC_VER +}; + +// UniversalPrintArray(begin, len, os) prints an array of 'len' +// elements, starting at address 'begin'. +template +void UniversalPrintArray(const T* begin, size_t len, ::std::ostream* os) { + if (len == 0) { + *os << "{}"; + } else { + *os << "{ "; + const size_t kThreshold = 18; + const size_t kChunkSize = 8; + // If the array has more than kThreshold elements, we'll have to + // omit some details by printing only the first and the last + // kChunkSize elements. + // TODO(wan@google.com): let the user control the threshold using a flag. + if (len <= kThreshold) { + PrintRawArrayTo(begin, len, os); + } else { + PrintRawArrayTo(begin, kChunkSize, os); + *os << ", ..., "; + PrintRawArrayTo(begin + len - kChunkSize, kChunkSize, os); + } + *os << " }"; + } +} +// This overload prints a (const) char array compactly. +GTEST_API_ void UniversalPrintArray( + const char* begin, size_t len, ::std::ostream* os); + +// This overload prints a (const) wchar_t array compactly. +GTEST_API_ void UniversalPrintArray( + const wchar_t* begin, size_t len, ::std::ostream* os); + +// Implements printing an array type T[N]. +template +class UniversalPrinter { + public: + // Prints the given array, omitting some elements when there are too + // many. + static void Print(const T (&a)[N], ::std::ostream* os) { + UniversalPrintArray(a, N, os); + } +}; + +// Implements printing a reference type T&. +template +class UniversalPrinter { + public: + // MSVC warns about adding const to a function type, so we want to + // disable the warning. +#ifdef _MSC_VER +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4180) // Temporarily disables warning 4180. +#endif // _MSC_VER + + static void Print(const T& value, ::std::ostream* os) { + // Prints the address of the value. We use reinterpret_cast here + // as static_cast doesn't compile when T is a function type. + *os << "@" << reinterpret_cast(&value) << " "; + + // Then prints the value itself. + UniversalPrint(value, os); + } + +#ifdef _MSC_VER +# pragma warning(pop) // Restores the warning state. +#endif // _MSC_VER +}; + +// Prints a value tersely: for a reference type, the referenced value +// (but not the address) is printed; for a (const) char pointer, the +// NUL-terminated string (but not the pointer) is printed. + +template +class UniversalTersePrinter { + public: + static void Print(const T& value, ::std::ostream* os) { + UniversalPrint(value, os); + } +}; +template +class UniversalTersePrinter { + public: + static void Print(const T& value, ::std::ostream* os) { + UniversalPrint(value, os); + } +}; +template +class UniversalTersePrinter { + public: + static void Print(const T (&value)[N], ::std::ostream* os) { + UniversalPrinter::Print(value, os); + } +}; +template <> +class UniversalTersePrinter { + public: + static void Print(const char* str, ::std::ostream* os) { + if (str == NULL) { + *os << "NULL"; + } else { + UniversalPrint(string(str), os); + } + } +}; +template <> +class UniversalTersePrinter { + public: + static void Print(char* str, ::std::ostream* os) { + UniversalTersePrinter::Print(str, os); + } +}; + +#if GTEST_HAS_STD_WSTRING +template <> +class UniversalTersePrinter { + public: + static void Print(const wchar_t* str, ::std::ostream* os) { + if (str == NULL) { + *os << "NULL"; + } else { + UniversalPrint(::std::wstring(str), os); + } + } +}; +#endif + +template <> +class UniversalTersePrinter { + public: + static void Print(wchar_t* str, ::std::ostream* os) { + UniversalTersePrinter::Print(str, os); + } +}; + +template +void UniversalTersePrint(const T& value, ::std::ostream* os) { + UniversalTersePrinter::Print(value, os); +} + +// Prints a value using the type inferred by the compiler. The +// difference between this and UniversalTersePrint() is that for a +// (const) char pointer, this prints both the pointer and the +// NUL-terminated string. +template +void UniversalPrint(const T& value, ::std::ostream* os) { + // A workarond for the bug in VC++ 7.1 that prevents us from instantiating + // UniversalPrinter with T directly. + typedef T T1; + UniversalPrinter::Print(value, os); +} + +#if GTEST_HAS_TR1_TUPLE +typedef ::std::vector Strings; + +// This helper template allows PrintTo() for tuples and +// UniversalTersePrintTupleFieldsToStrings() to be defined by +// induction on the number of tuple fields. The idea is that +// TuplePrefixPrinter::PrintPrefixTo(t, os) prints the first N +// fields in tuple t, and can be defined in terms of +// TuplePrefixPrinter. + +// The inductive case. +template +struct TuplePrefixPrinter { + // Prints the first N fields of a tuple. + template + static void PrintPrefixTo(const Tuple& t, ::std::ostream* os) { + TuplePrefixPrinter::PrintPrefixTo(t, os); + *os << ", "; + UniversalPrinter::type> + ::Print(::std::tr1::get(t), os); + } + + // Tersely prints the first N fields of a tuple to a string vector, + // one element for each field. + template + static void TersePrintPrefixToStrings(const Tuple& t, Strings* strings) { + TuplePrefixPrinter::TersePrintPrefixToStrings(t, strings); + ::std::stringstream ss; + UniversalTersePrint(::std::tr1::get(t), &ss); + strings->push_back(ss.str()); + } +}; + +// Base cases. +template <> +struct TuplePrefixPrinter<0> { + template + static void PrintPrefixTo(const Tuple&, ::std::ostream*) {} + + template + static void TersePrintPrefixToStrings(const Tuple&, Strings*) {} +}; +// We have to specialize the entire TuplePrefixPrinter<> class +// template here, even though the definition of +// TersePrintPrefixToStrings() is the same as the generic version, as +// Embarcadero (formerly CodeGear, formerly Borland) C++ doesn't +// support specializing a method template of a class template. +template <> +struct TuplePrefixPrinter<1> { + template + static void PrintPrefixTo(const Tuple& t, ::std::ostream* os) { + UniversalPrinter::type>:: + Print(::std::tr1::get<0>(t), os); + } + + template + static void TersePrintPrefixToStrings(const Tuple& t, Strings* strings) { + ::std::stringstream ss; + UniversalTersePrint(::std::tr1::get<0>(t), &ss); + strings->push_back(ss.str()); + } +}; + +// Helper function for printing a tuple. T must be instantiated with +// a tuple type. +template +void PrintTupleTo(const T& t, ::std::ostream* os) { + *os << "("; + TuplePrefixPrinter< ::std::tr1::tuple_size::value>:: + PrintPrefixTo(t, os); + *os << ")"; +} + +// Prints the fields of a tuple tersely to a string vector, one +// element for each field. See the comment before +// UniversalTersePrint() for how we define "tersely". +template +Strings UniversalTersePrintTupleFieldsToStrings(const Tuple& value) { + Strings result; + TuplePrefixPrinter< ::std::tr1::tuple_size::value>:: + TersePrintPrefixToStrings(value, &result); + return result; +} +#endif // GTEST_HAS_TR1_TUPLE + +} // namespace internal + +template +::std::string PrintToString(const T& value) { + ::std::stringstream ss; + internal::UniversalTersePrinter::Print(value, &ss); + return ss.str(); +} + +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_ + +#if GTEST_HAS_PARAM_TEST + +namespace testing { +namespace internal { + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// Outputs a message explaining invalid registration of different +// fixture class for the same test case. This may happen when +// TEST_P macro is used to define two tests with the same name +// but in different namespaces. +GTEST_API_ void ReportInvalidTestCaseType(const char* test_case_name, + const char* file, int line); + +template class ParamGeneratorInterface; +template class ParamGenerator; + +// Interface for iterating over elements provided by an implementation +// of ParamGeneratorInterface. +template +class ParamIteratorInterface { + public: + virtual ~ParamIteratorInterface() {} + // A pointer to the base generator instance. + // Used only for the purposes of iterator comparison + // to make sure that two iterators belong to the same generator. + virtual const ParamGeneratorInterface* BaseGenerator() const = 0; + // Advances iterator to point to the next element + // provided by the generator. The caller is responsible + // for not calling Advance() on an iterator equal to + // BaseGenerator()->End(). + virtual void Advance() = 0; + // Clones the iterator object. Used for implementing copy semantics + // of ParamIterator. + virtual ParamIteratorInterface* Clone() const = 0; + // Dereferences the current iterator and provides (read-only) access + // to the pointed value. It is the caller's responsibility not to call + // Current() on an iterator equal to BaseGenerator()->End(). + // Used for implementing ParamGenerator::operator*(). + virtual const T* Current() const = 0; + // Determines whether the given iterator and other point to the same + // element in the sequence generated by the generator. + // Used for implementing ParamGenerator::operator==(). + virtual bool Equals(const ParamIteratorInterface& other) const = 0; +}; + +// Class iterating over elements provided by an implementation of +// ParamGeneratorInterface. It wraps ParamIteratorInterface +// and implements the const forward iterator concept. +template +class ParamIterator { + public: + typedef T value_type; + typedef const T& reference; + typedef ptrdiff_t difference_type; + + // ParamIterator assumes ownership of the impl_ pointer. + ParamIterator(const ParamIterator& other) : impl_(other.impl_->Clone()) {} + ParamIterator& operator=(const ParamIterator& other) { + if (this != &other) + impl_.reset(other.impl_->Clone()); + return *this; + } + + const T& operator*() const { return *impl_->Current(); } + const T* operator->() const { return impl_->Current(); } + // Prefix version of operator++. + ParamIterator& operator++() { + impl_->Advance(); + return *this; + } + // Postfix version of operator++. + ParamIterator operator++(int /*unused*/) { + ParamIteratorInterface* clone = impl_->Clone(); + impl_->Advance(); + return ParamIterator(clone); + } + bool operator==(const ParamIterator& other) const { + return impl_.get() == other.impl_.get() || impl_->Equals(*other.impl_); + } + bool operator!=(const ParamIterator& other) const { + return !(*this == other); + } + + private: + friend class ParamGenerator; + explicit ParamIterator(ParamIteratorInterface* impl) : impl_(impl) {} + scoped_ptr > impl_; +}; + +// ParamGeneratorInterface is the binary interface to access generators +// defined in other translation units. +template +class ParamGeneratorInterface { + public: + typedef T ParamType; + + virtual ~ParamGeneratorInterface() {} + + // Generator interface definition + virtual ParamIteratorInterface* Begin() const = 0; + virtual ParamIteratorInterface* End() const = 0; +}; + +// Wraps ParamGeneratorInterface and provides general generator syntax +// compatible with the STL Container concept. +// This class implements copy initialization semantics and the contained +// ParamGeneratorInterface instance is shared among all copies +// of the original object. This is possible because that instance is immutable. +template +class ParamGenerator { + public: + typedef ParamIterator iterator; + + explicit ParamGenerator(ParamGeneratorInterface* impl) : impl_(impl) {} + ParamGenerator(const ParamGenerator& other) : impl_(other.impl_) {} + + ParamGenerator& operator=(const ParamGenerator& other) { + impl_ = other.impl_; + return *this; + } + + iterator begin() const { return iterator(impl_->Begin()); } + iterator end() const { return iterator(impl_->End()); } + + private: + linked_ptr > impl_; +}; + +// Generates values from a range of two comparable values. Can be used to +// generate sequences of user-defined types that implement operator+() and +// operator<(). +// This class is used in the Range() function. +template +class RangeGenerator : public ParamGeneratorInterface { + public: + RangeGenerator(T begin, T end, IncrementT step) + : begin_(begin), end_(end), + step_(step), end_index_(CalculateEndIndex(begin, end, step)) {} + virtual ~RangeGenerator() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, begin_, 0, step_); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, end_, end_index_, step_); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, T value, int index, + IncrementT step) + : base_(base), value_(value), index_(index), step_(step) {} + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + virtual void Advance() { + value_ = value_ + step_; + index_++; + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const T* Current() const { return &value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const int other_index = + CheckedDowncastToActualType(&other)->index_; + return index_ == other_index; + } + + private: + Iterator(const Iterator& other) + : ParamIteratorInterface(), + base_(other.base_), value_(other.value_), index_(other.index_), + step_(other.step_) {} + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + T value_; + int index_; + const IncrementT step_; + }; // class RangeGenerator::Iterator + + static int CalculateEndIndex(const T& begin, + const T& end, + const IncrementT& step) { + int end_index = 0; + for (T i = begin; i < end; i = i + step) + end_index++; + return end_index; + } + + // No implementation - assignment is unsupported. + void operator=(const RangeGenerator& other); + + const T begin_; + const T end_; + const IncrementT step_; + // The index for the end() iterator. All the elements in the generated + // sequence are indexed (0-based) to aid iterator comparison. + const int end_index_; +}; // class RangeGenerator + + +// Generates values from a pair of STL-style iterators. Used in the +// ValuesIn() function. The elements are copied from the source range +// since the source can be located on the stack, and the generator +// is likely to persist beyond that stack frame. +template +class ValuesInIteratorRangeGenerator : public ParamGeneratorInterface { + public: + template + ValuesInIteratorRangeGenerator(ForwardIterator begin, ForwardIterator end) + : container_(begin, end) {} + virtual ~ValuesInIteratorRangeGenerator() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, container_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, container_.end()); + } + + private: + typedef typename ::std::vector ContainerType; + + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + typename ContainerType::const_iterator iterator) + : base_(base), iterator_(iterator) {} + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + virtual void Advance() { + ++iterator_; + value_.reset(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + // We need to use cached value referenced by iterator_ because *iterator_ + // can return a temporary object (and of type other then T), so just + // having "return &*iterator_;" doesn't work. + // value_ is updated here and not in Advance() because Advance() + // can advance iterator_ beyond the end of the range, and we cannot + // detect that fact. The client code, on the other hand, is + // responsible for not calling Current() on an out-of-range iterator. + virtual const T* Current() const { + if (value_.get() == NULL) + value_.reset(new T(*iterator_)); + return value_.get(); + } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + return iterator_ == + CheckedDowncastToActualType(&other)->iterator_; + } + + private: + Iterator(const Iterator& other) + // The explicit constructor call suppresses a false warning + // emitted by gcc when supplied with the -Wextra option. + : ParamIteratorInterface(), + base_(other.base_), + iterator_(other.iterator_) {} + + const ParamGeneratorInterface* const base_; + typename ContainerType::const_iterator iterator_; + // A cached value of *iterator_. We keep it here to allow access by + // pointer in the wrapping iterator's operator->(). + // value_ needs to be mutable to be accessed in Current(). + // Use of scoped_ptr helps manage cached value's lifetime, + // which is bound by the lifespan of the iterator itself. + mutable scoped_ptr value_; + }; // class ValuesInIteratorRangeGenerator::Iterator + + // No implementation - assignment is unsupported. + void operator=(const ValuesInIteratorRangeGenerator& other); + + const ContainerType container_; +}; // class ValuesInIteratorRangeGenerator + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// Stores a parameter value and later creates tests parameterized with that +// value. +template +class ParameterizedTestFactory : public TestFactoryBase { + public: + typedef typename TestClass::ParamType ParamType; + explicit ParameterizedTestFactory(ParamType parameter) : + parameter_(parameter) {} + virtual Test* CreateTest() { + TestClass::SetParam(¶meter_); + return new TestClass(); + } + + private: + const ParamType parameter_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestFactory); +}; + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// TestMetaFactoryBase is a base class for meta-factories that create +// test factories for passing into MakeAndRegisterTestInfo function. +template +class TestMetaFactoryBase { + public: + virtual ~TestMetaFactoryBase() {} + + virtual TestFactoryBase* CreateTestFactory(ParamType parameter) = 0; +}; + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// TestMetaFactory creates test factories for passing into +// MakeAndRegisterTestInfo function. Since MakeAndRegisterTestInfo receives +// ownership of test factory pointer, same factory object cannot be passed +// into that method twice. But ParameterizedTestCaseInfo is going to call +// it for each Test/Parameter value combination. Thus it needs meta factory +// creator class. +template +class TestMetaFactory + : public TestMetaFactoryBase { + public: + typedef typename TestCase::ParamType ParamType; + + TestMetaFactory() {} + + virtual TestFactoryBase* CreateTestFactory(ParamType parameter) { + return new ParameterizedTestFactory(parameter); + } + + private: + GTEST_DISALLOW_COPY_AND_ASSIGN_(TestMetaFactory); +}; + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// ParameterizedTestCaseInfoBase is a generic interface +// to ParameterizedTestCaseInfo classes. ParameterizedTestCaseInfoBase +// accumulates test information provided by TEST_P macro invocations +// and generators provided by INSTANTIATE_TEST_CASE_P macro invocations +// and uses that information to register all resulting test instances +// in RegisterTests method. The ParameterizeTestCaseRegistry class holds +// a collection of pointers to the ParameterizedTestCaseInfo objects +// and calls RegisterTests() on each of them when asked. +class ParameterizedTestCaseInfoBase { + public: + virtual ~ParameterizedTestCaseInfoBase() {} + + // Base part of test case name for display purposes. + virtual const string& GetTestCaseName() const = 0; + // Test case id to verify identity. + virtual TypeId GetTestCaseTypeId() const = 0; + // UnitTest class invokes this method to register tests in this + // test case right before running them in RUN_ALL_TESTS macro. + // This method should not be called more then once on any single + // instance of a ParameterizedTestCaseInfoBase derived class. + virtual void RegisterTests() = 0; + + protected: + ParameterizedTestCaseInfoBase() {} + + private: + GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestCaseInfoBase); +}; + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// ParameterizedTestCaseInfo accumulates tests obtained from TEST_P +// macro invocations for a particular test case and generators +// obtained from INSTANTIATE_TEST_CASE_P macro invocations for that +// test case. It registers tests with all values generated by all +// generators when asked. +template +class ParameterizedTestCaseInfo : public ParameterizedTestCaseInfoBase { + public: + // ParamType and GeneratorCreationFunc are private types but are required + // for declarations of public methods AddTestPattern() and + // AddTestCaseInstantiation(). + typedef typename TestCase::ParamType ParamType; + // A function that returns an instance of appropriate generator type. + typedef ParamGenerator(GeneratorCreationFunc)(); + + explicit ParameterizedTestCaseInfo(const char* name) + : test_case_name_(name) {} + + // Test case base name for display purposes. + virtual const string& GetTestCaseName() const { return test_case_name_; } + // Test case id to verify identity. + virtual TypeId GetTestCaseTypeId() const { return GetTypeId(); } + // TEST_P macro uses AddTestPattern() to record information + // about a single test in a LocalTestInfo structure. + // test_case_name is the base name of the test case (without invocation + // prefix). test_base_name is the name of an individual test without + // parameter index. For the test SequenceA/FooTest.DoBar/1 FooTest is + // test case base name and DoBar is test base name. + void AddTestPattern(const char* test_case_name, + const char* test_base_name, + TestMetaFactoryBase* meta_factory) { + tests_.push_back(linked_ptr(new TestInfo(test_case_name, + test_base_name, + meta_factory))); + } + // INSTANTIATE_TEST_CASE_P macro uses AddGenerator() to record information + // about a generator. + int AddTestCaseInstantiation(const string& instantiation_name, + GeneratorCreationFunc* func, + const char* /* file */, + int /* line */) { + instantiations_.push_back(::std::make_pair(instantiation_name, func)); + return 0; // Return value used only to run this method in namespace scope. + } + // UnitTest class invokes this method to register tests in this test case + // test cases right before running tests in RUN_ALL_TESTS macro. + // This method should not be called more then once on any single + // instance of a ParameterizedTestCaseInfoBase derived class. + // UnitTest has a guard to prevent from calling this method more then once. + virtual void RegisterTests() { + for (typename TestInfoContainer::iterator test_it = tests_.begin(); + test_it != tests_.end(); ++test_it) { + linked_ptr test_info = *test_it; + for (typename InstantiationContainer::iterator gen_it = + instantiations_.begin(); gen_it != instantiations_.end(); + ++gen_it) { + const string& instantiation_name = gen_it->first; + ParamGenerator generator((*gen_it->second)()); + + Message test_case_name_stream; + if ( !instantiation_name.empty() ) + test_case_name_stream << instantiation_name << "/"; + test_case_name_stream << test_info->test_case_base_name; + + int i = 0; + for (typename ParamGenerator::iterator param_it = + generator.begin(); + param_it != generator.end(); ++param_it, ++i) { + Message test_name_stream; + test_name_stream << test_info->test_base_name << "/" << i; + MakeAndRegisterTestInfo( + test_case_name_stream.GetString().c_str(), + test_name_stream.GetString().c_str(), + NULL, // No type parameter. + PrintToString(*param_it).c_str(), + GetTestCaseTypeId(), + TestCase::SetUpTestCase, + TestCase::TearDownTestCase, + test_info->test_meta_factory->CreateTestFactory(*param_it)); + } // for param_it + } // for gen_it + } // for test_it + } // RegisterTests + + private: + // LocalTestInfo structure keeps information about a single test registered + // with TEST_P macro. + struct TestInfo { + TestInfo(const char* a_test_case_base_name, + const char* a_test_base_name, + TestMetaFactoryBase* a_test_meta_factory) : + test_case_base_name(a_test_case_base_name), + test_base_name(a_test_base_name), + test_meta_factory(a_test_meta_factory) {} + + const string test_case_base_name; + const string test_base_name; + const scoped_ptr > test_meta_factory; + }; + typedef ::std::vector > TestInfoContainer; + // Keeps pairs of + // received from INSTANTIATE_TEST_CASE_P macros. + typedef ::std::vector > + InstantiationContainer; + + const string test_case_name_; + TestInfoContainer tests_; + InstantiationContainer instantiations_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestCaseInfo); +}; // class ParameterizedTestCaseInfo + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// ParameterizedTestCaseRegistry contains a map of ParameterizedTestCaseInfoBase +// classes accessed by test case names. TEST_P and INSTANTIATE_TEST_CASE_P +// macros use it to locate their corresponding ParameterizedTestCaseInfo +// descriptors. +class ParameterizedTestCaseRegistry { + public: + ParameterizedTestCaseRegistry() {} + ~ParameterizedTestCaseRegistry() { + for (TestCaseInfoContainer::iterator it = test_case_infos_.begin(); + it != test_case_infos_.end(); ++it) { + delete *it; + } + } + + // Looks up or creates and returns a structure containing information about + // tests and instantiations of a particular test case. + template + ParameterizedTestCaseInfo* GetTestCasePatternHolder( + const char* test_case_name, + const char* file, + int line) { + ParameterizedTestCaseInfo* typed_test_info = NULL; + for (TestCaseInfoContainer::iterator it = test_case_infos_.begin(); + it != test_case_infos_.end(); ++it) { + if ((*it)->GetTestCaseName() == test_case_name) { + if ((*it)->GetTestCaseTypeId() != GetTypeId()) { + // Complain about incorrect usage of Google Test facilities + // and terminate the program since we cannot guaranty correct + // test case setup and tear-down in this case. + ReportInvalidTestCaseType(test_case_name, file, line); + posix::Abort(); + } else { + // At this point we are sure that the object we found is of the same + // type we are looking for, so we downcast it to that type + // without further checks. + typed_test_info = CheckedDowncastToActualType< + ParameterizedTestCaseInfo >(*it); + } + break; + } + } + if (typed_test_info == NULL) { + typed_test_info = new ParameterizedTestCaseInfo(test_case_name); + test_case_infos_.push_back(typed_test_info); + } + return typed_test_info; + } + void RegisterTests() { + for (TestCaseInfoContainer::iterator it = test_case_infos_.begin(); + it != test_case_infos_.end(); ++it) { + (*it)->RegisterTests(); + } + } + + private: + typedef ::std::vector TestCaseInfoContainer; + + TestCaseInfoContainer test_case_infos_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestCaseRegistry); +}; + +} // namespace internal +} // namespace testing + +#endif // GTEST_HAS_PARAM_TEST + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_ +// This file was GENERATED by command: +// pump.py gtest-param-util-generated.h.pump +// DO NOT EDIT BY HAND!!! + +// Copyright 2008 Google Inc. +// All Rights Reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: vladl@google.com (Vlad Losev) + +// Type and function utilities for implementing parameterized tests. +// This file is generated by a SCRIPT. DO NOT EDIT BY HAND! +// +// Currently Google Test supports at most 50 arguments in Values, +// and at most 10 arguments in Combine. Please contact +// googletestframework@googlegroups.com if you need more. +// Please note that the number of arguments to Combine is limited +// by the maximum arity of the implementation of tr1::tuple which is +// currently set at 10. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_ + +// scripts/fuse_gtest.py depends on gtest's own header being #included +// *unconditionally*. Therefore these #includes cannot be moved +// inside #if GTEST_HAS_PARAM_TEST. + +#if GTEST_HAS_PARAM_TEST + +namespace testing { + +// Forward declarations of ValuesIn(), which is implemented in +// include/gtest/gtest-param-test.h. +template +internal::ParamGenerator< + typename ::testing::internal::IteratorTraits::value_type> +ValuesIn(ForwardIterator begin, ForwardIterator end); + +template +internal::ParamGenerator ValuesIn(const T (&array)[N]); + +template +internal::ParamGenerator ValuesIn( + const Container& container); + +namespace internal { + +// Used in the Values() function to provide polymorphic capabilities. +template +class ValueArray1 { + public: + explicit ValueArray1(T1 v1) : v1_(v1) {} + + template + operator ParamGenerator() const { return ValuesIn(&v1_, &v1_ + 1); } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray1& other); + + const T1 v1_; +}; + +template +class ValueArray2 { + public: + ValueArray2(T1 v1, T2 v2) : v1_(v1), v2_(v2) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray2& other); + + const T1 v1_; + const T2 v2_; +}; + +template +class ValueArray3 { + public: + ValueArray3(T1 v1, T2 v2, T3 v3) : v1_(v1), v2_(v2), v3_(v3) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray3& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; +}; + +template +class ValueArray4 { + public: + ValueArray4(T1 v1, T2 v2, T3 v3, T4 v4) : v1_(v1), v2_(v2), v3_(v3), + v4_(v4) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray4& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; +}; + +template +class ValueArray5 { + public: + ValueArray5(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5) : v1_(v1), v2_(v2), v3_(v3), + v4_(v4), v5_(v5) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray5& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; +}; + +template +class ValueArray6 { + public: + ValueArray6(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6) : v1_(v1), v2_(v2), + v3_(v3), v4_(v4), v5_(v5), v6_(v6) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray6& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; +}; + +template +class ValueArray7 { + public: + ValueArray7(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7) : v1_(v1), + v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray7& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; +}; + +template +class ValueArray8 { + public: + ValueArray8(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, + T8 v8) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray8& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; +}; + +template +class ValueArray9 { + public: + ValueArray9(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, + T9 v9) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray9& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; +}; + +template +class ValueArray10 { + public: + ValueArray10(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray10& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; +}; + +template +class ValueArray11 { + public: + ValueArray11(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), + v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray11& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; +}; + +template +class ValueArray12 { + public: + ValueArray12(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), + v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray12& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; +}; + +template +class ValueArray13 { + public: + ValueArray13(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), + v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), + v12_(v12), v13_(v13) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray13& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; +}; + +template +class ValueArray14 { + public: + ValueArray14(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) : v1_(v1), v2_(v2), v3_(v3), + v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray14& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; +}; + +template +class ValueArray15 { + public: + ValueArray15(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) : v1_(v1), v2_(v2), + v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray15& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; +}; + +template +class ValueArray16 { + public: + ValueArray16(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16) : v1_(v1), + v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), + v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), + v16_(v16) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray16& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; +}; + +template +class ValueArray17 { + public: + ValueArray17(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, + T17 v17) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray17& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; +}; + +template +class ValueArray18 { + public: + ValueArray18(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17), v18_(v18) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray18& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; +}; + +template +class ValueArray19 { + public: + ValueArray19(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), + v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), + v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray19& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; +}; + +template +class ValueArray20 { + public: + ValueArray20(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), + v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), + v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), + v19_(v19), v20_(v20) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray20& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; +}; + +template +class ValueArray21 { + public: + ValueArray21(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), + v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), + v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), + v18_(v18), v19_(v19), v20_(v20), v21_(v21) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray21& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; +}; + +template +class ValueArray22 { + public: + ValueArray22(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22) : v1_(v1), v2_(v2), v3_(v3), + v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), + v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray22& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; +}; + +template +class ValueArray23 { + public: + ValueArray23(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23) : v1_(v1), v2_(v2), + v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), + v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), + v23_(v23) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray23& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; +}; + +template +class ValueArray24 { + public: + ValueArray24(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24) : v1_(v1), + v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), + v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), + v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), + v22_(v22), v23_(v23), v24_(v24) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray24& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; +}; + +template +class ValueArray25 { + public: + ValueArray25(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, + T25 v25) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), + v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray25& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; +}; + +template +class ValueArray26 { + public: + ValueArray26(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), + v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray26& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; +}; + +template +class ValueArray27 { + public: + ValueArray27(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), + v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), + v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), + v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), + v26_(v26), v27_(v27) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray27& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; +}; + +template +class ValueArray28 { + public: + ValueArray28(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), + v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), + v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), + v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), + v25_(v25), v26_(v26), v27_(v27), v28_(v28) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray28& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; +}; + +template +class ValueArray29 { + public: + ValueArray29(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), + v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), + v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), + v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), + v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray29& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; +}; + +template +class ValueArray30 { + public: + ValueArray30(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) : v1_(v1), v2_(v2), v3_(v3), + v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), + v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), + v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), + v29_(v29), v30_(v30) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray30& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; +}; + +template +class ValueArray31 { + public: + ValueArray31(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) : v1_(v1), v2_(v2), + v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), + v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), + v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), + v29_(v29), v30_(v30), v31_(v31) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray31& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; +}; + +template +class ValueArray32 { + public: + ValueArray32(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32) : v1_(v1), + v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), + v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), + v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), + v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), + v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray32& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; +}; + +template +class ValueArray33 { + public: + ValueArray33(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, + T33 v33) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), + v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), + v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), + v33_(v33) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray33& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; +}; + +template +class ValueArray34 { + public: + ValueArray34(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), + v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), + v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), + v33_(v33), v34_(v34) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray34& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; +}; + +template +class ValueArray35 { + public: + ValueArray35(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), + v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), + v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), + v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), + v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), + v32_(v32), v33_(v33), v34_(v34), v35_(v35) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray35& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; +}; + +template +class ValueArray36 { + public: + ValueArray36(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), + v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), + v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), + v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), + v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), + v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray36& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; +}; + +template +class ValueArray37 { + public: + ValueArray37(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), + v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), + v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), + v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), + v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), + v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), + v36_(v36), v37_(v37) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray37& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; +}; + +template +class ValueArray38 { + public: + ValueArray38(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38) : v1_(v1), v2_(v2), v3_(v3), + v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), + v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), + v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), + v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), + v35_(v35), v36_(v36), v37_(v37), v38_(v38) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray38& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; +}; + +template +class ValueArray39 { + public: + ValueArray39(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39) : v1_(v1), v2_(v2), + v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), + v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), + v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), + v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), + v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray39& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; +}; + +template +class ValueArray40 { + public: + ValueArray40(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) : v1_(v1), + v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), + v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), + v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), + v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), + v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), + v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), + v40_(v40) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray40& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; +}; + +template +class ValueArray41 { + public: + ValueArray41(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, + T41 v41) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), + v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), + v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), + v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), + v39_(v39), v40_(v40), v41_(v41) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray41& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; +}; + +template +class ValueArray42 { + public: + ValueArray42(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), + v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), + v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), + v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), + v39_(v39), v40_(v40), v41_(v41), v42_(v42) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_), + static_cast(v42_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray42& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; + const T42 v42_; +}; + +template +class ValueArray43 { + public: + ValueArray43(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), + v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), + v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), + v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), + v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), + v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), + v38_(v38), v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_), + static_cast(v42_), static_cast(v43_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray43& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; + const T42 v42_; + const T43 v43_; +}; + +template +class ValueArray44 { + public: + ValueArray44(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43, T44 v44) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), + v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), + v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), + v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), + v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), + v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36), + v37_(v37), v38_(v38), v39_(v39), v40_(v40), v41_(v41), v42_(v42), + v43_(v43), v44_(v44) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_), + static_cast(v42_), static_cast(v43_), static_cast(v44_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray44& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; + const T42 v42_; + const T43 v43_; + const T44 v44_; +}; + +template +class ValueArray45 { + public: + ValueArray45(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43, T44 v44, T45 v45) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), + v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), + v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), + v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), + v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), + v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), + v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40), v41_(v41), + v42_(v42), v43_(v43), v44_(v44), v45_(v45) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_), + static_cast(v42_), static_cast(v43_), static_cast(v44_), + static_cast(v45_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray45& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; + const T42 v42_; + const T43 v43_; + const T44 v44_; + const T45 v45_; +}; + +template +class ValueArray46 { + public: + ValueArray46(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) : v1_(v1), v2_(v2), v3_(v3), + v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), + v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), + v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), + v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), + v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40), + v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), v46_(v46) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_), + static_cast(v42_), static_cast(v43_), static_cast(v44_), + static_cast(v45_), static_cast(v46_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray46& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; + const T42 v42_; + const T43 v43_; + const T44 v44_; + const T45 v45_; + const T46 v46_; +}; + +template +class ValueArray47 { + public: + ValueArray47(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) : v1_(v1), v2_(v2), + v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), + v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), + v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), + v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), + v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40), + v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), v46_(v46), + v47_(v47) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_), + static_cast(v42_), static_cast(v43_), static_cast(v44_), + static_cast(v45_), static_cast(v46_), static_cast(v47_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray47& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; + const T42 v42_; + const T43 v43_; + const T44 v44_; + const T45 v45_; + const T46 v46_; + const T47 v47_; +}; + +template +class ValueArray48 { + public: + ValueArray48(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48) : v1_(v1), + v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), + v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), + v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), + v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), + v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), + v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), + v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), + v46_(v46), v47_(v47), v48_(v48) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_), + static_cast(v42_), static_cast(v43_), static_cast(v44_), + static_cast(v45_), static_cast(v46_), static_cast(v47_), + static_cast(v48_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray48& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; + const T42 v42_; + const T43 v43_; + const T44 v44_; + const T45 v45_; + const T46 v46_; + const T47 v47_; + const T48 v48_; +}; + +template +class ValueArray49 { + public: + ValueArray49(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, + T49 v49) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), + v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), + v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), + v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), + v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44), + v45_(v45), v46_(v46), v47_(v47), v48_(v48), v49_(v49) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_), + static_cast(v42_), static_cast(v43_), static_cast(v44_), + static_cast(v45_), static_cast(v46_), static_cast(v47_), + static_cast(v48_), static_cast(v49_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray49& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; + const T42 v42_; + const T43 v43_; + const T44 v44_; + const T45 v45_; + const T46 v46_; + const T47 v47_; + const T48 v48_; + const T49 v49_; +}; + +template +class ValueArray50 { + public: + ValueArray50(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, T49 v49, + T50 v50) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), + v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), + v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), + v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), + v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44), + v45_(v45), v46_(v46), v47_(v47), v48_(v48), v49_(v49), v50_(v50) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_), + static_cast(v42_), static_cast(v43_), static_cast(v44_), + static_cast(v45_), static_cast(v46_), static_cast(v47_), + static_cast(v48_), static_cast(v49_), static_cast(v50_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray50& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; + const T42 v42_; + const T43 v43_; + const T44 v44_; + const T45 v45_; + const T46 v46_; + const T47 v47_; + const T48 v48_; + const T49 v49_; + const T50 v50_; +}; + +# if GTEST_HAS_COMBINE +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// Generates values from the Cartesian product of values produced +// by the argument generators. +// +template +class CartesianProductGenerator2 + : public ParamGeneratorInterface< ::std::tr1::tuple > { + public: + typedef ::std::tr1::tuple ParamType; + + CartesianProductGenerator2(const ParamGenerator& g1, + const ParamGenerator& g2) + : g1_(g1), g2_(g2) {} + virtual ~CartesianProductGenerator2() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, g1_, g1_.end(), g2_, g2_.end()); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + const ParamGenerator& g1, + const typename ParamGenerator::iterator& current1, + const ParamGenerator& g2, + const typename ParamGenerator::iterator& current2) + : base_(base), + begin1_(g1.begin()), end1_(g1.end()), current1_(current1), + begin2_(g2.begin()), end2_(g2.end()), current2_(current2) { + ComputeCurrentValue(); + } + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + // Advance should not be called on beyond-of-range iterators + // so no component iterators must be beyond end of range, either. + virtual void Advance() { + assert(!AtEnd()); + ++current2_; + if (current2_ == end2_) { + current2_ = begin2_; + ++current1_; + } + ComputeCurrentValue(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const ParamType* Current() const { return ¤t_value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = + CheckedDowncastToActualType(&other); + // We must report iterators equal if they both point beyond their + // respective ranges. That can happen in a variety of fashions, + // so we have to consult AtEnd(). + return (AtEnd() && typed_other->AtEnd()) || + ( + current1_ == typed_other->current1_ && + current2_ == typed_other->current2_); + } + + private: + Iterator(const Iterator& other) + : base_(other.base_), + begin1_(other.begin1_), + end1_(other.end1_), + current1_(other.current1_), + begin2_(other.begin2_), + end2_(other.end2_), + current2_(other.current2_) { + ComputeCurrentValue(); + } + + void ComputeCurrentValue() { + if (!AtEnd()) + current_value_ = ParamType(*current1_, *current2_); + } + bool AtEnd() const { + // We must report iterator past the end of the range when either of the + // component iterators has reached the end of its range. + return + current1_ == end1_ || + current2_ == end2_; + } + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. + // current[i]_ is the actual traversing iterator. + const typename ParamGenerator::iterator begin1_; + const typename ParamGenerator::iterator end1_; + typename ParamGenerator::iterator current1_; + const typename ParamGenerator::iterator begin2_; + const typename ParamGenerator::iterator end2_; + typename ParamGenerator::iterator current2_; + ParamType current_value_; + }; // class CartesianProductGenerator2::Iterator + + // No implementation - assignment is unsupported. + void operator=(const CartesianProductGenerator2& other); + + const ParamGenerator g1_; + const ParamGenerator g2_; +}; // class CartesianProductGenerator2 + + +template +class CartesianProductGenerator3 + : public ParamGeneratorInterface< ::std::tr1::tuple > { + public: + typedef ::std::tr1::tuple ParamType; + + CartesianProductGenerator3(const ParamGenerator& g1, + const ParamGenerator& g2, const ParamGenerator& g3) + : g1_(g1), g2_(g2), g3_(g3) {} + virtual ~CartesianProductGenerator3() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, + g3_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end()); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + const ParamGenerator& g1, + const typename ParamGenerator::iterator& current1, + const ParamGenerator& g2, + const typename ParamGenerator::iterator& current2, + const ParamGenerator& g3, + const typename ParamGenerator::iterator& current3) + : base_(base), + begin1_(g1.begin()), end1_(g1.end()), current1_(current1), + begin2_(g2.begin()), end2_(g2.end()), current2_(current2), + begin3_(g3.begin()), end3_(g3.end()), current3_(current3) { + ComputeCurrentValue(); + } + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + // Advance should not be called on beyond-of-range iterators + // so no component iterators must be beyond end of range, either. + virtual void Advance() { + assert(!AtEnd()); + ++current3_; + if (current3_ == end3_) { + current3_ = begin3_; + ++current2_; + } + if (current2_ == end2_) { + current2_ = begin2_; + ++current1_; + } + ComputeCurrentValue(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const ParamType* Current() const { return ¤t_value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = + CheckedDowncastToActualType(&other); + // We must report iterators equal if they both point beyond their + // respective ranges. That can happen in a variety of fashions, + // so we have to consult AtEnd(). + return (AtEnd() && typed_other->AtEnd()) || + ( + current1_ == typed_other->current1_ && + current2_ == typed_other->current2_ && + current3_ == typed_other->current3_); + } + + private: + Iterator(const Iterator& other) + : base_(other.base_), + begin1_(other.begin1_), + end1_(other.end1_), + current1_(other.current1_), + begin2_(other.begin2_), + end2_(other.end2_), + current2_(other.current2_), + begin3_(other.begin3_), + end3_(other.end3_), + current3_(other.current3_) { + ComputeCurrentValue(); + } + + void ComputeCurrentValue() { + if (!AtEnd()) + current_value_ = ParamType(*current1_, *current2_, *current3_); + } + bool AtEnd() const { + // We must report iterator past the end of the range when either of the + // component iterators has reached the end of its range. + return + current1_ == end1_ || + current2_ == end2_ || + current3_ == end3_; + } + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. + // current[i]_ is the actual traversing iterator. + const typename ParamGenerator::iterator begin1_; + const typename ParamGenerator::iterator end1_; + typename ParamGenerator::iterator current1_; + const typename ParamGenerator::iterator begin2_; + const typename ParamGenerator::iterator end2_; + typename ParamGenerator::iterator current2_; + const typename ParamGenerator::iterator begin3_; + const typename ParamGenerator::iterator end3_; + typename ParamGenerator::iterator current3_; + ParamType current_value_; + }; // class CartesianProductGenerator3::Iterator + + // No implementation - assignment is unsupported. + void operator=(const CartesianProductGenerator3& other); + + const ParamGenerator g1_; + const ParamGenerator g2_; + const ParamGenerator g3_; +}; // class CartesianProductGenerator3 + + +template +class CartesianProductGenerator4 + : public ParamGeneratorInterface< ::std::tr1::tuple > { + public: + typedef ::std::tr1::tuple ParamType; + + CartesianProductGenerator4(const ParamGenerator& g1, + const ParamGenerator& g2, const ParamGenerator& g3, + const ParamGenerator& g4) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4) {} + virtual ~CartesianProductGenerator4() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, + g3_.begin(), g4_, g4_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), + g4_, g4_.end()); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + const ParamGenerator& g1, + const typename ParamGenerator::iterator& current1, + const ParamGenerator& g2, + const typename ParamGenerator::iterator& current2, + const ParamGenerator& g3, + const typename ParamGenerator::iterator& current3, + const ParamGenerator& g4, + const typename ParamGenerator::iterator& current4) + : base_(base), + begin1_(g1.begin()), end1_(g1.end()), current1_(current1), + begin2_(g2.begin()), end2_(g2.end()), current2_(current2), + begin3_(g3.begin()), end3_(g3.end()), current3_(current3), + begin4_(g4.begin()), end4_(g4.end()), current4_(current4) { + ComputeCurrentValue(); + } + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + // Advance should not be called on beyond-of-range iterators + // so no component iterators must be beyond end of range, either. + virtual void Advance() { + assert(!AtEnd()); + ++current4_; + if (current4_ == end4_) { + current4_ = begin4_; + ++current3_; + } + if (current3_ == end3_) { + current3_ = begin3_; + ++current2_; + } + if (current2_ == end2_) { + current2_ = begin2_; + ++current1_; + } + ComputeCurrentValue(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const ParamType* Current() const { return ¤t_value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = + CheckedDowncastToActualType(&other); + // We must report iterators equal if they both point beyond their + // respective ranges. That can happen in a variety of fashions, + // so we have to consult AtEnd(). + return (AtEnd() && typed_other->AtEnd()) || + ( + current1_ == typed_other->current1_ && + current2_ == typed_other->current2_ && + current3_ == typed_other->current3_ && + current4_ == typed_other->current4_); + } + + private: + Iterator(const Iterator& other) + : base_(other.base_), + begin1_(other.begin1_), + end1_(other.end1_), + current1_(other.current1_), + begin2_(other.begin2_), + end2_(other.end2_), + current2_(other.current2_), + begin3_(other.begin3_), + end3_(other.end3_), + current3_(other.current3_), + begin4_(other.begin4_), + end4_(other.end4_), + current4_(other.current4_) { + ComputeCurrentValue(); + } + + void ComputeCurrentValue() { + if (!AtEnd()) + current_value_ = ParamType(*current1_, *current2_, *current3_, + *current4_); + } + bool AtEnd() const { + // We must report iterator past the end of the range when either of the + // component iterators has reached the end of its range. + return + current1_ == end1_ || + current2_ == end2_ || + current3_ == end3_ || + current4_ == end4_; + } + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. + // current[i]_ is the actual traversing iterator. + const typename ParamGenerator::iterator begin1_; + const typename ParamGenerator::iterator end1_; + typename ParamGenerator::iterator current1_; + const typename ParamGenerator::iterator begin2_; + const typename ParamGenerator::iterator end2_; + typename ParamGenerator::iterator current2_; + const typename ParamGenerator::iterator begin3_; + const typename ParamGenerator::iterator end3_; + typename ParamGenerator::iterator current3_; + const typename ParamGenerator::iterator begin4_; + const typename ParamGenerator::iterator end4_; + typename ParamGenerator::iterator current4_; + ParamType current_value_; + }; // class CartesianProductGenerator4::Iterator + + // No implementation - assignment is unsupported. + void operator=(const CartesianProductGenerator4& other); + + const ParamGenerator g1_; + const ParamGenerator g2_; + const ParamGenerator g3_; + const ParamGenerator g4_; +}; // class CartesianProductGenerator4 + + +template +class CartesianProductGenerator5 + : public ParamGeneratorInterface< ::std::tr1::tuple > { + public: + typedef ::std::tr1::tuple ParamType; + + CartesianProductGenerator5(const ParamGenerator& g1, + const ParamGenerator& g2, const ParamGenerator& g3, + const ParamGenerator& g4, const ParamGenerator& g5) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5) {} + virtual ~CartesianProductGenerator5() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, + g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), + g4_, g4_.end(), g5_, g5_.end()); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + const ParamGenerator& g1, + const typename ParamGenerator::iterator& current1, + const ParamGenerator& g2, + const typename ParamGenerator::iterator& current2, + const ParamGenerator& g3, + const typename ParamGenerator::iterator& current3, + const ParamGenerator& g4, + const typename ParamGenerator::iterator& current4, + const ParamGenerator& g5, + const typename ParamGenerator::iterator& current5) + : base_(base), + begin1_(g1.begin()), end1_(g1.end()), current1_(current1), + begin2_(g2.begin()), end2_(g2.end()), current2_(current2), + begin3_(g3.begin()), end3_(g3.end()), current3_(current3), + begin4_(g4.begin()), end4_(g4.end()), current4_(current4), + begin5_(g5.begin()), end5_(g5.end()), current5_(current5) { + ComputeCurrentValue(); + } + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + // Advance should not be called on beyond-of-range iterators + // so no component iterators must be beyond end of range, either. + virtual void Advance() { + assert(!AtEnd()); + ++current5_; + if (current5_ == end5_) { + current5_ = begin5_; + ++current4_; + } + if (current4_ == end4_) { + current4_ = begin4_; + ++current3_; + } + if (current3_ == end3_) { + current3_ = begin3_; + ++current2_; + } + if (current2_ == end2_) { + current2_ = begin2_; + ++current1_; + } + ComputeCurrentValue(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const ParamType* Current() const { return ¤t_value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = + CheckedDowncastToActualType(&other); + // We must report iterators equal if they both point beyond their + // respective ranges. That can happen in a variety of fashions, + // so we have to consult AtEnd(). + return (AtEnd() && typed_other->AtEnd()) || + ( + current1_ == typed_other->current1_ && + current2_ == typed_other->current2_ && + current3_ == typed_other->current3_ && + current4_ == typed_other->current4_ && + current5_ == typed_other->current5_); + } + + private: + Iterator(const Iterator& other) + : base_(other.base_), + begin1_(other.begin1_), + end1_(other.end1_), + current1_(other.current1_), + begin2_(other.begin2_), + end2_(other.end2_), + current2_(other.current2_), + begin3_(other.begin3_), + end3_(other.end3_), + current3_(other.current3_), + begin4_(other.begin4_), + end4_(other.end4_), + current4_(other.current4_), + begin5_(other.begin5_), + end5_(other.end5_), + current5_(other.current5_) { + ComputeCurrentValue(); + } + + void ComputeCurrentValue() { + if (!AtEnd()) + current_value_ = ParamType(*current1_, *current2_, *current3_, + *current4_, *current5_); + } + bool AtEnd() const { + // We must report iterator past the end of the range when either of the + // component iterators has reached the end of its range. + return + current1_ == end1_ || + current2_ == end2_ || + current3_ == end3_ || + current4_ == end4_ || + current5_ == end5_; + } + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. + // current[i]_ is the actual traversing iterator. + const typename ParamGenerator::iterator begin1_; + const typename ParamGenerator::iterator end1_; + typename ParamGenerator::iterator current1_; + const typename ParamGenerator::iterator begin2_; + const typename ParamGenerator::iterator end2_; + typename ParamGenerator::iterator current2_; + const typename ParamGenerator::iterator begin3_; + const typename ParamGenerator::iterator end3_; + typename ParamGenerator::iterator current3_; + const typename ParamGenerator::iterator begin4_; + const typename ParamGenerator::iterator end4_; + typename ParamGenerator::iterator current4_; + const typename ParamGenerator::iterator begin5_; + const typename ParamGenerator::iterator end5_; + typename ParamGenerator::iterator current5_; + ParamType current_value_; + }; // class CartesianProductGenerator5::Iterator + + // No implementation - assignment is unsupported. + void operator=(const CartesianProductGenerator5& other); + + const ParamGenerator g1_; + const ParamGenerator g2_; + const ParamGenerator g3_; + const ParamGenerator g4_; + const ParamGenerator g5_; +}; // class CartesianProductGenerator5 + + +template +class CartesianProductGenerator6 + : public ParamGeneratorInterface< ::std::tr1::tuple > { + public: + typedef ::std::tr1::tuple ParamType; + + CartesianProductGenerator6(const ParamGenerator& g1, + const ParamGenerator& g2, const ParamGenerator& g3, + const ParamGenerator& g4, const ParamGenerator& g5, + const ParamGenerator& g6) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6) {} + virtual ~CartesianProductGenerator6() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, + g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), + g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end()); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + const ParamGenerator& g1, + const typename ParamGenerator::iterator& current1, + const ParamGenerator& g2, + const typename ParamGenerator::iterator& current2, + const ParamGenerator& g3, + const typename ParamGenerator::iterator& current3, + const ParamGenerator& g4, + const typename ParamGenerator::iterator& current4, + const ParamGenerator& g5, + const typename ParamGenerator::iterator& current5, + const ParamGenerator& g6, + const typename ParamGenerator::iterator& current6) + : base_(base), + begin1_(g1.begin()), end1_(g1.end()), current1_(current1), + begin2_(g2.begin()), end2_(g2.end()), current2_(current2), + begin3_(g3.begin()), end3_(g3.end()), current3_(current3), + begin4_(g4.begin()), end4_(g4.end()), current4_(current4), + begin5_(g5.begin()), end5_(g5.end()), current5_(current5), + begin6_(g6.begin()), end6_(g6.end()), current6_(current6) { + ComputeCurrentValue(); + } + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + // Advance should not be called on beyond-of-range iterators + // so no component iterators must be beyond end of range, either. + virtual void Advance() { + assert(!AtEnd()); + ++current6_; + if (current6_ == end6_) { + current6_ = begin6_; + ++current5_; + } + if (current5_ == end5_) { + current5_ = begin5_; + ++current4_; + } + if (current4_ == end4_) { + current4_ = begin4_; + ++current3_; + } + if (current3_ == end3_) { + current3_ = begin3_; + ++current2_; + } + if (current2_ == end2_) { + current2_ = begin2_; + ++current1_; + } + ComputeCurrentValue(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const ParamType* Current() const { return ¤t_value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = + CheckedDowncastToActualType(&other); + // We must report iterators equal if they both point beyond their + // respective ranges. That can happen in a variety of fashions, + // so we have to consult AtEnd(). + return (AtEnd() && typed_other->AtEnd()) || + ( + current1_ == typed_other->current1_ && + current2_ == typed_other->current2_ && + current3_ == typed_other->current3_ && + current4_ == typed_other->current4_ && + current5_ == typed_other->current5_ && + current6_ == typed_other->current6_); + } + + private: + Iterator(const Iterator& other) + : base_(other.base_), + begin1_(other.begin1_), + end1_(other.end1_), + current1_(other.current1_), + begin2_(other.begin2_), + end2_(other.end2_), + current2_(other.current2_), + begin3_(other.begin3_), + end3_(other.end3_), + current3_(other.current3_), + begin4_(other.begin4_), + end4_(other.end4_), + current4_(other.current4_), + begin5_(other.begin5_), + end5_(other.end5_), + current5_(other.current5_), + begin6_(other.begin6_), + end6_(other.end6_), + current6_(other.current6_) { + ComputeCurrentValue(); + } + + void ComputeCurrentValue() { + if (!AtEnd()) + current_value_ = ParamType(*current1_, *current2_, *current3_, + *current4_, *current5_, *current6_); + } + bool AtEnd() const { + // We must report iterator past the end of the range when either of the + // component iterators has reached the end of its range. + return + current1_ == end1_ || + current2_ == end2_ || + current3_ == end3_ || + current4_ == end4_ || + current5_ == end5_ || + current6_ == end6_; + } + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. + // current[i]_ is the actual traversing iterator. + const typename ParamGenerator::iterator begin1_; + const typename ParamGenerator::iterator end1_; + typename ParamGenerator::iterator current1_; + const typename ParamGenerator::iterator begin2_; + const typename ParamGenerator::iterator end2_; + typename ParamGenerator::iterator current2_; + const typename ParamGenerator::iterator begin3_; + const typename ParamGenerator::iterator end3_; + typename ParamGenerator::iterator current3_; + const typename ParamGenerator::iterator begin4_; + const typename ParamGenerator::iterator end4_; + typename ParamGenerator::iterator current4_; + const typename ParamGenerator::iterator begin5_; + const typename ParamGenerator::iterator end5_; + typename ParamGenerator::iterator current5_; + const typename ParamGenerator::iterator begin6_; + const typename ParamGenerator::iterator end6_; + typename ParamGenerator::iterator current6_; + ParamType current_value_; + }; // class CartesianProductGenerator6::Iterator + + // No implementation - assignment is unsupported. + void operator=(const CartesianProductGenerator6& other); + + const ParamGenerator g1_; + const ParamGenerator g2_; + const ParamGenerator g3_; + const ParamGenerator g4_; + const ParamGenerator g5_; + const ParamGenerator g6_; +}; // class CartesianProductGenerator6 + + +template +class CartesianProductGenerator7 + : public ParamGeneratorInterface< ::std::tr1::tuple > { + public: + typedef ::std::tr1::tuple ParamType; + + CartesianProductGenerator7(const ParamGenerator& g1, + const ParamGenerator& g2, const ParamGenerator& g3, + const ParamGenerator& g4, const ParamGenerator& g5, + const ParamGenerator& g6, const ParamGenerator& g7) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7) {} + virtual ~CartesianProductGenerator7() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, + g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_, + g7_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), + g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end()); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + const ParamGenerator& g1, + const typename ParamGenerator::iterator& current1, + const ParamGenerator& g2, + const typename ParamGenerator::iterator& current2, + const ParamGenerator& g3, + const typename ParamGenerator::iterator& current3, + const ParamGenerator& g4, + const typename ParamGenerator::iterator& current4, + const ParamGenerator& g5, + const typename ParamGenerator::iterator& current5, + const ParamGenerator& g6, + const typename ParamGenerator::iterator& current6, + const ParamGenerator& g7, + const typename ParamGenerator::iterator& current7) + : base_(base), + begin1_(g1.begin()), end1_(g1.end()), current1_(current1), + begin2_(g2.begin()), end2_(g2.end()), current2_(current2), + begin3_(g3.begin()), end3_(g3.end()), current3_(current3), + begin4_(g4.begin()), end4_(g4.end()), current4_(current4), + begin5_(g5.begin()), end5_(g5.end()), current5_(current5), + begin6_(g6.begin()), end6_(g6.end()), current6_(current6), + begin7_(g7.begin()), end7_(g7.end()), current7_(current7) { + ComputeCurrentValue(); + } + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + // Advance should not be called on beyond-of-range iterators + // so no component iterators must be beyond end of range, either. + virtual void Advance() { + assert(!AtEnd()); + ++current7_; + if (current7_ == end7_) { + current7_ = begin7_; + ++current6_; + } + if (current6_ == end6_) { + current6_ = begin6_; + ++current5_; + } + if (current5_ == end5_) { + current5_ = begin5_; + ++current4_; + } + if (current4_ == end4_) { + current4_ = begin4_; + ++current3_; + } + if (current3_ == end3_) { + current3_ = begin3_; + ++current2_; + } + if (current2_ == end2_) { + current2_ = begin2_; + ++current1_; + } + ComputeCurrentValue(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const ParamType* Current() const { return ¤t_value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = + CheckedDowncastToActualType(&other); + // We must report iterators equal if they both point beyond their + // respective ranges. That can happen in a variety of fashions, + // so we have to consult AtEnd(). + return (AtEnd() && typed_other->AtEnd()) || + ( + current1_ == typed_other->current1_ && + current2_ == typed_other->current2_ && + current3_ == typed_other->current3_ && + current4_ == typed_other->current4_ && + current5_ == typed_other->current5_ && + current6_ == typed_other->current6_ && + current7_ == typed_other->current7_); + } + + private: + Iterator(const Iterator& other) + : base_(other.base_), + begin1_(other.begin1_), + end1_(other.end1_), + current1_(other.current1_), + begin2_(other.begin2_), + end2_(other.end2_), + current2_(other.current2_), + begin3_(other.begin3_), + end3_(other.end3_), + current3_(other.current3_), + begin4_(other.begin4_), + end4_(other.end4_), + current4_(other.current4_), + begin5_(other.begin5_), + end5_(other.end5_), + current5_(other.current5_), + begin6_(other.begin6_), + end6_(other.end6_), + current6_(other.current6_), + begin7_(other.begin7_), + end7_(other.end7_), + current7_(other.current7_) { + ComputeCurrentValue(); + } + + void ComputeCurrentValue() { + if (!AtEnd()) + current_value_ = ParamType(*current1_, *current2_, *current3_, + *current4_, *current5_, *current6_, *current7_); + } + bool AtEnd() const { + // We must report iterator past the end of the range when either of the + // component iterators has reached the end of its range. + return + current1_ == end1_ || + current2_ == end2_ || + current3_ == end3_ || + current4_ == end4_ || + current5_ == end5_ || + current6_ == end6_ || + current7_ == end7_; + } + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. + // current[i]_ is the actual traversing iterator. + const typename ParamGenerator::iterator begin1_; + const typename ParamGenerator::iterator end1_; + typename ParamGenerator::iterator current1_; + const typename ParamGenerator::iterator begin2_; + const typename ParamGenerator::iterator end2_; + typename ParamGenerator::iterator current2_; + const typename ParamGenerator::iterator begin3_; + const typename ParamGenerator::iterator end3_; + typename ParamGenerator::iterator current3_; + const typename ParamGenerator::iterator begin4_; + const typename ParamGenerator::iterator end4_; + typename ParamGenerator::iterator current4_; + const typename ParamGenerator::iterator begin5_; + const typename ParamGenerator::iterator end5_; + typename ParamGenerator::iterator current5_; + const typename ParamGenerator::iterator begin6_; + const typename ParamGenerator::iterator end6_; + typename ParamGenerator::iterator current6_; + const typename ParamGenerator::iterator begin7_; + const typename ParamGenerator::iterator end7_; + typename ParamGenerator::iterator current7_; + ParamType current_value_; + }; // class CartesianProductGenerator7::Iterator + + // No implementation - assignment is unsupported. + void operator=(const CartesianProductGenerator7& other); + + const ParamGenerator g1_; + const ParamGenerator g2_; + const ParamGenerator g3_; + const ParamGenerator g4_; + const ParamGenerator g5_; + const ParamGenerator g6_; + const ParamGenerator g7_; +}; // class CartesianProductGenerator7 + + +template +class CartesianProductGenerator8 + : public ParamGeneratorInterface< ::std::tr1::tuple > { + public: + typedef ::std::tr1::tuple ParamType; + + CartesianProductGenerator8(const ParamGenerator& g1, + const ParamGenerator& g2, const ParamGenerator& g3, + const ParamGenerator& g4, const ParamGenerator& g5, + const ParamGenerator& g6, const ParamGenerator& g7, + const ParamGenerator& g8) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), + g8_(g8) {} + virtual ~CartesianProductGenerator8() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, + g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_, + g7_.begin(), g8_, g8_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), + g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_, + g8_.end()); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + const ParamGenerator& g1, + const typename ParamGenerator::iterator& current1, + const ParamGenerator& g2, + const typename ParamGenerator::iterator& current2, + const ParamGenerator& g3, + const typename ParamGenerator::iterator& current3, + const ParamGenerator& g4, + const typename ParamGenerator::iterator& current4, + const ParamGenerator& g5, + const typename ParamGenerator::iterator& current5, + const ParamGenerator& g6, + const typename ParamGenerator::iterator& current6, + const ParamGenerator& g7, + const typename ParamGenerator::iterator& current7, + const ParamGenerator& g8, + const typename ParamGenerator::iterator& current8) + : base_(base), + begin1_(g1.begin()), end1_(g1.end()), current1_(current1), + begin2_(g2.begin()), end2_(g2.end()), current2_(current2), + begin3_(g3.begin()), end3_(g3.end()), current3_(current3), + begin4_(g4.begin()), end4_(g4.end()), current4_(current4), + begin5_(g5.begin()), end5_(g5.end()), current5_(current5), + begin6_(g6.begin()), end6_(g6.end()), current6_(current6), + begin7_(g7.begin()), end7_(g7.end()), current7_(current7), + begin8_(g8.begin()), end8_(g8.end()), current8_(current8) { + ComputeCurrentValue(); + } + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + // Advance should not be called on beyond-of-range iterators + // so no component iterators must be beyond end of range, either. + virtual void Advance() { + assert(!AtEnd()); + ++current8_; + if (current8_ == end8_) { + current8_ = begin8_; + ++current7_; + } + if (current7_ == end7_) { + current7_ = begin7_; + ++current6_; + } + if (current6_ == end6_) { + current6_ = begin6_; + ++current5_; + } + if (current5_ == end5_) { + current5_ = begin5_; + ++current4_; + } + if (current4_ == end4_) { + current4_ = begin4_; + ++current3_; + } + if (current3_ == end3_) { + current3_ = begin3_; + ++current2_; + } + if (current2_ == end2_) { + current2_ = begin2_; + ++current1_; + } + ComputeCurrentValue(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const ParamType* Current() const { return ¤t_value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = + CheckedDowncastToActualType(&other); + // We must report iterators equal if they both point beyond their + // respective ranges. That can happen in a variety of fashions, + // so we have to consult AtEnd(). + return (AtEnd() && typed_other->AtEnd()) || + ( + current1_ == typed_other->current1_ && + current2_ == typed_other->current2_ && + current3_ == typed_other->current3_ && + current4_ == typed_other->current4_ && + current5_ == typed_other->current5_ && + current6_ == typed_other->current6_ && + current7_ == typed_other->current7_ && + current8_ == typed_other->current8_); + } + + private: + Iterator(const Iterator& other) + : base_(other.base_), + begin1_(other.begin1_), + end1_(other.end1_), + current1_(other.current1_), + begin2_(other.begin2_), + end2_(other.end2_), + current2_(other.current2_), + begin3_(other.begin3_), + end3_(other.end3_), + current3_(other.current3_), + begin4_(other.begin4_), + end4_(other.end4_), + current4_(other.current4_), + begin5_(other.begin5_), + end5_(other.end5_), + current5_(other.current5_), + begin6_(other.begin6_), + end6_(other.end6_), + current6_(other.current6_), + begin7_(other.begin7_), + end7_(other.end7_), + current7_(other.current7_), + begin8_(other.begin8_), + end8_(other.end8_), + current8_(other.current8_) { + ComputeCurrentValue(); + } + + void ComputeCurrentValue() { + if (!AtEnd()) + current_value_ = ParamType(*current1_, *current2_, *current3_, + *current4_, *current5_, *current6_, *current7_, *current8_); + } + bool AtEnd() const { + // We must report iterator past the end of the range when either of the + // component iterators has reached the end of its range. + return + current1_ == end1_ || + current2_ == end2_ || + current3_ == end3_ || + current4_ == end4_ || + current5_ == end5_ || + current6_ == end6_ || + current7_ == end7_ || + current8_ == end8_; + } + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. + // current[i]_ is the actual traversing iterator. + const typename ParamGenerator::iterator begin1_; + const typename ParamGenerator::iterator end1_; + typename ParamGenerator::iterator current1_; + const typename ParamGenerator::iterator begin2_; + const typename ParamGenerator::iterator end2_; + typename ParamGenerator::iterator current2_; + const typename ParamGenerator::iterator begin3_; + const typename ParamGenerator::iterator end3_; + typename ParamGenerator::iterator current3_; + const typename ParamGenerator::iterator begin4_; + const typename ParamGenerator::iterator end4_; + typename ParamGenerator::iterator current4_; + const typename ParamGenerator::iterator begin5_; + const typename ParamGenerator::iterator end5_; + typename ParamGenerator::iterator current5_; + const typename ParamGenerator::iterator begin6_; + const typename ParamGenerator::iterator end6_; + typename ParamGenerator::iterator current6_; + const typename ParamGenerator::iterator begin7_; + const typename ParamGenerator::iterator end7_; + typename ParamGenerator::iterator current7_; + const typename ParamGenerator::iterator begin8_; + const typename ParamGenerator::iterator end8_; + typename ParamGenerator::iterator current8_; + ParamType current_value_; + }; // class CartesianProductGenerator8::Iterator + + // No implementation - assignment is unsupported. + void operator=(const CartesianProductGenerator8& other); + + const ParamGenerator g1_; + const ParamGenerator g2_; + const ParamGenerator g3_; + const ParamGenerator g4_; + const ParamGenerator g5_; + const ParamGenerator g6_; + const ParamGenerator g7_; + const ParamGenerator g8_; +}; // class CartesianProductGenerator8 + + +template +class CartesianProductGenerator9 + : public ParamGeneratorInterface< ::std::tr1::tuple > { + public: + typedef ::std::tr1::tuple ParamType; + + CartesianProductGenerator9(const ParamGenerator& g1, + const ParamGenerator& g2, const ParamGenerator& g3, + const ParamGenerator& g4, const ParamGenerator& g5, + const ParamGenerator& g6, const ParamGenerator& g7, + const ParamGenerator& g8, const ParamGenerator& g9) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8), + g9_(g9) {} + virtual ~CartesianProductGenerator9() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, + g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_, + g7_.begin(), g8_, g8_.begin(), g9_, g9_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), + g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_, + g8_.end(), g9_, g9_.end()); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + const ParamGenerator& g1, + const typename ParamGenerator::iterator& current1, + const ParamGenerator& g2, + const typename ParamGenerator::iterator& current2, + const ParamGenerator& g3, + const typename ParamGenerator::iterator& current3, + const ParamGenerator& g4, + const typename ParamGenerator::iterator& current4, + const ParamGenerator& g5, + const typename ParamGenerator::iterator& current5, + const ParamGenerator& g6, + const typename ParamGenerator::iterator& current6, + const ParamGenerator& g7, + const typename ParamGenerator::iterator& current7, + const ParamGenerator& g8, + const typename ParamGenerator::iterator& current8, + const ParamGenerator& g9, + const typename ParamGenerator::iterator& current9) + : base_(base), + begin1_(g1.begin()), end1_(g1.end()), current1_(current1), + begin2_(g2.begin()), end2_(g2.end()), current2_(current2), + begin3_(g3.begin()), end3_(g3.end()), current3_(current3), + begin4_(g4.begin()), end4_(g4.end()), current4_(current4), + begin5_(g5.begin()), end5_(g5.end()), current5_(current5), + begin6_(g6.begin()), end6_(g6.end()), current6_(current6), + begin7_(g7.begin()), end7_(g7.end()), current7_(current7), + begin8_(g8.begin()), end8_(g8.end()), current8_(current8), + begin9_(g9.begin()), end9_(g9.end()), current9_(current9) { + ComputeCurrentValue(); + } + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + // Advance should not be called on beyond-of-range iterators + // so no component iterators must be beyond end of range, either. + virtual void Advance() { + assert(!AtEnd()); + ++current9_; + if (current9_ == end9_) { + current9_ = begin9_; + ++current8_; + } + if (current8_ == end8_) { + current8_ = begin8_; + ++current7_; + } + if (current7_ == end7_) { + current7_ = begin7_; + ++current6_; + } + if (current6_ == end6_) { + current6_ = begin6_; + ++current5_; + } + if (current5_ == end5_) { + current5_ = begin5_; + ++current4_; + } + if (current4_ == end4_) { + current4_ = begin4_; + ++current3_; + } + if (current3_ == end3_) { + current3_ = begin3_; + ++current2_; + } + if (current2_ == end2_) { + current2_ = begin2_; + ++current1_; + } + ComputeCurrentValue(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const ParamType* Current() const { return ¤t_value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = + CheckedDowncastToActualType(&other); + // We must report iterators equal if they both point beyond their + // respective ranges. That can happen in a variety of fashions, + // so we have to consult AtEnd(). + return (AtEnd() && typed_other->AtEnd()) || + ( + current1_ == typed_other->current1_ && + current2_ == typed_other->current2_ && + current3_ == typed_other->current3_ && + current4_ == typed_other->current4_ && + current5_ == typed_other->current5_ && + current6_ == typed_other->current6_ && + current7_ == typed_other->current7_ && + current8_ == typed_other->current8_ && + current9_ == typed_other->current9_); + } + + private: + Iterator(const Iterator& other) + : base_(other.base_), + begin1_(other.begin1_), + end1_(other.end1_), + current1_(other.current1_), + begin2_(other.begin2_), + end2_(other.end2_), + current2_(other.current2_), + begin3_(other.begin3_), + end3_(other.end3_), + current3_(other.current3_), + begin4_(other.begin4_), + end4_(other.end4_), + current4_(other.current4_), + begin5_(other.begin5_), + end5_(other.end5_), + current5_(other.current5_), + begin6_(other.begin6_), + end6_(other.end6_), + current6_(other.current6_), + begin7_(other.begin7_), + end7_(other.end7_), + current7_(other.current7_), + begin8_(other.begin8_), + end8_(other.end8_), + current8_(other.current8_), + begin9_(other.begin9_), + end9_(other.end9_), + current9_(other.current9_) { + ComputeCurrentValue(); + } + + void ComputeCurrentValue() { + if (!AtEnd()) + current_value_ = ParamType(*current1_, *current2_, *current3_, + *current4_, *current5_, *current6_, *current7_, *current8_, + *current9_); + } + bool AtEnd() const { + // We must report iterator past the end of the range when either of the + // component iterators has reached the end of its range. + return + current1_ == end1_ || + current2_ == end2_ || + current3_ == end3_ || + current4_ == end4_ || + current5_ == end5_ || + current6_ == end6_ || + current7_ == end7_ || + current8_ == end8_ || + current9_ == end9_; + } + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. + // current[i]_ is the actual traversing iterator. + const typename ParamGenerator::iterator begin1_; + const typename ParamGenerator::iterator end1_; + typename ParamGenerator::iterator current1_; + const typename ParamGenerator::iterator begin2_; + const typename ParamGenerator::iterator end2_; + typename ParamGenerator::iterator current2_; + const typename ParamGenerator::iterator begin3_; + const typename ParamGenerator::iterator end3_; + typename ParamGenerator::iterator current3_; + const typename ParamGenerator::iterator begin4_; + const typename ParamGenerator::iterator end4_; + typename ParamGenerator::iterator current4_; + const typename ParamGenerator::iterator begin5_; + const typename ParamGenerator::iterator end5_; + typename ParamGenerator::iterator current5_; + const typename ParamGenerator::iterator begin6_; + const typename ParamGenerator::iterator end6_; + typename ParamGenerator::iterator current6_; + const typename ParamGenerator::iterator begin7_; + const typename ParamGenerator::iterator end7_; + typename ParamGenerator::iterator current7_; + const typename ParamGenerator::iterator begin8_; + const typename ParamGenerator::iterator end8_; + typename ParamGenerator::iterator current8_; + const typename ParamGenerator::iterator begin9_; + const typename ParamGenerator::iterator end9_; + typename ParamGenerator::iterator current9_; + ParamType current_value_; + }; // class CartesianProductGenerator9::Iterator + + // No implementation - assignment is unsupported. + void operator=(const CartesianProductGenerator9& other); + + const ParamGenerator g1_; + const ParamGenerator g2_; + const ParamGenerator g3_; + const ParamGenerator g4_; + const ParamGenerator g5_; + const ParamGenerator g6_; + const ParamGenerator g7_; + const ParamGenerator g8_; + const ParamGenerator g9_; +}; // class CartesianProductGenerator9 + + +template +class CartesianProductGenerator10 + : public ParamGeneratorInterface< ::std::tr1::tuple > { + public: + typedef ::std::tr1::tuple ParamType; + + CartesianProductGenerator10(const ParamGenerator& g1, + const ParamGenerator& g2, const ParamGenerator& g3, + const ParamGenerator& g4, const ParamGenerator& g5, + const ParamGenerator& g6, const ParamGenerator& g7, + const ParamGenerator& g8, const ParamGenerator& g9, + const ParamGenerator& g10) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8), + g9_(g9), g10_(g10) {} + virtual ~CartesianProductGenerator10() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, + g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_, + g7_.begin(), g8_, g8_.begin(), g9_, g9_.begin(), g10_, g10_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), + g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_, + g8_.end(), g9_, g9_.end(), g10_, g10_.end()); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + const ParamGenerator& g1, + const typename ParamGenerator::iterator& current1, + const ParamGenerator& g2, + const typename ParamGenerator::iterator& current2, + const ParamGenerator& g3, + const typename ParamGenerator::iterator& current3, + const ParamGenerator& g4, + const typename ParamGenerator::iterator& current4, + const ParamGenerator& g5, + const typename ParamGenerator::iterator& current5, + const ParamGenerator& g6, + const typename ParamGenerator::iterator& current6, + const ParamGenerator& g7, + const typename ParamGenerator::iterator& current7, + const ParamGenerator& g8, + const typename ParamGenerator::iterator& current8, + const ParamGenerator& g9, + const typename ParamGenerator::iterator& current9, + const ParamGenerator& g10, + const typename ParamGenerator::iterator& current10) + : base_(base), + begin1_(g1.begin()), end1_(g1.end()), current1_(current1), + begin2_(g2.begin()), end2_(g2.end()), current2_(current2), + begin3_(g3.begin()), end3_(g3.end()), current3_(current3), + begin4_(g4.begin()), end4_(g4.end()), current4_(current4), + begin5_(g5.begin()), end5_(g5.end()), current5_(current5), + begin6_(g6.begin()), end6_(g6.end()), current6_(current6), + begin7_(g7.begin()), end7_(g7.end()), current7_(current7), + begin8_(g8.begin()), end8_(g8.end()), current8_(current8), + begin9_(g9.begin()), end9_(g9.end()), current9_(current9), + begin10_(g10.begin()), end10_(g10.end()), current10_(current10) { + ComputeCurrentValue(); + } + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + // Advance should not be called on beyond-of-range iterators + // so no component iterators must be beyond end of range, either. + virtual void Advance() { + assert(!AtEnd()); + ++current10_; + if (current10_ == end10_) { + current10_ = begin10_; + ++current9_; + } + if (current9_ == end9_) { + current9_ = begin9_; + ++current8_; + } + if (current8_ == end8_) { + current8_ = begin8_; + ++current7_; + } + if (current7_ == end7_) { + current7_ = begin7_; + ++current6_; + } + if (current6_ == end6_) { + current6_ = begin6_; + ++current5_; + } + if (current5_ == end5_) { + current5_ = begin5_; + ++current4_; + } + if (current4_ == end4_) { + current4_ = begin4_; + ++current3_; + } + if (current3_ == end3_) { + current3_ = begin3_; + ++current2_; + } + if (current2_ == end2_) { + current2_ = begin2_; + ++current1_; + } + ComputeCurrentValue(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const ParamType* Current() const { return ¤t_value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = + CheckedDowncastToActualType(&other); + // We must report iterators equal if they both point beyond their + // respective ranges. That can happen in a variety of fashions, + // so we have to consult AtEnd(). + return (AtEnd() && typed_other->AtEnd()) || + ( + current1_ == typed_other->current1_ && + current2_ == typed_other->current2_ && + current3_ == typed_other->current3_ && + current4_ == typed_other->current4_ && + current5_ == typed_other->current5_ && + current6_ == typed_other->current6_ && + current7_ == typed_other->current7_ && + current8_ == typed_other->current8_ && + current9_ == typed_other->current9_ && + current10_ == typed_other->current10_); + } + + private: + Iterator(const Iterator& other) + : base_(other.base_), + begin1_(other.begin1_), + end1_(other.end1_), + current1_(other.current1_), + begin2_(other.begin2_), + end2_(other.end2_), + current2_(other.current2_), + begin3_(other.begin3_), + end3_(other.end3_), + current3_(other.current3_), + begin4_(other.begin4_), + end4_(other.end4_), + current4_(other.current4_), + begin5_(other.begin5_), + end5_(other.end5_), + current5_(other.current5_), + begin6_(other.begin6_), + end6_(other.end6_), + current6_(other.current6_), + begin7_(other.begin7_), + end7_(other.end7_), + current7_(other.current7_), + begin8_(other.begin8_), + end8_(other.end8_), + current8_(other.current8_), + begin9_(other.begin9_), + end9_(other.end9_), + current9_(other.current9_), + begin10_(other.begin10_), + end10_(other.end10_), + current10_(other.current10_) { + ComputeCurrentValue(); + } + + void ComputeCurrentValue() { + if (!AtEnd()) + current_value_ = ParamType(*current1_, *current2_, *current3_, + *current4_, *current5_, *current6_, *current7_, *current8_, + *current9_, *current10_); + } + bool AtEnd() const { + // We must report iterator past the end of the range when either of the + // component iterators has reached the end of its range. + return + current1_ == end1_ || + current2_ == end2_ || + current3_ == end3_ || + current4_ == end4_ || + current5_ == end5_ || + current6_ == end6_ || + current7_ == end7_ || + current8_ == end8_ || + current9_ == end9_ || + current10_ == end10_; + } + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. + // current[i]_ is the actual traversing iterator. + const typename ParamGenerator::iterator begin1_; + const typename ParamGenerator::iterator end1_; + typename ParamGenerator::iterator current1_; + const typename ParamGenerator::iterator begin2_; + const typename ParamGenerator::iterator end2_; + typename ParamGenerator::iterator current2_; + const typename ParamGenerator::iterator begin3_; + const typename ParamGenerator::iterator end3_; + typename ParamGenerator::iterator current3_; + const typename ParamGenerator::iterator begin4_; + const typename ParamGenerator::iterator end4_; + typename ParamGenerator::iterator current4_; + const typename ParamGenerator::iterator begin5_; + const typename ParamGenerator::iterator end5_; + typename ParamGenerator::iterator current5_; + const typename ParamGenerator::iterator begin6_; + const typename ParamGenerator::iterator end6_; + typename ParamGenerator::iterator current6_; + const typename ParamGenerator::iterator begin7_; + const typename ParamGenerator::iterator end7_; + typename ParamGenerator::iterator current7_; + const typename ParamGenerator::iterator begin8_; + const typename ParamGenerator::iterator end8_; + typename ParamGenerator::iterator current8_; + const typename ParamGenerator::iterator begin9_; + const typename ParamGenerator::iterator end9_; + typename ParamGenerator::iterator current9_; + const typename ParamGenerator::iterator begin10_; + const typename ParamGenerator::iterator end10_; + typename ParamGenerator::iterator current10_; + ParamType current_value_; + }; // class CartesianProductGenerator10::Iterator + + // No implementation - assignment is unsupported. + void operator=(const CartesianProductGenerator10& other); + + const ParamGenerator g1_; + const ParamGenerator g2_; + const ParamGenerator g3_; + const ParamGenerator g4_; + const ParamGenerator g5_; + const ParamGenerator g6_; + const ParamGenerator g7_; + const ParamGenerator g8_; + const ParamGenerator g9_; + const ParamGenerator g10_; +}; // class CartesianProductGenerator10 + + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// Helper classes providing Combine() with polymorphic features. They allow +// casting CartesianProductGeneratorN to ParamGenerator if T is +// convertible to U. +// +template +class CartesianProductHolder2 { + public: +CartesianProductHolder2(const Generator1& g1, const Generator2& g2) + : g1_(g1), g2_(g2) {} + template + operator ParamGenerator< ::std::tr1::tuple >() const { + return ParamGenerator< ::std::tr1::tuple >( + new CartesianProductGenerator2( + static_cast >(g1_), + static_cast >(g2_))); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const CartesianProductHolder2& other); + + const Generator1 g1_; + const Generator2 g2_; +}; // class CartesianProductHolder2 + +template +class CartesianProductHolder3 { + public: +CartesianProductHolder3(const Generator1& g1, const Generator2& g2, + const Generator3& g3) + : g1_(g1), g2_(g2), g3_(g3) {} + template + operator ParamGenerator< ::std::tr1::tuple >() const { + return ParamGenerator< ::std::tr1::tuple >( + new CartesianProductGenerator3( + static_cast >(g1_), + static_cast >(g2_), + static_cast >(g3_))); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const CartesianProductHolder3& other); + + const Generator1 g1_; + const Generator2 g2_; + const Generator3 g3_; +}; // class CartesianProductHolder3 + +template +class CartesianProductHolder4 { + public: +CartesianProductHolder4(const Generator1& g1, const Generator2& g2, + const Generator3& g3, const Generator4& g4) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4) {} + template + operator ParamGenerator< ::std::tr1::tuple >() const { + return ParamGenerator< ::std::tr1::tuple >( + new CartesianProductGenerator4( + static_cast >(g1_), + static_cast >(g2_), + static_cast >(g3_), + static_cast >(g4_))); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const CartesianProductHolder4& other); + + const Generator1 g1_; + const Generator2 g2_; + const Generator3 g3_; + const Generator4 g4_; +}; // class CartesianProductHolder4 + +template +class CartesianProductHolder5 { + public: +CartesianProductHolder5(const Generator1& g1, const Generator2& g2, + const Generator3& g3, const Generator4& g4, const Generator5& g5) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5) {} + template + operator ParamGenerator< ::std::tr1::tuple >() const { + return ParamGenerator< ::std::tr1::tuple >( + new CartesianProductGenerator5( + static_cast >(g1_), + static_cast >(g2_), + static_cast >(g3_), + static_cast >(g4_), + static_cast >(g5_))); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const CartesianProductHolder5& other); + + const Generator1 g1_; + const Generator2 g2_; + const Generator3 g3_; + const Generator4 g4_; + const Generator5 g5_; +}; // class CartesianProductHolder5 + +template +class CartesianProductHolder6 { + public: +CartesianProductHolder6(const Generator1& g1, const Generator2& g2, + const Generator3& g3, const Generator4& g4, const Generator5& g5, + const Generator6& g6) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6) {} + template + operator ParamGenerator< ::std::tr1::tuple >() const { + return ParamGenerator< ::std::tr1::tuple >( + new CartesianProductGenerator6( + static_cast >(g1_), + static_cast >(g2_), + static_cast >(g3_), + static_cast >(g4_), + static_cast >(g5_), + static_cast >(g6_))); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const CartesianProductHolder6& other); + + const Generator1 g1_; + const Generator2 g2_; + const Generator3 g3_; + const Generator4 g4_; + const Generator5 g5_; + const Generator6 g6_; +}; // class CartesianProductHolder6 + +template +class CartesianProductHolder7 { + public: +CartesianProductHolder7(const Generator1& g1, const Generator2& g2, + const Generator3& g3, const Generator4& g4, const Generator5& g5, + const Generator6& g6, const Generator7& g7) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7) {} + template + operator ParamGenerator< ::std::tr1::tuple >() const { + return ParamGenerator< ::std::tr1::tuple >( + new CartesianProductGenerator7( + static_cast >(g1_), + static_cast >(g2_), + static_cast >(g3_), + static_cast >(g4_), + static_cast >(g5_), + static_cast >(g6_), + static_cast >(g7_))); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const CartesianProductHolder7& other); + + const Generator1 g1_; + const Generator2 g2_; + const Generator3 g3_; + const Generator4 g4_; + const Generator5 g5_; + const Generator6 g6_; + const Generator7 g7_; +}; // class CartesianProductHolder7 + +template +class CartesianProductHolder8 { + public: +CartesianProductHolder8(const Generator1& g1, const Generator2& g2, + const Generator3& g3, const Generator4& g4, const Generator5& g5, + const Generator6& g6, const Generator7& g7, const Generator8& g8) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), + g8_(g8) {} + template + operator ParamGenerator< ::std::tr1::tuple >() const { + return ParamGenerator< ::std::tr1::tuple >( + new CartesianProductGenerator8( + static_cast >(g1_), + static_cast >(g2_), + static_cast >(g3_), + static_cast >(g4_), + static_cast >(g5_), + static_cast >(g6_), + static_cast >(g7_), + static_cast >(g8_))); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const CartesianProductHolder8& other); + + const Generator1 g1_; + const Generator2 g2_; + const Generator3 g3_; + const Generator4 g4_; + const Generator5 g5_; + const Generator6 g6_; + const Generator7 g7_; + const Generator8 g8_; +}; // class CartesianProductHolder8 + +template +class CartesianProductHolder9 { + public: +CartesianProductHolder9(const Generator1& g1, const Generator2& g2, + const Generator3& g3, const Generator4& g4, const Generator5& g5, + const Generator6& g6, const Generator7& g7, const Generator8& g8, + const Generator9& g9) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8), + g9_(g9) {} + template + operator ParamGenerator< ::std::tr1::tuple >() const { + return ParamGenerator< ::std::tr1::tuple >( + new CartesianProductGenerator9( + static_cast >(g1_), + static_cast >(g2_), + static_cast >(g3_), + static_cast >(g4_), + static_cast >(g5_), + static_cast >(g6_), + static_cast >(g7_), + static_cast >(g8_), + static_cast >(g9_))); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const CartesianProductHolder9& other); + + const Generator1 g1_; + const Generator2 g2_; + const Generator3 g3_; + const Generator4 g4_; + const Generator5 g5_; + const Generator6 g6_; + const Generator7 g7_; + const Generator8 g8_; + const Generator9 g9_; +}; // class CartesianProductHolder9 + +template +class CartesianProductHolder10 { + public: +CartesianProductHolder10(const Generator1& g1, const Generator2& g2, + const Generator3& g3, const Generator4& g4, const Generator5& g5, + const Generator6& g6, const Generator7& g7, const Generator8& g8, + const Generator9& g9, const Generator10& g10) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8), + g9_(g9), g10_(g10) {} + template + operator ParamGenerator< ::std::tr1::tuple >() const { + return ParamGenerator< ::std::tr1::tuple >( + new CartesianProductGenerator10( + static_cast >(g1_), + static_cast >(g2_), + static_cast >(g3_), + static_cast >(g4_), + static_cast >(g5_), + static_cast >(g6_), + static_cast >(g7_), + static_cast >(g8_), + static_cast >(g9_), + static_cast >(g10_))); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const CartesianProductHolder10& other); + + const Generator1 g1_; + const Generator2 g2_; + const Generator3 g3_; + const Generator4 g4_; + const Generator5 g5_; + const Generator6 g6_; + const Generator7 g7_; + const Generator8 g8_; + const Generator9 g9_; + const Generator10 g10_; +}; // class CartesianProductHolder10 + +# endif // GTEST_HAS_COMBINE + +} // namespace internal +} // namespace testing + +#endif // GTEST_HAS_PARAM_TEST + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_ + +#if GTEST_HAS_PARAM_TEST + +namespace testing { + +// Functions producing parameter generators. +// +// Google Test uses these generators to produce parameters for value- +// parameterized tests. When a parameterized test case is instantiated +// with a particular generator, Google Test creates and runs tests +// for each element in the sequence produced by the generator. +// +// In the following sample, tests from test case FooTest are instantiated +// each three times with parameter values 3, 5, and 8: +// +// class FooTest : public TestWithParam { ... }; +// +// TEST_P(FooTest, TestThis) { +// } +// TEST_P(FooTest, TestThat) { +// } +// INSTANTIATE_TEST_CASE_P(TestSequence, FooTest, Values(3, 5, 8)); +// + +// Range() returns generators providing sequences of values in a range. +// +// Synopsis: +// Range(start, end) +// - returns a generator producing a sequence of values {start, start+1, +// start+2, ..., }. +// Range(start, end, step) +// - returns a generator producing a sequence of values {start, start+step, +// start+step+step, ..., }. +// Notes: +// * The generated sequences never include end. For example, Range(1, 5) +// returns a generator producing a sequence {1, 2, 3, 4}. Range(1, 9, 2) +// returns a generator producing {1, 3, 5, 7}. +// * start and end must have the same type. That type may be any integral or +// floating-point type or a user defined type satisfying these conditions: +// * It must be assignable (have operator=() defined). +// * It must have operator+() (operator+(int-compatible type) for +// two-operand version). +// * It must have operator<() defined. +// Elements in the resulting sequences will also have that type. +// * Condition start < end must be satisfied in order for resulting sequences +// to contain any elements. +// +template +internal::ParamGenerator Range(T start, T end, IncrementT step) { + return internal::ParamGenerator( + new internal::RangeGenerator(start, end, step)); +} + +template +internal::ParamGenerator Range(T start, T end) { + return Range(start, end, 1); +} + +// ValuesIn() function allows generation of tests with parameters coming from +// a container. +// +// Synopsis: +// ValuesIn(const T (&array)[N]) +// - returns a generator producing sequences with elements from +// a C-style array. +// ValuesIn(const Container& container) +// - returns a generator producing sequences with elements from +// an STL-style container. +// ValuesIn(Iterator begin, Iterator end) +// - returns a generator producing sequences with elements from +// a range [begin, end) defined by a pair of STL-style iterators. These +// iterators can also be plain C pointers. +// +// Please note that ValuesIn copies the values from the containers +// passed in and keeps them to generate tests in RUN_ALL_TESTS(). +// +// Examples: +// +// This instantiates tests from test case StringTest +// each with C-string values of "foo", "bar", and "baz": +// +// const char* strings[] = {"foo", "bar", "baz"}; +// INSTANTIATE_TEST_CASE_P(StringSequence, SrtingTest, ValuesIn(strings)); +// +// This instantiates tests from test case StlStringTest +// each with STL strings with values "a" and "b": +// +// ::std::vector< ::std::string> GetParameterStrings() { +// ::std::vector< ::std::string> v; +// v.push_back("a"); +// v.push_back("b"); +// return v; +// } +// +// INSTANTIATE_TEST_CASE_P(CharSequence, +// StlStringTest, +// ValuesIn(GetParameterStrings())); +// +// +// This will also instantiate tests from CharTest +// each with parameter values 'a' and 'b': +// +// ::std::list GetParameterChars() { +// ::std::list list; +// list.push_back('a'); +// list.push_back('b'); +// return list; +// } +// ::std::list l = GetParameterChars(); +// INSTANTIATE_TEST_CASE_P(CharSequence2, +// CharTest, +// ValuesIn(l.begin(), l.end())); +// +template +internal::ParamGenerator< + typename ::testing::internal::IteratorTraits::value_type> +ValuesIn(ForwardIterator begin, ForwardIterator end) { + typedef typename ::testing::internal::IteratorTraits + ::value_type ParamType; + return internal::ParamGenerator( + new internal::ValuesInIteratorRangeGenerator(begin, end)); +} + +template +internal::ParamGenerator ValuesIn(const T (&array)[N]) { + return ValuesIn(array, array + N); +} + +template +internal::ParamGenerator ValuesIn( + const Container& container) { + return ValuesIn(container.begin(), container.end()); +} + +// Values() allows generating tests from explicitly specified list of +// parameters. +// +// Synopsis: +// Values(T v1, T v2, ..., T vN) +// - returns a generator producing sequences with elements v1, v2, ..., vN. +// +// For example, this instantiates tests from test case BarTest each +// with values "one", "two", and "three": +// +// INSTANTIATE_TEST_CASE_P(NumSequence, BarTest, Values("one", "two", "three")); +// +// This instantiates tests from test case BazTest each with values 1, 2, 3.5. +// The exact type of values will depend on the type of parameter in BazTest. +// +// INSTANTIATE_TEST_CASE_P(FloatingNumbers, BazTest, Values(1, 2, 3.5)); +// +// Currently, Values() supports from 1 to 50 parameters. +// +template +internal::ValueArray1 Values(T1 v1) { + return internal::ValueArray1(v1); +} + +template +internal::ValueArray2 Values(T1 v1, T2 v2) { + return internal::ValueArray2(v1, v2); +} + +template +internal::ValueArray3 Values(T1 v1, T2 v2, T3 v3) { + return internal::ValueArray3(v1, v2, v3); +} + +template +internal::ValueArray4 Values(T1 v1, T2 v2, T3 v3, T4 v4) { + return internal::ValueArray4(v1, v2, v3, v4); +} + +template +internal::ValueArray5 Values(T1 v1, T2 v2, T3 v3, T4 v4, + T5 v5) { + return internal::ValueArray5(v1, v2, v3, v4, v5); +} + +template +internal::ValueArray6 Values(T1 v1, T2 v2, T3 v3, + T4 v4, T5 v5, T6 v6) { + return internal::ValueArray6(v1, v2, v3, v4, v5, v6); +} + +template +internal::ValueArray7 Values(T1 v1, T2 v2, T3 v3, + T4 v4, T5 v5, T6 v6, T7 v7) { + return internal::ValueArray7(v1, v2, v3, v4, v5, + v6, v7); +} + +template +internal::ValueArray8 Values(T1 v1, T2 v2, + T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8) { + return internal::ValueArray8(v1, v2, v3, v4, + v5, v6, v7, v8); +} + +template +internal::ValueArray9 Values(T1 v1, T2 v2, + T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9) { + return internal::ValueArray9(v1, v2, v3, + v4, v5, v6, v7, v8, v9); +} + +template +internal::ValueArray10 Values(T1 v1, + T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10) { + return internal::ValueArray10(v1, + v2, v3, v4, v5, v6, v7, v8, v9, v10); +} + +template +internal::ValueArray11 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11) { + return internal::ValueArray11(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11); +} + +template +internal::ValueArray12 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12) { + return internal::ValueArray12(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12); +} + +template +internal::ValueArray13 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13) { + return internal::ValueArray13(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13); +} + +template +internal::ValueArray14 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) { + return internal::ValueArray14(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, + v14); +} + +template +internal::ValueArray15 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, + T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) { + return internal::ValueArray15(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, + v13, v14, v15); +} + +template +internal::ValueArray16 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, + T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, + T16 v16) { + return internal::ValueArray16(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, + v12, v13, v14, v15, v16); +} + +template +internal::ValueArray17 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, + T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, + T16 v16, T17 v17) { + return internal::ValueArray17(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, + v11, v12, v13, v14, v15, v16, v17); +} + +template +internal::ValueArray18 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, + T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, + T16 v16, T17 v17, T18 v18) { + return internal::ValueArray18(v1, v2, v3, v4, v5, v6, v7, v8, v9, + v10, v11, v12, v13, v14, v15, v16, v17, v18); +} + +template +internal::ValueArray19 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, + T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19) { + return internal::ValueArray19(v1, v2, v3, v4, v5, v6, v7, v8, + v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19); +} + +template +internal::ValueArray20 Values(T1 v1, T2 v2, T3 v3, T4 v4, + T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20) { + return internal::ValueArray20(v1, v2, v3, v4, v5, v6, v7, + v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20); +} + +template +internal::ValueArray21 Values(T1 v1, T2 v2, T3 v3, T4 v4, + T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21) { + return internal::ValueArray21(v1, v2, v3, v4, v5, v6, + v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21); +} + +template +internal::ValueArray22 Values(T1 v1, T2 v2, T3 v3, + T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, + T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, + T21 v21, T22 v22) { + return internal::ValueArray22(v1, v2, v3, v4, + v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, + v20, v21, v22); +} + +template +internal::ValueArray23 Values(T1 v1, T2 v2, + T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, + T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, + T21 v21, T22 v22, T23 v23) { + return internal::ValueArray23(v1, v2, v3, + v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, + v20, v21, v22, v23); +} + +template +internal::ValueArray24 Values(T1 v1, T2 v2, + T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, + T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, + T21 v21, T22 v22, T23 v23, T24 v24) { + return internal::ValueArray24(v1, v2, + v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, + v19, v20, v21, v22, v23, v24); +} + +template +internal::ValueArray25 Values(T1 v1, + T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, + T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, + T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25) { + return internal::ValueArray25(v1, + v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, + v18, v19, v20, v21, v22, v23, v24, v25); +} + +template +internal::ValueArray26 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26) { + return internal::ValueArray26(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, + v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26); +} + +template +internal::ValueArray27 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27) { + return internal::ValueArray27(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, + v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27); +} + +template +internal::ValueArray28 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28) { + return internal::ValueArray28(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, + v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, + v28); +} + +template +internal::ValueArray29 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29) { + return internal::ValueArray29(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, + v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, + v27, v28, v29); +} + +template +internal::ValueArray30 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, + T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, + T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, + T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) { + return internal::ValueArray30(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, + v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, + v26, v27, v28, v29, v30); +} + +template +internal::ValueArray31 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, + T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, + T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, + T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) { + return internal::ValueArray31(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, + v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, + v25, v26, v27, v28, v29, v30, v31); +} + +template +internal::ValueArray32 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, + T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, + T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, + T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, + T32 v32) { + return internal::ValueArray32(v1, v2, v3, v4, v5, v6, v7, v8, v9, + v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, + v24, v25, v26, v27, v28, v29, v30, v31, v32); +} + +template +internal::ValueArray33 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, + T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, + T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, + T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, + T32 v32, T33 v33) { + return internal::ValueArray33(v1, v2, v3, v4, v5, v6, v7, v8, + v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, + v24, v25, v26, v27, v28, v29, v30, v31, v32, v33); +} + +template +internal::ValueArray34 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, + T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, + T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, + T31 v31, T32 v32, T33 v33, T34 v34) { + return internal::ValueArray34(v1, v2, v3, v4, v5, v6, v7, + v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, + v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34); +} + +template +internal::ValueArray35 Values(T1 v1, T2 v2, T3 v3, T4 v4, + T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, + T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, + T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35) { + return internal::ValueArray35(v1, v2, v3, v4, v5, v6, + v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, + v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35); +} + +template +internal::ValueArray36 Values(T1 v1, T2 v2, T3 v3, T4 v4, + T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, + T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, + T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36) { + return internal::ValueArray36(v1, v2, v3, v4, + v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, + v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, + v34, v35, v36); +} + +template +internal::ValueArray37 Values(T1 v1, T2 v2, T3 v3, + T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, + T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, + T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, + T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, + T37 v37) { + return internal::ValueArray37(v1, v2, v3, + v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, + v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, + v34, v35, v36, v37); +} + +template +internal::ValueArray38 Values(T1 v1, T2 v2, + T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, + T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, + T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, + T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, + T37 v37, T38 v38) { + return internal::ValueArray38(v1, v2, + v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, + v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, + v33, v34, v35, v36, v37, v38); +} + +template +internal::ValueArray39 Values(T1 v1, T2 v2, + T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, + T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, + T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, + T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, + T37 v37, T38 v38, T39 v39) { + return internal::ValueArray39(v1, + v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, + v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, + v32, v33, v34, v35, v36, v37, v38, v39); +} + +template +internal::ValueArray40 Values(T1 v1, + T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, + T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, + T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, + T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, + T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) { + return internal::ValueArray40(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, + v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, + v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40); +} + +template +internal::ValueArray41 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41) { + return internal::ValueArray41(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, + v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, + v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41); +} + +template +internal::ValueArray42 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42) { + return internal::ValueArray42(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, + v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, + v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, + v42); +} + +template +internal::ValueArray43 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43) { + return internal::ValueArray43(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, + v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, + v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, + v41, v42, v43); +} + +template +internal::ValueArray44 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43, T44 v44) { + return internal::ValueArray44(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, + v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, + v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, + v40, v41, v42, v43, v44); +} + +template +internal::ValueArray45 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, + T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, + T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, + T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, + T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, + T41 v41, T42 v42, T43 v43, T44 v44, T45 v45) { + return internal::ValueArray45(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, + v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, + v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, + v39, v40, v41, v42, v43, v44, v45); +} + +template +internal::ValueArray46 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, + T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, + T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, + T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, + T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, + T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) { + return internal::ValueArray46(v1, v2, v3, v4, v5, v6, v7, v8, v9, + v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, + v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, + v38, v39, v40, v41, v42, v43, v44, v45, v46); +} + +template +internal::ValueArray47 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, + T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, + T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, + T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, + T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, + T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) { + return internal::ValueArray47(v1, v2, v3, v4, v5, v6, v7, v8, + v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, + v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, + v38, v39, v40, v41, v42, v43, v44, v45, v46, v47); +} + +template +internal::ValueArray48 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, + T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, + T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, + T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, + T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, + T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, + T48 v48) { + return internal::ValueArray48(v1, v2, v3, v4, v5, v6, v7, + v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, + v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, + v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48); +} + +template +internal::ValueArray49 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, + T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, + T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, + T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, + T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, + T47 v47, T48 v48, T49 v49) { + return internal::ValueArray49(v1, v2, v3, v4, v5, v6, + v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, + v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, + v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49); +} + +template +internal::ValueArray50 Values(T1 v1, T2 v2, T3 v3, T4 v4, + T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, + T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, + T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, + T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, + T46 v46, T47 v47, T48 v48, T49 v49, T50 v50) { + return internal::ValueArray50(v1, v2, v3, v4, + v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, + v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, + v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, + v48, v49, v50); +} + +// Bool() allows generating tests with parameters in a set of (false, true). +// +// Synopsis: +// Bool() +// - returns a generator producing sequences with elements {false, true}. +// +// It is useful when testing code that depends on Boolean flags. Combinations +// of multiple flags can be tested when several Bool()'s are combined using +// Combine() function. +// +// In the following example all tests in the test case FlagDependentTest +// will be instantiated twice with parameters false and true. +// +// class FlagDependentTest : public testing::TestWithParam { +// virtual void SetUp() { +// external_flag = GetParam(); +// } +// } +// INSTANTIATE_TEST_CASE_P(BoolSequence, FlagDependentTest, Bool()); +// +inline internal::ParamGenerator Bool() { + return Values(false, true); +} + +# if GTEST_HAS_COMBINE +// Combine() allows the user to combine two or more sequences to produce +// values of a Cartesian product of those sequences' elements. +// +// Synopsis: +// Combine(gen1, gen2, ..., genN) +// - returns a generator producing sequences with elements coming from +// the Cartesian product of elements from the sequences generated by +// gen1, gen2, ..., genN. The sequence elements will have a type of +// tuple where T1, T2, ..., TN are the types +// of elements from sequences produces by gen1, gen2, ..., genN. +// +// Combine can have up to 10 arguments. This number is currently limited +// by the maximum number of elements in the tuple implementation used by Google +// Test. +// +// Example: +// +// This will instantiate tests in test case AnimalTest each one with +// the parameter values tuple("cat", BLACK), tuple("cat", WHITE), +// tuple("dog", BLACK), and tuple("dog", WHITE): +// +// enum Color { BLACK, GRAY, WHITE }; +// class AnimalTest +// : public testing::TestWithParam > {...}; +// +// TEST_P(AnimalTest, AnimalLooksNice) {...} +// +// INSTANTIATE_TEST_CASE_P(AnimalVariations, AnimalTest, +// Combine(Values("cat", "dog"), +// Values(BLACK, WHITE))); +// +// This will instantiate tests in FlagDependentTest with all variations of two +// Boolean flags: +// +// class FlagDependentTest +// : public testing::TestWithParam > { +// virtual void SetUp() { +// // Assigns external_flag_1 and external_flag_2 values from the tuple. +// tie(external_flag_1, external_flag_2) = GetParam(); +// } +// }; +// +// TEST_P(FlagDependentTest, TestFeature1) { +// // Test your code using external_flag_1 and external_flag_2 here. +// } +// INSTANTIATE_TEST_CASE_P(TwoBoolSequence, FlagDependentTest, +// Combine(Bool(), Bool())); +// +template +internal::CartesianProductHolder2 Combine( + const Generator1& g1, const Generator2& g2) { + return internal::CartesianProductHolder2( + g1, g2); +} + +template +internal::CartesianProductHolder3 Combine( + const Generator1& g1, const Generator2& g2, const Generator3& g3) { + return internal::CartesianProductHolder3( + g1, g2, g3); +} + +template +internal::CartesianProductHolder4 Combine( + const Generator1& g1, const Generator2& g2, const Generator3& g3, + const Generator4& g4) { + return internal::CartesianProductHolder4( + g1, g2, g3, g4); +} + +template +internal::CartesianProductHolder5 Combine( + const Generator1& g1, const Generator2& g2, const Generator3& g3, + const Generator4& g4, const Generator5& g5) { + return internal::CartesianProductHolder5( + g1, g2, g3, g4, g5); +} + +template +internal::CartesianProductHolder6 Combine( + const Generator1& g1, const Generator2& g2, const Generator3& g3, + const Generator4& g4, const Generator5& g5, const Generator6& g6) { + return internal::CartesianProductHolder6( + g1, g2, g3, g4, g5, g6); +} + +template +internal::CartesianProductHolder7 Combine( + const Generator1& g1, const Generator2& g2, const Generator3& g3, + const Generator4& g4, const Generator5& g5, const Generator6& g6, + const Generator7& g7) { + return internal::CartesianProductHolder7( + g1, g2, g3, g4, g5, g6, g7); +} + +template +internal::CartesianProductHolder8 Combine( + const Generator1& g1, const Generator2& g2, const Generator3& g3, + const Generator4& g4, const Generator5& g5, const Generator6& g6, + const Generator7& g7, const Generator8& g8) { + return internal::CartesianProductHolder8( + g1, g2, g3, g4, g5, g6, g7, g8); +} + +template +internal::CartesianProductHolder9 Combine( + const Generator1& g1, const Generator2& g2, const Generator3& g3, + const Generator4& g4, const Generator5& g5, const Generator6& g6, + const Generator7& g7, const Generator8& g8, const Generator9& g9) { + return internal::CartesianProductHolder9( + g1, g2, g3, g4, g5, g6, g7, g8, g9); +} + +template +internal::CartesianProductHolder10 Combine( + const Generator1& g1, const Generator2& g2, const Generator3& g3, + const Generator4& g4, const Generator5& g5, const Generator6& g6, + const Generator7& g7, const Generator8& g8, const Generator9& g9, + const Generator10& g10) { + return internal::CartesianProductHolder10( + g1, g2, g3, g4, g5, g6, g7, g8, g9, g10); +} +# endif // GTEST_HAS_COMBINE + + + +# define TEST_P(test_case_name, test_name) \ + class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \ + : public test_case_name { \ + public: \ + GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \ + virtual void TestBody(); \ + private: \ + static int AddToRegistry() { \ + ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \ + GetTestCasePatternHolder(\ + #test_case_name, __FILE__, __LINE__)->AddTestPattern(\ + #test_case_name, \ + #test_name, \ + new ::testing::internal::TestMetaFactory< \ + GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>()); \ + return 0; \ + } \ + static int gtest_registering_dummy_; \ + GTEST_DISALLOW_COPY_AND_ASSIGN_(\ + GTEST_TEST_CLASS_NAME_(test_case_name, test_name)); \ + }; \ + int GTEST_TEST_CLASS_NAME_(test_case_name, \ + test_name)::gtest_registering_dummy_ = \ + GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \ + void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody() + +# define INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator) \ + ::testing::internal::ParamGenerator \ + gtest_##prefix##test_case_name##_EvalGenerator_() { return generator; } \ + int gtest_##prefix##test_case_name##_dummy_ = \ + ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \ + GetTestCasePatternHolder(\ + #test_case_name, __FILE__, __LINE__)->AddTestCaseInstantiation(\ + #prefix, \ + >est_##prefix##test_case_name##_EvalGenerator_, \ + __FILE__, __LINE__) + +} // namespace testing + +#endif // GTEST_HAS_PARAM_TEST + +#endif // GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ +// Copyright 2006, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) +// +// Google C++ Testing Framework definitions useful in production code. + +#ifndef GTEST_INCLUDE_GTEST_GTEST_PROD_H_ +#define GTEST_INCLUDE_GTEST_GTEST_PROD_H_ + +// When you need to test the private or protected members of a class, +// use the FRIEND_TEST macro to declare your tests as friends of the +// class. For example: +// +// class MyClass { +// private: +// void MyMethod(); +// FRIEND_TEST(MyClassTest, MyMethod); +// }; +// +// class MyClassTest : public testing::Test { +// // ... +// }; +// +// TEST_F(MyClassTest, MyMethod) { +// // Can call MyClass::MyMethod() here. +// } + +#define FRIEND_TEST(test_case_name, test_name)\ +friend class test_case_name##_##test_name##_Test + +#endif // GTEST_INCLUDE_GTEST_GTEST_PROD_H_ +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: mheule@google.com (Markus Heule) +// + +#ifndef GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_ +#define GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_ + +#include +#include + +namespace testing { + +// A copyable object representing the result of a test part (i.e. an +// assertion or an explicit FAIL(), ADD_FAILURE(), or SUCCESS()). +// +// Don't inherit from TestPartResult as its destructor is not virtual. +class GTEST_API_ TestPartResult { + public: + // The possible outcomes of a test part (i.e. an assertion or an + // explicit SUCCEED(), FAIL(), or ADD_FAILURE()). + enum Type { + kSuccess, // Succeeded. + kNonFatalFailure, // Failed but the test can continue. + kFatalFailure // Failed and the test should be terminated. + }; + + // C'tor. TestPartResult does NOT have a default constructor. + // Always use this constructor (with parameters) to create a + // TestPartResult object. + TestPartResult(Type a_type, + const char* a_file_name, + int a_line_number, + const char* a_message) + : type_(a_type), + file_name_(a_file_name == NULL ? "" : a_file_name), + line_number_(a_line_number), + summary_(ExtractSummary(a_message)), + message_(a_message) { + } + + // Gets the outcome of the test part. + Type type() const { return type_; } + + // Gets the name of the source file where the test part took place, or + // NULL if it's unknown. + const char* file_name() const { + return file_name_.empty() ? NULL : file_name_.c_str(); + } + + // Gets the line in the source file where the test part took place, + // or -1 if it's unknown. + int line_number() const { return line_number_; } + + // Gets the summary of the failure message. + const char* summary() const { return summary_.c_str(); } + + // Gets the message associated with the test part. + const char* message() const { return message_.c_str(); } + + // Returns true iff the test part passed. + bool passed() const { return type_ == kSuccess; } + + // Returns true iff the test part failed. + bool failed() const { return type_ != kSuccess; } + + // Returns true iff the test part non-fatally failed. + bool nonfatally_failed() const { return type_ == kNonFatalFailure; } + + // Returns true iff the test part fatally failed. + bool fatally_failed() const { return type_ == kFatalFailure; } + + private: + Type type_; + + // Gets the summary of the failure message by omitting the stack + // trace in it. + static std::string ExtractSummary(const char* message); + + // The name of the source file where the test part took place, or + // "" if the source file is unknown. + std::string file_name_; + // The line in the source file where the test part took place, or -1 + // if the line number is unknown. + int line_number_; + std::string summary_; // The test failure summary. + std::string message_; // The test failure message. +}; + +// Prints a TestPartResult object. +std::ostream& operator<<(std::ostream& os, const TestPartResult& result); + +// An array of TestPartResult objects. +// +// Don't inherit from TestPartResultArray as its destructor is not +// virtual. +class GTEST_API_ TestPartResultArray { + public: + TestPartResultArray() {} + + // Appends the given TestPartResult to the array. + void Append(const TestPartResult& result); + + // Returns the TestPartResult at the given index (0-based). + const TestPartResult& GetTestPartResult(int index) const; + + // Returns the number of TestPartResult objects in the array. + int size() const; + + private: + std::vector array_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(TestPartResultArray); +}; + +// This interface knows how to report a test part result. +class TestPartResultReporterInterface { + public: + virtual ~TestPartResultReporterInterface() {} + + virtual void ReportTestPartResult(const TestPartResult& result) = 0; +}; + +namespace internal { + +// This helper class is used by {ASSERT|EXPECT}_NO_FATAL_FAILURE to check if a +// statement generates new fatal failures. To do so it registers itself as the +// current test part result reporter. Besides checking if fatal failures were +// reported, it only delegates the reporting to the former result reporter. +// The original result reporter is restored in the destructor. +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +class GTEST_API_ HasNewFatalFailureHelper + : public TestPartResultReporterInterface { + public: + HasNewFatalFailureHelper(); + virtual ~HasNewFatalFailureHelper(); + virtual void ReportTestPartResult(const TestPartResult& result); + bool has_new_fatal_failure() const { return has_new_fatal_failure_; } + private: + bool has_new_fatal_failure_; + TestPartResultReporterInterface* original_reporter_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(HasNewFatalFailureHelper); +}; + +} // namespace internal + +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_ +// Copyright 2008 Google Inc. +// All Rights Reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +#ifndef GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_ +#define GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_ + +// This header implements typed tests and type-parameterized tests. + +// Typed (aka type-driven) tests repeat the same test for types in a +// list. You must know which types you want to test with when writing +// typed tests. Here's how you do it: + +#if 0 + +// First, define a fixture class template. It should be parameterized +// by a type. Remember to derive it from testing::Test. +template +class FooTest : public testing::Test { + public: + ... + typedef std::list List; + static T shared_; + T value_; +}; + +// Next, associate a list of types with the test case, which will be +// repeated for each type in the list. The typedef is necessary for +// the macro to parse correctly. +typedef testing::Types MyTypes; +TYPED_TEST_CASE(FooTest, MyTypes); + +// If the type list contains only one type, you can write that type +// directly without Types<...>: +// TYPED_TEST_CASE(FooTest, int); + +// Then, use TYPED_TEST() instead of TEST_F() to define as many typed +// tests for this test case as you want. +TYPED_TEST(FooTest, DoesBlah) { + // Inside a test, refer to TypeParam to get the type parameter. + // Since we are inside a derived class template, C++ requires use to + // visit the members of FooTest via 'this'. + TypeParam n = this->value_; + + // To visit static members of the fixture, add the TestFixture:: + // prefix. + n += TestFixture::shared_; + + // To refer to typedefs in the fixture, add the "typename + // TestFixture::" prefix. + typename TestFixture::List values; + values.push_back(n); + ... +} + +TYPED_TEST(FooTest, HasPropertyA) { ... } + +#endif // 0 + +// Type-parameterized tests are abstract test patterns parameterized +// by a type. Compared with typed tests, type-parameterized tests +// allow you to define the test pattern without knowing what the type +// parameters are. The defined pattern can be instantiated with +// different types any number of times, in any number of translation +// units. +// +// If you are designing an interface or concept, you can define a +// suite of type-parameterized tests to verify properties that any +// valid implementation of the interface/concept should have. Then, +// each implementation can easily instantiate the test suite to verify +// that it conforms to the requirements, without having to write +// similar tests repeatedly. Here's an example: + +#if 0 + +// First, define a fixture class template. It should be parameterized +// by a type. Remember to derive it from testing::Test. +template +class FooTest : public testing::Test { + ... +}; + +// Next, declare that you will define a type-parameterized test case +// (the _P suffix is for "parameterized" or "pattern", whichever you +// prefer): +TYPED_TEST_CASE_P(FooTest); + +// Then, use TYPED_TEST_P() to define as many type-parameterized tests +// for this type-parameterized test case as you want. +TYPED_TEST_P(FooTest, DoesBlah) { + // Inside a test, refer to TypeParam to get the type parameter. + TypeParam n = 0; + ... +} + +TYPED_TEST_P(FooTest, HasPropertyA) { ... } + +// Now the tricky part: you need to register all test patterns before +// you can instantiate them. The first argument of the macro is the +// test case name; the rest are the names of the tests in this test +// case. +REGISTER_TYPED_TEST_CASE_P(FooTest, + DoesBlah, HasPropertyA); + +// Finally, you are free to instantiate the pattern with the types you +// want. If you put the above code in a header file, you can #include +// it in multiple C++ source files and instantiate it multiple times. +// +// To distinguish different instances of the pattern, the first +// argument to the INSTANTIATE_* macro is a prefix that will be added +// to the actual test case name. Remember to pick unique prefixes for +// different instances. +typedef testing::Types MyTypes; +INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, MyTypes); + +// If the type list contains only one type, you can write that type +// directly without Types<...>: +// INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, int); + +#endif // 0 + + +// Implements typed tests. + +#if GTEST_HAS_TYPED_TEST + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// Expands to the name of the typedef for the type parameters of the +// given test case. +# define GTEST_TYPE_PARAMS_(TestCaseName) gtest_type_params_##TestCaseName##_ + +// The 'Types' template argument below must have spaces around it +// since some compilers may choke on '>>' when passing a template +// instance (e.g. Types) +# define TYPED_TEST_CASE(CaseName, Types) \ + typedef ::testing::internal::TypeList< Types >::type \ + GTEST_TYPE_PARAMS_(CaseName) + +# define TYPED_TEST(CaseName, TestName) \ + template \ + class GTEST_TEST_CLASS_NAME_(CaseName, TestName) \ + : public CaseName { \ + private: \ + typedef CaseName TestFixture; \ + typedef gtest_TypeParam_ TypeParam; \ + virtual void TestBody(); \ + }; \ + bool gtest_##CaseName##_##TestName##_registered_ GTEST_ATTRIBUTE_UNUSED_ = \ + ::testing::internal::TypeParameterizedTest< \ + CaseName, \ + ::testing::internal::TemplateSel< \ + GTEST_TEST_CLASS_NAME_(CaseName, TestName)>, \ + GTEST_TYPE_PARAMS_(CaseName)>::Register(\ + "", #CaseName, #TestName, 0); \ + template \ + void GTEST_TEST_CLASS_NAME_(CaseName, TestName)::TestBody() + +#endif // GTEST_HAS_TYPED_TEST + +// Implements type-parameterized tests. + +#if GTEST_HAS_TYPED_TEST_P + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// Expands to the namespace name that the type-parameterized tests for +// the given type-parameterized test case are defined in. The exact +// name of the namespace is subject to change without notice. +# define GTEST_CASE_NAMESPACE_(TestCaseName) \ + gtest_case_##TestCaseName##_ + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// Expands to the name of the variable used to remember the names of +// the defined tests in the given test case. +# define GTEST_TYPED_TEST_CASE_P_STATE_(TestCaseName) \ + gtest_typed_test_case_p_state_##TestCaseName##_ + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE DIRECTLY. +// +// Expands to the name of the variable used to remember the names of +// the registered tests in the given test case. +# define GTEST_REGISTERED_TEST_NAMES_(TestCaseName) \ + gtest_registered_test_names_##TestCaseName##_ + +// The variables defined in the type-parameterized test macros are +// static as typically these macros are used in a .h file that can be +// #included in multiple translation units linked together. +# define TYPED_TEST_CASE_P(CaseName) \ + static ::testing::internal::TypedTestCasePState \ + GTEST_TYPED_TEST_CASE_P_STATE_(CaseName) + +# define TYPED_TEST_P(CaseName, TestName) \ + namespace GTEST_CASE_NAMESPACE_(CaseName) { \ + template \ + class TestName : public CaseName { \ + private: \ + typedef CaseName TestFixture; \ + typedef gtest_TypeParam_ TypeParam; \ + virtual void TestBody(); \ + }; \ + static bool gtest_##TestName##_defined_ GTEST_ATTRIBUTE_UNUSED_ = \ + GTEST_TYPED_TEST_CASE_P_STATE_(CaseName).AddTestName(\ + __FILE__, __LINE__, #CaseName, #TestName); \ + } \ + template \ + void GTEST_CASE_NAMESPACE_(CaseName)::TestName::TestBody() + +# define REGISTER_TYPED_TEST_CASE_P(CaseName, ...) \ + namespace GTEST_CASE_NAMESPACE_(CaseName) { \ + typedef ::testing::internal::Templates<__VA_ARGS__>::type gtest_AllTests_; \ + } \ + static const char* const GTEST_REGISTERED_TEST_NAMES_(CaseName) = \ + GTEST_TYPED_TEST_CASE_P_STATE_(CaseName).VerifyRegisteredTestNames(\ + __FILE__, __LINE__, #__VA_ARGS__) + +// The 'Types' template argument below must have spaces around it +// since some compilers may choke on '>>' when passing a template +// instance (e.g. Types) +# define INSTANTIATE_TYPED_TEST_CASE_P(Prefix, CaseName, Types) \ + bool gtest_##Prefix##_##CaseName GTEST_ATTRIBUTE_UNUSED_ = \ + ::testing::internal::TypeParameterizedTestCase::type>::Register(\ + #Prefix, #CaseName, GTEST_REGISTERED_TEST_NAMES_(CaseName)) + +#endif // GTEST_HAS_TYPED_TEST_P + +#endif // GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_ + +// Depending on the platform, different string classes are available. +// On Linux, in addition to ::std::string, Google also makes use of +// class ::string, which has the same interface as ::std::string, but +// has a different implementation. +// +// The user can define GTEST_HAS_GLOBAL_STRING to 1 to indicate that +// ::string is available AND is a distinct type to ::std::string, or +// define it to 0 to indicate otherwise. +// +// If the user's ::std::string and ::string are the same class due to +// aliasing, he should define GTEST_HAS_GLOBAL_STRING to 0. +// +// If the user doesn't define GTEST_HAS_GLOBAL_STRING, it is defined +// heuristically. + +namespace testing { + +// Declares the flags. + +// This flag temporary enables the disabled tests. +GTEST_DECLARE_bool_(also_run_disabled_tests); + +// This flag brings the debugger on an assertion failure. +GTEST_DECLARE_bool_(break_on_failure); + +// This flag controls whether Google Test catches all test-thrown exceptions +// and logs them as failures. +GTEST_DECLARE_bool_(catch_exceptions); + +// This flag enables using colors in terminal output. Available values are +// "yes" to enable colors, "no" (disable colors), or "auto" (the default) +// to let Google Test decide. +GTEST_DECLARE_string_(color); + +// This flag sets up the filter to select by name using a glob pattern +// the tests to run. If the filter is not given all tests are executed. +GTEST_DECLARE_string_(filter); + +// This flag causes the Google Test to list tests. None of the tests listed +// are actually run if the flag is provided. +GTEST_DECLARE_bool_(list_tests); + +// This flag controls whether Google Test emits a detailed XML report to a file +// in addition to its normal textual output. +GTEST_DECLARE_string_(output); + +// This flags control whether Google Test prints the elapsed time for each +// test. +GTEST_DECLARE_bool_(print_time); + +// This flag specifies the random number seed. +GTEST_DECLARE_int32_(random_seed); + +// This flag sets how many times the tests are repeated. The default value +// is 1. If the value is -1 the tests are repeating forever. +GTEST_DECLARE_int32_(repeat); + +// This flag controls whether Google Test includes Google Test internal +// stack frames in failure stack traces. +GTEST_DECLARE_bool_(show_internal_stack_frames); + +// When this flag is specified, tests' order is randomized on every iteration. +GTEST_DECLARE_bool_(shuffle); + +// This flag specifies the maximum number of stack frames to be +// printed in a failure message. +GTEST_DECLARE_int32_(stack_trace_depth); + +// When this flag is specified, a failed assertion will throw an +// exception if exceptions are enabled, or exit the program with a +// non-zero code otherwise. +GTEST_DECLARE_bool_(throw_on_failure); + +// When this flag is set with a "host:port" string, on supported +// platforms test results are streamed to the specified port on +// the specified host machine. +GTEST_DECLARE_string_(stream_result_to); + +// The upper limit for valid stack trace depths. +const int kMaxStackTraceDepth = 100; + +namespace internal { + +class AssertHelper; +class DefaultGlobalTestPartResultReporter; +class ExecDeathTest; +class NoExecDeathTest; +class FinalSuccessChecker; +class GTestFlagSaver; +class TestResultAccessor; +class TestEventListenersAccessor; +class TestEventRepeater; +class WindowsDeathTest; +class UnitTestImpl* GetUnitTestImpl(); +void ReportFailureInUnknownLocation(TestPartResult::Type result_type, + const std::string& message); + +// Converts a streamable value to an std::string. A NULL pointer is +// converted to "(null)". When the input value is a ::string, +// ::std::string, ::wstring, or ::std::wstring object, each NUL +// character in it is replaced with "\\0". +// Declared in gtest-internal.h but defined here, so that it has access +// to the definition of the Message class, required by the ARM +// compiler. +template +std::string StreamableToString(const T& streamable) { + return (Message() << streamable).GetString(); +} + +} // namespace internal + +// The friend relationship of some of these classes is cyclic. +// If we don't forward declare them the compiler might confuse the classes +// in friendship clauses with same named classes on the scope. +class Test; +class TestCase; +class TestInfo; +class UnitTest; + +// A class for indicating whether an assertion was successful. When +// the assertion wasn't successful, the AssertionResult object +// remembers a non-empty message that describes how it failed. +// +// To create an instance of this class, use one of the factory functions +// (AssertionSuccess() and AssertionFailure()). +// +// This class is useful for two purposes: +// 1. Defining predicate functions to be used with Boolean test assertions +// EXPECT_TRUE/EXPECT_FALSE and their ASSERT_ counterparts +// 2. Defining predicate-format functions to be +// used with predicate assertions (ASSERT_PRED_FORMAT*, etc). +// +// For example, if you define IsEven predicate: +// +// testing::AssertionResult IsEven(int n) { +// if ((n % 2) == 0) +// return testing::AssertionSuccess(); +// else +// return testing::AssertionFailure() << n << " is odd"; +// } +// +// Then the failed expectation EXPECT_TRUE(IsEven(Fib(5))) +// will print the message +// +// Value of: IsEven(Fib(5)) +// Actual: false (5 is odd) +// Expected: true +// +// instead of a more opaque +// +// Value of: IsEven(Fib(5)) +// Actual: false +// Expected: true +// +// in case IsEven is a simple Boolean predicate. +// +// If you expect your predicate to be reused and want to support informative +// messages in EXPECT_FALSE and ASSERT_FALSE (negative assertions show up +// about half as often as positive ones in our tests), supply messages for +// both success and failure cases: +// +// testing::AssertionResult IsEven(int n) { +// if ((n % 2) == 0) +// return testing::AssertionSuccess() << n << " is even"; +// else +// return testing::AssertionFailure() << n << " is odd"; +// } +// +// Then a statement EXPECT_FALSE(IsEven(Fib(6))) will print +// +// Value of: IsEven(Fib(6)) +// Actual: true (8 is even) +// Expected: false +// +// NB: Predicates that support negative Boolean assertions have reduced +// performance in positive ones so be careful not to use them in tests +// that have lots (tens of thousands) of positive Boolean assertions. +// +// To use this class with EXPECT_PRED_FORMAT assertions such as: +// +// // Verifies that Foo() returns an even number. +// EXPECT_PRED_FORMAT1(IsEven, Foo()); +// +// you need to define: +// +// testing::AssertionResult IsEven(const char* expr, int n) { +// if ((n % 2) == 0) +// return testing::AssertionSuccess(); +// else +// return testing::AssertionFailure() +// << "Expected: " << expr << " is even\n Actual: it's " << n; +// } +// +// If Foo() returns 5, you will see the following message: +// +// Expected: Foo() is even +// Actual: it's 5 +// +class GTEST_API_ AssertionResult { + public: + // Copy constructor. + // Used in EXPECT_TRUE/FALSE(assertion_result). + AssertionResult(const AssertionResult& other); + // Used in the EXPECT_TRUE/FALSE(bool_expression). + explicit AssertionResult(bool success) : success_(success) {} + + // Returns true iff the assertion succeeded. + operator bool() const { return success_; } // NOLINT + + // Returns the assertion's negation. Used with EXPECT/ASSERT_FALSE. + AssertionResult operator!() const; + + // Returns the text streamed into this AssertionResult. Test assertions + // use it when they fail (i.e., the predicate's outcome doesn't match the + // assertion's expectation). When nothing has been streamed into the + // object, returns an empty string. + const char* message() const { + return message_.get() != NULL ? message_->c_str() : ""; + } + // TODO(vladl@google.com): Remove this after making sure no clients use it. + // Deprecated; please use message() instead. + const char* failure_message() const { return message(); } + + // Streams a custom failure message into this object. + template AssertionResult& operator<<(const T& value) { + AppendMessage(Message() << value); + return *this; + } + + // Allows streaming basic output manipulators such as endl or flush into + // this object. + AssertionResult& operator<<( + ::std::ostream& (*basic_manipulator)(::std::ostream& stream)) { + AppendMessage(Message() << basic_manipulator); + return *this; + } + + private: + // Appends the contents of message to message_. + void AppendMessage(const Message& a_message) { + if (message_.get() == NULL) + message_.reset(new ::std::string); + message_->append(a_message.GetString().c_str()); + } + + // Stores result of the assertion predicate. + bool success_; + // Stores the message describing the condition in case the expectation + // construct is not satisfied with the predicate's outcome. + // Referenced via a pointer to avoid taking too much stack frame space + // with test assertions. + internal::scoped_ptr< ::std::string> message_; + + GTEST_DISALLOW_ASSIGN_(AssertionResult); +}; + +// Makes a successful assertion result. +GTEST_API_ AssertionResult AssertionSuccess(); + +// Makes a failed assertion result. +GTEST_API_ AssertionResult AssertionFailure(); + +// Makes a failed assertion result with the given failure message. +// Deprecated; use AssertionFailure() << msg. +GTEST_API_ AssertionResult AssertionFailure(const Message& msg); + +// The abstract class that all tests inherit from. +// +// In Google Test, a unit test program contains one or many TestCases, and +// each TestCase contains one or many Tests. +// +// When you define a test using the TEST macro, you don't need to +// explicitly derive from Test - the TEST macro automatically does +// this for you. +// +// The only time you derive from Test is when defining a test fixture +// to be used a TEST_F. For example: +// +// class FooTest : public testing::Test { +// protected: +// virtual void SetUp() { ... } +// virtual void TearDown() { ... } +// ... +// }; +// +// TEST_F(FooTest, Bar) { ... } +// TEST_F(FooTest, Baz) { ... } +// +// Test is not copyable. +class GTEST_API_ Test { + public: + friend class TestInfo; + + // Defines types for pointers to functions that set up and tear down + // a test case. + typedef internal::SetUpTestCaseFunc SetUpTestCaseFunc; + typedef internal::TearDownTestCaseFunc TearDownTestCaseFunc; + + // The d'tor is virtual as we intend to inherit from Test. + virtual ~Test(); + + // Sets up the stuff shared by all tests in this test case. + // + // Google Test will call Foo::SetUpTestCase() before running the first + // test in test case Foo. Hence a sub-class can define its own + // SetUpTestCase() method to shadow the one defined in the super + // class. + static void SetUpTestCase() {} + + // Tears down the stuff shared by all tests in this test case. + // + // Google Test will call Foo::TearDownTestCase() after running the last + // test in test case Foo. Hence a sub-class can define its own + // TearDownTestCase() method to shadow the one defined in the super + // class. + static void TearDownTestCase() {} + + // Returns true iff the current test has a fatal failure. + static bool HasFatalFailure(); + + // Returns true iff the current test has a non-fatal failure. + static bool HasNonfatalFailure(); + + // Returns true iff the current test has a (either fatal or + // non-fatal) failure. + static bool HasFailure() { return HasFatalFailure() || HasNonfatalFailure(); } + + // Logs a property for the current test. Only the last value for a given + // key is remembered. + // These are public static so they can be called from utility functions + // that are not members of the test fixture. + // The arguments are const char* instead strings, as Google Test is used + // on platforms where string doesn't compile. + // + // Note that a driving consideration for these RecordProperty methods + // was to produce xml output suited to the Greenspan charting utility, + // which at present will only chart values that fit in a 32-bit int. It + // is the user's responsibility to restrict their values to 32-bit ints + // if they intend them to be used with Greenspan. + static void RecordProperty(const char* key, const char* value); + static void RecordProperty(const char* key, int value); + + protected: + // Creates a Test object. + Test(); + + // Sets up the test fixture. + virtual void SetUp(); + + // Tears down the test fixture. + virtual void TearDown(); + + private: + // Returns true iff the current test has the same fixture class as + // the first test in the current test case. + static bool HasSameFixtureClass(); + + // Runs the test after the test fixture has been set up. + // + // A sub-class must implement this to define the test logic. + // + // DO NOT OVERRIDE THIS FUNCTION DIRECTLY IN A USER PROGRAM. + // Instead, use the TEST or TEST_F macro. + virtual void TestBody() = 0; + + // Sets up, executes, and tears down the test. + void Run(); + + // Deletes self. We deliberately pick an unusual name for this + // internal method to avoid clashing with names used in user TESTs. + void DeleteSelf_() { delete this; } + + // Uses a GTestFlagSaver to save and restore all Google Test flags. + const internal::GTestFlagSaver* const gtest_flag_saver_; + + // Often a user mis-spells SetUp() as Setup() and spends a long time + // wondering why it is never called by Google Test. The declaration of + // the following method is solely for catching such an error at + // compile time: + // + // - The return type is deliberately chosen to be not void, so it + // will be a conflict if a user declares void Setup() in his test + // fixture. + // + // - This method is private, so it will be another compiler error + // if a user calls it from his test fixture. + // + // DO NOT OVERRIDE THIS FUNCTION. + // + // If you see an error about overriding the following function or + // about it being private, you have mis-spelled SetUp() as Setup(). + struct Setup_should_be_spelled_SetUp {}; + virtual Setup_should_be_spelled_SetUp* Setup() { return NULL; } + + // We disallow copying Tests. + GTEST_DISALLOW_COPY_AND_ASSIGN_(Test); +}; + +typedef internal::TimeInMillis TimeInMillis; + +// A copyable object representing a user specified test property which can be +// output as a key/value string pair. +// +// Don't inherit from TestProperty as its destructor is not virtual. +class TestProperty { + public: + // C'tor. TestProperty does NOT have a default constructor. + // Always use this constructor (with parameters) to create a + // TestProperty object. + TestProperty(const char* a_key, const char* a_value) : + key_(a_key), value_(a_value) { + } + + // Gets the user supplied key. + const char* key() const { + return key_.c_str(); + } + + // Gets the user supplied value. + const char* value() const { + return value_.c_str(); + } + + // Sets a new value, overriding the one supplied in the constructor. + void SetValue(const char* new_value) { + value_ = new_value; + } + + private: + // The key supplied by the user. + std::string key_; + // The value supplied by the user. + std::string value_; +}; + +// The result of a single Test. This includes a list of +// TestPartResults, a list of TestProperties, a count of how many +// death tests there are in the Test, and how much time it took to run +// the Test. +// +// TestResult is not copyable. +class GTEST_API_ TestResult { + public: + // Creates an empty TestResult. + TestResult(); + + // D'tor. Do not inherit from TestResult. + ~TestResult(); + + // Gets the number of all test parts. This is the sum of the number + // of successful test parts and the number of failed test parts. + int total_part_count() const; + + // Returns the number of the test properties. + int test_property_count() const; + + // Returns true iff the test passed (i.e. no test part failed). + bool Passed() const { return !Failed(); } + + // Returns true iff the test failed. + bool Failed() const; + + // Returns true iff the test fatally failed. + bool HasFatalFailure() const; + + // Returns true iff the test has a non-fatal failure. + bool HasNonfatalFailure() const; + + // Returns the elapsed time, in milliseconds. + TimeInMillis elapsed_time() const { return elapsed_time_; } + + // Returns the i-th test part result among all the results. i can range + // from 0 to test_property_count() - 1. If i is not in that range, aborts + // the program. + const TestPartResult& GetTestPartResult(int i) const; + + // Returns the i-th test property. i can range from 0 to + // test_property_count() - 1. If i is not in that range, aborts the + // program. + const TestProperty& GetTestProperty(int i) const; + + private: + friend class TestInfo; + friend class UnitTest; + friend class internal::DefaultGlobalTestPartResultReporter; + friend class internal::ExecDeathTest; + friend class internal::TestResultAccessor; + friend class internal::UnitTestImpl; + friend class internal::WindowsDeathTest; + + // Gets the vector of TestPartResults. + const std::vector& test_part_results() const { + return test_part_results_; + } + + // Gets the vector of TestProperties. + const std::vector& test_properties() const { + return test_properties_; + } + + // Sets the elapsed time. + void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } + + // Adds a test property to the list. The property is validated and may add + // a non-fatal failure if invalid (e.g., if it conflicts with reserved + // key names). If a property is already recorded for the same key, the + // value will be updated, rather than storing multiple values for the same + // key. + void RecordProperty(const TestProperty& test_property); + + // Adds a failure if the key is a reserved attribute of Google Test + // testcase tags. Returns true if the property is valid. + // TODO(russr): Validate attribute names are legal and human readable. + static bool ValidateTestProperty(const TestProperty& test_property); + + // Adds a test part result to the list. + void AddTestPartResult(const TestPartResult& test_part_result); + + // Returns the death test count. + int death_test_count() const { return death_test_count_; } + + // Increments the death test count, returning the new count. + int increment_death_test_count() { return ++death_test_count_; } + + // Clears the test part results. + void ClearTestPartResults(); + + // Clears the object. + void Clear(); + + // Protects mutable state of the property vector and of owned + // properties, whose values may be updated. + internal::Mutex test_properites_mutex_; + + // The vector of TestPartResults + std::vector test_part_results_; + // The vector of TestProperties + std::vector test_properties_; + // Running count of death tests. + int death_test_count_; + // The elapsed time, in milliseconds. + TimeInMillis elapsed_time_; + + // We disallow copying TestResult. + GTEST_DISALLOW_COPY_AND_ASSIGN_(TestResult); +}; // class TestResult + +// A TestInfo object stores the following information about a test: +// +// Test case name +// Test name +// Whether the test should be run +// A function pointer that creates the test object when invoked +// Test result +// +// The constructor of TestInfo registers itself with the UnitTest +// singleton such that the RUN_ALL_TESTS() macro knows which tests to +// run. +class GTEST_API_ TestInfo { + public: + // Destructs a TestInfo object. This function is not virtual, so + // don't inherit from TestInfo. + ~TestInfo(); + + // Returns the test case name. + const char* test_case_name() const { return test_case_name_.c_str(); } + + // Returns the test name. + const char* name() const { return name_.c_str(); } + + // Returns the name of the parameter type, or NULL if this is not a typed + // or a type-parameterized test. + const char* type_param() const { + if (type_param_.get() != NULL) + return type_param_->c_str(); + return NULL; + } + + // Returns the text representation of the value parameter, or NULL if this + // is not a value-parameterized test. + const char* value_param() const { + if (value_param_.get() != NULL) + return value_param_->c_str(); + return NULL; + } + + // Returns true if this test should run, that is if the test is not disabled + // (or it is disabled but the also_run_disabled_tests flag has been specified) + // and its full name matches the user-specified filter. + // + // Google Test allows the user to filter the tests by their full names. + // The full name of a test Bar in test case Foo is defined as + // "Foo.Bar". Only the tests that match the filter will run. + // + // A filter is a colon-separated list of glob (not regex) patterns, + // optionally followed by a '-' and a colon-separated list of + // negative patterns (tests to exclude). A test is run if it + // matches one of the positive patterns and does not match any of + // the negative patterns. + // + // For example, *A*:Foo.* is a filter that matches any string that + // contains the character 'A' or starts with "Foo.". + bool should_run() const { return should_run_; } + + // Returns the result of the test. + const TestResult* result() const { return &result_; } + + private: +#if GTEST_HAS_DEATH_TEST + friend class internal::DefaultDeathTestFactory; +#endif // GTEST_HAS_DEATH_TEST + friend class Test; + friend class TestCase; + friend class internal::UnitTestImpl; + friend TestInfo* internal::MakeAndRegisterTestInfo( + const char* test_case_name, const char* name, + const char* type_param, + const char* value_param, + internal::TypeId fixture_class_id, + Test::SetUpTestCaseFunc set_up_tc, + Test::TearDownTestCaseFunc tear_down_tc, + internal::TestFactoryBase* factory); + + // Constructs a TestInfo object. The newly constructed instance assumes + // ownership of the factory object. + TestInfo(const char* test_case_name, const char* name, + const char* a_type_param, + const char* a_value_param, + internal::TypeId fixture_class_id, + internal::TestFactoryBase* factory); + + // Increments the number of death tests encountered in this test so + // far. + int increment_death_test_count() { + return result_.increment_death_test_count(); + } + + // Creates the test object, runs it, records its result, and then + // deletes it. + void Run(); + + static void ClearTestResult(TestInfo* test_info) { + test_info->result_.Clear(); + } + + // These fields are immutable properties of the test. + const std::string test_case_name_; // Test case name + const std::string name_; // Test name + // Name of the parameter type, or NULL if this is not a typed or a + // type-parameterized test. + const internal::scoped_ptr type_param_; + // Text representation of the value parameter, or NULL if this is not a + // value-parameterized test. + const internal::scoped_ptr value_param_; + const internal::TypeId fixture_class_id_; // ID of the test fixture class + bool should_run_; // True iff this test should run + bool is_disabled_; // True iff this test is disabled + bool matches_filter_; // True if this test matches the + // user-specified filter. + internal::TestFactoryBase* const factory_; // The factory that creates + // the test object + + // This field is mutable and needs to be reset before running the + // test for the second time. + TestResult result_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(TestInfo); +}; + +// A test case, which consists of a vector of TestInfos. +// +// TestCase is not copyable. +class GTEST_API_ TestCase { + public: + // Creates a TestCase with the given name. + // + // TestCase does NOT have a default constructor. Always use this + // constructor to create a TestCase object. + // + // Arguments: + // + // name: name of the test case + // a_type_param: the name of the test's type parameter, or NULL if + // this is not a type-parameterized test. + // set_up_tc: pointer to the function that sets up the test case + // tear_down_tc: pointer to the function that tears down the test case + TestCase(const char* name, const char* a_type_param, + Test::SetUpTestCaseFunc set_up_tc, + Test::TearDownTestCaseFunc tear_down_tc); + + // Destructor of TestCase. + virtual ~TestCase(); + + // Gets the name of the TestCase. + const char* name() const { return name_.c_str(); } + + // Returns the name of the parameter type, or NULL if this is not a + // type-parameterized test case. + const char* type_param() const { + if (type_param_.get() != NULL) + return type_param_->c_str(); + return NULL; + } + + // Returns true if any test in this test case should run. + bool should_run() const { return should_run_; } + + // Gets the number of successful tests in this test case. + int successful_test_count() const; + + // Gets the number of failed tests in this test case. + int failed_test_count() const; + + // Gets the number of disabled tests in this test case. + int disabled_test_count() const; + + // Get the number of tests in this test case that should run. + int test_to_run_count() const; + + // Gets the number of all tests in this test case. + int total_test_count() const; + + // Returns true iff the test case passed. + bool Passed() const { return !Failed(); } + + // Returns true iff the test case failed. + bool Failed() const { return failed_test_count() > 0; } + + // Returns the elapsed time, in milliseconds. + TimeInMillis elapsed_time() const { return elapsed_time_; } + + // Returns the i-th test among all the tests. i can range from 0 to + // total_test_count() - 1. If i is not in that range, returns NULL. + const TestInfo* GetTestInfo(int i) const; + + private: + friend class Test; + friend class internal::UnitTestImpl; + + // Gets the (mutable) vector of TestInfos in this TestCase. + std::vector& test_info_list() { return test_info_list_; } + + // Gets the (immutable) vector of TestInfos in this TestCase. + const std::vector& test_info_list() const { + return test_info_list_; + } + + // Returns the i-th test among all the tests. i can range from 0 to + // total_test_count() - 1. If i is not in that range, returns NULL. + TestInfo* GetMutableTestInfo(int i); + + // Sets the should_run member. + void set_should_run(bool should) { should_run_ = should; } + + // Adds a TestInfo to this test case. Will delete the TestInfo upon + // destruction of the TestCase object. + void AddTestInfo(TestInfo * test_info); + + // Clears the results of all tests in this test case. + void ClearResult(); + + // Clears the results of all tests in the given test case. + static void ClearTestCaseResult(TestCase* test_case) { + test_case->ClearResult(); + } + + // Runs every test in this TestCase. + void Run(); + + // Runs SetUpTestCase() for this TestCase. This wrapper is needed + // for catching exceptions thrown from SetUpTestCase(). + void RunSetUpTestCase() { (*set_up_tc_)(); } + + // Runs TearDownTestCase() for this TestCase. This wrapper is + // needed for catching exceptions thrown from TearDownTestCase(). + void RunTearDownTestCase() { (*tear_down_tc_)(); } + + // Returns true iff test passed. + static bool TestPassed(const TestInfo* test_info) { + return test_info->should_run() && test_info->result()->Passed(); + } + + // Returns true iff test failed. + static bool TestFailed(const TestInfo* test_info) { + return test_info->should_run() && test_info->result()->Failed(); + } + + // Returns true iff test is disabled. + static bool TestDisabled(const TestInfo* test_info) { + return test_info->is_disabled_; + } + + // Returns true if the given test should run. + static bool ShouldRunTest(const TestInfo* test_info) { + return test_info->should_run(); + } + + // Shuffles the tests in this test case. + void ShuffleTests(internal::Random* random); + + // Restores the test order to before the first shuffle. + void UnshuffleTests(); + + // Name of the test case. + std::string name_; + // Name of the parameter type, or NULL if this is not a typed or a + // type-parameterized test. + const internal::scoped_ptr type_param_; + // The vector of TestInfos in their original order. It owns the + // elements in the vector. + std::vector test_info_list_; + // Provides a level of indirection for the test list to allow easy + // shuffling and restoring the test order. The i-th element in this + // vector is the index of the i-th test in the shuffled test list. + std::vector test_indices_; + // Pointer to the function that sets up the test case. + Test::SetUpTestCaseFunc set_up_tc_; + // Pointer to the function that tears down the test case. + Test::TearDownTestCaseFunc tear_down_tc_; + // True iff any test in this test case should run. + bool should_run_; + // Elapsed time, in milliseconds. + TimeInMillis elapsed_time_; + + // We disallow copying TestCases. + GTEST_DISALLOW_COPY_AND_ASSIGN_(TestCase); +}; + +// An Environment object is capable of setting up and tearing down an +// environment. The user should subclass this to define his own +// environment(s). +// +// An Environment object does the set-up and tear-down in virtual +// methods SetUp() and TearDown() instead of the constructor and the +// destructor, as: +// +// 1. You cannot safely throw from a destructor. This is a problem +// as in some cases Google Test is used where exceptions are enabled, and +// we may want to implement ASSERT_* using exceptions where they are +// available. +// 2. You cannot use ASSERT_* directly in a constructor or +// destructor. +class Environment { + public: + // The d'tor is virtual as we need to subclass Environment. + virtual ~Environment() {} + + // Override this to define how to set up the environment. + virtual void SetUp() {} + + // Override this to define how to tear down the environment. + virtual void TearDown() {} + private: + // If you see an error about overriding the following function or + // about it being private, you have mis-spelled SetUp() as Setup(). + struct Setup_should_be_spelled_SetUp {}; + virtual Setup_should_be_spelled_SetUp* Setup() { return NULL; } +}; + +// The interface for tracing execution of tests. The methods are organized in +// the order the corresponding events are fired. +class TestEventListener { + public: + virtual ~TestEventListener() {} + + // Fired before any test activity starts. + virtual void OnTestProgramStart(const UnitTest& unit_test) = 0; + + // Fired before each iteration of tests starts. There may be more than + // one iteration if GTEST_FLAG(repeat) is set. iteration is the iteration + // index, starting from 0. + virtual void OnTestIterationStart(const UnitTest& unit_test, + int iteration) = 0; + + // Fired before environment set-up for each iteration of tests starts. + virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test) = 0; + + // Fired after environment set-up for each iteration of tests ends. + virtual void OnEnvironmentsSetUpEnd(const UnitTest& unit_test) = 0; + + // Fired before the test case starts. + virtual void OnTestCaseStart(const TestCase& test_case) = 0; + + // Fired before the test starts. + virtual void OnTestStart(const TestInfo& test_info) = 0; + + // Fired after a failed assertion or a SUCCEED() invocation. + virtual void OnTestPartResult(const TestPartResult& test_part_result) = 0; + + // Fired after the test ends. + virtual void OnTestEnd(const TestInfo& test_info) = 0; + + // Fired after the test case ends. + virtual void OnTestCaseEnd(const TestCase& test_case) = 0; + + // Fired before environment tear-down for each iteration of tests starts. + virtual void OnEnvironmentsTearDownStart(const UnitTest& unit_test) = 0; + + // Fired after environment tear-down for each iteration of tests ends. + virtual void OnEnvironmentsTearDownEnd(const UnitTest& unit_test) = 0; + + // Fired after each iteration of tests finishes. + virtual void OnTestIterationEnd(const UnitTest& unit_test, + int iteration) = 0; + + // Fired after all test activities have ended. + virtual void OnTestProgramEnd(const UnitTest& unit_test) = 0; +}; + +// The convenience class for users who need to override just one or two +// methods and are not concerned that a possible change to a signature of +// the methods they override will not be caught during the build. For +// comments about each method please see the definition of TestEventListener +// above. +class EmptyTestEventListener : public TestEventListener { + public: + virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) {} + virtual void OnTestIterationStart(const UnitTest& /*unit_test*/, + int /*iteration*/) {} + virtual void OnEnvironmentsSetUpStart(const UnitTest& /*unit_test*/) {} + virtual void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) {} + virtual void OnTestCaseStart(const TestCase& /*test_case*/) {} + virtual void OnTestStart(const TestInfo& /*test_info*/) {} + virtual void OnTestPartResult(const TestPartResult& /*test_part_result*/) {} + virtual void OnTestEnd(const TestInfo& /*test_info*/) {} + virtual void OnTestCaseEnd(const TestCase& /*test_case*/) {} + virtual void OnEnvironmentsTearDownStart(const UnitTest& /*unit_test*/) {} + virtual void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) {} + virtual void OnTestIterationEnd(const UnitTest& /*unit_test*/, + int /*iteration*/) {} + virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) {} +}; + +// TestEventListeners lets users add listeners to track events in Google Test. +class GTEST_API_ TestEventListeners { + public: + TestEventListeners(); + ~TestEventListeners(); + + // Appends an event listener to the end of the list. Google Test assumes + // the ownership of the listener (i.e. it will delete the listener when + // the test program finishes). + void Append(TestEventListener* listener); + + // Removes the given event listener from the list and returns it. It then + // becomes the caller's responsibility to delete the listener. Returns + // NULL if the listener is not found in the list. + TestEventListener* Release(TestEventListener* listener); + + // Returns the standard listener responsible for the default console + // output. Can be removed from the listeners list to shut down default + // console output. Note that removing this object from the listener list + // with Release transfers its ownership to the caller and makes this + // function return NULL the next time. + TestEventListener* default_result_printer() const { + return default_result_printer_; + } + + // Returns the standard listener responsible for the default XML output + // controlled by the --gtest_output=xml flag. Can be removed from the + // listeners list by users who want to shut down the default XML output + // controlled by this flag and substitute it with custom one. Note that + // removing this object from the listener list with Release transfers its + // ownership to the caller and makes this function return NULL the next + // time. + TestEventListener* default_xml_generator() const { + return default_xml_generator_; + } + + private: + friend class TestCase; + friend class TestInfo; + friend class internal::DefaultGlobalTestPartResultReporter; + friend class internal::NoExecDeathTest; + friend class internal::TestEventListenersAccessor; + friend class internal::UnitTestImpl; + + // Returns repeater that broadcasts the TestEventListener events to all + // subscribers. + TestEventListener* repeater(); + + // Sets the default_result_printer attribute to the provided listener. + // The listener is also added to the listener list and previous + // default_result_printer is removed from it and deleted. The listener can + // also be NULL in which case it will not be added to the list. Does + // nothing if the previous and the current listener objects are the same. + void SetDefaultResultPrinter(TestEventListener* listener); + + // Sets the default_xml_generator attribute to the provided listener. The + // listener is also added to the listener list and previous + // default_xml_generator is removed from it and deleted. The listener can + // also be NULL in which case it will not be added to the list. Does + // nothing if the previous and the current listener objects are the same. + void SetDefaultXmlGenerator(TestEventListener* listener); + + // Controls whether events will be forwarded by the repeater to the + // listeners in the list. + bool EventForwardingEnabled() const; + void SuppressEventForwarding(); + + // The actual list of listeners. + internal::TestEventRepeater* repeater_; + // Listener responsible for the standard result output. + TestEventListener* default_result_printer_; + // Listener responsible for the creation of the XML output file. + TestEventListener* default_xml_generator_; + + // We disallow copying TestEventListeners. + GTEST_DISALLOW_COPY_AND_ASSIGN_(TestEventListeners); +}; + +// A UnitTest consists of a vector of TestCases. +// +// This is a singleton class. The only instance of UnitTest is +// created when UnitTest::GetInstance() is first called. This +// instance is never deleted. +// +// UnitTest is not copyable. +// +// This class is thread-safe as long as the methods are called +// according to their specification. +class GTEST_API_ UnitTest { + public: + // Gets the singleton UnitTest object. The first time this method + // is called, a UnitTest object is constructed and returned. + // Consecutive calls will return the same object. + static UnitTest* GetInstance(); + + // Runs all tests in this UnitTest object and prints the result. + // Returns 0 if successful, or 1 otherwise. + // + // This method can only be called from the main thread. + // + // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. + int Run() GTEST_MUST_USE_RESULT_; + + // Returns the working directory when the first TEST() or TEST_F() + // was executed. The UnitTest object owns the string. + const char* original_working_dir() const; + + // Returns the TestCase object for the test that's currently running, + // or NULL if no test is running. + const TestCase* current_test_case() const + GTEST_LOCK_EXCLUDED_(mutex_); + + // Returns the TestInfo object for the test that's currently running, + // or NULL if no test is running. + const TestInfo* current_test_info() const + GTEST_LOCK_EXCLUDED_(mutex_); + + // Returns the random seed used at the start of the current test run. + int random_seed() const; + +#if GTEST_HAS_PARAM_TEST + // Returns the ParameterizedTestCaseRegistry object used to keep track of + // value-parameterized tests and instantiate and register them. + // + // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. + internal::ParameterizedTestCaseRegistry& parameterized_test_registry() + GTEST_LOCK_EXCLUDED_(mutex_); +#endif // GTEST_HAS_PARAM_TEST + + // Gets the number of successful test cases. + int successful_test_case_count() const; + + // Gets the number of failed test cases. + int failed_test_case_count() const; + + // Gets the number of all test cases. + int total_test_case_count() const; + + // Gets the number of all test cases that contain at least one test + // that should run. + int test_case_to_run_count() const; + + // Gets the number of successful tests. + int successful_test_count() const; + + // Gets the number of failed tests. + int failed_test_count() const; + + // Gets the number of disabled tests. + int disabled_test_count() const; + + // Gets the number of all tests. + int total_test_count() const; + + // Gets the number of tests that should run. + int test_to_run_count() const; + + // Gets the time of the test program start, in ms from the start of the + // UNIX epoch. + TimeInMillis start_timestamp() const; + + // Gets the elapsed time, in milliseconds. + TimeInMillis elapsed_time() const; + + // Returns true iff the unit test passed (i.e. all test cases passed). + bool Passed() const; + + // Returns true iff the unit test failed (i.e. some test case failed + // or something outside of all tests failed). + bool Failed() const; + + // Gets the i-th test case among all the test cases. i can range from 0 to + // total_test_case_count() - 1. If i is not in that range, returns NULL. + const TestCase* GetTestCase(int i) const; + + // Returns the list of event listeners that can be used to track events + // inside Google Test. + TestEventListeners& listeners(); + + private: + // Registers and returns a global test environment. When a test + // program is run, all global test environments will be set-up in + // the order they were registered. After all tests in the program + // have finished, all global test environments will be torn-down in + // the *reverse* order they were registered. + // + // The UnitTest object takes ownership of the given environment. + // + // This method can only be called from the main thread. + Environment* AddEnvironment(Environment* env); + + // Adds a TestPartResult to the current TestResult object. All + // Google Test assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc) + // eventually call this to report their results. The user code + // should use the assertion macros instead of calling this directly. + void AddTestPartResult(TestPartResult::Type result_type, + const char* file_name, + int line_number, + const std::string& message, + const std::string& os_stack_trace) + GTEST_LOCK_EXCLUDED_(mutex_); + + // Adds a TestProperty to the current TestResult object. If the result already + // contains a property with the same key, the value will be updated. + void RecordPropertyForCurrentTest(const char* key, const char* value); + + // Gets the i-th test case among all the test cases. i can range from 0 to + // total_test_case_count() - 1. If i is not in that range, returns NULL. + TestCase* GetMutableTestCase(int i); + + // Accessors for the implementation object. + internal::UnitTestImpl* impl() { return impl_; } + const internal::UnitTestImpl* impl() const { return impl_; } + + // These classes and funcions are friends as they need to access private + // members of UnitTest. + friend class Test; + friend class internal::AssertHelper; + friend class internal::ScopedTrace; + friend Environment* AddGlobalTestEnvironment(Environment* env); + friend internal::UnitTestImpl* internal::GetUnitTestImpl(); + friend void internal::ReportFailureInUnknownLocation( + TestPartResult::Type result_type, + const std::string& message); + + // Creates an empty UnitTest. + UnitTest(); + + // D'tor + virtual ~UnitTest(); + + // Pushes a trace defined by SCOPED_TRACE() on to the per-thread + // Google Test trace stack. + void PushGTestTrace(const internal::TraceInfo& trace) + GTEST_LOCK_EXCLUDED_(mutex_); + + // Pops a trace from the per-thread Google Test trace stack. + void PopGTestTrace() + GTEST_LOCK_EXCLUDED_(mutex_); + + // Protects mutable state in *impl_. This is mutable as some const + // methods need to lock it too. + mutable internal::Mutex mutex_; + + // Opaque implementation object. This field is never changed once + // the object is constructed. We don't mark it as const here, as + // doing so will cause a warning in the constructor of UnitTest. + // Mutable state in *impl_ is protected by mutex_. + internal::UnitTestImpl* impl_; + + // We disallow copying UnitTest. + GTEST_DISALLOW_COPY_AND_ASSIGN_(UnitTest); +}; + +// A convenient wrapper for adding an environment for the test +// program. +// +// You should call this before RUN_ALL_TESTS() is called, probably in +// main(). If you use gtest_main, you need to call this before main() +// starts for it to take effect. For example, you can define a global +// variable like this: +// +// testing::Environment* const foo_env = +// testing::AddGlobalTestEnvironment(new FooEnvironment); +// +// However, we strongly recommend you to write your own main() and +// call AddGlobalTestEnvironment() there, as relying on initialization +// of global variables makes the code harder to read and may cause +// problems when you register multiple environments from different +// translation units and the environments have dependencies among them +// (remember that the compiler doesn't guarantee the order in which +// global variables from different translation units are initialized). +inline Environment* AddGlobalTestEnvironment(Environment* env) { + return UnitTest::GetInstance()->AddEnvironment(env); +} + +// Initializes Google Test. This must be called before calling +// RUN_ALL_TESTS(). In particular, it parses a command line for the +// flags that Google Test recognizes. Whenever a Google Test flag is +// seen, it is removed from argv, and *argc is decremented. +// +// No value is returned. Instead, the Google Test flag variables are +// updated. +// +// Calling the function for the second time has no user-visible effect. +GTEST_API_ void InitGoogleTest(int* argc, char** argv); + +// This overloaded version can be used in Windows programs compiled in +// UNICODE mode. +GTEST_API_ void InitGoogleTest(int* argc, wchar_t** argv); + +namespace internal { + +// FormatForComparison::Format(value) formats a +// value of type ToPrint that is an operand of a comparison assertion +// (e.g. ASSERT_EQ). OtherOperand is the type of the other operand in +// the comparison, and is used to help determine the best way to +// format the value. In particular, when the value is a C string +// (char pointer) and the other operand is an STL string object, we +// want to format the C string as a string, since we know it is +// compared by value with the string object. If the value is a char +// pointer but the other operand is not an STL string object, we don't +// know whether the pointer is supposed to point to a NUL-terminated +// string, and thus want to print it as a pointer to be safe. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. + +// The default case. +template +class FormatForComparison { + public: + static ::std::string Format(const ToPrint& value) { + return ::testing::PrintToString(value); + } +}; + +// Array. +template +class FormatForComparison { + public: + static ::std::string Format(const ToPrint* value) { + return FormatForComparison::Format(value); + } +}; + +// By default, print C string as pointers to be safe, as we don't know +// whether they actually point to a NUL-terminated string. + +#define GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(CharType) \ + template \ + class FormatForComparison { \ + public: \ + static ::std::string Format(CharType* value) { \ + return ::testing::PrintToString(static_cast(value)); \ + } \ + } + +GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(char); +GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(const char); +GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(wchar_t); +GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(const wchar_t); + +#undef GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_ + +// If a C string is compared with an STL string object, we know it's meant +// to point to a NUL-terminated string, and thus can print it as a string. + +#define GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(CharType, OtherStringType) \ + template <> \ + class FormatForComparison { \ + public: \ + static ::std::string Format(CharType* value) { \ + return ::testing::PrintToString(value); \ + } \ + } + +GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(char, ::std::string); +GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const char, ::std::string); + +#if GTEST_HAS_GLOBAL_STRING +GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(char, ::string); +GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const char, ::string); +#endif + +#if GTEST_HAS_GLOBAL_WSTRING +GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(wchar_t, ::wstring); +GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const wchar_t, ::wstring); +#endif + +#if GTEST_HAS_STD_WSTRING +GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(wchar_t, ::std::wstring); +GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const wchar_t, ::std::wstring); +#endif + +#undef GTEST_IMPL_FORMAT_C_STRING_AS_STRING_ + +// Formats a comparison assertion (e.g. ASSERT_EQ, EXPECT_LT, and etc) +// operand to be used in a failure message. The type (but not value) +// of the other operand may affect the format. This allows us to +// print a char* as a raw pointer when it is compared against another +// char* or void*, and print it as a C string when it is compared +// against an std::string object, for example. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +template +std::string FormatForComparisonFailureMessage( + const T1& value, const T2& /* other_operand */) { + return FormatForComparison::Format(value); +} + +// The helper function for {ASSERT|EXPECT}_EQ. +template +AssertionResult CmpHelperEQ(const char* expected_expression, + const char* actual_expression, + const T1& expected, + const T2& actual) { +#ifdef _MSC_VER +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4389) // Temporarily disables warning on + // signed/unsigned mismatch. +#endif + + if (expected == actual) { + return AssertionSuccess(); + } + +#ifdef _MSC_VER +# pragma warning(pop) // Restores the warning state. +#endif + + return EqFailure(expected_expression, + actual_expression, + FormatForComparisonFailureMessage(expected, actual), + FormatForComparisonFailureMessage(actual, expected), + false); +} + +// With this overloaded version, we allow anonymous enums to be used +// in {ASSERT|EXPECT}_EQ when compiled with gcc 4, as anonymous enums +// can be implicitly cast to BiggestInt. +GTEST_API_ AssertionResult CmpHelperEQ(const char* expected_expression, + const char* actual_expression, + BiggestInt expected, + BiggestInt actual); + +// The helper class for {ASSERT|EXPECT}_EQ. The template argument +// lhs_is_null_literal is true iff the first argument to ASSERT_EQ() +// is a null pointer literal. The following default implementation is +// for lhs_is_null_literal being false. +template +class EqHelper { + public: + // This templatized version is for the general case. + template + static AssertionResult Compare(const char* expected_expression, + const char* actual_expression, + const T1& expected, + const T2& actual) { + return CmpHelperEQ(expected_expression, actual_expression, expected, + actual); + } + + // With this overloaded version, we allow anonymous enums to be used + // in {ASSERT|EXPECT}_EQ when compiled with gcc 4, as anonymous + // enums can be implicitly cast to BiggestInt. + // + // Even though its body looks the same as the above version, we + // cannot merge the two, as it will make anonymous enums unhappy. + static AssertionResult Compare(const char* expected_expression, + const char* actual_expression, + BiggestInt expected, + BiggestInt actual) { + return CmpHelperEQ(expected_expression, actual_expression, expected, + actual); + } +}; + +// This specialization is used when the first argument to ASSERT_EQ() +// is a null pointer literal, like NULL, false, or 0. +template <> +class EqHelper { + public: + // We define two overloaded versions of Compare(). The first + // version will be picked when the second argument to ASSERT_EQ() is + // NOT a pointer, e.g. ASSERT_EQ(0, AnIntFunction()) or + // EXPECT_EQ(false, a_bool). + template + static AssertionResult Compare( + const char* expected_expression, + const char* actual_expression, + const T1& expected, + const T2& actual, + // The following line prevents this overload from being considered if T2 + // is not a pointer type. We need this because ASSERT_EQ(NULL, my_ptr) + // expands to Compare("", "", NULL, my_ptr), which requires a conversion + // to match the Secret* in the other overload, which would otherwise make + // this template match better. + typename EnableIf::value>::type* = 0) { + return CmpHelperEQ(expected_expression, actual_expression, expected, + actual); + } + + // This version will be picked when the second argument to ASSERT_EQ() is a + // pointer, e.g. ASSERT_EQ(NULL, a_pointer). + template + static AssertionResult Compare( + const char* expected_expression, + const char* actual_expression, + // We used to have a second template parameter instead of Secret*. That + // template parameter would deduce to 'long', making this a better match + // than the first overload even without the first overload's EnableIf. + // Unfortunately, gcc with -Wconversion-null warns when "passing NULL to + // non-pointer argument" (even a deduced integral argument), so the old + // implementation caused warnings in user code. + Secret* /* expected (NULL) */, + T* actual) { + // We already know that 'expected' is a null pointer. + return CmpHelperEQ(expected_expression, actual_expression, + static_cast(NULL), actual); + } +}; + +// A macro for implementing the helper functions needed to implement +// ASSERT_?? and EXPECT_??. It is here just to avoid copy-and-paste +// of similar code. +// +// For each templatized helper function, we also define an overloaded +// version for BiggestInt in order to reduce code bloat and allow +// anonymous enums to be used with {ASSERT|EXPECT}_?? when compiled +// with gcc 4. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +#define GTEST_IMPL_CMP_HELPER_(op_name, op)\ +template \ +AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \ + const T1& val1, const T2& val2) {\ + if (val1 op val2) {\ + return AssertionSuccess();\ + } else {\ + return AssertionFailure() \ + << "Expected: (" << expr1 << ") " #op " (" << expr2\ + << "), actual: " << FormatForComparisonFailureMessage(val1, val2)\ + << " vs " << FormatForComparisonFailureMessage(val2, val1);\ + }\ +}\ +GTEST_API_ AssertionResult CmpHelper##op_name(\ + const char* expr1, const char* expr2, BiggestInt val1, BiggestInt val2) + +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. + +// Implements the helper function for {ASSERT|EXPECT}_NE +GTEST_IMPL_CMP_HELPER_(NE, !=); +// Implements the helper function for {ASSERT|EXPECT}_LE +GTEST_IMPL_CMP_HELPER_(LE, <=); +// Implements the helper function for {ASSERT|EXPECT}_LT +GTEST_IMPL_CMP_HELPER_(LT, <); +// Implements the helper function for {ASSERT|EXPECT}_GE +GTEST_IMPL_CMP_HELPER_(GE, >=); +// Implements the helper function for {ASSERT|EXPECT}_GT +GTEST_IMPL_CMP_HELPER_(GT, >); + +#undef GTEST_IMPL_CMP_HELPER_ + +// The helper function for {ASSERT|EXPECT}_STREQ. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +GTEST_API_ AssertionResult CmpHelperSTREQ(const char* expected_expression, + const char* actual_expression, + const char* expected, + const char* actual); + +// The helper function for {ASSERT|EXPECT}_STRCASEEQ. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* expected_expression, + const char* actual_expression, + const char* expected, + const char* actual); + +// The helper function for {ASSERT|EXPECT}_STRNE. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, + const char* s2_expression, + const char* s1, + const char* s2); + +// The helper function for {ASSERT|EXPECT}_STRCASENE. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, + const char* s2_expression, + const char* s1, + const char* s2); + + +// Helper function for *_STREQ on wide strings. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +GTEST_API_ AssertionResult CmpHelperSTREQ(const char* expected_expression, + const char* actual_expression, + const wchar_t* expected, + const wchar_t* actual); + +// Helper function for *_STRNE on wide strings. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, + const char* s2_expression, + const wchar_t* s1, + const wchar_t* s2); + +} // namespace internal + +// IsSubstring() and IsNotSubstring() are intended to be used as the +// first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by +// themselves. They check whether needle is a substring of haystack +// (NULL is considered a substring of itself only), and return an +// appropriate error message when they fail. +// +// The {needle,haystack}_expr arguments are the stringified +// expressions that generated the two real arguments. +GTEST_API_ AssertionResult IsSubstring( + const char* needle_expr, const char* haystack_expr, + const char* needle, const char* haystack); +GTEST_API_ AssertionResult IsSubstring( + const char* needle_expr, const char* haystack_expr, + const wchar_t* needle, const wchar_t* haystack); +GTEST_API_ AssertionResult IsNotSubstring( + const char* needle_expr, const char* haystack_expr, + const char* needle, const char* haystack); +GTEST_API_ AssertionResult IsNotSubstring( + const char* needle_expr, const char* haystack_expr, + const wchar_t* needle, const wchar_t* haystack); +GTEST_API_ AssertionResult IsSubstring( + const char* needle_expr, const char* haystack_expr, + const ::std::string& needle, const ::std::string& haystack); +GTEST_API_ AssertionResult IsNotSubstring( + const char* needle_expr, const char* haystack_expr, + const ::std::string& needle, const ::std::string& haystack); + +#if GTEST_HAS_STD_WSTRING +GTEST_API_ AssertionResult IsSubstring( + const char* needle_expr, const char* haystack_expr, + const ::std::wstring& needle, const ::std::wstring& haystack); +GTEST_API_ AssertionResult IsNotSubstring( + const char* needle_expr, const char* haystack_expr, + const ::std::wstring& needle, const ::std::wstring& haystack); +#endif // GTEST_HAS_STD_WSTRING + +namespace internal { + +// Helper template function for comparing floating-points. +// +// Template parameter: +// +// RawType: the raw floating-point type (either float or double) +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +template +AssertionResult CmpHelperFloatingPointEQ(const char* expected_expression, + const char* actual_expression, + RawType expected, + RawType actual) { + const FloatingPoint lhs(expected), rhs(actual); + + if (lhs.AlmostEquals(rhs)) { + return AssertionSuccess(); + } + + ::std::stringstream expected_ss; + expected_ss << std::setprecision(std::numeric_limits::digits10 + 2) + << expected; + + ::std::stringstream actual_ss; + actual_ss << std::setprecision(std::numeric_limits::digits10 + 2) + << actual; + + return EqFailure(expected_expression, + actual_expression, + StringStreamToString(&expected_ss), + StringStreamToString(&actual_ss), + false); +} + +// Helper function for implementing ASSERT_NEAR. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +GTEST_API_ AssertionResult DoubleNearPredFormat(const char* expr1, + const char* expr2, + const char* abs_error_expr, + double val1, + double val2, + double abs_error); + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// A class that enables one to stream messages to assertion macros +class GTEST_API_ AssertHelper { + public: + // Constructor. + AssertHelper(TestPartResult::Type type, + const char* file, + int line, + const char* message); + ~AssertHelper(); + + // Message assignment is a semantic trick to enable assertion + // streaming; see the GTEST_MESSAGE_ macro below. + void operator=(const Message& message) const; + + private: + // We put our data in a struct so that the size of the AssertHelper class can + // be as small as possible. This is important because gcc is incapable of + // re-using stack space even for temporary variables, so every EXPECT_EQ + // reserves stack space for another AssertHelper. + struct AssertHelperData { + AssertHelperData(TestPartResult::Type t, + const char* srcfile, + int line_num, + const char* msg) + : type(t), file(srcfile), line(line_num), message(msg) { } + + TestPartResult::Type const type; + const char* const file; + int const line; + std::string const message; + + private: + GTEST_DISALLOW_COPY_AND_ASSIGN_(AssertHelperData); + }; + + AssertHelperData* const data_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(AssertHelper); +}; + +} // namespace internal + +#if GTEST_HAS_PARAM_TEST +// The pure interface class that all value-parameterized tests inherit from. +// A value-parameterized class must inherit from both ::testing::Test and +// ::testing::WithParamInterface. In most cases that just means inheriting +// from ::testing::TestWithParam, but more complicated test hierarchies +// may need to inherit from Test and WithParamInterface at different levels. +// +// This interface has support for accessing the test parameter value via +// the GetParam() method. +// +// Use it with one of the parameter generator defining functions, like Range(), +// Values(), ValuesIn(), Bool(), and Combine(). +// +// class FooTest : public ::testing::TestWithParam { +// protected: +// FooTest() { +// // Can use GetParam() here. +// } +// virtual ~FooTest() { +// // Can use GetParam() here. +// } +// virtual void SetUp() { +// // Can use GetParam() here. +// } +// virtual void TearDown { +// // Can use GetParam() here. +// } +// }; +// TEST_P(FooTest, DoesBar) { +// // Can use GetParam() method here. +// Foo foo; +// ASSERT_TRUE(foo.DoesBar(GetParam())); +// } +// INSTANTIATE_TEST_CASE_P(OneToTenRange, FooTest, ::testing::Range(1, 10)); + +template +class WithParamInterface { + public: + typedef T ParamType; + virtual ~WithParamInterface() {} + + // The current parameter value. Is also available in the test fixture's + // constructor. This member function is non-static, even though it only + // references static data, to reduce the opportunity for incorrect uses + // like writing 'WithParamInterface::GetParam()' for a test that + // uses a fixture whose parameter type is int. + const ParamType& GetParam() const { return *parameter_; } + + private: + // Sets parameter value. The caller is responsible for making sure the value + // remains alive and unchanged throughout the current test. + static void SetParam(const ParamType* parameter) { + parameter_ = parameter; + } + + // Static value used for accessing parameter during a test lifetime. + static const ParamType* parameter_; + + // TestClass must be a subclass of WithParamInterface and Test. + template friend class internal::ParameterizedTestFactory; +}; + +template +const T* WithParamInterface::parameter_ = NULL; + +// Most value-parameterized classes can ignore the existence of +// WithParamInterface, and can just inherit from ::testing::TestWithParam. + +template +class TestWithParam : public Test, public WithParamInterface { +}; + +#endif // GTEST_HAS_PARAM_TEST + +// Macros for indicating success/failure in test code. + +// ADD_FAILURE unconditionally adds a failure to the current test. +// SUCCEED generates a success - it doesn't automatically make the +// current test successful, as a test is only successful when it has +// no failure. +// +// EXPECT_* verifies that a certain condition is satisfied. If not, +// it behaves like ADD_FAILURE. In particular: +// +// EXPECT_TRUE verifies that a Boolean condition is true. +// EXPECT_FALSE verifies that a Boolean condition is false. +// +// FAIL and ASSERT_* are similar to ADD_FAILURE and EXPECT_*, except +// that they will also abort the current function on failure. People +// usually want the fail-fast behavior of FAIL and ASSERT_*, but those +// writing data-driven tests often find themselves using ADD_FAILURE +// and EXPECT_* more. + +// Generates a nonfatal failure with a generic message. +#define ADD_FAILURE() GTEST_NONFATAL_FAILURE_("Failed") + +// Generates a nonfatal failure at the given source file location with +// a generic message. +#define ADD_FAILURE_AT(file, line) \ + GTEST_MESSAGE_AT_(file, line, "Failed", \ + ::testing::TestPartResult::kNonFatalFailure) + +// Generates a fatal failure with a generic message. +#define GTEST_FAIL() GTEST_FATAL_FAILURE_("Failed") + +// Define this macro to 1 to omit the definition of FAIL(), which is a +// generic name and clashes with some other libraries. +#if !GTEST_DONT_DEFINE_FAIL +# define FAIL() GTEST_FAIL() +#endif + +// Generates a success with a generic message. +#define GTEST_SUCCEED() GTEST_SUCCESS_("Succeeded") + +// Define this macro to 1 to omit the definition of SUCCEED(), which +// is a generic name and clashes with some other libraries. +#if !GTEST_DONT_DEFINE_SUCCEED +# define SUCCEED() GTEST_SUCCEED() +#endif + +// Macros for testing exceptions. +// +// * {ASSERT|EXPECT}_THROW(statement, expected_exception): +// Tests that the statement throws the expected exception. +// * {ASSERT|EXPECT}_NO_THROW(statement): +// Tests that the statement doesn't throw any exception. +// * {ASSERT|EXPECT}_ANY_THROW(statement): +// Tests that the statement throws an exception. + +#define EXPECT_THROW(statement, expected_exception) \ + GTEST_TEST_THROW_(statement, expected_exception, GTEST_NONFATAL_FAILURE_) +#define EXPECT_NO_THROW(statement) \ + GTEST_TEST_NO_THROW_(statement, GTEST_NONFATAL_FAILURE_) +#define EXPECT_ANY_THROW(statement) \ + GTEST_TEST_ANY_THROW_(statement, GTEST_NONFATAL_FAILURE_) +#define ASSERT_THROW(statement, expected_exception) \ + GTEST_TEST_THROW_(statement, expected_exception, GTEST_FATAL_FAILURE_) +#define ASSERT_NO_THROW(statement) \ + GTEST_TEST_NO_THROW_(statement, GTEST_FATAL_FAILURE_) +#define ASSERT_ANY_THROW(statement) \ + GTEST_TEST_ANY_THROW_(statement, GTEST_FATAL_FAILURE_) + +// Boolean assertions. Condition can be either a Boolean expression or an +// AssertionResult. For more information on how to use AssertionResult with +// these macros see comments on that class. +#define EXPECT_TRUE(condition) \ + GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \ + GTEST_NONFATAL_FAILURE_) +#define EXPECT_FALSE(condition) \ + GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \ + GTEST_NONFATAL_FAILURE_) +#define ASSERT_TRUE(condition) \ + GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \ + GTEST_FATAL_FAILURE_) +#define ASSERT_FALSE(condition) \ + GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \ + GTEST_FATAL_FAILURE_) + +// Includes the auto-generated header that implements a family of +// generic predicate assertion macros. +// Copyright 2006, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// This file is AUTOMATICALLY GENERATED on 10/31/2011 by command +// 'gen_gtest_pred_impl.py 5'. DO NOT EDIT BY HAND! +// +// Implements a family of generic predicate assertion macros. + +#ifndef GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_ +#define GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_ + +// Makes sure this header is not included before gtest.h. +#ifndef GTEST_INCLUDE_GTEST_GTEST_H_ +# error Do not include gtest_pred_impl.h directly. Include gtest.h instead. +#endif // GTEST_INCLUDE_GTEST_GTEST_H_ + +// This header implements a family of generic predicate assertion +// macros: +// +// ASSERT_PRED_FORMAT1(pred_format, v1) +// ASSERT_PRED_FORMAT2(pred_format, v1, v2) +// ... +// +// where pred_format is a function or functor that takes n (in the +// case of ASSERT_PRED_FORMATn) values and their source expression +// text, and returns a testing::AssertionResult. See the definition +// of ASSERT_EQ in gtest.h for an example. +// +// If you don't care about formatting, you can use the more +// restrictive version: +// +// ASSERT_PRED1(pred, v1) +// ASSERT_PRED2(pred, v1, v2) +// ... +// +// where pred is an n-ary function or functor that returns bool, +// and the values v1, v2, ..., must support the << operator for +// streaming to std::ostream. +// +// We also define the EXPECT_* variations. +// +// For now we only support predicates whose arity is at most 5. +// Please email googletestframework@googlegroups.com if you need +// support for higher arities. + +// GTEST_ASSERT_ is the basic statement to which all of the assertions +// in this file reduce. Don't use this in your code. + +#define GTEST_ASSERT_(expression, on_failure) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (const ::testing::AssertionResult gtest_ar = (expression)) \ + ; \ + else \ + on_failure(gtest_ar.failure_message()) + + +// Helper function for implementing {EXPECT|ASSERT}_PRED1. Don't use +// this in your code. +template +AssertionResult AssertPred1Helper(const char* pred_text, + const char* e1, + Pred pred, + const T1& v1) { + if (pred(v1)) return AssertionSuccess(); + + return AssertionFailure() << pred_text << "(" + << e1 << ") evaluates to false, where" + << "\n" << e1 << " evaluates to " << v1; +} + +// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT1. +// Don't use this in your code. +#define GTEST_PRED_FORMAT1_(pred_format, v1, on_failure)\ + GTEST_ASSERT_(pred_format(#v1, v1), \ + on_failure) + +// Internal macro for implementing {EXPECT|ASSERT}_PRED1. Don't use +// this in your code. +#define GTEST_PRED1_(pred, v1, on_failure)\ + GTEST_ASSERT_(::testing::AssertPred1Helper(#pred, \ + #v1, \ + pred, \ + v1), on_failure) + +// Unary predicate assertion macros. +#define EXPECT_PRED_FORMAT1(pred_format, v1) \ + GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_NONFATAL_FAILURE_) +#define EXPECT_PRED1(pred, v1) \ + GTEST_PRED1_(pred, v1, GTEST_NONFATAL_FAILURE_) +#define ASSERT_PRED_FORMAT1(pred_format, v1) \ + GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_FATAL_FAILURE_) +#define ASSERT_PRED1(pred, v1) \ + GTEST_PRED1_(pred, v1, GTEST_FATAL_FAILURE_) + + + +// Helper function for implementing {EXPECT|ASSERT}_PRED2. Don't use +// this in your code. +template +AssertionResult AssertPred2Helper(const char* pred_text, + const char* e1, + const char* e2, + Pred pred, + const T1& v1, + const T2& v2) { + if (pred(v1, v2)) return AssertionSuccess(); + + return AssertionFailure() << pred_text << "(" + << e1 << ", " + << e2 << ") evaluates to false, where" + << "\n" << e1 << " evaluates to " << v1 + << "\n" << e2 << " evaluates to " << v2; +} + +// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT2. +// Don't use this in your code. +#define GTEST_PRED_FORMAT2_(pred_format, v1, v2, on_failure)\ + GTEST_ASSERT_(pred_format(#v1, #v2, v1, v2), \ + on_failure) + +// Internal macro for implementing {EXPECT|ASSERT}_PRED2. Don't use +// this in your code. +#define GTEST_PRED2_(pred, v1, v2, on_failure)\ + GTEST_ASSERT_(::testing::AssertPred2Helper(#pred, \ + #v1, \ + #v2, \ + pred, \ + v1, \ + v2), on_failure) + +// Binary predicate assertion macros. +#define EXPECT_PRED_FORMAT2(pred_format, v1, v2) \ + GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_NONFATAL_FAILURE_) +#define EXPECT_PRED2(pred, v1, v2) \ + GTEST_PRED2_(pred, v1, v2, GTEST_NONFATAL_FAILURE_) +#define ASSERT_PRED_FORMAT2(pred_format, v1, v2) \ + GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_FATAL_FAILURE_) +#define ASSERT_PRED2(pred, v1, v2) \ + GTEST_PRED2_(pred, v1, v2, GTEST_FATAL_FAILURE_) + + + +// Helper function for implementing {EXPECT|ASSERT}_PRED3. Don't use +// this in your code. +template +AssertionResult AssertPred3Helper(const char* pred_text, + const char* e1, + const char* e2, + const char* e3, + Pred pred, + const T1& v1, + const T2& v2, + const T3& v3) { + if (pred(v1, v2, v3)) return AssertionSuccess(); + + return AssertionFailure() << pred_text << "(" + << e1 << ", " + << e2 << ", " + << e3 << ") evaluates to false, where" + << "\n" << e1 << " evaluates to " << v1 + << "\n" << e2 << " evaluates to " << v2 + << "\n" << e3 << " evaluates to " << v3; +} + +// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT3. +// Don't use this in your code. +#define GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, on_failure)\ + GTEST_ASSERT_(pred_format(#v1, #v2, #v3, v1, v2, v3), \ + on_failure) + +// Internal macro for implementing {EXPECT|ASSERT}_PRED3. Don't use +// this in your code. +#define GTEST_PRED3_(pred, v1, v2, v3, on_failure)\ + GTEST_ASSERT_(::testing::AssertPred3Helper(#pred, \ + #v1, \ + #v2, \ + #v3, \ + pred, \ + v1, \ + v2, \ + v3), on_failure) + +// Ternary predicate assertion macros. +#define EXPECT_PRED_FORMAT3(pred_format, v1, v2, v3) \ + GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_NONFATAL_FAILURE_) +#define EXPECT_PRED3(pred, v1, v2, v3) \ + GTEST_PRED3_(pred, v1, v2, v3, GTEST_NONFATAL_FAILURE_) +#define ASSERT_PRED_FORMAT3(pred_format, v1, v2, v3) \ + GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_FATAL_FAILURE_) +#define ASSERT_PRED3(pred, v1, v2, v3) \ + GTEST_PRED3_(pred, v1, v2, v3, GTEST_FATAL_FAILURE_) + + + +// Helper function for implementing {EXPECT|ASSERT}_PRED4. Don't use +// this in your code. +template +AssertionResult AssertPred4Helper(const char* pred_text, + const char* e1, + const char* e2, + const char* e3, + const char* e4, + Pred pred, + const T1& v1, + const T2& v2, + const T3& v3, + const T4& v4) { + if (pred(v1, v2, v3, v4)) return AssertionSuccess(); + + return AssertionFailure() << pred_text << "(" + << e1 << ", " + << e2 << ", " + << e3 << ", " + << e4 << ") evaluates to false, where" + << "\n" << e1 << " evaluates to " << v1 + << "\n" << e2 << " evaluates to " << v2 + << "\n" << e3 << " evaluates to " << v3 + << "\n" << e4 << " evaluates to " << v4; +} + +// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT4. +// Don't use this in your code. +#define GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, on_failure)\ + GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, v1, v2, v3, v4), \ + on_failure) + +// Internal macro for implementing {EXPECT|ASSERT}_PRED4. Don't use +// this in your code. +#define GTEST_PRED4_(pred, v1, v2, v3, v4, on_failure)\ + GTEST_ASSERT_(::testing::AssertPred4Helper(#pred, \ + #v1, \ + #v2, \ + #v3, \ + #v4, \ + pred, \ + v1, \ + v2, \ + v3, \ + v4), on_failure) + +// 4-ary predicate assertion macros. +#define EXPECT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \ + GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_) +#define EXPECT_PRED4(pred, v1, v2, v3, v4) \ + GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_) +#define ASSERT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \ + GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_FATAL_FAILURE_) +#define ASSERT_PRED4(pred, v1, v2, v3, v4) \ + GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_FATAL_FAILURE_) + + + +// Helper function for implementing {EXPECT|ASSERT}_PRED5. Don't use +// this in your code. +template +AssertionResult AssertPred5Helper(const char* pred_text, + const char* e1, + const char* e2, + const char* e3, + const char* e4, + const char* e5, + Pred pred, + const T1& v1, + const T2& v2, + const T3& v3, + const T4& v4, + const T5& v5) { + if (pred(v1, v2, v3, v4, v5)) return AssertionSuccess(); + + return AssertionFailure() << pred_text << "(" + << e1 << ", " + << e2 << ", " + << e3 << ", " + << e4 << ", " + << e5 << ") evaluates to false, where" + << "\n" << e1 << " evaluates to " << v1 + << "\n" << e2 << " evaluates to " << v2 + << "\n" << e3 << " evaluates to " << v3 + << "\n" << e4 << " evaluates to " << v4 + << "\n" << e5 << " evaluates to " << v5; +} + +// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT5. +// Don't use this in your code. +#define GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, on_failure)\ + GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, #v5, v1, v2, v3, v4, v5), \ + on_failure) + +// Internal macro for implementing {EXPECT|ASSERT}_PRED5. Don't use +// this in your code. +#define GTEST_PRED5_(pred, v1, v2, v3, v4, v5, on_failure)\ + GTEST_ASSERT_(::testing::AssertPred5Helper(#pred, \ + #v1, \ + #v2, \ + #v3, \ + #v4, \ + #v5, \ + pred, \ + v1, \ + v2, \ + v3, \ + v4, \ + v5), on_failure) + +// 5-ary predicate assertion macros. +#define EXPECT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \ + GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_) +#define EXPECT_PRED5(pred, v1, v2, v3, v4, v5) \ + GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_) +#define ASSERT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \ + GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_) +#define ASSERT_PRED5(pred, v1, v2, v3, v4, v5) \ + GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_) + + + +#endif // GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_ + +// Macros for testing equalities and inequalities. +// +// * {ASSERT|EXPECT}_EQ(expected, actual): Tests that expected == actual +// * {ASSERT|EXPECT}_NE(v1, v2): Tests that v1 != v2 +// * {ASSERT|EXPECT}_LT(v1, v2): Tests that v1 < v2 +// * {ASSERT|EXPECT}_LE(v1, v2): Tests that v1 <= v2 +// * {ASSERT|EXPECT}_GT(v1, v2): Tests that v1 > v2 +// * {ASSERT|EXPECT}_GE(v1, v2): Tests that v1 >= v2 +// +// When they are not, Google Test prints both the tested expressions and +// their actual values. The values must be compatible built-in types, +// or you will get a compiler error. By "compatible" we mean that the +// values can be compared by the respective operator. +// +// Note: +// +// 1. It is possible to make a user-defined type work with +// {ASSERT|EXPECT}_??(), but that requires overloading the +// comparison operators and is thus discouraged by the Google C++ +// Usage Guide. Therefore, you are advised to use the +// {ASSERT|EXPECT}_TRUE() macro to assert that two objects are +// equal. +// +// 2. The {ASSERT|EXPECT}_??() macros do pointer comparisons on +// pointers (in particular, C strings). Therefore, if you use it +// with two C strings, you are testing how their locations in memory +// are related, not how their content is related. To compare two C +// strings by content, use {ASSERT|EXPECT}_STR*(). +// +// 3. {ASSERT|EXPECT}_EQ(expected, actual) is preferred to +// {ASSERT|EXPECT}_TRUE(expected == actual), as the former tells you +// what the actual value is when it fails, and similarly for the +// other comparisons. +// +// 4. Do not depend on the order in which {ASSERT|EXPECT}_??() +// evaluate their arguments, which is undefined. +// +// 5. These macros evaluate their arguments exactly once. +// +// Examples: +// +// EXPECT_NE(5, Foo()); +// EXPECT_EQ(NULL, a_pointer); +// ASSERT_LT(i, array_size); +// ASSERT_GT(records.size(), 0) << "There is no record left."; + +#define EXPECT_EQ(expected, actual) \ + EXPECT_PRED_FORMAT2(::testing::internal:: \ + EqHelper::Compare, \ + expected, actual) +#define EXPECT_NE(expected, actual) \ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperNE, expected, actual) +#define EXPECT_LE(val1, val2) \ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2) +#define EXPECT_LT(val1, val2) \ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2) +#define EXPECT_GE(val1, val2) \ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2) +#define EXPECT_GT(val1, val2) \ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2) + +#define GTEST_ASSERT_EQ(expected, actual) \ + ASSERT_PRED_FORMAT2(::testing::internal:: \ + EqHelper::Compare, \ + expected, actual) +#define GTEST_ASSERT_NE(val1, val2) \ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2) +#define GTEST_ASSERT_LE(val1, val2) \ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2) +#define GTEST_ASSERT_LT(val1, val2) \ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2) +#define GTEST_ASSERT_GE(val1, val2) \ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2) +#define GTEST_ASSERT_GT(val1, val2) \ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2) + +// Define macro GTEST_DONT_DEFINE_ASSERT_XY to 1 to omit the definition of +// ASSERT_XY(), which clashes with some users' own code. + +#if !GTEST_DONT_DEFINE_ASSERT_EQ +# define ASSERT_EQ(val1, val2) GTEST_ASSERT_EQ(val1, val2) +#endif + +#if !GTEST_DONT_DEFINE_ASSERT_NE +# define ASSERT_NE(val1, val2) GTEST_ASSERT_NE(val1, val2) +#endif + +#if !GTEST_DONT_DEFINE_ASSERT_LE +# define ASSERT_LE(val1, val2) GTEST_ASSERT_LE(val1, val2) +#endif + +#if !GTEST_DONT_DEFINE_ASSERT_LT +# define ASSERT_LT(val1, val2) GTEST_ASSERT_LT(val1, val2) +#endif + +#if !GTEST_DONT_DEFINE_ASSERT_GE +# define ASSERT_GE(val1, val2) GTEST_ASSERT_GE(val1, val2) +#endif + +#if !GTEST_DONT_DEFINE_ASSERT_GT +# define ASSERT_GT(val1, val2) GTEST_ASSERT_GT(val1, val2) +#endif + +// C-string Comparisons. All tests treat NULL and any non-NULL string +// as different. Two NULLs are equal. +// +// * {ASSERT|EXPECT}_STREQ(s1, s2): Tests that s1 == s2 +// * {ASSERT|EXPECT}_STRNE(s1, s2): Tests that s1 != s2 +// * {ASSERT|EXPECT}_STRCASEEQ(s1, s2): Tests that s1 == s2, ignoring case +// * {ASSERT|EXPECT}_STRCASENE(s1, s2): Tests that s1 != s2, ignoring case +// +// For wide or narrow string objects, you can use the +// {ASSERT|EXPECT}_??() macros. +// +// Don't depend on the order in which the arguments are evaluated, +// which is undefined. +// +// These macros evaluate their arguments exactly once. + +#define EXPECT_STREQ(expected, actual) \ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, expected, actual) +#define EXPECT_STRNE(s1, s2) \ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2) +#define EXPECT_STRCASEEQ(expected, actual) \ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, expected, actual) +#define EXPECT_STRCASENE(s1, s2)\ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2) + +#define ASSERT_STREQ(expected, actual) \ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, expected, actual) +#define ASSERT_STRNE(s1, s2) \ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2) +#define ASSERT_STRCASEEQ(expected, actual) \ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, expected, actual) +#define ASSERT_STRCASENE(s1, s2)\ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2) + +// Macros for comparing floating-point numbers. +// +// * {ASSERT|EXPECT}_FLOAT_EQ(expected, actual): +// Tests that two float values are almost equal. +// * {ASSERT|EXPECT}_DOUBLE_EQ(expected, actual): +// Tests that two double values are almost equal. +// * {ASSERT|EXPECT}_NEAR(v1, v2, abs_error): +// Tests that v1 and v2 are within the given distance to each other. +// +// Google Test uses ULP-based comparison to automatically pick a default +// error bound that is appropriate for the operands. See the +// FloatingPoint template class in gtest-internal.h if you are +// interested in the implementation details. + +#define EXPECT_FLOAT_EQ(expected, actual)\ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ, \ + expected, actual) + +#define EXPECT_DOUBLE_EQ(expected, actual)\ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ, \ + expected, actual) + +#define ASSERT_FLOAT_EQ(expected, actual)\ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ, \ + expected, actual) + +#define ASSERT_DOUBLE_EQ(expected, actual)\ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ, \ + expected, actual) + +#define EXPECT_NEAR(val1, val2, abs_error)\ + EXPECT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, \ + val1, val2, abs_error) + +#define ASSERT_NEAR(val1, val2, abs_error)\ + ASSERT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, \ + val1, val2, abs_error) + +// These predicate format functions work on floating-point values, and +// can be used in {ASSERT|EXPECT}_PRED_FORMAT2*(), e.g. +// +// EXPECT_PRED_FORMAT2(testing::DoubleLE, Foo(), 5.0); + +// Asserts that val1 is less than, or almost equal to, val2. Fails +// otherwise. In particular, it fails if either val1 or val2 is NaN. +GTEST_API_ AssertionResult FloatLE(const char* expr1, const char* expr2, + float val1, float val2); +GTEST_API_ AssertionResult DoubleLE(const char* expr1, const char* expr2, + double val1, double val2); + + +#if GTEST_OS_WINDOWS + +// Macros that test for HRESULT failure and success, these are only useful +// on Windows, and rely on Windows SDK macros and APIs to compile. +// +// * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) +// +// When expr unexpectedly fails or succeeds, Google Test prints the +// expected result and the actual result with both a human-readable +// string representation of the error, if available, as well as the +// hex result code. +# define EXPECT_HRESULT_SUCCEEDED(expr) \ + EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) + +# define ASSERT_HRESULT_SUCCEEDED(expr) \ + ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) + +# define EXPECT_HRESULT_FAILED(expr) \ + EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) + +# define ASSERT_HRESULT_FAILED(expr) \ + ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) + +#endif // GTEST_OS_WINDOWS + +// Macros that execute statement and check that it doesn't generate new fatal +// failures in the current thread. +// +// * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); +// +// Examples: +// +// EXPECT_NO_FATAL_FAILURE(Process()); +// ASSERT_NO_FATAL_FAILURE(Process()) << "Process() failed"; +// +#define ASSERT_NO_FATAL_FAILURE(statement) \ + GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_FATAL_FAILURE_) +#define EXPECT_NO_FATAL_FAILURE(statement) \ + GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_NONFATAL_FAILURE_) + +// Causes a trace (including the source file path, the current line +// number, and the given message) to be included in every test failure +// message generated by code in the current scope. The effect is +// undone when the control leaves the current scope. +// +// The message argument can be anything streamable to std::ostream. +// +// In the implementation, we include the current line number as part +// of the dummy variable name, thus allowing multiple SCOPED_TRACE()s +// to appear in the same block - as long as they are on different +// lines. +#define SCOPED_TRACE(message) \ + ::testing::internal::ScopedTrace GTEST_CONCAT_TOKEN_(gtest_trace_, __LINE__)(\ + __FILE__, __LINE__, ::testing::Message() << (message)) + +// Compile-time assertion for type equality. +// StaticAssertTypeEq() compiles iff type1 and type2 are +// the same type. The value it returns is not interesting. +// +// Instead of making StaticAssertTypeEq a class template, we make it a +// function template that invokes a helper class template. This +// prevents a user from misusing StaticAssertTypeEq by +// defining objects of that type. +// +// CAVEAT: +// +// When used inside a method of a class template, +// StaticAssertTypeEq() is effective ONLY IF the method is +// instantiated. For example, given: +// +// template class Foo { +// public: +// void Bar() { testing::StaticAssertTypeEq(); } +// }; +// +// the code: +// +// void Test1() { Foo foo; } +// +// will NOT generate a compiler error, as Foo::Bar() is never +// actually instantiated. Instead, you need: +// +// void Test2() { Foo foo; foo.Bar(); } +// +// to cause a compiler error. +template +bool StaticAssertTypeEq() { + (void)internal::StaticAssertTypeEqHelper(); + return true; +} + +// Defines a test. +// +// The first parameter is the name of the test case, and the second +// parameter is the name of the test within the test case. +// +// The convention is to end the test case name with "Test". For +// example, a test case for the Foo class can be named FooTest. +// +// The user should put his test code between braces after using this +// macro. Example: +// +// TEST(FooTest, InitializesCorrectly) { +// Foo foo; +// EXPECT_TRUE(foo.StatusIsOK()); +// } + +// Note that we call GetTestTypeId() instead of GetTypeId< +// ::testing::Test>() here to get the type ID of testing::Test. This +// is to work around a suspected linker bug when using Google Test as +// a framework on Mac OS X. The bug causes GetTypeId< +// ::testing::Test>() to return different values depending on whether +// the call is from the Google Test framework itself or from user test +// code. GetTestTypeId() is guaranteed to always return the same +// value, as it always calls GetTypeId<>() from the Google Test +// framework. +#define GTEST_TEST(test_case_name, test_name)\ + GTEST_TEST_(test_case_name, test_name, \ + ::testing::Test, ::testing::internal::GetTestTypeId()) + +// Define this macro to 1 to omit the definition of TEST(), which +// is a generic name and clashes with some other libraries. +#if !GTEST_DONT_DEFINE_TEST +# define TEST(test_case_name, test_name) GTEST_TEST(test_case_name, test_name) +#endif + +// Defines a test that uses a test fixture. +// +// The first parameter is the name of the test fixture class, which +// also doubles as the test case name. The second parameter is the +// name of the test within the test case. +// +// A test fixture class must be declared earlier. The user should put +// his test code between braces after using this macro. Example: +// +// class FooTest : public testing::Test { +// protected: +// virtual void SetUp() { b_.AddElement(3); } +// +// Foo a_; +// Foo b_; +// }; +// +// TEST_F(FooTest, InitializesCorrectly) { +// EXPECT_TRUE(a_.StatusIsOK()); +// } +// +// TEST_F(FooTest, ReturnsElementCountCorrectly) { +// EXPECT_EQ(0, a_.size()); +// EXPECT_EQ(1, b_.size()); +// } + +#define TEST_F(test_fixture, test_name)\ + GTEST_TEST_(test_fixture, test_name, test_fixture, \ + ::testing::internal::GetTypeId()) + +// Use this macro in main() to run all tests. It returns 0 if all +// tests are successful, or 1 otherwise. +// +// RUN_ALL_TESTS() should be invoked after the command line has been +// parsed by InitGoogleTest(). + +#define RUN_ALL_TESTS()\ + (::testing::UnitTest::GetInstance()->Run()) + +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_GTEST_H_ diff --git a/thirdparty/protobuf-2.6.1/gtest/fused-src/gtest/gtest_main.cc b/thirdparty/protobuf-2.6.1/gtest/fused-src/gtest/gtest_main.cc new file mode 100644 index 00000000..f3028225 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/fused-src/gtest/gtest_main.cc @@ -0,0 +1,38 @@ +// Copyright 2006, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#include + +#include "gtest/gtest.h" + +GTEST_API_ int main(int argc, char **argv) { + printf("Running main() from gtest_main.cc\n"); + testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} diff --git a/thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest-death-test.h b/thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest-death-test.h new file mode 100644 index 00000000..957a69c6 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest-death-test.h @@ -0,0 +1,294 @@ +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) +// +// The Google C++ Testing Framework (Google Test) +// +// This header file defines the public API for death tests. It is +// #included by gtest.h so a user doesn't need to include this +// directly. + +#ifndef GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_ +#define GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_ + +#include "gtest/internal/gtest-death-test-internal.h" + +namespace testing { + +// This flag controls the style of death tests. Valid values are "threadsafe", +// meaning that the death test child process will re-execute the test binary +// from the start, running only a single death test, or "fast", +// meaning that the child process will execute the test logic immediately +// after forking. +GTEST_DECLARE_string_(death_test_style); + +#if GTEST_HAS_DEATH_TEST + +namespace internal { + +// Returns a Boolean value indicating whether the caller is currently +// executing in the context of the death test child process. Tools such as +// Valgrind heap checkers may need this to modify their behavior in death +// tests. IMPORTANT: This is an internal utility. Using it may break the +// implementation of death tests. User code MUST NOT use it. +GTEST_API_ bool InDeathTestChild(); + +} // namespace internal + +// The following macros are useful for writing death tests. + +// Here's what happens when an ASSERT_DEATH* or EXPECT_DEATH* is +// executed: +// +// 1. It generates a warning if there is more than one active +// thread. This is because it's safe to fork() or clone() only +// when there is a single thread. +// +// 2. The parent process clone()s a sub-process and runs the death +// test in it; the sub-process exits with code 0 at the end of the +// death test, if it hasn't exited already. +// +// 3. The parent process waits for the sub-process to terminate. +// +// 4. The parent process checks the exit code and error message of +// the sub-process. +// +// Examples: +// +// ASSERT_DEATH(server.SendMessage(56, "Hello"), "Invalid port number"); +// for (int i = 0; i < 5; i++) { +// EXPECT_DEATH(server.ProcessRequest(i), +// "Invalid request .* in ProcessRequest()") +// << "Failed to die on request " << i; +// } +// +// ASSERT_EXIT(server.ExitNow(), ::testing::ExitedWithCode(0), "Exiting"); +// +// bool KilledBySIGHUP(int exit_code) { +// return WIFSIGNALED(exit_code) && WTERMSIG(exit_code) == SIGHUP; +// } +// +// ASSERT_EXIT(client.HangUpServer(), KilledBySIGHUP, "Hanging up!"); +// +// On the regular expressions used in death tests: +// +// On POSIX-compliant systems (*nix), we use the library, +// which uses the POSIX extended regex syntax. +// +// On other platforms (e.g. Windows), we only support a simple regex +// syntax implemented as part of Google Test. This limited +// implementation should be enough most of the time when writing +// death tests; though it lacks many features you can find in PCRE +// or POSIX extended regex syntax. For example, we don't support +// union ("x|y"), grouping ("(xy)"), brackets ("[xy]"), and +// repetition count ("x{5,7}"), among others. +// +// Below is the syntax that we do support. We chose it to be a +// subset of both PCRE and POSIX extended regex, so it's easy to +// learn wherever you come from. In the following: 'A' denotes a +// literal character, period (.), or a single \\ escape sequence; +// 'x' and 'y' denote regular expressions; 'm' and 'n' are for +// natural numbers. +// +// c matches any literal character c +// \\d matches any decimal digit +// \\D matches any character that's not a decimal digit +// \\f matches \f +// \\n matches \n +// \\r matches \r +// \\s matches any ASCII whitespace, including \n +// \\S matches any character that's not a whitespace +// \\t matches \t +// \\v matches \v +// \\w matches any letter, _, or decimal digit +// \\W matches any character that \\w doesn't match +// \\c matches any literal character c, which must be a punctuation +// . matches any single character except \n +// A? matches 0 or 1 occurrences of A +// A* matches 0 or many occurrences of A +// A+ matches 1 or many occurrences of A +// ^ matches the beginning of a string (not that of each line) +// $ matches the end of a string (not that of each line) +// xy matches x followed by y +// +// If you accidentally use PCRE or POSIX extended regex features +// not implemented by us, you will get a run-time failure. In that +// case, please try to rewrite your regular expression within the +// above syntax. +// +// This implementation is *not* meant to be as highly tuned or robust +// as a compiled regex library, but should perform well enough for a +// death test, which already incurs significant overhead by launching +// a child process. +// +// Known caveats: +// +// A "threadsafe" style death test obtains the path to the test +// program from argv[0] and re-executes it in the sub-process. For +// simplicity, the current implementation doesn't search the PATH +// when launching the sub-process. This means that the user must +// invoke the test program via a path that contains at least one +// path separator (e.g. path/to/foo_test and +// /absolute/path/to/bar_test are fine, but foo_test is not). This +// is rarely a problem as people usually don't put the test binary +// directory in PATH. +// +// TODO(wan@google.com): make thread-safe death tests search the PATH. + +// Asserts that a given statement causes the program to exit, with an +// integer exit status that satisfies predicate, and emitting error output +// that matches regex. +# define ASSERT_EXIT(statement, predicate, regex) \ + GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_) + +// Like ASSERT_EXIT, but continues on to successive tests in the +// test case, if any: +# define EXPECT_EXIT(statement, predicate, regex) \ + GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_) + +// Asserts that a given statement causes the program to exit, either by +// explicitly exiting with a nonzero exit code or being killed by a +// signal, and emitting error output that matches regex. +# define ASSERT_DEATH(statement, regex) \ + ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) + +// Like ASSERT_DEATH, but continues on to successive tests in the +// test case, if any: +# define EXPECT_DEATH(statement, regex) \ + EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex) + +// Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*: + +// Tests that an exit code describes a normal exit with a given exit code. +class GTEST_API_ ExitedWithCode { + public: + explicit ExitedWithCode(int exit_code); + bool operator()(int exit_status) const; + private: + // No implementation - assignment is unsupported. + void operator=(const ExitedWithCode& other); + + const int exit_code_; +}; + +# if !GTEST_OS_WINDOWS +// Tests that an exit code describes an exit due to termination by a +// given signal. +class GTEST_API_ KilledBySignal { + public: + explicit KilledBySignal(int signum); + bool operator()(int exit_status) const; + private: + const int signum_; +}; +# endif // !GTEST_OS_WINDOWS + +// EXPECT_DEBUG_DEATH asserts that the given statements die in debug mode. +// The death testing framework causes this to have interesting semantics, +// since the sideeffects of the call are only visible in opt mode, and not +// in debug mode. +// +// In practice, this can be used to test functions that utilize the +// LOG(DFATAL) macro using the following style: +// +// int DieInDebugOr12(int* sideeffect) { +// if (sideeffect) { +// *sideeffect = 12; +// } +// LOG(DFATAL) << "death"; +// return 12; +// } +// +// TEST(TestCase, TestDieOr12WorksInDgbAndOpt) { +// int sideeffect = 0; +// // Only asserts in dbg. +// EXPECT_DEBUG_DEATH(DieInDebugOr12(&sideeffect), "death"); +// +// #ifdef NDEBUG +// // opt-mode has sideeffect visible. +// EXPECT_EQ(12, sideeffect); +// #else +// // dbg-mode no visible sideeffect. +// EXPECT_EQ(0, sideeffect); +// #endif +// } +// +// This will assert that DieInDebugReturn12InOpt() crashes in debug +// mode, usually due to a DCHECK or LOG(DFATAL), but returns the +// appropriate fallback value (12 in this case) in opt mode. If you +// need to test that a function has appropriate side-effects in opt +// mode, include assertions against the side-effects. A general +// pattern for this is: +// +// EXPECT_DEBUG_DEATH({ +// // Side-effects here will have an effect after this statement in +// // opt mode, but none in debug mode. +// EXPECT_EQ(12, DieInDebugOr12(&sideeffect)); +// }, "death"); +// +# ifdef NDEBUG + +# define EXPECT_DEBUG_DEATH(statement, regex) \ + GTEST_EXECUTE_STATEMENT_(statement, regex) + +# define ASSERT_DEBUG_DEATH(statement, regex) \ + GTEST_EXECUTE_STATEMENT_(statement, regex) + +# else + +# define EXPECT_DEBUG_DEATH(statement, regex) \ + EXPECT_DEATH(statement, regex) + +# define ASSERT_DEBUG_DEATH(statement, regex) \ + ASSERT_DEATH(statement, regex) + +# endif // NDEBUG for EXPECT_DEBUG_DEATH +#endif // GTEST_HAS_DEATH_TEST + +// EXPECT_DEATH_IF_SUPPORTED(statement, regex) and +// ASSERT_DEATH_IF_SUPPORTED(statement, regex) expand to real death tests if +// death tests are supported; otherwise they just issue a warning. This is +// useful when you are combining death test assertions with normal test +// assertions in one test. +#if GTEST_HAS_DEATH_TEST +# define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \ + EXPECT_DEATH(statement, regex) +# define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \ + ASSERT_DEATH(statement, regex) +#else +# define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \ + GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, ) +# define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \ + GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, return) +#endif + +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_ diff --git a/thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest-message.h b/thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest-message.h new file mode 100644 index 00000000..6336b4a9 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest-message.h @@ -0,0 +1,230 @@ +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) +// +// The Google C++ Testing Framework (Google Test) +// +// This header file defines the Message class. +// +// IMPORTANT NOTE: Due to limitation of the C++ language, we have to +// leave some internal implementation details in this header file. +// They are clearly marked by comments like this: +// +// // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +// +// Such code is NOT meant to be used by a user directly, and is subject +// to CHANGE WITHOUT NOTICE. Therefore DO NOT DEPEND ON IT in a user +// program! + +#ifndef GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_ +#define GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_ + +#include + +#include "gtest/internal/gtest-string.h" +#include "gtest/internal/gtest-internal.h" + +namespace testing { + +// The Message class works like an ostream repeater. +// +// Typical usage: +// +// 1. You stream a bunch of values to a Message object. +// It will remember the text in a stringstream. +// 2. Then you stream the Message object to an ostream. +// This causes the text in the Message to be streamed +// to the ostream. +// +// For example; +// +// testing::Message foo; +// foo << 1 << " != " << 2; +// std::cout << foo; +// +// will print "1 != 2". +// +// Message is not intended to be inherited from. In particular, its +// destructor is not virtual. +// +// Note that stringstream behaves differently in gcc and in MSVC. You +// can stream a NULL char pointer to it in the former, but not in the +// latter (it causes an access violation if you do). The Message +// class hides this difference by treating a NULL char pointer as +// "(null)". +class GTEST_API_ Message { + private: + // The type of basic IO manipulators (endl, ends, and flush) for + // narrow streams. + typedef std::ostream& (*BasicNarrowIoManip)(std::ostream&); + + public: + // Constructs an empty Message. + // We allocate the stringstream separately because otherwise each use of + // ASSERT/EXPECT in a procedure adds over 200 bytes to the procedure's + // stack frame leading to huge stack frames in some cases; gcc does not reuse + // the stack space. + Message() : ss_(new ::std::stringstream) { + // By default, we want there to be enough precision when printing + // a double to a Message. + *ss_ << std::setprecision(std::numeric_limits::digits10 + 2); + } + + // Copy constructor. + Message(const Message& msg) : ss_(new ::std::stringstream) { // NOLINT + *ss_ << msg.GetString(); + } + + // Constructs a Message from a C-string. + explicit Message(const char* str) : ss_(new ::std::stringstream) { + *ss_ << str; + } + +#if GTEST_OS_SYMBIAN + // Streams a value (either a pointer or not) to this object. + template + inline Message& operator <<(const T& value) { + StreamHelper(typename internal::is_pointer::type(), value); + return *this; + } +#else + // Streams a non-pointer value to this object. + template + inline Message& operator <<(const T& val) { + ::GTestStreamToHelper(ss_.get(), val); + return *this; + } + + // Streams a pointer value to this object. + // + // This function is an overload of the previous one. When you + // stream a pointer to a Message, this definition will be used as it + // is more specialized. (The C++ Standard, section + // [temp.func.order].) If you stream a non-pointer, then the + // previous definition will be used. + // + // The reason for this overload is that streaming a NULL pointer to + // ostream is undefined behavior. Depending on the compiler, you + // may get "0", "(nil)", "(null)", or an access violation. To + // ensure consistent result across compilers, we always treat NULL + // as "(null)". + template + inline Message& operator <<(T* const& pointer) { // NOLINT + if (pointer == NULL) { + *ss_ << "(null)"; + } else { + ::GTestStreamToHelper(ss_.get(), pointer); + } + return *this; + } +#endif // GTEST_OS_SYMBIAN + + // Since the basic IO manipulators are overloaded for both narrow + // and wide streams, we have to provide this specialized definition + // of operator <<, even though its body is the same as the + // templatized version above. Without this definition, streaming + // endl or other basic IO manipulators to Message will confuse the + // compiler. + Message& operator <<(BasicNarrowIoManip val) { + *ss_ << val; + return *this; + } + + // Instead of 1/0, we want to see true/false for bool values. + Message& operator <<(bool b) { + return *this << (b ? "true" : "false"); + } + + // These two overloads allow streaming a wide C string to a Message + // using the UTF-8 encoding. + Message& operator <<(const wchar_t* wide_c_str) { + return *this << internal::String::ShowWideCString(wide_c_str); + } + Message& operator <<(wchar_t* wide_c_str) { + return *this << internal::String::ShowWideCString(wide_c_str); + } + +#if GTEST_HAS_STD_WSTRING + // Converts the given wide string to a narrow string using the UTF-8 + // encoding, and streams the result to this Message object. + Message& operator <<(const ::std::wstring& wstr); +#endif // GTEST_HAS_STD_WSTRING + +#if GTEST_HAS_GLOBAL_WSTRING + // Converts the given wide string to a narrow string using the UTF-8 + // encoding, and streams the result to this Message object. + Message& operator <<(const ::wstring& wstr); +#endif // GTEST_HAS_GLOBAL_WSTRING + + // Gets the text streamed to this object so far as an std::string. + // Each '\0' character in the buffer is replaced with "\\0". + // + // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. + std::string GetString() const { + return internal::StringStreamToString(ss_.get()); + } + + private: + +#if GTEST_OS_SYMBIAN + // These are needed as the Nokia Symbian Compiler cannot decide between + // const T& and const T* in a function template. The Nokia compiler _can_ + // decide between class template specializations for T and T*, so a + // tr1::type_traits-like is_pointer works, and we can overload on that. + template + inline void StreamHelper(internal::true_type /*dummy*/, T* pointer) { + if (pointer == NULL) { + *ss_ << "(null)"; + } else { + ::GTestStreamToHelper(ss_.get(), pointer); + } + } + template + inline void StreamHelper(internal::false_type /*dummy*/, const T& value) { + ::GTestStreamToHelper(ss_.get(), value); + } +#endif // GTEST_OS_SYMBIAN + + // We'll hold the text streamed to this object here. + const internal::scoped_ptr< ::std::stringstream> ss_; + + // We declare (but don't implement) this to prevent the compiler + // from implementing the assignment operator. + void operator=(const Message&); +}; + +// Streams a Message to an ostream. +inline std::ostream& operator <<(std::ostream& os, const Message& sb) { + return os << sb.GetString(); +} + +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_ diff --git a/thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest-param-test.h b/thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest-param-test.h new file mode 100644 index 00000000..d6702c8f --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest-param-test.h @@ -0,0 +1,1421 @@ +// This file was GENERATED by command: +// pump.py gtest-param-test.h.pump +// DO NOT EDIT BY HAND!!! + +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Authors: vladl@google.com (Vlad Losev) +// +// Macros and functions for implementing parameterized tests +// in Google C++ Testing Framework (Google Test) +// +// This file is generated by a SCRIPT. DO NOT EDIT BY HAND! +// +#ifndef GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ +#define GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ + + +// Value-parameterized tests allow you to test your code with different +// parameters without writing multiple copies of the same test. +// +// Here is how you use value-parameterized tests: + +#if 0 + +// To write value-parameterized tests, first you should define a fixture +// class. It is usually derived from testing::TestWithParam (see below for +// another inheritance scheme that's sometimes useful in more complicated +// class hierarchies), where the type of your parameter values. +// TestWithParam is itself derived from testing::Test. T can be any +// copyable type. If it's a raw pointer, you are responsible for managing the +// lifespan of the pointed values. + +class FooTest : public ::testing::TestWithParam { + // You can implement all the usual class fixture members here. +}; + +// Then, use the TEST_P macro to define as many parameterized tests +// for this fixture as you want. The _P suffix is for "parameterized" +// or "pattern", whichever you prefer to think. + +TEST_P(FooTest, DoesBlah) { + // Inside a test, access the test parameter with the GetParam() method + // of the TestWithParam class: + EXPECT_TRUE(foo.Blah(GetParam())); + ... +} + +TEST_P(FooTest, HasBlahBlah) { + ... +} + +// Finally, you can use INSTANTIATE_TEST_CASE_P to instantiate the test +// case with any set of parameters you want. Google Test defines a number +// of functions for generating test parameters. They return what we call +// (surprise!) parameter generators. Here is a summary of them, which +// are all in the testing namespace: +// +// +// Range(begin, end [, step]) - Yields values {begin, begin+step, +// begin+step+step, ...}. The values do not +// include end. step defaults to 1. +// Values(v1, v2, ..., vN) - Yields values {v1, v2, ..., vN}. +// ValuesIn(container) - Yields values from a C-style array, an STL +// ValuesIn(begin,end) container, or an iterator range [begin, end). +// Bool() - Yields sequence {false, true}. +// Combine(g1, g2, ..., gN) - Yields all combinations (the Cartesian product +// for the math savvy) of the values generated +// by the N generators. +// +// For more details, see comments at the definitions of these functions below +// in this file. +// +// The following statement will instantiate tests from the FooTest test case +// each with parameter values "meeny", "miny", and "moe". + +INSTANTIATE_TEST_CASE_P(InstantiationName, + FooTest, + Values("meeny", "miny", "moe")); + +// To distinguish different instances of the pattern, (yes, you +// can instantiate it more then once) the first argument to the +// INSTANTIATE_TEST_CASE_P macro is a prefix that will be added to the +// actual test case name. Remember to pick unique prefixes for different +// instantiations. The tests from the instantiation above will have +// these names: +// +// * InstantiationName/FooTest.DoesBlah/0 for "meeny" +// * InstantiationName/FooTest.DoesBlah/1 for "miny" +// * InstantiationName/FooTest.DoesBlah/2 for "moe" +// * InstantiationName/FooTest.HasBlahBlah/0 for "meeny" +// * InstantiationName/FooTest.HasBlahBlah/1 for "miny" +// * InstantiationName/FooTest.HasBlahBlah/2 for "moe" +// +// You can use these names in --gtest_filter. +// +// This statement will instantiate all tests from FooTest again, each +// with parameter values "cat" and "dog": + +const char* pets[] = {"cat", "dog"}; +INSTANTIATE_TEST_CASE_P(AnotherInstantiationName, FooTest, ValuesIn(pets)); + +// The tests from the instantiation above will have these names: +// +// * AnotherInstantiationName/FooTest.DoesBlah/0 for "cat" +// * AnotherInstantiationName/FooTest.DoesBlah/1 for "dog" +// * AnotherInstantiationName/FooTest.HasBlahBlah/0 for "cat" +// * AnotherInstantiationName/FooTest.HasBlahBlah/1 for "dog" +// +// Please note that INSTANTIATE_TEST_CASE_P will instantiate all tests +// in the given test case, whether their definitions come before or +// AFTER the INSTANTIATE_TEST_CASE_P statement. +// +// Please also note that generator expressions (including parameters to the +// generators) are evaluated in InitGoogleTest(), after main() has started. +// This allows the user on one hand, to adjust generator parameters in order +// to dynamically determine a set of tests to run and on the other hand, +// give the user a chance to inspect the generated tests with Google Test +// reflection API before RUN_ALL_TESTS() is executed. +// +// You can see samples/sample7_unittest.cc and samples/sample8_unittest.cc +// for more examples. +// +// In the future, we plan to publish the API for defining new parameter +// generators. But for now this interface remains part of the internal +// implementation and is subject to change. +// +// +// A parameterized test fixture must be derived from testing::Test and from +// testing::WithParamInterface, where T is the type of the parameter +// values. Inheriting from TestWithParam satisfies that requirement because +// TestWithParam inherits from both Test and WithParamInterface. In more +// complicated hierarchies, however, it is occasionally useful to inherit +// separately from Test and WithParamInterface. For example: + +class BaseTest : public ::testing::Test { + // You can inherit all the usual members for a non-parameterized test + // fixture here. +}; + +class DerivedTest : public BaseTest, public ::testing::WithParamInterface { + // The usual test fixture members go here too. +}; + +TEST_F(BaseTest, HasFoo) { + // This is an ordinary non-parameterized test. +} + +TEST_P(DerivedTest, DoesBlah) { + // GetParam works just the same here as if you inherit from TestWithParam. + EXPECT_TRUE(foo.Blah(GetParam())); +} + +#endif // 0 + +#include "gtest/internal/gtest-port.h" + +#if !GTEST_OS_SYMBIAN +# include +#endif + +// scripts/fuse_gtest.py depends on gtest's own header being #included +// *unconditionally*. Therefore these #includes cannot be moved +// inside #if GTEST_HAS_PARAM_TEST. +#include "gtest/internal/gtest-internal.h" +#include "gtest/internal/gtest-param-util.h" +#include "gtest/internal/gtest-param-util-generated.h" + +#if GTEST_HAS_PARAM_TEST + +namespace testing { + +// Functions producing parameter generators. +// +// Google Test uses these generators to produce parameters for value- +// parameterized tests. When a parameterized test case is instantiated +// with a particular generator, Google Test creates and runs tests +// for each element in the sequence produced by the generator. +// +// In the following sample, tests from test case FooTest are instantiated +// each three times with parameter values 3, 5, and 8: +// +// class FooTest : public TestWithParam { ... }; +// +// TEST_P(FooTest, TestThis) { +// } +// TEST_P(FooTest, TestThat) { +// } +// INSTANTIATE_TEST_CASE_P(TestSequence, FooTest, Values(3, 5, 8)); +// + +// Range() returns generators providing sequences of values in a range. +// +// Synopsis: +// Range(start, end) +// - returns a generator producing a sequence of values {start, start+1, +// start+2, ..., }. +// Range(start, end, step) +// - returns a generator producing a sequence of values {start, start+step, +// start+step+step, ..., }. +// Notes: +// * The generated sequences never include end. For example, Range(1, 5) +// returns a generator producing a sequence {1, 2, 3, 4}. Range(1, 9, 2) +// returns a generator producing {1, 3, 5, 7}. +// * start and end must have the same type. That type may be any integral or +// floating-point type or a user defined type satisfying these conditions: +// * It must be assignable (have operator=() defined). +// * It must have operator+() (operator+(int-compatible type) for +// two-operand version). +// * It must have operator<() defined. +// Elements in the resulting sequences will also have that type. +// * Condition start < end must be satisfied in order for resulting sequences +// to contain any elements. +// +template +internal::ParamGenerator Range(T start, T end, IncrementT step) { + return internal::ParamGenerator( + new internal::RangeGenerator(start, end, step)); +} + +template +internal::ParamGenerator Range(T start, T end) { + return Range(start, end, 1); +} + +// ValuesIn() function allows generation of tests with parameters coming from +// a container. +// +// Synopsis: +// ValuesIn(const T (&array)[N]) +// - returns a generator producing sequences with elements from +// a C-style array. +// ValuesIn(const Container& container) +// - returns a generator producing sequences with elements from +// an STL-style container. +// ValuesIn(Iterator begin, Iterator end) +// - returns a generator producing sequences with elements from +// a range [begin, end) defined by a pair of STL-style iterators. These +// iterators can also be plain C pointers. +// +// Please note that ValuesIn copies the values from the containers +// passed in and keeps them to generate tests in RUN_ALL_TESTS(). +// +// Examples: +// +// This instantiates tests from test case StringTest +// each with C-string values of "foo", "bar", and "baz": +// +// const char* strings[] = {"foo", "bar", "baz"}; +// INSTANTIATE_TEST_CASE_P(StringSequence, SrtingTest, ValuesIn(strings)); +// +// This instantiates tests from test case StlStringTest +// each with STL strings with values "a" and "b": +// +// ::std::vector< ::std::string> GetParameterStrings() { +// ::std::vector< ::std::string> v; +// v.push_back("a"); +// v.push_back("b"); +// return v; +// } +// +// INSTANTIATE_TEST_CASE_P(CharSequence, +// StlStringTest, +// ValuesIn(GetParameterStrings())); +// +// +// This will also instantiate tests from CharTest +// each with parameter values 'a' and 'b': +// +// ::std::list GetParameterChars() { +// ::std::list list; +// list.push_back('a'); +// list.push_back('b'); +// return list; +// } +// ::std::list l = GetParameterChars(); +// INSTANTIATE_TEST_CASE_P(CharSequence2, +// CharTest, +// ValuesIn(l.begin(), l.end())); +// +template +internal::ParamGenerator< + typename ::testing::internal::IteratorTraits::value_type> +ValuesIn(ForwardIterator begin, ForwardIterator end) { + typedef typename ::testing::internal::IteratorTraits + ::value_type ParamType; + return internal::ParamGenerator( + new internal::ValuesInIteratorRangeGenerator(begin, end)); +} + +template +internal::ParamGenerator ValuesIn(const T (&array)[N]) { + return ValuesIn(array, array + N); +} + +template +internal::ParamGenerator ValuesIn( + const Container& container) { + return ValuesIn(container.begin(), container.end()); +} + +// Values() allows generating tests from explicitly specified list of +// parameters. +// +// Synopsis: +// Values(T v1, T v2, ..., T vN) +// - returns a generator producing sequences with elements v1, v2, ..., vN. +// +// For example, this instantiates tests from test case BarTest each +// with values "one", "two", and "three": +// +// INSTANTIATE_TEST_CASE_P(NumSequence, BarTest, Values("one", "two", "three")); +// +// This instantiates tests from test case BazTest each with values 1, 2, 3.5. +// The exact type of values will depend on the type of parameter in BazTest. +// +// INSTANTIATE_TEST_CASE_P(FloatingNumbers, BazTest, Values(1, 2, 3.5)); +// +// Currently, Values() supports from 1 to 50 parameters. +// +template +internal::ValueArray1 Values(T1 v1) { + return internal::ValueArray1(v1); +} + +template +internal::ValueArray2 Values(T1 v1, T2 v2) { + return internal::ValueArray2(v1, v2); +} + +template +internal::ValueArray3 Values(T1 v1, T2 v2, T3 v3) { + return internal::ValueArray3(v1, v2, v3); +} + +template +internal::ValueArray4 Values(T1 v1, T2 v2, T3 v3, T4 v4) { + return internal::ValueArray4(v1, v2, v3, v4); +} + +template +internal::ValueArray5 Values(T1 v1, T2 v2, T3 v3, T4 v4, + T5 v5) { + return internal::ValueArray5(v1, v2, v3, v4, v5); +} + +template +internal::ValueArray6 Values(T1 v1, T2 v2, T3 v3, + T4 v4, T5 v5, T6 v6) { + return internal::ValueArray6(v1, v2, v3, v4, v5, v6); +} + +template +internal::ValueArray7 Values(T1 v1, T2 v2, T3 v3, + T4 v4, T5 v5, T6 v6, T7 v7) { + return internal::ValueArray7(v1, v2, v3, v4, v5, + v6, v7); +} + +template +internal::ValueArray8 Values(T1 v1, T2 v2, + T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8) { + return internal::ValueArray8(v1, v2, v3, v4, + v5, v6, v7, v8); +} + +template +internal::ValueArray9 Values(T1 v1, T2 v2, + T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9) { + return internal::ValueArray9(v1, v2, v3, + v4, v5, v6, v7, v8, v9); +} + +template +internal::ValueArray10 Values(T1 v1, + T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10) { + return internal::ValueArray10(v1, + v2, v3, v4, v5, v6, v7, v8, v9, v10); +} + +template +internal::ValueArray11 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11) { + return internal::ValueArray11(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11); +} + +template +internal::ValueArray12 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12) { + return internal::ValueArray12(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12); +} + +template +internal::ValueArray13 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13) { + return internal::ValueArray13(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13); +} + +template +internal::ValueArray14 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) { + return internal::ValueArray14(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, + v14); +} + +template +internal::ValueArray15 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, + T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) { + return internal::ValueArray15(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, + v13, v14, v15); +} + +template +internal::ValueArray16 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, + T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, + T16 v16) { + return internal::ValueArray16(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, + v12, v13, v14, v15, v16); +} + +template +internal::ValueArray17 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, + T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, + T16 v16, T17 v17) { + return internal::ValueArray17(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, + v11, v12, v13, v14, v15, v16, v17); +} + +template +internal::ValueArray18 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, + T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, + T16 v16, T17 v17, T18 v18) { + return internal::ValueArray18(v1, v2, v3, v4, v5, v6, v7, v8, v9, + v10, v11, v12, v13, v14, v15, v16, v17, v18); +} + +template +internal::ValueArray19 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, + T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19) { + return internal::ValueArray19(v1, v2, v3, v4, v5, v6, v7, v8, + v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19); +} + +template +internal::ValueArray20 Values(T1 v1, T2 v2, T3 v3, T4 v4, + T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20) { + return internal::ValueArray20(v1, v2, v3, v4, v5, v6, v7, + v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20); +} + +template +internal::ValueArray21 Values(T1 v1, T2 v2, T3 v3, T4 v4, + T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21) { + return internal::ValueArray21(v1, v2, v3, v4, v5, v6, + v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21); +} + +template +internal::ValueArray22 Values(T1 v1, T2 v2, T3 v3, + T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, + T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, + T21 v21, T22 v22) { + return internal::ValueArray22(v1, v2, v3, v4, + v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, + v20, v21, v22); +} + +template +internal::ValueArray23 Values(T1 v1, T2 v2, + T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, + T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, + T21 v21, T22 v22, T23 v23) { + return internal::ValueArray23(v1, v2, v3, + v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, + v20, v21, v22, v23); +} + +template +internal::ValueArray24 Values(T1 v1, T2 v2, + T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, + T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, + T21 v21, T22 v22, T23 v23, T24 v24) { + return internal::ValueArray24(v1, v2, + v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, + v19, v20, v21, v22, v23, v24); +} + +template +internal::ValueArray25 Values(T1 v1, + T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, + T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, + T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25) { + return internal::ValueArray25(v1, + v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, + v18, v19, v20, v21, v22, v23, v24, v25); +} + +template +internal::ValueArray26 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26) { + return internal::ValueArray26(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, + v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26); +} + +template +internal::ValueArray27 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27) { + return internal::ValueArray27(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, + v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27); +} + +template +internal::ValueArray28 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28) { + return internal::ValueArray28(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, + v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, + v28); +} + +template +internal::ValueArray29 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29) { + return internal::ValueArray29(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, + v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, + v27, v28, v29); +} + +template +internal::ValueArray30 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, + T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, + T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, + T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) { + return internal::ValueArray30(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, + v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, + v26, v27, v28, v29, v30); +} + +template +internal::ValueArray31 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, + T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, + T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, + T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) { + return internal::ValueArray31(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, + v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, + v25, v26, v27, v28, v29, v30, v31); +} + +template +internal::ValueArray32 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, + T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, + T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, + T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, + T32 v32) { + return internal::ValueArray32(v1, v2, v3, v4, v5, v6, v7, v8, v9, + v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, + v24, v25, v26, v27, v28, v29, v30, v31, v32); +} + +template +internal::ValueArray33 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, + T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, + T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, + T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, + T32 v32, T33 v33) { + return internal::ValueArray33(v1, v2, v3, v4, v5, v6, v7, v8, + v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, + v24, v25, v26, v27, v28, v29, v30, v31, v32, v33); +} + +template +internal::ValueArray34 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, + T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, + T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, + T31 v31, T32 v32, T33 v33, T34 v34) { + return internal::ValueArray34(v1, v2, v3, v4, v5, v6, v7, + v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, + v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34); +} + +template +internal::ValueArray35 Values(T1 v1, T2 v2, T3 v3, T4 v4, + T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, + T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, + T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35) { + return internal::ValueArray35(v1, v2, v3, v4, v5, v6, + v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, + v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35); +} + +template +internal::ValueArray36 Values(T1 v1, T2 v2, T3 v3, T4 v4, + T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, + T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, + T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36) { + return internal::ValueArray36(v1, v2, v3, v4, + v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, + v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, + v34, v35, v36); +} + +template +internal::ValueArray37 Values(T1 v1, T2 v2, T3 v3, + T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, + T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, + T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, + T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, + T37 v37) { + return internal::ValueArray37(v1, v2, v3, + v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, + v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, + v34, v35, v36, v37); +} + +template +internal::ValueArray38 Values(T1 v1, T2 v2, + T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, + T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, + T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, + T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, + T37 v37, T38 v38) { + return internal::ValueArray38(v1, v2, + v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, + v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, + v33, v34, v35, v36, v37, v38); +} + +template +internal::ValueArray39 Values(T1 v1, T2 v2, + T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, + T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, + T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, + T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, + T37 v37, T38 v38, T39 v39) { + return internal::ValueArray39(v1, + v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, + v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, + v32, v33, v34, v35, v36, v37, v38, v39); +} + +template +internal::ValueArray40 Values(T1 v1, + T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, + T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, + T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, + T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, + T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) { + return internal::ValueArray40(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, + v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, + v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40); +} + +template +internal::ValueArray41 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41) { + return internal::ValueArray41(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, + v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, + v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41); +} + +template +internal::ValueArray42 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42) { + return internal::ValueArray42(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, + v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, + v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, + v42); +} + +template +internal::ValueArray43 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43) { + return internal::ValueArray43(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, + v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, + v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, + v41, v42, v43); +} + +template +internal::ValueArray44 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43, T44 v44) { + return internal::ValueArray44(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, + v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, + v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, + v40, v41, v42, v43, v44); +} + +template +internal::ValueArray45 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, + T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, + T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, + T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, + T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, + T41 v41, T42 v42, T43 v43, T44 v44, T45 v45) { + return internal::ValueArray45(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, + v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, + v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, + v39, v40, v41, v42, v43, v44, v45); +} + +template +internal::ValueArray46 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, + T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, + T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, + T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, + T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, + T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) { + return internal::ValueArray46(v1, v2, v3, v4, v5, v6, v7, v8, v9, + v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, + v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, + v38, v39, v40, v41, v42, v43, v44, v45, v46); +} + +template +internal::ValueArray47 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, + T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, + T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, + T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, + T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, + T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) { + return internal::ValueArray47(v1, v2, v3, v4, v5, v6, v7, v8, + v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, + v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, + v38, v39, v40, v41, v42, v43, v44, v45, v46, v47); +} + +template +internal::ValueArray48 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, + T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, + T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, + T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, + T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, + T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, + T48 v48) { + return internal::ValueArray48(v1, v2, v3, v4, v5, v6, v7, + v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, + v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, + v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48); +} + +template +internal::ValueArray49 Values(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, + T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, + T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, + T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, + T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, + T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, + T47 v47, T48 v48, T49 v49) { + return internal::ValueArray49(v1, v2, v3, v4, v5, v6, + v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, + v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, + v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49); +} + +template +internal::ValueArray50 Values(T1 v1, T2 v2, T3 v3, T4 v4, + T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, + T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, + T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, + T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, + T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, + T46 v46, T47 v47, T48 v48, T49 v49, T50 v50) { + return internal::ValueArray50(v1, v2, v3, v4, + v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, + v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, + v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, + v48, v49, v50); +} + +// Bool() allows generating tests with parameters in a set of (false, true). +// +// Synopsis: +// Bool() +// - returns a generator producing sequences with elements {false, true}. +// +// It is useful when testing code that depends on Boolean flags. Combinations +// of multiple flags can be tested when several Bool()'s are combined using +// Combine() function. +// +// In the following example all tests in the test case FlagDependentTest +// will be instantiated twice with parameters false and true. +// +// class FlagDependentTest : public testing::TestWithParam { +// virtual void SetUp() { +// external_flag = GetParam(); +// } +// } +// INSTANTIATE_TEST_CASE_P(BoolSequence, FlagDependentTest, Bool()); +// +inline internal::ParamGenerator Bool() { + return Values(false, true); +} + +# if GTEST_HAS_COMBINE +// Combine() allows the user to combine two or more sequences to produce +// values of a Cartesian product of those sequences' elements. +// +// Synopsis: +// Combine(gen1, gen2, ..., genN) +// - returns a generator producing sequences with elements coming from +// the Cartesian product of elements from the sequences generated by +// gen1, gen2, ..., genN. The sequence elements will have a type of +// tuple where T1, T2, ..., TN are the types +// of elements from sequences produces by gen1, gen2, ..., genN. +// +// Combine can have up to 10 arguments. This number is currently limited +// by the maximum number of elements in the tuple implementation used by Google +// Test. +// +// Example: +// +// This will instantiate tests in test case AnimalTest each one with +// the parameter values tuple("cat", BLACK), tuple("cat", WHITE), +// tuple("dog", BLACK), and tuple("dog", WHITE): +// +// enum Color { BLACK, GRAY, WHITE }; +// class AnimalTest +// : public testing::TestWithParam > {...}; +// +// TEST_P(AnimalTest, AnimalLooksNice) {...} +// +// INSTANTIATE_TEST_CASE_P(AnimalVariations, AnimalTest, +// Combine(Values("cat", "dog"), +// Values(BLACK, WHITE))); +// +// This will instantiate tests in FlagDependentTest with all variations of two +// Boolean flags: +// +// class FlagDependentTest +// : public testing::TestWithParam > { +// virtual void SetUp() { +// // Assigns external_flag_1 and external_flag_2 values from the tuple. +// tie(external_flag_1, external_flag_2) = GetParam(); +// } +// }; +// +// TEST_P(FlagDependentTest, TestFeature1) { +// // Test your code using external_flag_1 and external_flag_2 here. +// } +// INSTANTIATE_TEST_CASE_P(TwoBoolSequence, FlagDependentTest, +// Combine(Bool(), Bool())); +// +template +internal::CartesianProductHolder2 Combine( + const Generator1& g1, const Generator2& g2) { + return internal::CartesianProductHolder2( + g1, g2); +} + +template +internal::CartesianProductHolder3 Combine( + const Generator1& g1, const Generator2& g2, const Generator3& g3) { + return internal::CartesianProductHolder3( + g1, g2, g3); +} + +template +internal::CartesianProductHolder4 Combine( + const Generator1& g1, const Generator2& g2, const Generator3& g3, + const Generator4& g4) { + return internal::CartesianProductHolder4( + g1, g2, g3, g4); +} + +template +internal::CartesianProductHolder5 Combine( + const Generator1& g1, const Generator2& g2, const Generator3& g3, + const Generator4& g4, const Generator5& g5) { + return internal::CartesianProductHolder5( + g1, g2, g3, g4, g5); +} + +template +internal::CartesianProductHolder6 Combine( + const Generator1& g1, const Generator2& g2, const Generator3& g3, + const Generator4& g4, const Generator5& g5, const Generator6& g6) { + return internal::CartesianProductHolder6( + g1, g2, g3, g4, g5, g6); +} + +template +internal::CartesianProductHolder7 Combine( + const Generator1& g1, const Generator2& g2, const Generator3& g3, + const Generator4& g4, const Generator5& g5, const Generator6& g6, + const Generator7& g7) { + return internal::CartesianProductHolder7( + g1, g2, g3, g4, g5, g6, g7); +} + +template +internal::CartesianProductHolder8 Combine( + const Generator1& g1, const Generator2& g2, const Generator3& g3, + const Generator4& g4, const Generator5& g5, const Generator6& g6, + const Generator7& g7, const Generator8& g8) { + return internal::CartesianProductHolder8( + g1, g2, g3, g4, g5, g6, g7, g8); +} + +template +internal::CartesianProductHolder9 Combine( + const Generator1& g1, const Generator2& g2, const Generator3& g3, + const Generator4& g4, const Generator5& g5, const Generator6& g6, + const Generator7& g7, const Generator8& g8, const Generator9& g9) { + return internal::CartesianProductHolder9( + g1, g2, g3, g4, g5, g6, g7, g8, g9); +} + +template +internal::CartesianProductHolder10 Combine( + const Generator1& g1, const Generator2& g2, const Generator3& g3, + const Generator4& g4, const Generator5& g5, const Generator6& g6, + const Generator7& g7, const Generator8& g8, const Generator9& g9, + const Generator10& g10) { + return internal::CartesianProductHolder10( + g1, g2, g3, g4, g5, g6, g7, g8, g9, g10); +} +# endif // GTEST_HAS_COMBINE + + + +# define TEST_P(test_case_name, test_name) \ + class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \ + : public test_case_name { \ + public: \ + GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \ + virtual void TestBody(); \ + private: \ + static int AddToRegistry() { \ + ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \ + GetTestCasePatternHolder(\ + #test_case_name, __FILE__, __LINE__)->AddTestPattern(\ + #test_case_name, \ + #test_name, \ + new ::testing::internal::TestMetaFactory< \ + GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>()); \ + return 0; \ + } \ + static int gtest_registering_dummy_; \ + GTEST_DISALLOW_COPY_AND_ASSIGN_(\ + GTEST_TEST_CLASS_NAME_(test_case_name, test_name)); \ + }; \ + int GTEST_TEST_CLASS_NAME_(test_case_name, \ + test_name)::gtest_registering_dummy_ = \ + GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \ + void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody() + +# define INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator) \ + ::testing::internal::ParamGenerator \ + gtest_##prefix##test_case_name##_EvalGenerator_() { return generator; } \ + int gtest_##prefix##test_case_name##_dummy_ = \ + ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \ + GetTestCasePatternHolder(\ + #test_case_name, __FILE__, __LINE__)->AddTestCaseInstantiation(\ + #prefix, \ + >est_##prefix##test_case_name##_EvalGenerator_, \ + __FILE__, __LINE__) + +} // namespace testing + +#endif // GTEST_HAS_PARAM_TEST + +#endif // GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ diff --git a/thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest-param-test.h.pump b/thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest-param-test.h.pump new file mode 100644 index 00000000..2dc9303b --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest-param-test.h.pump @@ -0,0 +1,487 @@ +$$ -*- mode: c++; -*- +$var n = 50 $$ Maximum length of Values arguments we want to support. +$var maxtuple = 10 $$ Maximum number of Combine arguments we want to support. +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Authors: vladl@google.com (Vlad Losev) +// +// Macros and functions for implementing parameterized tests +// in Google C++ Testing Framework (Google Test) +// +// This file is generated by a SCRIPT. DO NOT EDIT BY HAND! +// +#ifndef GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ +#define GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ + + +// Value-parameterized tests allow you to test your code with different +// parameters without writing multiple copies of the same test. +// +// Here is how you use value-parameterized tests: + +#if 0 + +// To write value-parameterized tests, first you should define a fixture +// class. It is usually derived from testing::TestWithParam (see below for +// another inheritance scheme that's sometimes useful in more complicated +// class hierarchies), where the type of your parameter values. +// TestWithParam is itself derived from testing::Test. T can be any +// copyable type. If it's a raw pointer, you are responsible for managing the +// lifespan of the pointed values. + +class FooTest : public ::testing::TestWithParam { + // You can implement all the usual class fixture members here. +}; + +// Then, use the TEST_P macro to define as many parameterized tests +// for this fixture as you want. The _P suffix is for "parameterized" +// or "pattern", whichever you prefer to think. + +TEST_P(FooTest, DoesBlah) { + // Inside a test, access the test parameter with the GetParam() method + // of the TestWithParam class: + EXPECT_TRUE(foo.Blah(GetParam())); + ... +} + +TEST_P(FooTest, HasBlahBlah) { + ... +} + +// Finally, you can use INSTANTIATE_TEST_CASE_P to instantiate the test +// case with any set of parameters you want. Google Test defines a number +// of functions for generating test parameters. They return what we call +// (surprise!) parameter generators. Here is a summary of them, which +// are all in the testing namespace: +// +// +// Range(begin, end [, step]) - Yields values {begin, begin+step, +// begin+step+step, ...}. The values do not +// include end. step defaults to 1. +// Values(v1, v2, ..., vN) - Yields values {v1, v2, ..., vN}. +// ValuesIn(container) - Yields values from a C-style array, an STL +// ValuesIn(begin,end) container, or an iterator range [begin, end). +// Bool() - Yields sequence {false, true}. +// Combine(g1, g2, ..., gN) - Yields all combinations (the Cartesian product +// for the math savvy) of the values generated +// by the N generators. +// +// For more details, see comments at the definitions of these functions below +// in this file. +// +// The following statement will instantiate tests from the FooTest test case +// each with parameter values "meeny", "miny", and "moe". + +INSTANTIATE_TEST_CASE_P(InstantiationName, + FooTest, + Values("meeny", "miny", "moe")); + +// To distinguish different instances of the pattern, (yes, you +// can instantiate it more then once) the first argument to the +// INSTANTIATE_TEST_CASE_P macro is a prefix that will be added to the +// actual test case name. Remember to pick unique prefixes for different +// instantiations. The tests from the instantiation above will have +// these names: +// +// * InstantiationName/FooTest.DoesBlah/0 for "meeny" +// * InstantiationName/FooTest.DoesBlah/1 for "miny" +// * InstantiationName/FooTest.DoesBlah/2 for "moe" +// * InstantiationName/FooTest.HasBlahBlah/0 for "meeny" +// * InstantiationName/FooTest.HasBlahBlah/1 for "miny" +// * InstantiationName/FooTest.HasBlahBlah/2 for "moe" +// +// You can use these names in --gtest_filter. +// +// This statement will instantiate all tests from FooTest again, each +// with parameter values "cat" and "dog": + +const char* pets[] = {"cat", "dog"}; +INSTANTIATE_TEST_CASE_P(AnotherInstantiationName, FooTest, ValuesIn(pets)); + +// The tests from the instantiation above will have these names: +// +// * AnotherInstantiationName/FooTest.DoesBlah/0 for "cat" +// * AnotherInstantiationName/FooTest.DoesBlah/1 for "dog" +// * AnotherInstantiationName/FooTest.HasBlahBlah/0 for "cat" +// * AnotherInstantiationName/FooTest.HasBlahBlah/1 for "dog" +// +// Please note that INSTANTIATE_TEST_CASE_P will instantiate all tests +// in the given test case, whether their definitions come before or +// AFTER the INSTANTIATE_TEST_CASE_P statement. +// +// Please also note that generator expressions (including parameters to the +// generators) are evaluated in InitGoogleTest(), after main() has started. +// This allows the user on one hand, to adjust generator parameters in order +// to dynamically determine a set of tests to run and on the other hand, +// give the user a chance to inspect the generated tests with Google Test +// reflection API before RUN_ALL_TESTS() is executed. +// +// You can see samples/sample7_unittest.cc and samples/sample8_unittest.cc +// for more examples. +// +// In the future, we plan to publish the API for defining new parameter +// generators. But for now this interface remains part of the internal +// implementation and is subject to change. +// +// +// A parameterized test fixture must be derived from testing::Test and from +// testing::WithParamInterface, where T is the type of the parameter +// values. Inheriting from TestWithParam satisfies that requirement because +// TestWithParam inherits from both Test and WithParamInterface. In more +// complicated hierarchies, however, it is occasionally useful to inherit +// separately from Test and WithParamInterface. For example: + +class BaseTest : public ::testing::Test { + // You can inherit all the usual members for a non-parameterized test + // fixture here. +}; + +class DerivedTest : public BaseTest, public ::testing::WithParamInterface { + // The usual test fixture members go here too. +}; + +TEST_F(BaseTest, HasFoo) { + // This is an ordinary non-parameterized test. +} + +TEST_P(DerivedTest, DoesBlah) { + // GetParam works just the same here as if you inherit from TestWithParam. + EXPECT_TRUE(foo.Blah(GetParam())); +} + +#endif // 0 + +#include "gtest/internal/gtest-port.h" + +#if !GTEST_OS_SYMBIAN +# include +#endif + +// scripts/fuse_gtest.py depends on gtest's own header being #included +// *unconditionally*. Therefore these #includes cannot be moved +// inside #if GTEST_HAS_PARAM_TEST. +#include "gtest/internal/gtest-internal.h" +#include "gtest/internal/gtest-param-util.h" +#include "gtest/internal/gtest-param-util-generated.h" + +#if GTEST_HAS_PARAM_TEST + +namespace testing { + +// Functions producing parameter generators. +// +// Google Test uses these generators to produce parameters for value- +// parameterized tests. When a parameterized test case is instantiated +// with a particular generator, Google Test creates and runs tests +// for each element in the sequence produced by the generator. +// +// In the following sample, tests from test case FooTest are instantiated +// each three times with parameter values 3, 5, and 8: +// +// class FooTest : public TestWithParam { ... }; +// +// TEST_P(FooTest, TestThis) { +// } +// TEST_P(FooTest, TestThat) { +// } +// INSTANTIATE_TEST_CASE_P(TestSequence, FooTest, Values(3, 5, 8)); +// + +// Range() returns generators providing sequences of values in a range. +// +// Synopsis: +// Range(start, end) +// - returns a generator producing a sequence of values {start, start+1, +// start+2, ..., }. +// Range(start, end, step) +// - returns a generator producing a sequence of values {start, start+step, +// start+step+step, ..., }. +// Notes: +// * The generated sequences never include end. For example, Range(1, 5) +// returns a generator producing a sequence {1, 2, 3, 4}. Range(1, 9, 2) +// returns a generator producing {1, 3, 5, 7}. +// * start and end must have the same type. That type may be any integral or +// floating-point type or a user defined type satisfying these conditions: +// * It must be assignable (have operator=() defined). +// * It must have operator+() (operator+(int-compatible type) for +// two-operand version). +// * It must have operator<() defined. +// Elements in the resulting sequences will also have that type. +// * Condition start < end must be satisfied in order for resulting sequences +// to contain any elements. +// +template +internal::ParamGenerator Range(T start, T end, IncrementT step) { + return internal::ParamGenerator( + new internal::RangeGenerator(start, end, step)); +} + +template +internal::ParamGenerator Range(T start, T end) { + return Range(start, end, 1); +} + +// ValuesIn() function allows generation of tests with parameters coming from +// a container. +// +// Synopsis: +// ValuesIn(const T (&array)[N]) +// - returns a generator producing sequences with elements from +// a C-style array. +// ValuesIn(const Container& container) +// - returns a generator producing sequences with elements from +// an STL-style container. +// ValuesIn(Iterator begin, Iterator end) +// - returns a generator producing sequences with elements from +// a range [begin, end) defined by a pair of STL-style iterators. These +// iterators can also be plain C pointers. +// +// Please note that ValuesIn copies the values from the containers +// passed in and keeps them to generate tests in RUN_ALL_TESTS(). +// +// Examples: +// +// This instantiates tests from test case StringTest +// each with C-string values of "foo", "bar", and "baz": +// +// const char* strings[] = {"foo", "bar", "baz"}; +// INSTANTIATE_TEST_CASE_P(StringSequence, SrtingTest, ValuesIn(strings)); +// +// This instantiates tests from test case StlStringTest +// each with STL strings with values "a" and "b": +// +// ::std::vector< ::std::string> GetParameterStrings() { +// ::std::vector< ::std::string> v; +// v.push_back("a"); +// v.push_back("b"); +// return v; +// } +// +// INSTANTIATE_TEST_CASE_P(CharSequence, +// StlStringTest, +// ValuesIn(GetParameterStrings())); +// +// +// This will also instantiate tests from CharTest +// each with parameter values 'a' and 'b': +// +// ::std::list GetParameterChars() { +// ::std::list list; +// list.push_back('a'); +// list.push_back('b'); +// return list; +// } +// ::std::list l = GetParameterChars(); +// INSTANTIATE_TEST_CASE_P(CharSequence2, +// CharTest, +// ValuesIn(l.begin(), l.end())); +// +template +internal::ParamGenerator< + typename ::testing::internal::IteratorTraits::value_type> +ValuesIn(ForwardIterator begin, ForwardIterator end) { + typedef typename ::testing::internal::IteratorTraits + ::value_type ParamType; + return internal::ParamGenerator( + new internal::ValuesInIteratorRangeGenerator(begin, end)); +} + +template +internal::ParamGenerator ValuesIn(const T (&array)[N]) { + return ValuesIn(array, array + N); +} + +template +internal::ParamGenerator ValuesIn( + const Container& container) { + return ValuesIn(container.begin(), container.end()); +} + +// Values() allows generating tests from explicitly specified list of +// parameters. +// +// Synopsis: +// Values(T v1, T v2, ..., T vN) +// - returns a generator producing sequences with elements v1, v2, ..., vN. +// +// For example, this instantiates tests from test case BarTest each +// with values "one", "two", and "three": +// +// INSTANTIATE_TEST_CASE_P(NumSequence, BarTest, Values("one", "two", "three")); +// +// This instantiates tests from test case BazTest each with values 1, 2, 3.5. +// The exact type of values will depend on the type of parameter in BazTest. +// +// INSTANTIATE_TEST_CASE_P(FloatingNumbers, BazTest, Values(1, 2, 3.5)); +// +// Currently, Values() supports from 1 to $n parameters. +// +$range i 1..n +$for i [[ +$range j 1..i + +template <$for j, [[typename T$j]]> +internal::ValueArray$i<$for j, [[T$j]]> Values($for j, [[T$j v$j]]) { + return internal::ValueArray$i<$for j, [[T$j]]>($for j, [[v$j]]); +} + +]] + +// Bool() allows generating tests with parameters in a set of (false, true). +// +// Synopsis: +// Bool() +// - returns a generator producing sequences with elements {false, true}. +// +// It is useful when testing code that depends on Boolean flags. Combinations +// of multiple flags can be tested when several Bool()'s are combined using +// Combine() function. +// +// In the following example all tests in the test case FlagDependentTest +// will be instantiated twice with parameters false and true. +// +// class FlagDependentTest : public testing::TestWithParam { +// virtual void SetUp() { +// external_flag = GetParam(); +// } +// } +// INSTANTIATE_TEST_CASE_P(BoolSequence, FlagDependentTest, Bool()); +// +inline internal::ParamGenerator Bool() { + return Values(false, true); +} + +# if GTEST_HAS_COMBINE +// Combine() allows the user to combine two or more sequences to produce +// values of a Cartesian product of those sequences' elements. +// +// Synopsis: +// Combine(gen1, gen2, ..., genN) +// - returns a generator producing sequences with elements coming from +// the Cartesian product of elements from the sequences generated by +// gen1, gen2, ..., genN. The sequence elements will have a type of +// tuple where T1, T2, ..., TN are the types +// of elements from sequences produces by gen1, gen2, ..., genN. +// +// Combine can have up to $maxtuple arguments. This number is currently limited +// by the maximum number of elements in the tuple implementation used by Google +// Test. +// +// Example: +// +// This will instantiate tests in test case AnimalTest each one with +// the parameter values tuple("cat", BLACK), tuple("cat", WHITE), +// tuple("dog", BLACK), and tuple("dog", WHITE): +// +// enum Color { BLACK, GRAY, WHITE }; +// class AnimalTest +// : public testing::TestWithParam > {...}; +// +// TEST_P(AnimalTest, AnimalLooksNice) {...} +// +// INSTANTIATE_TEST_CASE_P(AnimalVariations, AnimalTest, +// Combine(Values("cat", "dog"), +// Values(BLACK, WHITE))); +// +// This will instantiate tests in FlagDependentTest with all variations of two +// Boolean flags: +// +// class FlagDependentTest +// : public testing::TestWithParam > { +// virtual void SetUp() { +// // Assigns external_flag_1 and external_flag_2 values from the tuple. +// tie(external_flag_1, external_flag_2) = GetParam(); +// } +// }; +// +// TEST_P(FlagDependentTest, TestFeature1) { +// // Test your code using external_flag_1 and external_flag_2 here. +// } +// INSTANTIATE_TEST_CASE_P(TwoBoolSequence, FlagDependentTest, +// Combine(Bool(), Bool())); +// +$range i 2..maxtuple +$for i [[ +$range j 1..i + +template <$for j, [[typename Generator$j]]> +internal::CartesianProductHolder$i<$for j, [[Generator$j]]> Combine( + $for j, [[const Generator$j& g$j]]) { + return internal::CartesianProductHolder$i<$for j, [[Generator$j]]>( + $for j, [[g$j]]); +} + +]] +# endif // GTEST_HAS_COMBINE + + + +# define TEST_P(test_case_name, test_name) \ + class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \ + : public test_case_name { \ + public: \ + GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {} \ + virtual void TestBody(); \ + private: \ + static int AddToRegistry() { \ + ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \ + GetTestCasePatternHolder(\ + #test_case_name, __FILE__, __LINE__)->AddTestPattern(\ + #test_case_name, \ + #test_name, \ + new ::testing::internal::TestMetaFactory< \ + GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>()); \ + return 0; \ + } \ + static int gtest_registering_dummy_; \ + GTEST_DISALLOW_COPY_AND_ASSIGN_(\ + GTEST_TEST_CLASS_NAME_(test_case_name, test_name)); \ + }; \ + int GTEST_TEST_CLASS_NAME_(test_case_name, \ + test_name)::gtest_registering_dummy_ = \ + GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::AddToRegistry(); \ + void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody() + +# define INSTANTIATE_TEST_CASE_P(prefix, test_case_name, generator) \ + ::testing::internal::ParamGenerator \ + gtest_##prefix##test_case_name##_EvalGenerator_() { return generator; } \ + int gtest_##prefix##test_case_name##_dummy_ = \ + ::testing::UnitTest::GetInstance()->parameterized_test_registry(). \ + GetTestCasePatternHolder(\ + #test_case_name, __FILE__, __LINE__)->AddTestCaseInstantiation(\ + #prefix, \ + >est_##prefix##test_case_name##_EvalGenerator_, \ + __FILE__, __LINE__) + +} // namespace testing + +#endif // GTEST_HAS_PARAM_TEST + +#endif // GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ diff --git a/thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest-printers.h b/thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest-printers.h new file mode 100644 index 00000000..0639d9f5 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest-printers.h @@ -0,0 +1,855 @@ +// Copyright 2007, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +// Google Test - The Google C++ Testing Framework +// +// This file implements a universal value printer that can print a +// value of any type T: +// +// void ::testing::internal::UniversalPrinter::Print(value, ostream_ptr); +// +// A user can teach this function how to print a class type T by +// defining either operator<<() or PrintTo() in the namespace that +// defines T. More specifically, the FIRST defined function in the +// following list will be used (assuming T is defined in namespace +// foo): +// +// 1. foo::PrintTo(const T&, ostream*) +// 2. operator<<(ostream&, const T&) defined in either foo or the +// global namespace. +// +// If none of the above is defined, it will print the debug string of +// the value if it is a protocol buffer, or print the raw bytes in the +// value otherwise. +// +// To aid debugging: when T is a reference type, the address of the +// value is also printed; when T is a (const) char pointer, both the +// pointer value and the NUL-terminated string it points to are +// printed. +// +// We also provide some convenient wrappers: +// +// // Prints a value to a string. For a (const or not) char +// // pointer, the NUL-terminated string (but not the pointer) is +// // printed. +// std::string ::testing::PrintToString(const T& value); +// +// // Prints a value tersely: for a reference type, the referenced +// // value (but not the address) is printed; for a (const or not) char +// // pointer, the NUL-terminated string (but not the pointer) is +// // printed. +// void ::testing::internal::UniversalTersePrint(const T& value, ostream*); +// +// // Prints value using the type inferred by the compiler. The difference +// // from UniversalTersePrint() is that this function prints both the +// // pointer and the NUL-terminated string for a (const or not) char pointer. +// void ::testing::internal::UniversalPrint(const T& value, ostream*); +// +// // Prints the fields of a tuple tersely to a string vector, one +// // element for each field. Tuple support must be enabled in +// // gtest-port.h. +// std::vector UniversalTersePrintTupleFieldsToStrings( +// const Tuple& value); +// +// Known limitation: +// +// The print primitives print the elements of an STL-style container +// using the compiler-inferred type of *iter where iter is a +// const_iterator of the container. When const_iterator is an input +// iterator but not a forward iterator, this inferred type may not +// match value_type, and the print output may be incorrect. In +// practice, this is rarely a problem as for most containers +// const_iterator is a forward iterator. We'll fix this if there's an +// actual need for it. Note that this fix cannot rely on value_type +// being defined as many user-defined container types don't have +// value_type. + +#ifndef GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_ +#define GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_ + +#include // NOLINT +#include +#include +#include +#include +#include "gtest/internal/gtest-port.h" +#include "gtest/internal/gtest-internal.h" + +namespace testing { + +// Definitions in the 'internal' and 'internal2' name spaces are +// subject to change without notice. DO NOT USE THEM IN USER CODE! +namespace internal2 { + +// Prints the given number of bytes in the given object to the given +// ostream. +GTEST_API_ void PrintBytesInObjectTo(const unsigned char* obj_bytes, + size_t count, + ::std::ostream* os); + +// For selecting which printer to use when a given type has neither << +// nor PrintTo(). +enum TypeKind { + kProtobuf, // a protobuf type + kConvertibleToInteger, // a type implicitly convertible to BiggestInt + // (e.g. a named or unnamed enum type) + kOtherType // anything else +}; + +// TypeWithoutFormatter::PrintValue(value, os) is called +// by the universal printer to print a value of type T when neither +// operator<< nor PrintTo() is defined for T, where kTypeKind is the +// "kind" of T as defined by enum TypeKind. +template +class TypeWithoutFormatter { + public: + // This default version is called when kTypeKind is kOtherType. + static void PrintValue(const T& value, ::std::ostream* os) { + PrintBytesInObjectTo(reinterpret_cast(&value), + sizeof(value), os); + } +}; + +// We print a protobuf using its ShortDebugString() when the string +// doesn't exceed this many characters; otherwise we print it using +// DebugString() for better readability. +const size_t kProtobufOneLinerMaxLength = 50; + +template +class TypeWithoutFormatter { + public: + static void PrintValue(const T& value, ::std::ostream* os) { + const ::testing::internal::string short_str = value.ShortDebugString(); + const ::testing::internal::string pretty_str = + short_str.length() <= kProtobufOneLinerMaxLength ? + short_str : ("\n" + value.DebugString()); + *os << ("<" + pretty_str + ">"); + } +}; + +template +class TypeWithoutFormatter { + public: + // Since T has no << operator or PrintTo() but can be implicitly + // converted to BiggestInt, we print it as a BiggestInt. + // + // Most likely T is an enum type (either named or unnamed), in which + // case printing it as an integer is the desired behavior. In case + // T is not an enum, printing it as an integer is the best we can do + // given that it has no user-defined printer. + static void PrintValue(const T& value, ::std::ostream* os) { + const internal::BiggestInt kBigInt = value; + *os << kBigInt; + } +}; + +// Prints the given value to the given ostream. If the value is a +// protocol message, its debug string is printed; if it's an enum or +// of a type implicitly convertible to BiggestInt, it's printed as an +// integer; otherwise the bytes in the value are printed. This is +// what UniversalPrinter::Print() does when it knows nothing about +// type T and T has neither << operator nor PrintTo(). +// +// A user can override this behavior for a class type Foo by defining +// a << operator in the namespace where Foo is defined. +// +// We put this operator in namespace 'internal2' instead of 'internal' +// to simplify the implementation, as much code in 'internal' needs to +// use << in STL, which would conflict with our own << were it defined +// in 'internal'. +// +// Note that this operator<< takes a generic std::basic_ostream type instead of the more restricted std::ostream. If +// we define it to take an std::ostream instead, we'll get an +// "ambiguous overloads" compiler error when trying to print a type +// Foo that supports streaming to std::basic_ostream, as the compiler cannot tell whether +// operator<<(std::ostream&, const T&) or +// operator<<(std::basic_stream, const Foo&) is more +// specific. +template +::std::basic_ostream& operator<<( + ::std::basic_ostream& os, const T& x) { + TypeWithoutFormatter::value ? kProtobuf : + internal::ImplicitlyConvertible::value ? + kConvertibleToInteger : kOtherType)>::PrintValue(x, &os); + return os; +} + +} // namespace internal2 +} // namespace testing + +// This namespace MUST NOT BE NESTED IN ::testing, or the name look-up +// magic needed for implementing UniversalPrinter won't work. +namespace testing_internal { + +// Used to print a value that is not an STL-style container when the +// user doesn't define PrintTo() for it. +template +void DefaultPrintNonContainerTo(const T& value, ::std::ostream* os) { + // With the following statement, during unqualified name lookup, + // testing::internal2::operator<< appears as if it was declared in + // the nearest enclosing namespace that contains both + // ::testing_internal and ::testing::internal2, i.e. the global + // namespace. For more details, refer to the C++ Standard section + // 7.3.4-1 [namespace.udir]. This allows us to fall back onto + // testing::internal2::operator<< in case T doesn't come with a << + // operator. + // + // We cannot write 'using ::testing::internal2::operator<<;', which + // gcc 3.3 fails to compile due to a compiler bug. + using namespace ::testing::internal2; // NOLINT + + // Assuming T is defined in namespace foo, in the next statement, + // the compiler will consider all of: + // + // 1. foo::operator<< (thanks to Koenig look-up), + // 2. ::operator<< (as the current namespace is enclosed in ::), + // 3. testing::internal2::operator<< (thanks to the using statement above). + // + // The operator<< whose type matches T best will be picked. + // + // We deliberately allow #2 to be a candidate, as sometimes it's + // impossible to define #1 (e.g. when foo is ::std, defining + // anything in it is undefined behavior unless you are a compiler + // vendor.). + *os << value; +} + +} // namespace testing_internal + +namespace testing { +namespace internal { + +// UniversalPrinter::Print(value, ostream_ptr) prints the given +// value to the given ostream. The caller must ensure that +// 'ostream_ptr' is not NULL, or the behavior is undefined. +// +// We define UniversalPrinter as a class template (as opposed to a +// function template), as we need to partially specialize it for +// reference types, which cannot be done with function templates. +template +class UniversalPrinter; + +template +void UniversalPrint(const T& value, ::std::ostream* os); + +// Used to print an STL-style container when the user doesn't define +// a PrintTo() for it. +template +void DefaultPrintTo(IsContainer /* dummy */, + false_type /* is not a pointer */, + const C& container, ::std::ostream* os) { + const size_t kMaxCount = 32; // The maximum number of elements to print. + *os << '{'; + size_t count = 0; + for (typename C::const_iterator it = container.begin(); + it != container.end(); ++it, ++count) { + if (count > 0) { + *os << ','; + if (count == kMaxCount) { // Enough has been printed. + *os << " ..."; + break; + } + } + *os << ' '; + // We cannot call PrintTo(*it, os) here as PrintTo() doesn't + // handle *it being a native array. + internal::UniversalPrint(*it, os); + } + + if (count > 0) { + *os << ' '; + } + *os << '}'; +} + +// Used to print a pointer that is neither a char pointer nor a member +// pointer, when the user doesn't define PrintTo() for it. (A member +// variable pointer or member function pointer doesn't really point to +// a location in the address space. Their representation is +// implementation-defined. Therefore they will be printed as raw +// bytes.) +template +void DefaultPrintTo(IsNotContainer /* dummy */, + true_type /* is a pointer */, + T* p, ::std::ostream* os) { + if (p == NULL) { + *os << "NULL"; + } else { + // C++ doesn't allow casting from a function pointer to any object + // pointer. + // + // IsTrue() silences warnings: "Condition is always true", + // "unreachable code". + if (IsTrue(ImplicitlyConvertible::value)) { + // T is not a function type. We just call << to print p, + // relying on ADL to pick up user-defined << for their pointer + // types, if any. + *os << p; + } else { + // T is a function type, so '*os << p' doesn't do what we want + // (it just prints p as bool). We want to print p as a const + // void*. However, we cannot cast it to const void* directly, + // even using reinterpret_cast, as earlier versions of gcc + // (e.g. 3.4.5) cannot compile the cast when p is a function + // pointer. Casting to UInt64 first solves the problem. + *os << reinterpret_cast( + reinterpret_cast(p)); + } + } +} + +// Used to print a non-container, non-pointer value when the user +// doesn't define PrintTo() for it. +template +void DefaultPrintTo(IsNotContainer /* dummy */, + false_type /* is not a pointer */, + const T& value, ::std::ostream* os) { + ::testing_internal::DefaultPrintNonContainerTo(value, os); +} + +// Prints the given value using the << operator if it has one; +// otherwise prints the bytes in it. This is what +// UniversalPrinter::Print() does when PrintTo() is not specialized +// or overloaded for type T. +// +// A user can override this behavior for a class type Foo by defining +// an overload of PrintTo() in the namespace where Foo is defined. We +// give the user this option as sometimes defining a << operator for +// Foo is not desirable (e.g. the coding style may prevent doing it, +// or there is already a << operator but it doesn't do what the user +// wants). +template +void PrintTo(const T& value, ::std::ostream* os) { + // DefaultPrintTo() is overloaded. The type of its first two + // arguments determine which version will be picked. If T is an + // STL-style container, the version for container will be called; if + // T is a pointer, the pointer version will be called; otherwise the + // generic version will be called. + // + // Note that we check for container types here, prior to we check + // for protocol message types in our operator<<. The rationale is: + // + // For protocol messages, we want to give people a chance to + // override Google Mock's format by defining a PrintTo() or + // operator<<. For STL containers, other formats can be + // incompatible with Google Mock's format for the container + // elements; therefore we check for container types here to ensure + // that our format is used. + // + // The second argument of DefaultPrintTo() is needed to bypass a bug + // in Symbian's C++ compiler that prevents it from picking the right + // overload between: + // + // PrintTo(const T& x, ...); + // PrintTo(T* x, ...); + DefaultPrintTo(IsContainerTest(0), is_pointer(), value, os); +} + +// The following list of PrintTo() overloads tells +// UniversalPrinter::Print() how to print standard types (built-in +// types, strings, plain arrays, and pointers). + +// Overloads for various char types. +GTEST_API_ void PrintTo(unsigned char c, ::std::ostream* os); +GTEST_API_ void PrintTo(signed char c, ::std::ostream* os); +inline void PrintTo(char c, ::std::ostream* os) { + // When printing a plain char, we always treat it as unsigned. This + // way, the output won't be affected by whether the compiler thinks + // char is signed or not. + PrintTo(static_cast(c), os); +} + +// Overloads for other simple built-in types. +inline void PrintTo(bool x, ::std::ostream* os) { + *os << (x ? "true" : "false"); +} + +// Overload for wchar_t type. +// Prints a wchar_t as a symbol if it is printable or as its internal +// code otherwise and also as its decimal code (except for L'\0'). +// The L'\0' char is printed as "L'\\0'". The decimal code is printed +// as signed integer when wchar_t is implemented by the compiler +// as a signed type and is printed as an unsigned integer when wchar_t +// is implemented as an unsigned type. +GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os); + +// Overloads for C strings. +GTEST_API_ void PrintTo(const char* s, ::std::ostream* os); +inline void PrintTo(char* s, ::std::ostream* os) { + PrintTo(ImplicitCast_(s), os); +} + +// signed/unsigned char is often used for representing binary data, so +// we print pointers to it as void* to be safe. +inline void PrintTo(const signed char* s, ::std::ostream* os) { + PrintTo(ImplicitCast_(s), os); +} +inline void PrintTo(signed char* s, ::std::ostream* os) { + PrintTo(ImplicitCast_(s), os); +} +inline void PrintTo(const unsigned char* s, ::std::ostream* os) { + PrintTo(ImplicitCast_(s), os); +} +inline void PrintTo(unsigned char* s, ::std::ostream* os) { + PrintTo(ImplicitCast_(s), os); +} + +// MSVC can be configured to define wchar_t as a typedef of unsigned +// short. It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native +// type. When wchar_t is a typedef, defining an overload for const +// wchar_t* would cause unsigned short* be printed as a wide string, +// possibly causing invalid memory accesses. +#if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED) +// Overloads for wide C strings +GTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os); +inline void PrintTo(wchar_t* s, ::std::ostream* os) { + PrintTo(ImplicitCast_(s), os); +} +#endif + +// Overload for C arrays. Multi-dimensional arrays are printed +// properly. + +// Prints the given number of elements in an array, without printing +// the curly braces. +template +void PrintRawArrayTo(const T a[], size_t count, ::std::ostream* os) { + UniversalPrint(a[0], os); + for (size_t i = 1; i != count; i++) { + *os << ", "; + UniversalPrint(a[i], os); + } +} + +// Overloads for ::string and ::std::string. +#if GTEST_HAS_GLOBAL_STRING +GTEST_API_ void PrintStringTo(const ::string&s, ::std::ostream* os); +inline void PrintTo(const ::string& s, ::std::ostream* os) { + PrintStringTo(s, os); +} +#endif // GTEST_HAS_GLOBAL_STRING + +GTEST_API_ void PrintStringTo(const ::std::string&s, ::std::ostream* os); +inline void PrintTo(const ::std::string& s, ::std::ostream* os) { + PrintStringTo(s, os); +} + +// Overloads for ::wstring and ::std::wstring. +#if GTEST_HAS_GLOBAL_WSTRING +GTEST_API_ void PrintWideStringTo(const ::wstring&s, ::std::ostream* os); +inline void PrintTo(const ::wstring& s, ::std::ostream* os) { + PrintWideStringTo(s, os); +} +#endif // GTEST_HAS_GLOBAL_WSTRING + +#if GTEST_HAS_STD_WSTRING +GTEST_API_ void PrintWideStringTo(const ::std::wstring&s, ::std::ostream* os); +inline void PrintTo(const ::std::wstring& s, ::std::ostream* os) { + PrintWideStringTo(s, os); +} +#endif // GTEST_HAS_STD_WSTRING + +#if GTEST_HAS_TR1_TUPLE +// Overload for ::std::tr1::tuple. Needed for printing function arguments, +// which are packed as tuples. + +// Helper function for printing a tuple. T must be instantiated with +// a tuple type. +template +void PrintTupleTo(const T& t, ::std::ostream* os); + +// Overloaded PrintTo() for tuples of various arities. We support +// tuples of up-to 10 fields. The following implementation works +// regardless of whether tr1::tuple is implemented using the +// non-standard variadic template feature or not. + +inline void PrintTo(const ::std::tr1::tuple<>& t, ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, + ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, + ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, + ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, + ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo(const ::std::tr1::tuple& t, + ::std::ostream* os) { + PrintTupleTo(t, os); +} + +template +void PrintTo( + const ::std::tr1::tuple& t, + ::std::ostream* os) { + PrintTupleTo(t, os); +} +#endif // GTEST_HAS_TR1_TUPLE + +// Overload for std::pair. +template +void PrintTo(const ::std::pair& value, ::std::ostream* os) { + *os << '('; + // We cannot use UniversalPrint(value.first, os) here, as T1 may be + // a reference type. The same for printing value.second. + UniversalPrinter::Print(value.first, os); + *os << ", "; + UniversalPrinter::Print(value.second, os); + *os << ')'; +} + +// Implements printing a non-reference type T by letting the compiler +// pick the right overload of PrintTo() for T. +template +class UniversalPrinter { + public: + // MSVC warns about adding const to a function type, so we want to + // disable the warning. +#ifdef _MSC_VER +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4180) // Temporarily disables warning 4180. +#endif // _MSC_VER + + // Note: we deliberately don't call this PrintTo(), as that name + // conflicts with ::testing::internal::PrintTo in the body of the + // function. + static void Print(const T& value, ::std::ostream* os) { + // By default, ::testing::internal::PrintTo() is used for printing + // the value. + // + // Thanks to Koenig look-up, if T is a class and has its own + // PrintTo() function defined in its namespace, that function will + // be visible here. Since it is more specific than the generic ones + // in ::testing::internal, it will be picked by the compiler in the + // following statement - exactly what we want. + PrintTo(value, os); + } + +#ifdef _MSC_VER +# pragma warning(pop) // Restores the warning state. +#endif // _MSC_VER +}; + +// UniversalPrintArray(begin, len, os) prints an array of 'len' +// elements, starting at address 'begin'. +template +void UniversalPrintArray(const T* begin, size_t len, ::std::ostream* os) { + if (len == 0) { + *os << "{}"; + } else { + *os << "{ "; + const size_t kThreshold = 18; + const size_t kChunkSize = 8; + // If the array has more than kThreshold elements, we'll have to + // omit some details by printing only the first and the last + // kChunkSize elements. + // TODO(wan@google.com): let the user control the threshold using a flag. + if (len <= kThreshold) { + PrintRawArrayTo(begin, len, os); + } else { + PrintRawArrayTo(begin, kChunkSize, os); + *os << ", ..., "; + PrintRawArrayTo(begin + len - kChunkSize, kChunkSize, os); + } + *os << " }"; + } +} +// This overload prints a (const) char array compactly. +GTEST_API_ void UniversalPrintArray( + const char* begin, size_t len, ::std::ostream* os); + +// This overload prints a (const) wchar_t array compactly. +GTEST_API_ void UniversalPrintArray( + const wchar_t* begin, size_t len, ::std::ostream* os); + +// Implements printing an array type T[N]. +template +class UniversalPrinter { + public: + // Prints the given array, omitting some elements when there are too + // many. + static void Print(const T (&a)[N], ::std::ostream* os) { + UniversalPrintArray(a, N, os); + } +}; + +// Implements printing a reference type T&. +template +class UniversalPrinter { + public: + // MSVC warns about adding const to a function type, so we want to + // disable the warning. +#ifdef _MSC_VER +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4180) // Temporarily disables warning 4180. +#endif // _MSC_VER + + static void Print(const T& value, ::std::ostream* os) { + // Prints the address of the value. We use reinterpret_cast here + // as static_cast doesn't compile when T is a function type. + *os << "@" << reinterpret_cast(&value) << " "; + + // Then prints the value itself. + UniversalPrint(value, os); + } + +#ifdef _MSC_VER +# pragma warning(pop) // Restores the warning state. +#endif // _MSC_VER +}; + +// Prints a value tersely: for a reference type, the referenced value +// (but not the address) is printed; for a (const) char pointer, the +// NUL-terminated string (but not the pointer) is printed. + +template +class UniversalTersePrinter { + public: + static void Print(const T& value, ::std::ostream* os) { + UniversalPrint(value, os); + } +}; +template +class UniversalTersePrinter { + public: + static void Print(const T& value, ::std::ostream* os) { + UniversalPrint(value, os); + } +}; +template +class UniversalTersePrinter { + public: + static void Print(const T (&value)[N], ::std::ostream* os) { + UniversalPrinter::Print(value, os); + } +}; +template <> +class UniversalTersePrinter { + public: + static void Print(const char* str, ::std::ostream* os) { + if (str == NULL) { + *os << "NULL"; + } else { + UniversalPrint(string(str), os); + } + } +}; +template <> +class UniversalTersePrinter { + public: + static void Print(char* str, ::std::ostream* os) { + UniversalTersePrinter::Print(str, os); + } +}; + +#if GTEST_HAS_STD_WSTRING +template <> +class UniversalTersePrinter { + public: + static void Print(const wchar_t* str, ::std::ostream* os) { + if (str == NULL) { + *os << "NULL"; + } else { + UniversalPrint(::std::wstring(str), os); + } + } +}; +#endif + +template <> +class UniversalTersePrinter { + public: + static void Print(wchar_t* str, ::std::ostream* os) { + UniversalTersePrinter::Print(str, os); + } +}; + +template +void UniversalTersePrint(const T& value, ::std::ostream* os) { + UniversalTersePrinter::Print(value, os); +} + +// Prints a value using the type inferred by the compiler. The +// difference between this and UniversalTersePrint() is that for a +// (const) char pointer, this prints both the pointer and the +// NUL-terminated string. +template +void UniversalPrint(const T& value, ::std::ostream* os) { + // A workarond for the bug in VC++ 7.1 that prevents us from instantiating + // UniversalPrinter with T directly. + typedef T T1; + UniversalPrinter::Print(value, os); +} + +#if GTEST_HAS_TR1_TUPLE +typedef ::std::vector Strings; + +// This helper template allows PrintTo() for tuples and +// UniversalTersePrintTupleFieldsToStrings() to be defined by +// induction on the number of tuple fields. The idea is that +// TuplePrefixPrinter::PrintPrefixTo(t, os) prints the first N +// fields in tuple t, and can be defined in terms of +// TuplePrefixPrinter. + +// The inductive case. +template +struct TuplePrefixPrinter { + // Prints the first N fields of a tuple. + template + static void PrintPrefixTo(const Tuple& t, ::std::ostream* os) { + TuplePrefixPrinter::PrintPrefixTo(t, os); + *os << ", "; + UniversalPrinter::type> + ::Print(::std::tr1::get(t), os); + } + + // Tersely prints the first N fields of a tuple to a string vector, + // one element for each field. + template + static void TersePrintPrefixToStrings(const Tuple& t, Strings* strings) { + TuplePrefixPrinter::TersePrintPrefixToStrings(t, strings); + ::std::stringstream ss; + UniversalTersePrint(::std::tr1::get(t), &ss); + strings->push_back(ss.str()); + } +}; + +// Base cases. +template <> +struct TuplePrefixPrinter<0> { + template + static void PrintPrefixTo(const Tuple&, ::std::ostream*) {} + + template + static void TersePrintPrefixToStrings(const Tuple&, Strings*) {} +}; +// We have to specialize the entire TuplePrefixPrinter<> class +// template here, even though the definition of +// TersePrintPrefixToStrings() is the same as the generic version, as +// Embarcadero (formerly CodeGear, formerly Borland) C++ doesn't +// support specializing a method template of a class template. +template <> +struct TuplePrefixPrinter<1> { + template + static void PrintPrefixTo(const Tuple& t, ::std::ostream* os) { + UniversalPrinter::type>:: + Print(::std::tr1::get<0>(t), os); + } + + template + static void TersePrintPrefixToStrings(const Tuple& t, Strings* strings) { + ::std::stringstream ss; + UniversalTersePrint(::std::tr1::get<0>(t), &ss); + strings->push_back(ss.str()); + } +}; + +// Helper function for printing a tuple. T must be instantiated with +// a tuple type. +template +void PrintTupleTo(const T& t, ::std::ostream* os) { + *os << "("; + TuplePrefixPrinter< ::std::tr1::tuple_size::value>:: + PrintPrefixTo(t, os); + *os << ")"; +} + +// Prints the fields of a tuple tersely to a string vector, one +// element for each field. See the comment before +// UniversalTersePrint() for how we define "tersely". +template +Strings UniversalTersePrintTupleFieldsToStrings(const Tuple& value) { + Strings result; + TuplePrefixPrinter< ::std::tr1::tuple_size::value>:: + TersePrintPrefixToStrings(value, &result); + return result; +} +#endif // GTEST_HAS_TR1_TUPLE + +} // namespace internal + +template +::std::string PrintToString(const T& value) { + ::std::stringstream ss; + internal::UniversalTersePrinter::Print(value, &ss); + return ss.str(); +} + +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_ diff --git a/thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest-spi.h b/thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest-spi.h new file mode 100644 index 00000000..f63fa9a1 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest-spi.h @@ -0,0 +1,232 @@ +// Copyright 2007, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) +// +// Utilities for testing Google Test itself and code that uses Google Test +// (e.g. frameworks built on top of Google Test). + +#ifndef GTEST_INCLUDE_GTEST_GTEST_SPI_H_ +#define GTEST_INCLUDE_GTEST_GTEST_SPI_H_ + +#include "gtest/gtest.h" + +namespace testing { + +// This helper class can be used to mock out Google Test failure reporting +// so that we can test Google Test or code that builds on Google Test. +// +// An object of this class appends a TestPartResult object to the +// TestPartResultArray object given in the constructor whenever a Google Test +// failure is reported. It can either intercept only failures that are +// generated in the same thread that created this object or it can intercept +// all generated failures. The scope of this mock object can be controlled with +// the second argument to the two arguments constructor. +class GTEST_API_ ScopedFakeTestPartResultReporter + : public TestPartResultReporterInterface { + public: + // The two possible mocking modes of this object. + enum InterceptMode { + INTERCEPT_ONLY_CURRENT_THREAD, // Intercepts only thread local failures. + INTERCEPT_ALL_THREADS // Intercepts all failures. + }; + + // The c'tor sets this object as the test part result reporter used + // by Google Test. The 'result' parameter specifies where to report the + // results. This reporter will only catch failures generated in the current + // thread. DEPRECATED + explicit ScopedFakeTestPartResultReporter(TestPartResultArray* result); + + // Same as above, but you can choose the interception scope of this object. + ScopedFakeTestPartResultReporter(InterceptMode intercept_mode, + TestPartResultArray* result); + + // The d'tor restores the previous test part result reporter. + virtual ~ScopedFakeTestPartResultReporter(); + + // Appends the TestPartResult object to the TestPartResultArray + // received in the constructor. + // + // This method is from the TestPartResultReporterInterface + // interface. + virtual void ReportTestPartResult(const TestPartResult& result); + private: + void Init(); + + const InterceptMode intercept_mode_; + TestPartResultReporterInterface* old_reporter_; + TestPartResultArray* const result_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(ScopedFakeTestPartResultReporter); +}; + +namespace internal { + +// A helper class for implementing EXPECT_FATAL_FAILURE() and +// EXPECT_NONFATAL_FAILURE(). Its destructor verifies that the given +// TestPartResultArray contains exactly one failure that has the given +// type and contains the given substring. If that's not the case, a +// non-fatal failure will be generated. +class GTEST_API_ SingleFailureChecker { + public: + // The constructor remembers the arguments. + SingleFailureChecker(const TestPartResultArray* results, + TestPartResult::Type type, + const string& substr); + ~SingleFailureChecker(); + private: + const TestPartResultArray* const results_; + const TestPartResult::Type type_; + const string substr_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(SingleFailureChecker); +}; + +} // namespace internal + +} // namespace testing + +// A set of macros for testing Google Test assertions or code that's expected +// to generate Google Test fatal failures. It verifies that the given +// statement will cause exactly one fatal Google Test failure with 'substr' +// being part of the failure message. +// +// There are two different versions of this macro. EXPECT_FATAL_FAILURE only +// affects and considers failures generated in the current thread and +// EXPECT_FATAL_FAILURE_ON_ALL_THREADS does the same but for all threads. +// +// The verification of the assertion is done correctly even when the statement +// throws an exception or aborts the current function. +// +// Known restrictions: +// - 'statement' cannot reference local non-static variables or +// non-static members of the current object. +// - 'statement' cannot return a value. +// - You cannot stream a failure message to this macro. +// +// Note that even though the implementations of the following two +// macros are much alike, we cannot refactor them to use a common +// helper macro, due to some peculiarity in how the preprocessor +// works. The AcceptsMacroThatExpandsToUnprotectedComma test in +// gtest_unittest.cc will fail to compile if we do that. +#define EXPECT_FATAL_FAILURE(statement, substr) \ + do { \ + class GTestExpectFatalFailureHelper {\ + public:\ + static void Execute() { statement; }\ + };\ + ::testing::TestPartResultArray gtest_failures;\ + ::testing::internal::SingleFailureChecker gtest_checker(\ + >est_failures, ::testing::TestPartResult::kFatalFailure, (substr));\ + {\ + ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\ + ::testing::ScopedFakeTestPartResultReporter:: \ + INTERCEPT_ONLY_CURRENT_THREAD, >est_failures);\ + GTestExpectFatalFailureHelper::Execute();\ + }\ + } while (::testing::internal::AlwaysFalse()) + +#define EXPECT_FATAL_FAILURE_ON_ALL_THREADS(statement, substr) \ + do { \ + class GTestExpectFatalFailureHelper {\ + public:\ + static void Execute() { statement; }\ + };\ + ::testing::TestPartResultArray gtest_failures;\ + ::testing::internal::SingleFailureChecker gtest_checker(\ + >est_failures, ::testing::TestPartResult::kFatalFailure, (substr));\ + {\ + ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\ + ::testing::ScopedFakeTestPartResultReporter:: \ + INTERCEPT_ALL_THREADS, >est_failures);\ + GTestExpectFatalFailureHelper::Execute();\ + }\ + } while (::testing::internal::AlwaysFalse()) + +// A macro for testing Google Test assertions or code that's expected to +// generate Google Test non-fatal failures. It asserts that the given +// statement will cause exactly one non-fatal Google Test failure with 'substr' +// being part of the failure message. +// +// There are two different versions of this macro. EXPECT_NONFATAL_FAILURE only +// affects and considers failures generated in the current thread and +// EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS does the same but for all threads. +// +// 'statement' is allowed to reference local variables and members of +// the current object. +// +// The verification of the assertion is done correctly even when the statement +// throws an exception or aborts the current function. +// +// Known restrictions: +// - You cannot stream a failure message to this macro. +// +// Note that even though the implementations of the following two +// macros are much alike, we cannot refactor them to use a common +// helper macro, due to some peculiarity in how the preprocessor +// works. If we do that, the code won't compile when the user gives +// EXPECT_NONFATAL_FAILURE() a statement that contains a macro that +// expands to code containing an unprotected comma. The +// AcceptsMacroThatExpandsToUnprotectedComma test in gtest_unittest.cc +// catches that. +// +// For the same reason, we have to write +// if (::testing::internal::AlwaysTrue()) { statement; } +// instead of +// GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement) +// to avoid an MSVC warning on unreachable code. +#define EXPECT_NONFATAL_FAILURE(statement, substr) \ + do {\ + ::testing::TestPartResultArray gtest_failures;\ + ::testing::internal::SingleFailureChecker gtest_checker(\ + >est_failures, ::testing::TestPartResult::kNonFatalFailure, \ + (substr));\ + {\ + ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\ + ::testing::ScopedFakeTestPartResultReporter:: \ + INTERCEPT_ONLY_CURRENT_THREAD, >est_failures);\ + if (::testing::internal::AlwaysTrue()) { statement; }\ + }\ + } while (::testing::internal::AlwaysFalse()) + +#define EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS(statement, substr) \ + do {\ + ::testing::TestPartResultArray gtest_failures;\ + ::testing::internal::SingleFailureChecker gtest_checker(\ + >est_failures, ::testing::TestPartResult::kNonFatalFailure, \ + (substr));\ + {\ + ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\ + ::testing::ScopedFakeTestPartResultReporter::INTERCEPT_ALL_THREADS, \ + >est_failures);\ + if (::testing::internal::AlwaysTrue()) { statement; }\ + }\ + } while (::testing::internal::AlwaysFalse()) + +#endif // GTEST_INCLUDE_GTEST_GTEST_SPI_H_ diff --git a/thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest-test-part.h b/thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest-test-part.h new file mode 100644 index 00000000..77eb8448 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest-test-part.h @@ -0,0 +1,179 @@ +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: mheule@google.com (Markus Heule) +// + +#ifndef GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_ +#define GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_ + +#include +#include +#include "gtest/internal/gtest-internal.h" +#include "gtest/internal/gtest-string.h" + +namespace testing { + +// A copyable object representing the result of a test part (i.e. an +// assertion or an explicit FAIL(), ADD_FAILURE(), or SUCCESS()). +// +// Don't inherit from TestPartResult as its destructor is not virtual. +class GTEST_API_ TestPartResult { + public: + // The possible outcomes of a test part (i.e. an assertion or an + // explicit SUCCEED(), FAIL(), or ADD_FAILURE()). + enum Type { + kSuccess, // Succeeded. + kNonFatalFailure, // Failed but the test can continue. + kFatalFailure // Failed and the test should be terminated. + }; + + // C'tor. TestPartResult does NOT have a default constructor. + // Always use this constructor (with parameters) to create a + // TestPartResult object. + TestPartResult(Type a_type, + const char* a_file_name, + int a_line_number, + const char* a_message) + : type_(a_type), + file_name_(a_file_name == NULL ? "" : a_file_name), + line_number_(a_line_number), + summary_(ExtractSummary(a_message)), + message_(a_message) { + } + + // Gets the outcome of the test part. + Type type() const { return type_; } + + // Gets the name of the source file where the test part took place, or + // NULL if it's unknown. + const char* file_name() const { + return file_name_.empty() ? NULL : file_name_.c_str(); + } + + // Gets the line in the source file where the test part took place, + // or -1 if it's unknown. + int line_number() const { return line_number_; } + + // Gets the summary of the failure message. + const char* summary() const { return summary_.c_str(); } + + // Gets the message associated with the test part. + const char* message() const { return message_.c_str(); } + + // Returns true iff the test part passed. + bool passed() const { return type_ == kSuccess; } + + // Returns true iff the test part failed. + bool failed() const { return type_ != kSuccess; } + + // Returns true iff the test part non-fatally failed. + bool nonfatally_failed() const { return type_ == kNonFatalFailure; } + + // Returns true iff the test part fatally failed. + bool fatally_failed() const { return type_ == kFatalFailure; } + + private: + Type type_; + + // Gets the summary of the failure message by omitting the stack + // trace in it. + static std::string ExtractSummary(const char* message); + + // The name of the source file where the test part took place, or + // "" if the source file is unknown. + std::string file_name_; + // The line in the source file where the test part took place, or -1 + // if the line number is unknown. + int line_number_; + std::string summary_; // The test failure summary. + std::string message_; // The test failure message. +}; + +// Prints a TestPartResult object. +std::ostream& operator<<(std::ostream& os, const TestPartResult& result); + +// An array of TestPartResult objects. +// +// Don't inherit from TestPartResultArray as its destructor is not +// virtual. +class GTEST_API_ TestPartResultArray { + public: + TestPartResultArray() {} + + // Appends the given TestPartResult to the array. + void Append(const TestPartResult& result); + + // Returns the TestPartResult at the given index (0-based). + const TestPartResult& GetTestPartResult(int index) const; + + // Returns the number of TestPartResult objects in the array. + int size() const; + + private: + std::vector array_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(TestPartResultArray); +}; + +// This interface knows how to report a test part result. +class TestPartResultReporterInterface { + public: + virtual ~TestPartResultReporterInterface() {} + + virtual void ReportTestPartResult(const TestPartResult& result) = 0; +}; + +namespace internal { + +// This helper class is used by {ASSERT|EXPECT}_NO_FATAL_FAILURE to check if a +// statement generates new fatal failures. To do so it registers itself as the +// current test part result reporter. Besides checking if fatal failures were +// reported, it only delegates the reporting to the former result reporter. +// The original result reporter is restored in the destructor. +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +class GTEST_API_ HasNewFatalFailureHelper + : public TestPartResultReporterInterface { + public: + HasNewFatalFailureHelper(); + virtual ~HasNewFatalFailureHelper(); + virtual void ReportTestPartResult(const TestPartResult& result); + bool has_new_fatal_failure() const { return has_new_fatal_failure_; } + private: + bool has_new_fatal_failure_; + TestPartResultReporterInterface* original_reporter_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(HasNewFatalFailureHelper); +}; + +} // namespace internal + +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_ diff --git a/thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest-typed-test.h b/thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest-typed-test.h new file mode 100644 index 00000000..fe1e83b2 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest-typed-test.h @@ -0,0 +1,259 @@ +// Copyright 2008 Google Inc. +// All Rights Reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +#ifndef GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_ +#define GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_ + +// This header implements typed tests and type-parameterized tests. + +// Typed (aka type-driven) tests repeat the same test for types in a +// list. You must know which types you want to test with when writing +// typed tests. Here's how you do it: + +#if 0 + +// First, define a fixture class template. It should be parameterized +// by a type. Remember to derive it from testing::Test. +template +class FooTest : public testing::Test { + public: + ... + typedef std::list List; + static T shared_; + T value_; +}; + +// Next, associate a list of types with the test case, which will be +// repeated for each type in the list. The typedef is necessary for +// the macro to parse correctly. +typedef testing::Types MyTypes; +TYPED_TEST_CASE(FooTest, MyTypes); + +// If the type list contains only one type, you can write that type +// directly without Types<...>: +// TYPED_TEST_CASE(FooTest, int); + +// Then, use TYPED_TEST() instead of TEST_F() to define as many typed +// tests for this test case as you want. +TYPED_TEST(FooTest, DoesBlah) { + // Inside a test, refer to TypeParam to get the type parameter. + // Since we are inside a derived class template, C++ requires use to + // visit the members of FooTest via 'this'. + TypeParam n = this->value_; + + // To visit static members of the fixture, add the TestFixture:: + // prefix. + n += TestFixture::shared_; + + // To refer to typedefs in the fixture, add the "typename + // TestFixture::" prefix. + typename TestFixture::List values; + values.push_back(n); + ... +} + +TYPED_TEST(FooTest, HasPropertyA) { ... } + +#endif // 0 + +// Type-parameterized tests are abstract test patterns parameterized +// by a type. Compared with typed tests, type-parameterized tests +// allow you to define the test pattern without knowing what the type +// parameters are. The defined pattern can be instantiated with +// different types any number of times, in any number of translation +// units. +// +// If you are designing an interface or concept, you can define a +// suite of type-parameterized tests to verify properties that any +// valid implementation of the interface/concept should have. Then, +// each implementation can easily instantiate the test suite to verify +// that it conforms to the requirements, without having to write +// similar tests repeatedly. Here's an example: + +#if 0 + +// First, define a fixture class template. It should be parameterized +// by a type. Remember to derive it from testing::Test. +template +class FooTest : public testing::Test { + ... +}; + +// Next, declare that you will define a type-parameterized test case +// (the _P suffix is for "parameterized" or "pattern", whichever you +// prefer): +TYPED_TEST_CASE_P(FooTest); + +// Then, use TYPED_TEST_P() to define as many type-parameterized tests +// for this type-parameterized test case as you want. +TYPED_TEST_P(FooTest, DoesBlah) { + // Inside a test, refer to TypeParam to get the type parameter. + TypeParam n = 0; + ... +} + +TYPED_TEST_P(FooTest, HasPropertyA) { ... } + +// Now the tricky part: you need to register all test patterns before +// you can instantiate them. The first argument of the macro is the +// test case name; the rest are the names of the tests in this test +// case. +REGISTER_TYPED_TEST_CASE_P(FooTest, + DoesBlah, HasPropertyA); + +// Finally, you are free to instantiate the pattern with the types you +// want. If you put the above code in a header file, you can #include +// it in multiple C++ source files and instantiate it multiple times. +// +// To distinguish different instances of the pattern, the first +// argument to the INSTANTIATE_* macro is a prefix that will be added +// to the actual test case name. Remember to pick unique prefixes for +// different instances. +typedef testing::Types MyTypes; +INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, MyTypes); + +// If the type list contains only one type, you can write that type +// directly without Types<...>: +// INSTANTIATE_TYPED_TEST_CASE_P(My, FooTest, int); + +#endif // 0 + +#include "gtest/internal/gtest-port.h" +#include "gtest/internal/gtest-type-util.h" + +// Implements typed tests. + +#if GTEST_HAS_TYPED_TEST + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// Expands to the name of the typedef for the type parameters of the +// given test case. +# define GTEST_TYPE_PARAMS_(TestCaseName) gtest_type_params_##TestCaseName##_ + +// The 'Types' template argument below must have spaces around it +// since some compilers may choke on '>>' when passing a template +// instance (e.g. Types) +# define TYPED_TEST_CASE(CaseName, Types) \ + typedef ::testing::internal::TypeList< Types >::type \ + GTEST_TYPE_PARAMS_(CaseName) + +# define TYPED_TEST(CaseName, TestName) \ + template \ + class GTEST_TEST_CLASS_NAME_(CaseName, TestName) \ + : public CaseName { \ + private: \ + typedef CaseName TestFixture; \ + typedef gtest_TypeParam_ TypeParam; \ + virtual void TestBody(); \ + }; \ + bool gtest_##CaseName##_##TestName##_registered_ GTEST_ATTRIBUTE_UNUSED_ = \ + ::testing::internal::TypeParameterizedTest< \ + CaseName, \ + ::testing::internal::TemplateSel< \ + GTEST_TEST_CLASS_NAME_(CaseName, TestName)>, \ + GTEST_TYPE_PARAMS_(CaseName)>::Register(\ + "", #CaseName, #TestName, 0); \ + template \ + void GTEST_TEST_CLASS_NAME_(CaseName, TestName)::TestBody() + +#endif // GTEST_HAS_TYPED_TEST + +// Implements type-parameterized tests. + +#if GTEST_HAS_TYPED_TEST_P + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// Expands to the namespace name that the type-parameterized tests for +// the given type-parameterized test case are defined in. The exact +// name of the namespace is subject to change without notice. +# define GTEST_CASE_NAMESPACE_(TestCaseName) \ + gtest_case_##TestCaseName##_ + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// Expands to the name of the variable used to remember the names of +// the defined tests in the given test case. +# define GTEST_TYPED_TEST_CASE_P_STATE_(TestCaseName) \ + gtest_typed_test_case_p_state_##TestCaseName##_ + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE DIRECTLY. +// +// Expands to the name of the variable used to remember the names of +// the registered tests in the given test case. +# define GTEST_REGISTERED_TEST_NAMES_(TestCaseName) \ + gtest_registered_test_names_##TestCaseName##_ + +// The variables defined in the type-parameterized test macros are +// static as typically these macros are used in a .h file that can be +// #included in multiple translation units linked together. +# define TYPED_TEST_CASE_P(CaseName) \ + static ::testing::internal::TypedTestCasePState \ + GTEST_TYPED_TEST_CASE_P_STATE_(CaseName) + +# define TYPED_TEST_P(CaseName, TestName) \ + namespace GTEST_CASE_NAMESPACE_(CaseName) { \ + template \ + class TestName : public CaseName { \ + private: \ + typedef CaseName TestFixture; \ + typedef gtest_TypeParam_ TypeParam; \ + virtual void TestBody(); \ + }; \ + static bool gtest_##TestName##_defined_ GTEST_ATTRIBUTE_UNUSED_ = \ + GTEST_TYPED_TEST_CASE_P_STATE_(CaseName).AddTestName(\ + __FILE__, __LINE__, #CaseName, #TestName); \ + } \ + template \ + void GTEST_CASE_NAMESPACE_(CaseName)::TestName::TestBody() + +# define REGISTER_TYPED_TEST_CASE_P(CaseName, ...) \ + namespace GTEST_CASE_NAMESPACE_(CaseName) { \ + typedef ::testing::internal::Templates<__VA_ARGS__>::type gtest_AllTests_; \ + } \ + static const char* const GTEST_REGISTERED_TEST_NAMES_(CaseName) = \ + GTEST_TYPED_TEST_CASE_P_STATE_(CaseName).VerifyRegisteredTestNames(\ + __FILE__, __LINE__, #__VA_ARGS__) + +// The 'Types' template argument below must have spaces around it +// since some compilers may choke on '>>' when passing a template +// instance (e.g. Types) +# define INSTANTIATE_TYPED_TEST_CASE_P(Prefix, CaseName, Types) \ + bool gtest_##Prefix##_##CaseName GTEST_ATTRIBUTE_UNUSED_ = \ + ::testing::internal::TypeParameterizedTestCase::type>::Register(\ + #Prefix, #CaseName, GTEST_REGISTERED_TEST_NAMES_(CaseName)) + +#endif // GTEST_HAS_TYPED_TEST_P + +#endif // GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_ diff --git a/thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest.h b/thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest.h new file mode 100644 index 00000000..9ecb1456 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest.h @@ -0,0 +1,2236 @@ +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) +// +// The Google C++ Testing Framework (Google Test) +// +// This header file defines the public API for Google Test. It should be +// included by any test program that uses Google Test. +// +// IMPORTANT NOTE: Due to limitation of the C++ language, we have to +// leave some internal implementation details in this header file. +// They are clearly marked by comments like this: +// +// // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +// +// Such code is NOT meant to be used by a user directly, and is subject +// to CHANGE WITHOUT NOTICE. Therefore DO NOT DEPEND ON IT in a user +// program! +// +// Acknowledgment: Google Test borrowed the idea of automatic test +// registration from Barthelemy Dagenais' (barthelemy@prologique.com) +// easyUnit framework. + +#ifndef GTEST_INCLUDE_GTEST_GTEST_H_ +#define GTEST_INCLUDE_GTEST_GTEST_H_ + +#include +#include +#include + +#include "gtest/internal/gtest-internal.h" +#include "gtest/internal/gtest-string.h" +#include "gtest/gtest-death-test.h" +#include "gtest/gtest-message.h" +#include "gtest/gtest-param-test.h" +#include "gtest/gtest-printers.h" +#include "gtest/gtest_prod.h" +#include "gtest/gtest-test-part.h" +#include "gtest/gtest-typed-test.h" + +// Depending on the platform, different string classes are available. +// On Linux, in addition to ::std::string, Google also makes use of +// class ::string, which has the same interface as ::std::string, but +// has a different implementation. +// +// The user can define GTEST_HAS_GLOBAL_STRING to 1 to indicate that +// ::string is available AND is a distinct type to ::std::string, or +// define it to 0 to indicate otherwise. +// +// If the user's ::std::string and ::string are the same class due to +// aliasing, he should define GTEST_HAS_GLOBAL_STRING to 0. +// +// If the user doesn't define GTEST_HAS_GLOBAL_STRING, it is defined +// heuristically. + +namespace testing { + +// Declares the flags. + +// This flag temporary enables the disabled tests. +GTEST_DECLARE_bool_(also_run_disabled_tests); + +// This flag brings the debugger on an assertion failure. +GTEST_DECLARE_bool_(break_on_failure); + +// This flag controls whether Google Test catches all test-thrown exceptions +// and logs them as failures. +GTEST_DECLARE_bool_(catch_exceptions); + +// This flag enables using colors in terminal output. Available values are +// "yes" to enable colors, "no" (disable colors), or "auto" (the default) +// to let Google Test decide. +GTEST_DECLARE_string_(color); + +// This flag sets up the filter to select by name using a glob pattern +// the tests to run. If the filter is not given all tests are executed. +GTEST_DECLARE_string_(filter); + +// This flag causes the Google Test to list tests. None of the tests listed +// are actually run if the flag is provided. +GTEST_DECLARE_bool_(list_tests); + +// This flag controls whether Google Test emits a detailed XML report to a file +// in addition to its normal textual output. +GTEST_DECLARE_string_(output); + +// This flags control whether Google Test prints the elapsed time for each +// test. +GTEST_DECLARE_bool_(print_time); + +// This flag specifies the random number seed. +GTEST_DECLARE_int32_(random_seed); + +// This flag sets how many times the tests are repeated. The default value +// is 1. If the value is -1 the tests are repeating forever. +GTEST_DECLARE_int32_(repeat); + +// This flag controls whether Google Test includes Google Test internal +// stack frames in failure stack traces. +GTEST_DECLARE_bool_(show_internal_stack_frames); + +// When this flag is specified, tests' order is randomized on every iteration. +GTEST_DECLARE_bool_(shuffle); + +// This flag specifies the maximum number of stack frames to be +// printed in a failure message. +GTEST_DECLARE_int32_(stack_trace_depth); + +// When this flag is specified, a failed assertion will throw an +// exception if exceptions are enabled, or exit the program with a +// non-zero code otherwise. +GTEST_DECLARE_bool_(throw_on_failure); + +// When this flag is set with a "host:port" string, on supported +// platforms test results are streamed to the specified port on +// the specified host machine. +GTEST_DECLARE_string_(stream_result_to); + +// The upper limit for valid stack trace depths. +const int kMaxStackTraceDepth = 100; + +namespace internal { + +class AssertHelper; +class DefaultGlobalTestPartResultReporter; +class ExecDeathTest; +class NoExecDeathTest; +class FinalSuccessChecker; +class GTestFlagSaver; +class TestResultAccessor; +class TestEventListenersAccessor; +class TestEventRepeater; +class WindowsDeathTest; +class UnitTestImpl* GetUnitTestImpl(); +void ReportFailureInUnknownLocation(TestPartResult::Type result_type, + const std::string& message); + +// Converts a streamable value to an std::string. A NULL pointer is +// converted to "(null)". When the input value is a ::string, +// ::std::string, ::wstring, or ::std::wstring object, each NUL +// character in it is replaced with "\\0". +// Declared in gtest-internal.h but defined here, so that it has access +// to the definition of the Message class, required by the ARM +// compiler. +template +std::string StreamableToString(const T& streamable) { + return (Message() << streamable).GetString(); +} + +} // namespace internal + +// The friend relationship of some of these classes is cyclic. +// If we don't forward declare them the compiler might confuse the classes +// in friendship clauses with same named classes on the scope. +class Test; +class TestCase; +class TestInfo; +class UnitTest; + +// A class for indicating whether an assertion was successful. When +// the assertion wasn't successful, the AssertionResult object +// remembers a non-empty message that describes how it failed. +// +// To create an instance of this class, use one of the factory functions +// (AssertionSuccess() and AssertionFailure()). +// +// This class is useful for two purposes: +// 1. Defining predicate functions to be used with Boolean test assertions +// EXPECT_TRUE/EXPECT_FALSE and their ASSERT_ counterparts +// 2. Defining predicate-format functions to be +// used with predicate assertions (ASSERT_PRED_FORMAT*, etc). +// +// For example, if you define IsEven predicate: +// +// testing::AssertionResult IsEven(int n) { +// if ((n % 2) == 0) +// return testing::AssertionSuccess(); +// else +// return testing::AssertionFailure() << n << " is odd"; +// } +// +// Then the failed expectation EXPECT_TRUE(IsEven(Fib(5))) +// will print the message +// +// Value of: IsEven(Fib(5)) +// Actual: false (5 is odd) +// Expected: true +// +// instead of a more opaque +// +// Value of: IsEven(Fib(5)) +// Actual: false +// Expected: true +// +// in case IsEven is a simple Boolean predicate. +// +// If you expect your predicate to be reused and want to support informative +// messages in EXPECT_FALSE and ASSERT_FALSE (negative assertions show up +// about half as often as positive ones in our tests), supply messages for +// both success and failure cases: +// +// testing::AssertionResult IsEven(int n) { +// if ((n % 2) == 0) +// return testing::AssertionSuccess() << n << " is even"; +// else +// return testing::AssertionFailure() << n << " is odd"; +// } +// +// Then a statement EXPECT_FALSE(IsEven(Fib(6))) will print +// +// Value of: IsEven(Fib(6)) +// Actual: true (8 is even) +// Expected: false +// +// NB: Predicates that support negative Boolean assertions have reduced +// performance in positive ones so be careful not to use them in tests +// that have lots (tens of thousands) of positive Boolean assertions. +// +// To use this class with EXPECT_PRED_FORMAT assertions such as: +// +// // Verifies that Foo() returns an even number. +// EXPECT_PRED_FORMAT1(IsEven, Foo()); +// +// you need to define: +// +// testing::AssertionResult IsEven(const char* expr, int n) { +// if ((n % 2) == 0) +// return testing::AssertionSuccess(); +// else +// return testing::AssertionFailure() +// << "Expected: " << expr << " is even\n Actual: it's " << n; +// } +// +// If Foo() returns 5, you will see the following message: +// +// Expected: Foo() is even +// Actual: it's 5 +// +class GTEST_API_ AssertionResult { + public: + // Copy constructor. + // Used in EXPECT_TRUE/FALSE(assertion_result). + AssertionResult(const AssertionResult& other); + // Used in the EXPECT_TRUE/FALSE(bool_expression). + explicit AssertionResult(bool success) : success_(success) {} + + // Returns true iff the assertion succeeded. + operator bool() const { return success_; } // NOLINT + + // Returns the assertion's negation. Used with EXPECT/ASSERT_FALSE. + AssertionResult operator!() const; + + // Returns the text streamed into this AssertionResult. Test assertions + // use it when they fail (i.e., the predicate's outcome doesn't match the + // assertion's expectation). When nothing has been streamed into the + // object, returns an empty string. + const char* message() const { + return message_.get() != NULL ? message_->c_str() : ""; + } + // TODO(vladl@google.com): Remove this after making sure no clients use it. + // Deprecated; please use message() instead. + const char* failure_message() const { return message(); } + + // Streams a custom failure message into this object. + template AssertionResult& operator<<(const T& value) { + AppendMessage(Message() << value); + return *this; + } + + // Allows streaming basic output manipulators such as endl or flush into + // this object. + AssertionResult& operator<<( + ::std::ostream& (*basic_manipulator)(::std::ostream& stream)) { + AppendMessage(Message() << basic_manipulator); + return *this; + } + + private: + // Appends the contents of message to message_. + void AppendMessage(const Message& a_message) { + if (message_.get() == NULL) + message_.reset(new ::std::string); + message_->append(a_message.GetString().c_str()); + } + + // Stores result of the assertion predicate. + bool success_; + // Stores the message describing the condition in case the expectation + // construct is not satisfied with the predicate's outcome. + // Referenced via a pointer to avoid taking too much stack frame space + // with test assertions. + internal::scoped_ptr< ::std::string> message_; + + GTEST_DISALLOW_ASSIGN_(AssertionResult); +}; + +// Makes a successful assertion result. +GTEST_API_ AssertionResult AssertionSuccess(); + +// Makes a failed assertion result. +GTEST_API_ AssertionResult AssertionFailure(); + +// Makes a failed assertion result with the given failure message. +// Deprecated; use AssertionFailure() << msg. +GTEST_API_ AssertionResult AssertionFailure(const Message& msg); + +// The abstract class that all tests inherit from. +// +// In Google Test, a unit test program contains one or many TestCases, and +// each TestCase contains one or many Tests. +// +// When you define a test using the TEST macro, you don't need to +// explicitly derive from Test - the TEST macro automatically does +// this for you. +// +// The only time you derive from Test is when defining a test fixture +// to be used a TEST_F. For example: +// +// class FooTest : public testing::Test { +// protected: +// virtual void SetUp() { ... } +// virtual void TearDown() { ... } +// ... +// }; +// +// TEST_F(FooTest, Bar) { ... } +// TEST_F(FooTest, Baz) { ... } +// +// Test is not copyable. +class GTEST_API_ Test { + public: + friend class TestInfo; + + // Defines types for pointers to functions that set up and tear down + // a test case. + typedef internal::SetUpTestCaseFunc SetUpTestCaseFunc; + typedef internal::TearDownTestCaseFunc TearDownTestCaseFunc; + + // The d'tor is virtual as we intend to inherit from Test. + virtual ~Test(); + + // Sets up the stuff shared by all tests in this test case. + // + // Google Test will call Foo::SetUpTestCase() before running the first + // test in test case Foo. Hence a sub-class can define its own + // SetUpTestCase() method to shadow the one defined in the super + // class. + static void SetUpTestCase() {} + + // Tears down the stuff shared by all tests in this test case. + // + // Google Test will call Foo::TearDownTestCase() after running the last + // test in test case Foo. Hence a sub-class can define its own + // TearDownTestCase() method to shadow the one defined in the super + // class. + static void TearDownTestCase() {} + + // Returns true iff the current test has a fatal failure. + static bool HasFatalFailure(); + + // Returns true iff the current test has a non-fatal failure. + static bool HasNonfatalFailure(); + + // Returns true iff the current test has a (either fatal or + // non-fatal) failure. + static bool HasFailure() { return HasFatalFailure() || HasNonfatalFailure(); } + + // Logs a property for the current test. Only the last value for a given + // key is remembered. + // These are public static so they can be called from utility functions + // that are not members of the test fixture. + // The arguments are const char* instead strings, as Google Test is used + // on platforms where string doesn't compile. + // + // Note that a driving consideration for these RecordProperty methods + // was to produce xml output suited to the Greenspan charting utility, + // which at present will only chart values that fit in a 32-bit int. It + // is the user's responsibility to restrict their values to 32-bit ints + // if they intend them to be used with Greenspan. + static void RecordProperty(const char* key, const char* value); + static void RecordProperty(const char* key, int value); + + protected: + // Creates a Test object. + Test(); + + // Sets up the test fixture. + virtual void SetUp(); + + // Tears down the test fixture. + virtual void TearDown(); + + private: + // Returns true iff the current test has the same fixture class as + // the first test in the current test case. + static bool HasSameFixtureClass(); + + // Runs the test after the test fixture has been set up. + // + // A sub-class must implement this to define the test logic. + // + // DO NOT OVERRIDE THIS FUNCTION DIRECTLY IN A USER PROGRAM. + // Instead, use the TEST or TEST_F macro. + virtual void TestBody() = 0; + + // Sets up, executes, and tears down the test. + void Run(); + + // Deletes self. We deliberately pick an unusual name for this + // internal method to avoid clashing with names used in user TESTs. + void DeleteSelf_() { delete this; } + + // Uses a GTestFlagSaver to save and restore all Google Test flags. + const internal::GTestFlagSaver* const gtest_flag_saver_; + + // Often a user mis-spells SetUp() as Setup() and spends a long time + // wondering why it is never called by Google Test. The declaration of + // the following method is solely for catching such an error at + // compile time: + // + // - The return type is deliberately chosen to be not void, so it + // will be a conflict if a user declares void Setup() in his test + // fixture. + // + // - This method is private, so it will be another compiler error + // if a user calls it from his test fixture. + // + // DO NOT OVERRIDE THIS FUNCTION. + // + // If you see an error about overriding the following function or + // about it being private, you have mis-spelled SetUp() as Setup(). + struct Setup_should_be_spelled_SetUp {}; + virtual Setup_should_be_spelled_SetUp* Setup() { return NULL; } + + // We disallow copying Tests. + GTEST_DISALLOW_COPY_AND_ASSIGN_(Test); +}; + +typedef internal::TimeInMillis TimeInMillis; + +// A copyable object representing a user specified test property which can be +// output as a key/value string pair. +// +// Don't inherit from TestProperty as its destructor is not virtual. +class TestProperty { + public: + // C'tor. TestProperty does NOT have a default constructor. + // Always use this constructor (with parameters) to create a + // TestProperty object. + TestProperty(const char* a_key, const char* a_value) : + key_(a_key), value_(a_value) { + } + + // Gets the user supplied key. + const char* key() const { + return key_.c_str(); + } + + // Gets the user supplied value. + const char* value() const { + return value_.c_str(); + } + + // Sets a new value, overriding the one supplied in the constructor. + void SetValue(const char* new_value) { + value_ = new_value; + } + + private: + // The key supplied by the user. + std::string key_; + // The value supplied by the user. + std::string value_; +}; + +// The result of a single Test. This includes a list of +// TestPartResults, a list of TestProperties, a count of how many +// death tests there are in the Test, and how much time it took to run +// the Test. +// +// TestResult is not copyable. +class GTEST_API_ TestResult { + public: + // Creates an empty TestResult. + TestResult(); + + // D'tor. Do not inherit from TestResult. + ~TestResult(); + + // Gets the number of all test parts. This is the sum of the number + // of successful test parts and the number of failed test parts. + int total_part_count() const; + + // Returns the number of the test properties. + int test_property_count() const; + + // Returns true iff the test passed (i.e. no test part failed). + bool Passed() const { return !Failed(); } + + // Returns true iff the test failed. + bool Failed() const; + + // Returns true iff the test fatally failed. + bool HasFatalFailure() const; + + // Returns true iff the test has a non-fatal failure. + bool HasNonfatalFailure() const; + + // Returns the elapsed time, in milliseconds. + TimeInMillis elapsed_time() const { return elapsed_time_; } + + // Returns the i-th test part result among all the results. i can range + // from 0 to test_property_count() - 1. If i is not in that range, aborts + // the program. + const TestPartResult& GetTestPartResult(int i) const; + + // Returns the i-th test property. i can range from 0 to + // test_property_count() - 1. If i is not in that range, aborts the + // program. + const TestProperty& GetTestProperty(int i) const; + + private: + friend class TestInfo; + friend class UnitTest; + friend class internal::DefaultGlobalTestPartResultReporter; + friend class internal::ExecDeathTest; + friend class internal::TestResultAccessor; + friend class internal::UnitTestImpl; + friend class internal::WindowsDeathTest; + + // Gets the vector of TestPartResults. + const std::vector& test_part_results() const { + return test_part_results_; + } + + // Gets the vector of TestProperties. + const std::vector& test_properties() const { + return test_properties_; + } + + // Sets the elapsed time. + void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; } + + // Adds a test property to the list. The property is validated and may add + // a non-fatal failure if invalid (e.g., if it conflicts with reserved + // key names). If a property is already recorded for the same key, the + // value will be updated, rather than storing multiple values for the same + // key. + void RecordProperty(const TestProperty& test_property); + + // Adds a failure if the key is a reserved attribute of Google Test + // testcase tags. Returns true if the property is valid. + // TODO(russr): Validate attribute names are legal and human readable. + static bool ValidateTestProperty(const TestProperty& test_property); + + // Adds a test part result to the list. + void AddTestPartResult(const TestPartResult& test_part_result); + + // Returns the death test count. + int death_test_count() const { return death_test_count_; } + + // Increments the death test count, returning the new count. + int increment_death_test_count() { return ++death_test_count_; } + + // Clears the test part results. + void ClearTestPartResults(); + + // Clears the object. + void Clear(); + + // Protects mutable state of the property vector and of owned + // properties, whose values may be updated. + internal::Mutex test_properites_mutex_; + + // The vector of TestPartResults + std::vector test_part_results_; + // The vector of TestProperties + std::vector test_properties_; + // Running count of death tests. + int death_test_count_; + // The elapsed time, in milliseconds. + TimeInMillis elapsed_time_; + + // We disallow copying TestResult. + GTEST_DISALLOW_COPY_AND_ASSIGN_(TestResult); +}; // class TestResult + +// A TestInfo object stores the following information about a test: +// +// Test case name +// Test name +// Whether the test should be run +// A function pointer that creates the test object when invoked +// Test result +// +// The constructor of TestInfo registers itself with the UnitTest +// singleton such that the RUN_ALL_TESTS() macro knows which tests to +// run. +class GTEST_API_ TestInfo { + public: + // Destructs a TestInfo object. This function is not virtual, so + // don't inherit from TestInfo. + ~TestInfo(); + + // Returns the test case name. + const char* test_case_name() const { return test_case_name_.c_str(); } + + // Returns the test name. + const char* name() const { return name_.c_str(); } + + // Returns the name of the parameter type, or NULL if this is not a typed + // or a type-parameterized test. + const char* type_param() const { + if (type_param_.get() != NULL) + return type_param_->c_str(); + return NULL; + } + + // Returns the text representation of the value parameter, or NULL if this + // is not a value-parameterized test. + const char* value_param() const { + if (value_param_.get() != NULL) + return value_param_->c_str(); + return NULL; + } + + // Returns true if this test should run, that is if the test is not disabled + // (or it is disabled but the also_run_disabled_tests flag has been specified) + // and its full name matches the user-specified filter. + // + // Google Test allows the user to filter the tests by their full names. + // The full name of a test Bar in test case Foo is defined as + // "Foo.Bar". Only the tests that match the filter will run. + // + // A filter is a colon-separated list of glob (not regex) patterns, + // optionally followed by a '-' and a colon-separated list of + // negative patterns (tests to exclude). A test is run if it + // matches one of the positive patterns and does not match any of + // the negative patterns. + // + // For example, *A*:Foo.* is a filter that matches any string that + // contains the character 'A' or starts with "Foo.". + bool should_run() const { return should_run_; } + + // Returns the result of the test. + const TestResult* result() const { return &result_; } + + private: +#if GTEST_HAS_DEATH_TEST + friend class internal::DefaultDeathTestFactory; +#endif // GTEST_HAS_DEATH_TEST + friend class Test; + friend class TestCase; + friend class internal::UnitTestImpl; + friend TestInfo* internal::MakeAndRegisterTestInfo( + const char* test_case_name, const char* name, + const char* type_param, + const char* value_param, + internal::TypeId fixture_class_id, + Test::SetUpTestCaseFunc set_up_tc, + Test::TearDownTestCaseFunc tear_down_tc, + internal::TestFactoryBase* factory); + + // Constructs a TestInfo object. The newly constructed instance assumes + // ownership of the factory object. + TestInfo(const char* test_case_name, const char* name, + const char* a_type_param, + const char* a_value_param, + internal::TypeId fixture_class_id, + internal::TestFactoryBase* factory); + + // Increments the number of death tests encountered in this test so + // far. + int increment_death_test_count() { + return result_.increment_death_test_count(); + } + + // Creates the test object, runs it, records its result, and then + // deletes it. + void Run(); + + static void ClearTestResult(TestInfo* test_info) { + test_info->result_.Clear(); + } + + // These fields are immutable properties of the test. + const std::string test_case_name_; // Test case name + const std::string name_; // Test name + // Name of the parameter type, or NULL if this is not a typed or a + // type-parameterized test. + const internal::scoped_ptr type_param_; + // Text representation of the value parameter, or NULL if this is not a + // value-parameterized test. + const internal::scoped_ptr value_param_; + const internal::TypeId fixture_class_id_; // ID of the test fixture class + bool should_run_; // True iff this test should run + bool is_disabled_; // True iff this test is disabled + bool matches_filter_; // True if this test matches the + // user-specified filter. + internal::TestFactoryBase* const factory_; // The factory that creates + // the test object + + // This field is mutable and needs to be reset before running the + // test for the second time. + TestResult result_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(TestInfo); +}; + +// A test case, which consists of a vector of TestInfos. +// +// TestCase is not copyable. +class GTEST_API_ TestCase { + public: + // Creates a TestCase with the given name. + // + // TestCase does NOT have a default constructor. Always use this + // constructor to create a TestCase object. + // + // Arguments: + // + // name: name of the test case + // a_type_param: the name of the test's type parameter, or NULL if + // this is not a type-parameterized test. + // set_up_tc: pointer to the function that sets up the test case + // tear_down_tc: pointer to the function that tears down the test case + TestCase(const char* name, const char* a_type_param, + Test::SetUpTestCaseFunc set_up_tc, + Test::TearDownTestCaseFunc tear_down_tc); + + // Destructor of TestCase. + virtual ~TestCase(); + + // Gets the name of the TestCase. + const char* name() const { return name_.c_str(); } + + // Returns the name of the parameter type, or NULL if this is not a + // type-parameterized test case. + const char* type_param() const { + if (type_param_.get() != NULL) + return type_param_->c_str(); + return NULL; + } + + // Returns true if any test in this test case should run. + bool should_run() const { return should_run_; } + + // Gets the number of successful tests in this test case. + int successful_test_count() const; + + // Gets the number of failed tests in this test case. + int failed_test_count() const; + + // Gets the number of disabled tests in this test case. + int disabled_test_count() const; + + // Get the number of tests in this test case that should run. + int test_to_run_count() const; + + // Gets the number of all tests in this test case. + int total_test_count() const; + + // Returns true iff the test case passed. + bool Passed() const { return !Failed(); } + + // Returns true iff the test case failed. + bool Failed() const { return failed_test_count() > 0; } + + // Returns the elapsed time, in milliseconds. + TimeInMillis elapsed_time() const { return elapsed_time_; } + + // Returns the i-th test among all the tests. i can range from 0 to + // total_test_count() - 1. If i is not in that range, returns NULL. + const TestInfo* GetTestInfo(int i) const; + + private: + friend class Test; + friend class internal::UnitTestImpl; + + // Gets the (mutable) vector of TestInfos in this TestCase. + std::vector& test_info_list() { return test_info_list_; } + + // Gets the (immutable) vector of TestInfos in this TestCase. + const std::vector& test_info_list() const { + return test_info_list_; + } + + // Returns the i-th test among all the tests. i can range from 0 to + // total_test_count() - 1. If i is not in that range, returns NULL. + TestInfo* GetMutableTestInfo(int i); + + // Sets the should_run member. + void set_should_run(bool should) { should_run_ = should; } + + // Adds a TestInfo to this test case. Will delete the TestInfo upon + // destruction of the TestCase object. + void AddTestInfo(TestInfo * test_info); + + // Clears the results of all tests in this test case. + void ClearResult(); + + // Clears the results of all tests in the given test case. + static void ClearTestCaseResult(TestCase* test_case) { + test_case->ClearResult(); + } + + // Runs every test in this TestCase. + void Run(); + + // Runs SetUpTestCase() for this TestCase. This wrapper is needed + // for catching exceptions thrown from SetUpTestCase(). + void RunSetUpTestCase() { (*set_up_tc_)(); } + + // Runs TearDownTestCase() for this TestCase. This wrapper is + // needed for catching exceptions thrown from TearDownTestCase(). + void RunTearDownTestCase() { (*tear_down_tc_)(); } + + // Returns true iff test passed. + static bool TestPassed(const TestInfo* test_info) { + return test_info->should_run() && test_info->result()->Passed(); + } + + // Returns true iff test failed. + static bool TestFailed(const TestInfo* test_info) { + return test_info->should_run() && test_info->result()->Failed(); + } + + // Returns true iff test is disabled. + static bool TestDisabled(const TestInfo* test_info) { + return test_info->is_disabled_; + } + + // Returns true if the given test should run. + static bool ShouldRunTest(const TestInfo* test_info) { + return test_info->should_run(); + } + + // Shuffles the tests in this test case. + void ShuffleTests(internal::Random* random); + + // Restores the test order to before the first shuffle. + void UnshuffleTests(); + + // Name of the test case. + std::string name_; + // Name of the parameter type, or NULL if this is not a typed or a + // type-parameterized test. + const internal::scoped_ptr type_param_; + // The vector of TestInfos in their original order. It owns the + // elements in the vector. + std::vector test_info_list_; + // Provides a level of indirection for the test list to allow easy + // shuffling and restoring the test order. The i-th element in this + // vector is the index of the i-th test in the shuffled test list. + std::vector test_indices_; + // Pointer to the function that sets up the test case. + Test::SetUpTestCaseFunc set_up_tc_; + // Pointer to the function that tears down the test case. + Test::TearDownTestCaseFunc tear_down_tc_; + // True iff any test in this test case should run. + bool should_run_; + // Elapsed time, in milliseconds. + TimeInMillis elapsed_time_; + + // We disallow copying TestCases. + GTEST_DISALLOW_COPY_AND_ASSIGN_(TestCase); +}; + +// An Environment object is capable of setting up and tearing down an +// environment. The user should subclass this to define his own +// environment(s). +// +// An Environment object does the set-up and tear-down in virtual +// methods SetUp() and TearDown() instead of the constructor and the +// destructor, as: +// +// 1. You cannot safely throw from a destructor. This is a problem +// as in some cases Google Test is used where exceptions are enabled, and +// we may want to implement ASSERT_* using exceptions where they are +// available. +// 2. You cannot use ASSERT_* directly in a constructor or +// destructor. +class Environment { + public: + // The d'tor is virtual as we need to subclass Environment. + virtual ~Environment() {} + + // Override this to define how to set up the environment. + virtual void SetUp() {} + + // Override this to define how to tear down the environment. + virtual void TearDown() {} + private: + // If you see an error about overriding the following function or + // about it being private, you have mis-spelled SetUp() as Setup(). + struct Setup_should_be_spelled_SetUp {}; + virtual Setup_should_be_spelled_SetUp* Setup() { return NULL; } +}; + +// The interface for tracing execution of tests. The methods are organized in +// the order the corresponding events are fired. +class TestEventListener { + public: + virtual ~TestEventListener() {} + + // Fired before any test activity starts. + virtual void OnTestProgramStart(const UnitTest& unit_test) = 0; + + // Fired before each iteration of tests starts. There may be more than + // one iteration if GTEST_FLAG(repeat) is set. iteration is the iteration + // index, starting from 0. + virtual void OnTestIterationStart(const UnitTest& unit_test, + int iteration) = 0; + + // Fired before environment set-up for each iteration of tests starts. + virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test) = 0; + + // Fired after environment set-up for each iteration of tests ends. + virtual void OnEnvironmentsSetUpEnd(const UnitTest& unit_test) = 0; + + // Fired before the test case starts. + virtual void OnTestCaseStart(const TestCase& test_case) = 0; + + // Fired before the test starts. + virtual void OnTestStart(const TestInfo& test_info) = 0; + + // Fired after a failed assertion or a SUCCEED() invocation. + virtual void OnTestPartResult(const TestPartResult& test_part_result) = 0; + + // Fired after the test ends. + virtual void OnTestEnd(const TestInfo& test_info) = 0; + + // Fired after the test case ends. + virtual void OnTestCaseEnd(const TestCase& test_case) = 0; + + // Fired before environment tear-down for each iteration of tests starts. + virtual void OnEnvironmentsTearDownStart(const UnitTest& unit_test) = 0; + + // Fired after environment tear-down for each iteration of tests ends. + virtual void OnEnvironmentsTearDownEnd(const UnitTest& unit_test) = 0; + + // Fired after each iteration of tests finishes. + virtual void OnTestIterationEnd(const UnitTest& unit_test, + int iteration) = 0; + + // Fired after all test activities have ended. + virtual void OnTestProgramEnd(const UnitTest& unit_test) = 0; +}; + +// The convenience class for users who need to override just one or two +// methods and are not concerned that a possible change to a signature of +// the methods they override will not be caught during the build. For +// comments about each method please see the definition of TestEventListener +// above. +class EmptyTestEventListener : public TestEventListener { + public: + virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) {} + virtual void OnTestIterationStart(const UnitTest& /*unit_test*/, + int /*iteration*/) {} + virtual void OnEnvironmentsSetUpStart(const UnitTest& /*unit_test*/) {} + virtual void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) {} + virtual void OnTestCaseStart(const TestCase& /*test_case*/) {} + virtual void OnTestStart(const TestInfo& /*test_info*/) {} + virtual void OnTestPartResult(const TestPartResult& /*test_part_result*/) {} + virtual void OnTestEnd(const TestInfo& /*test_info*/) {} + virtual void OnTestCaseEnd(const TestCase& /*test_case*/) {} + virtual void OnEnvironmentsTearDownStart(const UnitTest& /*unit_test*/) {} + virtual void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) {} + virtual void OnTestIterationEnd(const UnitTest& /*unit_test*/, + int /*iteration*/) {} + virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) {} +}; + +// TestEventListeners lets users add listeners to track events in Google Test. +class GTEST_API_ TestEventListeners { + public: + TestEventListeners(); + ~TestEventListeners(); + + // Appends an event listener to the end of the list. Google Test assumes + // the ownership of the listener (i.e. it will delete the listener when + // the test program finishes). + void Append(TestEventListener* listener); + + // Removes the given event listener from the list and returns it. It then + // becomes the caller's responsibility to delete the listener. Returns + // NULL if the listener is not found in the list. + TestEventListener* Release(TestEventListener* listener); + + // Returns the standard listener responsible for the default console + // output. Can be removed from the listeners list to shut down default + // console output. Note that removing this object from the listener list + // with Release transfers its ownership to the caller and makes this + // function return NULL the next time. + TestEventListener* default_result_printer() const { + return default_result_printer_; + } + + // Returns the standard listener responsible for the default XML output + // controlled by the --gtest_output=xml flag. Can be removed from the + // listeners list by users who want to shut down the default XML output + // controlled by this flag and substitute it with custom one. Note that + // removing this object from the listener list with Release transfers its + // ownership to the caller and makes this function return NULL the next + // time. + TestEventListener* default_xml_generator() const { + return default_xml_generator_; + } + + private: + friend class TestCase; + friend class TestInfo; + friend class internal::DefaultGlobalTestPartResultReporter; + friend class internal::NoExecDeathTest; + friend class internal::TestEventListenersAccessor; + friend class internal::UnitTestImpl; + + // Returns repeater that broadcasts the TestEventListener events to all + // subscribers. + TestEventListener* repeater(); + + // Sets the default_result_printer attribute to the provided listener. + // The listener is also added to the listener list and previous + // default_result_printer is removed from it and deleted. The listener can + // also be NULL in which case it will not be added to the list. Does + // nothing if the previous and the current listener objects are the same. + void SetDefaultResultPrinter(TestEventListener* listener); + + // Sets the default_xml_generator attribute to the provided listener. The + // listener is also added to the listener list and previous + // default_xml_generator is removed from it and deleted. The listener can + // also be NULL in which case it will not be added to the list. Does + // nothing if the previous and the current listener objects are the same. + void SetDefaultXmlGenerator(TestEventListener* listener); + + // Controls whether events will be forwarded by the repeater to the + // listeners in the list. + bool EventForwardingEnabled() const; + void SuppressEventForwarding(); + + // The actual list of listeners. + internal::TestEventRepeater* repeater_; + // Listener responsible for the standard result output. + TestEventListener* default_result_printer_; + // Listener responsible for the creation of the XML output file. + TestEventListener* default_xml_generator_; + + // We disallow copying TestEventListeners. + GTEST_DISALLOW_COPY_AND_ASSIGN_(TestEventListeners); +}; + +// A UnitTest consists of a vector of TestCases. +// +// This is a singleton class. The only instance of UnitTest is +// created when UnitTest::GetInstance() is first called. This +// instance is never deleted. +// +// UnitTest is not copyable. +// +// This class is thread-safe as long as the methods are called +// according to their specification. +class GTEST_API_ UnitTest { + public: + // Gets the singleton UnitTest object. The first time this method + // is called, a UnitTest object is constructed and returned. + // Consecutive calls will return the same object. + static UnitTest* GetInstance(); + + // Runs all tests in this UnitTest object and prints the result. + // Returns 0 if successful, or 1 otherwise. + // + // This method can only be called from the main thread. + // + // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. + int Run() GTEST_MUST_USE_RESULT_; + + // Returns the working directory when the first TEST() or TEST_F() + // was executed. The UnitTest object owns the string. + const char* original_working_dir() const; + + // Returns the TestCase object for the test that's currently running, + // or NULL if no test is running. + const TestCase* current_test_case() const + GTEST_LOCK_EXCLUDED_(mutex_); + + // Returns the TestInfo object for the test that's currently running, + // or NULL if no test is running. + const TestInfo* current_test_info() const + GTEST_LOCK_EXCLUDED_(mutex_); + + // Returns the random seed used at the start of the current test run. + int random_seed() const; + +#if GTEST_HAS_PARAM_TEST + // Returns the ParameterizedTestCaseRegistry object used to keep track of + // value-parameterized tests and instantiate and register them. + // + // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. + internal::ParameterizedTestCaseRegistry& parameterized_test_registry() + GTEST_LOCK_EXCLUDED_(mutex_); +#endif // GTEST_HAS_PARAM_TEST + + // Gets the number of successful test cases. + int successful_test_case_count() const; + + // Gets the number of failed test cases. + int failed_test_case_count() const; + + // Gets the number of all test cases. + int total_test_case_count() const; + + // Gets the number of all test cases that contain at least one test + // that should run. + int test_case_to_run_count() const; + + // Gets the number of successful tests. + int successful_test_count() const; + + // Gets the number of failed tests. + int failed_test_count() const; + + // Gets the number of disabled tests. + int disabled_test_count() const; + + // Gets the number of all tests. + int total_test_count() const; + + // Gets the number of tests that should run. + int test_to_run_count() const; + + // Gets the time of the test program start, in ms from the start of the + // UNIX epoch. + TimeInMillis start_timestamp() const; + + // Gets the elapsed time, in milliseconds. + TimeInMillis elapsed_time() const; + + // Returns true iff the unit test passed (i.e. all test cases passed). + bool Passed() const; + + // Returns true iff the unit test failed (i.e. some test case failed + // or something outside of all tests failed). + bool Failed() const; + + // Gets the i-th test case among all the test cases. i can range from 0 to + // total_test_case_count() - 1. If i is not in that range, returns NULL. + const TestCase* GetTestCase(int i) const; + + // Returns the list of event listeners that can be used to track events + // inside Google Test. + TestEventListeners& listeners(); + + private: + // Registers and returns a global test environment. When a test + // program is run, all global test environments will be set-up in + // the order they were registered. After all tests in the program + // have finished, all global test environments will be torn-down in + // the *reverse* order they were registered. + // + // The UnitTest object takes ownership of the given environment. + // + // This method can only be called from the main thread. + Environment* AddEnvironment(Environment* env); + + // Adds a TestPartResult to the current TestResult object. All + // Google Test assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc) + // eventually call this to report their results. The user code + // should use the assertion macros instead of calling this directly. + void AddTestPartResult(TestPartResult::Type result_type, + const char* file_name, + int line_number, + const std::string& message, + const std::string& os_stack_trace) + GTEST_LOCK_EXCLUDED_(mutex_); + + // Adds a TestProperty to the current TestResult object. If the result already + // contains a property with the same key, the value will be updated. + void RecordPropertyForCurrentTest(const char* key, const char* value); + + // Gets the i-th test case among all the test cases. i can range from 0 to + // total_test_case_count() - 1. If i is not in that range, returns NULL. + TestCase* GetMutableTestCase(int i); + + // Accessors for the implementation object. + internal::UnitTestImpl* impl() { return impl_; } + const internal::UnitTestImpl* impl() const { return impl_; } + + // These classes and funcions are friends as they need to access private + // members of UnitTest. + friend class Test; + friend class internal::AssertHelper; + friend class internal::ScopedTrace; + friend Environment* AddGlobalTestEnvironment(Environment* env); + friend internal::UnitTestImpl* internal::GetUnitTestImpl(); + friend void internal::ReportFailureInUnknownLocation( + TestPartResult::Type result_type, + const std::string& message); + + // Creates an empty UnitTest. + UnitTest(); + + // D'tor + virtual ~UnitTest(); + + // Pushes a trace defined by SCOPED_TRACE() on to the per-thread + // Google Test trace stack. + void PushGTestTrace(const internal::TraceInfo& trace) + GTEST_LOCK_EXCLUDED_(mutex_); + + // Pops a trace from the per-thread Google Test trace stack. + void PopGTestTrace() + GTEST_LOCK_EXCLUDED_(mutex_); + + // Protects mutable state in *impl_. This is mutable as some const + // methods need to lock it too. + mutable internal::Mutex mutex_; + + // Opaque implementation object. This field is never changed once + // the object is constructed. We don't mark it as const here, as + // doing so will cause a warning in the constructor of UnitTest. + // Mutable state in *impl_ is protected by mutex_. + internal::UnitTestImpl* impl_; + + // We disallow copying UnitTest. + GTEST_DISALLOW_COPY_AND_ASSIGN_(UnitTest); +}; + +// A convenient wrapper for adding an environment for the test +// program. +// +// You should call this before RUN_ALL_TESTS() is called, probably in +// main(). If you use gtest_main, you need to call this before main() +// starts for it to take effect. For example, you can define a global +// variable like this: +// +// testing::Environment* const foo_env = +// testing::AddGlobalTestEnvironment(new FooEnvironment); +// +// However, we strongly recommend you to write your own main() and +// call AddGlobalTestEnvironment() there, as relying on initialization +// of global variables makes the code harder to read and may cause +// problems when you register multiple environments from different +// translation units and the environments have dependencies among them +// (remember that the compiler doesn't guarantee the order in which +// global variables from different translation units are initialized). +inline Environment* AddGlobalTestEnvironment(Environment* env) { + return UnitTest::GetInstance()->AddEnvironment(env); +} + +// Initializes Google Test. This must be called before calling +// RUN_ALL_TESTS(). In particular, it parses a command line for the +// flags that Google Test recognizes. Whenever a Google Test flag is +// seen, it is removed from argv, and *argc is decremented. +// +// No value is returned. Instead, the Google Test flag variables are +// updated. +// +// Calling the function for the second time has no user-visible effect. +GTEST_API_ void InitGoogleTest(int* argc, char** argv); + +// This overloaded version can be used in Windows programs compiled in +// UNICODE mode. +GTEST_API_ void InitGoogleTest(int* argc, wchar_t** argv); + +namespace internal { + +// FormatForComparison::Format(value) formats a +// value of type ToPrint that is an operand of a comparison assertion +// (e.g. ASSERT_EQ). OtherOperand is the type of the other operand in +// the comparison, and is used to help determine the best way to +// format the value. In particular, when the value is a C string +// (char pointer) and the other operand is an STL string object, we +// want to format the C string as a string, since we know it is +// compared by value with the string object. If the value is a char +// pointer but the other operand is not an STL string object, we don't +// know whether the pointer is supposed to point to a NUL-terminated +// string, and thus want to print it as a pointer to be safe. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. + +// The default case. +template +class FormatForComparison { + public: + static ::std::string Format(const ToPrint& value) { + return ::testing::PrintToString(value); + } +}; + +// Array. +template +class FormatForComparison { + public: + static ::std::string Format(const ToPrint* value) { + return FormatForComparison::Format(value); + } +}; + +// By default, print C string as pointers to be safe, as we don't know +// whether they actually point to a NUL-terminated string. + +#define GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(CharType) \ + template \ + class FormatForComparison { \ + public: \ + static ::std::string Format(CharType* value) { \ + return ::testing::PrintToString(static_cast(value)); \ + } \ + } + +GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(char); +GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(const char); +GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(wchar_t); +GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(const wchar_t); + +#undef GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_ + +// If a C string is compared with an STL string object, we know it's meant +// to point to a NUL-terminated string, and thus can print it as a string. + +#define GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(CharType, OtherStringType) \ + template <> \ + class FormatForComparison { \ + public: \ + static ::std::string Format(CharType* value) { \ + return ::testing::PrintToString(value); \ + } \ + } + +GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(char, ::std::string); +GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const char, ::std::string); + +#if GTEST_HAS_GLOBAL_STRING +GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(char, ::string); +GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const char, ::string); +#endif + +#if GTEST_HAS_GLOBAL_WSTRING +GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(wchar_t, ::wstring); +GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const wchar_t, ::wstring); +#endif + +#if GTEST_HAS_STD_WSTRING +GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(wchar_t, ::std::wstring); +GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const wchar_t, ::std::wstring); +#endif + +#undef GTEST_IMPL_FORMAT_C_STRING_AS_STRING_ + +// Formats a comparison assertion (e.g. ASSERT_EQ, EXPECT_LT, and etc) +// operand to be used in a failure message. The type (but not value) +// of the other operand may affect the format. This allows us to +// print a char* as a raw pointer when it is compared against another +// char* or void*, and print it as a C string when it is compared +// against an std::string object, for example. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +template +std::string FormatForComparisonFailureMessage( + const T1& value, const T2& /* other_operand */) { + return FormatForComparison::Format(value); +} + +// The helper function for {ASSERT|EXPECT}_EQ. +template +AssertionResult CmpHelperEQ(const char* expected_expression, + const char* actual_expression, + const T1& expected, + const T2& actual) { +#ifdef _MSC_VER +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4389) // Temporarily disables warning on + // signed/unsigned mismatch. +#endif + + if (expected == actual) { + return AssertionSuccess(); + } + +#ifdef _MSC_VER +# pragma warning(pop) // Restores the warning state. +#endif + + return EqFailure(expected_expression, + actual_expression, + FormatForComparisonFailureMessage(expected, actual), + FormatForComparisonFailureMessage(actual, expected), + false); +} + +// With this overloaded version, we allow anonymous enums to be used +// in {ASSERT|EXPECT}_EQ when compiled with gcc 4, as anonymous enums +// can be implicitly cast to BiggestInt. +GTEST_API_ AssertionResult CmpHelperEQ(const char* expected_expression, + const char* actual_expression, + BiggestInt expected, + BiggestInt actual); + +// The helper class for {ASSERT|EXPECT}_EQ. The template argument +// lhs_is_null_literal is true iff the first argument to ASSERT_EQ() +// is a null pointer literal. The following default implementation is +// for lhs_is_null_literal being false. +template +class EqHelper { + public: + // This templatized version is for the general case. + template + static AssertionResult Compare(const char* expected_expression, + const char* actual_expression, + const T1& expected, + const T2& actual) { + return CmpHelperEQ(expected_expression, actual_expression, expected, + actual); + } + + // With this overloaded version, we allow anonymous enums to be used + // in {ASSERT|EXPECT}_EQ when compiled with gcc 4, as anonymous + // enums can be implicitly cast to BiggestInt. + // + // Even though its body looks the same as the above version, we + // cannot merge the two, as it will make anonymous enums unhappy. + static AssertionResult Compare(const char* expected_expression, + const char* actual_expression, + BiggestInt expected, + BiggestInt actual) { + return CmpHelperEQ(expected_expression, actual_expression, expected, + actual); + } +}; + +// This specialization is used when the first argument to ASSERT_EQ() +// is a null pointer literal, like NULL, false, or 0. +template <> +class EqHelper { + public: + // We define two overloaded versions of Compare(). The first + // version will be picked when the second argument to ASSERT_EQ() is + // NOT a pointer, e.g. ASSERT_EQ(0, AnIntFunction()) or + // EXPECT_EQ(false, a_bool). + template + static AssertionResult Compare( + const char* expected_expression, + const char* actual_expression, + const T1& expected, + const T2& actual, + // The following line prevents this overload from being considered if T2 + // is not a pointer type. We need this because ASSERT_EQ(NULL, my_ptr) + // expands to Compare("", "", NULL, my_ptr), which requires a conversion + // to match the Secret* in the other overload, which would otherwise make + // this template match better. + typename EnableIf::value>::type* = 0) { + return CmpHelperEQ(expected_expression, actual_expression, expected, + actual); + } + + // This version will be picked when the second argument to ASSERT_EQ() is a + // pointer, e.g. ASSERT_EQ(NULL, a_pointer). + template + static AssertionResult Compare( + const char* expected_expression, + const char* actual_expression, + // We used to have a second template parameter instead of Secret*. That + // template parameter would deduce to 'long', making this a better match + // than the first overload even without the first overload's EnableIf. + // Unfortunately, gcc with -Wconversion-null warns when "passing NULL to + // non-pointer argument" (even a deduced integral argument), so the old + // implementation caused warnings in user code. + Secret* /* expected (NULL) */, + T* actual) { + // We already know that 'expected' is a null pointer. + return CmpHelperEQ(expected_expression, actual_expression, + static_cast(NULL), actual); + } +}; + +// A macro for implementing the helper functions needed to implement +// ASSERT_?? and EXPECT_??. It is here just to avoid copy-and-paste +// of similar code. +// +// For each templatized helper function, we also define an overloaded +// version for BiggestInt in order to reduce code bloat and allow +// anonymous enums to be used with {ASSERT|EXPECT}_?? when compiled +// with gcc 4. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +#define GTEST_IMPL_CMP_HELPER_(op_name, op)\ +template \ +AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \ + const T1& val1, const T2& val2) {\ + if (val1 op val2) {\ + return AssertionSuccess();\ + } else {\ + return AssertionFailure() \ + << "Expected: (" << expr1 << ") " #op " (" << expr2\ + << "), actual: " << FormatForComparisonFailureMessage(val1, val2)\ + << " vs " << FormatForComparisonFailureMessage(val2, val1);\ + }\ +}\ +GTEST_API_ AssertionResult CmpHelper##op_name(\ + const char* expr1, const char* expr2, BiggestInt val1, BiggestInt val2) + +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. + +// Implements the helper function for {ASSERT|EXPECT}_NE +GTEST_IMPL_CMP_HELPER_(NE, !=); +// Implements the helper function for {ASSERT|EXPECT}_LE +GTEST_IMPL_CMP_HELPER_(LE, <=); +// Implements the helper function for {ASSERT|EXPECT}_LT +GTEST_IMPL_CMP_HELPER_(LT, <); +// Implements the helper function for {ASSERT|EXPECT}_GE +GTEST_IMPL_CMP_HELPER_(GE, >=); +// Implements the helper function for {ASSERT|EXPECT}_GT +GTEST_IMPL_CMP_HELPER_(GT, >); + +#undef GTEST_IMPL_CMP_HELPER_ + +// The helper function for {ASSERT|EXPECT}_STREQ. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +GTEST_API_ AssertionResult CmpHelperSTREQ(const char* expected_expression, + const char* actual_expression, + const char* expected, + const char* actual); + +// The helper function for {ASSERT|EXPECT}_STRCASEEQ. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* expected_expression, + const char* actual_expression, + const char* expected, + const char* actual); + +// The helper function for {ASSERT|EXPECT}_STRNE. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, + const char* s2_expression, + const char* s1, + const char* s2); + +// The helper function for {ASSERT|EXPECT}_STRCASENE. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression, + const char* s2_expression, + const char* s1, + const char* s2); + + +// Helper function for *_STREQ on wide strings. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +GTEST_API_ AssertionResult CmpHelperSTREQ(const char* expected_expression, + const char* actual_expression, + const wchar_t* expected, + const wchar_t* actual); + +// Helper function for *_STRNE on wide strings. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression, + const char* s2_expression, + const wchar_t* s1, + const wchar_t* s2); + +} // namespace internal + +// IsSubstring() and IsNotSubstring() are intended to be used as the +// first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by +// themselves. They check whether needle is a substring of haystack +// (NULL is considered a substring of itself only), and return an +// appropriate error message when they fail. +// +// The {needle,haystack}_expr arguments are the stringified +// expressions that generated the two real arguments. +GTEST_API_ AssertionResult IsSubstring( + const char* needle_expr, const char* haystack_expr, + const char* needle, const char* haystack); +GTEST_API_ AssertionResult IsSubstring( + const char* needle_expr, const char* haystack_expr, + const wchar_t* needle, const wchar_t* haystack); +GTEST_API_ AssertionResult IsNotSubstring( + const char* needle_expr, const char* haystack_expr, + const char* needle, const char* haystack); +GTEST_API_ AssertionResult IsNotSubstring( + const char* needle_expr, const char* haystack_expr, + const wchar_t* needle, const wchar_t* haystack); +GTEST_API_ AssertionResult IsSubstring( + const char* needle_expr, const char* haystack_expr, + const ::std::string& needle, const ::std::string& haystack); +GTEST_API_ AssertionResult IsNotSubstring( + const char* needle_expr, const char* haystack_expr, + const ::std::string& needle, const ::std::string& haystack); + +#if GTEST_HAS_STD_WSTRING +GTEST_API_ AssertionResult IsSubstring( + const char* needle_expr, const char* haystack_expr, + const ::std::wstring& needle, const ::std::wstring& haystack); +GTEST_API_ AssertionResult IsNotSubstring( + const char* needle_expr, const char* haystack_expr, + const ::std::wstring& needle, const ::std::wstring& haystack); +#endif // GTEST_HAS_STD_WSTRING + +namespace internal { + +// Helper template function for comparing floating-points. +// +// Template parameter: +// +// RawType: the raw floating-point type (either float or double) +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +template +AssertionResult CmpHelperFloatingPointEQ(const char* expected_expression, + const char* actual_expression, + RawType expected, + RawType actual) { + const FloatingPoint lhs(expected), rhs(actual); + + if (lhs.AlmostEquals(rhs)) { + return AssertionSuccess(); + } + + ::std::stringstream expected_ss; + expected_ss << std::setprecision(std::numeric_limits::digits10 + 2) + << expected; + + ::std::stringstream actual_ss; + actual_ss << std::setprecision(std::numeric_limits::digits10 + 2) + << actual; + + return EqFailure(expected_expression, + actual_expression, + StringStreamToString(&expected_ss), + StringStreamToString(&actual_ss), + false); +} + +// Helper function for implementing ASSERT_NEAR. +// +// INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM. +GTEST_API_ AssertionResult DoubleNearPredFormat(const char* expr1, + const char* expr2, + const char* abs_error_expr, + double val1, + double val2, + double abs_error); + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// A class that enables one to stream messages to assertion macros +class GTEST_API_ AssertHelper { + public: + // Constructor. + AssertHelper(TestPartResult::Type type, + const char* file, + int line, + const char* message); + ~AssertHelper(); + + // Message assignment is a semantic trick to enable assertion + // streaming; see the GTEST_MESSAGE_ macro below. + void operator=(const Message& message) const; + + private: + // We put our data in a struct so that the size of the AssertHelper class can + // be as small as possible. This is important because gcc is incapable of + // re-using stack space even for temporary variables, so every EXPECT_EQ + // reserves stack space for another AssertHelper. + struct AssertHelperData { + AssertHelperData(TestPartResult::Type t, + const char* srcfile, + int line_num, + const char* msg) + : type(t), file(srcfile), line(line_num), message(msg) { } + + TestPartResult::Type const type; + const char* const file; + int const line; + std::string const message; + + private: + GTEST_DISALLOW_COPY_AND_ASSIGN_(AssertHelperData); + }; + + AssertHelperData* const data_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(AssertHelper); +}; + +} // namespace internal + +#if GTEST_HAS_PARAM_TEST +// The pure interface class that all value-parameterized tests inherit from. +// A value-parameterized class must inherit from both ::testing::Test and +// ::testing::WithParamInterface. In most cases that just means inheriting +// from ::testing::TestWithParam, but more complicated test hierarchies +// may need to inherit from Test and WithParamInterface at different levels. +// +// This interface has support for accessing the test parameter value via +// the GetParam() method. +// +// Use it with one of the parameter generator defining functions, like Range(), +// Values(), ValuesIn(), Bool(), and Combine(). +// +// class FooTest : public ::testing::TestWithParam { +// protected: +// FooTest() { +// // Can use GetParam() here. +// } +// virtual ~FooTest() { +// // Can use GetParam() here. +// } +// virtual void SetUp() { +// // Can use GetParam() here. +// } +// virtual void TearDown { +// // Can use GetParam() here. +// } +// }; +// TEST_P(FooTest, DoesBar) { +// // Can use GetParam() method here. +// Foo foo; +// ASSERT_TRUE(foo.DoesBar(GetParam())); +// } +// INSTANTIATE_TEST_CASE_P(OneToTenRange, FooTest, ::testing::Range(1, 10)); + +template +class WithParamInterface { + public: + typedef T ParamType; + virtual ~WithParamInterface() {} + + // The current parameter value. Is also available in the test fixture's + // constructor. This member function is non-static, even though it only + // references static data, to reduce the opportunity for incorrect uses + // like writing 'WithParamInterface::GetParam()' for a test that + // uses a fixture whose parameter type is int. + const ParamType& GetParam() const { return *parameter_; } + + private: + // Sets parameter value. The caller is responsible for making sure the value + // remains alive and unchanged throughout the current test. + static void SetParam(const ParamType* parameter) { + parameter_ = parameter; + } + + // Static value used for accessing parameter during a test lifetime. + static const ParamType* parameter_; + + // TestClass must be a subclass of WithParamInterface and Test. + template friend class internal::ParameterizedTestFactory; +}; + +template +const T* WithParamInterface::parameter_ = NULL; + +// Most value-parameterized classes can ignore the existence of +// WithParamInterface, and can just inherit from ::testing::TestWithParam. + +template +class TestWithParam : public Test, public WithParamInterface { +}; + +#endif // GTEST_HAS_PARAM_TEST + +// Macros for indicating success/failure in test code. + +// ADD_FAILURE unconditionally adds a failure to the current test. +// SUCCEED generates a success - it doesn't automatically make the +// current test successful, as a test is only successful when it has +// no failure. +// +// EXPECT_* verifies that a certain condition is satisfied. If not, +// it behaves like ADD_FAILURE. In particular: +// +// EXPECT_TRUE verifies that a Boolean condition is true. +// EXPECT_FALSE verifies that a Boolean condition is false. +// +// FAIL and ASSERT_* are similar to ADD_FAILURE and EXPECT_*, except +// that they will also abort the current function on failure. People +// usually want the fail-fast behavior of FAIL and ASSERT_*, but those +// writing data-driven tests often find themselves using ADD_FAILURE +// and EXPECT_* more. + +// Generates a nonfatal failure with a generic message. +#define ADD_FAILURE() GTEST_NONFATAL_FAILURE_("Failed") + +// Generates a nonfatal failure at the given source file location with +// a generic message. +#define ADD_FAILURE_AT(file, line) \ + GTEST_MESSAGE_AT_(file, line, "Failed", \ + ::testing::TestPartResult::kNonFatalFailure) + +// Generates a fatal failure with a generic message. +#define GTEST_FAIL() GTEST_FATAL_FAILURE_("Failed") + +// Define this macro to 1 to omit the definition of FAIL(), which is a +// generic name and clashes with some other libraries. +#if !GTEST_DONT_DEFINE_FAIL +# define FAIL() GTEST_FAIL() +#endif + +// Generates a success with a generic message. +#define GTEST_SUCCEED() GTEST_SUCCESS_("Succeeded") + +// Define this macro to 1 to omit the definition of SUCCEED(), which +// is a generic name and clashes with some other libraries. +#if !GTEST_DONT_DEFINE_SUCCEED +# define SUCCEED() GTEST_SUCCEED() +#endif + +// Macros for testing exceptions. +// +// * {ASSERT|EXPECT}_THROW(statement, expected_exception): +// Tests that the statement throws the expected exception. +// * {ASSERT|EXPECT}_NO_THROW(statement): +// Tests that the statement doesn't throw any exception. +// * {ASSERT|EXPECT}_ANY_THROW(statement): +// Tests that the statement throws an exception. + +#define EXPECT_THROW(statement, expected_exception) \ + GTEST_TEST_THROW_(statement, expected_exception, GTEST_NONFATAL_FAILURE_) +#define EXPECT_NO_THROW(statement) \ + GTEST_TEST_NO_THROW_(statement, GTEST_NONFATAL_FAILURE_) +#define EXPECT_ANY_THROW(statement) \ + GTEST_TEST_ANY_THROW_(statement, GTEST_NONFATAL_FAILURE_) +#define ASSERT_THROW(statement, expected_exception) \ + GTEST_TEST_THROW_(statement, expected_exception, GTEST_FATAL_FAILURE_) +#define ASSERT_NO_THROW(statement) \ + GTEST_TEST_NO_THROW_(statement, GTEST_FATAL_FAILURE_) +#define ASSERT_ANY_THROW(statement) \ + GTEST_TEST_ANY_THROW_(statement, GTEST_FATAL_FAILURE_) + +// Boolean assertions. Condition can be either a Boolean expression or an +// AssertionResult. For more information on how to use AssertionResult with +// these macros see comments on that class. +#define EXPECT_TRUE(condition) \ + GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \ + GTEST_NONFATAL_FAILURE_) +#define EXPECT_FALSE(condition) \ + GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \ + GTEST_NONFATAL_FAILURE_) +#define ASSERT_TRUE(condition) \ + GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \ + GTEST_FATAL_FAILURE_) +#define ASSERT_FALSE(condition) \ + GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \ + GTEST_FATAL_FAILURE_) + +// Includes the auto-generated header that implements a family of +// generic predicate assertion macros. +#include "gtest/gtest_pred_impl.h" + +// Macros for testing equalities and inequalities. +// +// * {ASSERT|EXPECT}_EQ(expected, actual): Tests that expected == actual +// * {ASSERT|EXPECT}_NE(v1, v2): Tests that v1 != v2 +// * {ASSERT|EXPECT}_LT(v1, v2): Tests that v1 < v2 +// * {ASSERT|EXPECT}_LE(v1, v2): Tests that v1 <= v2 +// * {ASSERT|EXPECT}_GT(v1, v2): Tests that v1 > v2 +// * {ASSERT|EXPECT}_GE(v1, v2): Tests that v1 >= v2 +// +// When they are not, Google Test prints both the tested expressions and +// their actual values. The values must be compatible built-in types, +// or you will get a compiler error. By "compatible" we mean that the +// values can be compared by the respective operator. +// +// Note: +// +// 1. It is possible to make a user-defined type work with +// {ASSERT|EXPECT}_??(), but that requires overloading the +// comparison operators and is thus discouraged by the Google C++ +// Usage Guide. Therefore, you are advised to use the +// {ASSERT|EXPECT}_TRUE() macro to assert that two objects are +// equal. +// +// 2. The {ASSERT|EXPECT}_??() macros do pointer comparisons on +// pointers (in particular, C strings). Therefore, if you use it +// with two C strings, you are testing how their locations in memory +// are related, not how their content is related. To compare two C +// strings by content, use {ASSERT|EXPECT}_STR*(). +// +// 3. {ASSERT|EXPECT}_EQ(expected, actual) is preferred to +// {ASSERT|EXPECT}_TRUE(expected == actual), as the former tells you +// what the actual value is when it fails, and similarly for the +// other comparisons. +// +// 4. Do not depend on the order in which {ASSERT|EXPECT}_??() +// evaluate their arguments, which is undefined. +// +// 5. These macros evaluate their arguments exactly once. +// +// Examples: +// +// EXPECT_NE(5, Foo()); +// EXPECT_EQ(NULL, a_pointer); +// ASSERT_LT(i, array_size); +// ASSERT_GT(records.size(), 0) << "There is no record left."; + +#define EXPECT_EQ(expected, actual) \ + EXPECT_PRED_FORMAT2(::testing::internal:: \ + EqHelper::Compare, \ + expected, actual) +#define EXPECT_NE(expected, actual) \ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperNE, expected, actual) +#define EXPECT_LE(val1, val2) \ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2) +#define EXPECT_LT(val1, val2) \ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2) +#define EXPECT_GE(val1, val2) \ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2) +#define EXPECT_GT(val1, val2) \ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2) + +#define GTEST_ASSERT_EQ(expected, actual) \ + ASSERT_PRED_FORMAT2(::testing::internal:: \ + EqHelper::Compare, \ + expected, actual) +#define GTEST_ASSERT_NE(val1, val2) \ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2) +#define GTEST_ASSERT_LE(val1, val2) \ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2) +#define GTEST_ASSERT_LT(val1, val2) \ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2) +#define GTEST_ASSERT_GE(val1, val2) \ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2) +#define GTEST_ASSERT_GT(val1, val2) \ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2) + +// Define macro GTEST_DONT_DEFINE_ASSERT_XY to 1 to omit the definition of +// ASSERT_XY(), which clashes with some users' own code. + +#if !GTEST_DONT_DEFINE_ASSERT_EQ +# define ASSERT_EQ(val1, val2) GTEST_ASSERT_EQ(val1, val2) +#endif + +#if !GTEST_DONT_DEFINE_ASSERT_NE +# define ASSERT_NE(val1, val2) GTEST_ASSERT_NE(val1, val2) +#endif + +#if !GTEST_DONT_DEFINE_ASSERT_LE +# define ASSERT_LE(val1, val2) GTEST_ASSERT_LE(val1, val2) +#endif + +#if !GTEST_DONT_DEFINE_ASSERT_LT +# define ASSERT_LT(val1, val2) GTEST_ASSERT_LT(val1, val2) +#endif + +#if !GTEST_DONT_DEFINE_ASSERT_GE +# define ASSERT_GE(val1, val2) GTEST_ASSERT_GE(val1, val2) +#endif + +#if !GTEST_DONT_DEFINE_ASSERT_GT +# define ASSERT_GT(val1, val2) GTEST_ASSERT_GT(val1, val2) +#endif + +// C-string Comparisons. All tests treat NULL and any non-NULL string +// as different. Two NULLs are equal. +// +// * {ASSERT|EXPECT}_STREQ(s1, s2): Tests that s1 == s2 +// * {ASSERT|EXPECT}_STRNE(s1, s2): Tests that s1 != s2 +// * {ASSERT|EXPECT}_STRCASEEQ(s1, s2): Tests that s1 == s2, ignoring case +// * {ASSERT|EXPECT}_STRCASENE(s1, s2): Tests that s1 != s2, ignoring case +// +// For wide or narrow string objects, you can use the +// {ASSERT|EXPECT}_??() macros. +// +// Don't depend on the order in which the arguments are evaluated, +// which is undefined. +// +// These macros evaluate their arguments exactly once. + +#define EXPECT_STREQ(expected, actual) \ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, expected, actual) +#define EXPECT_STRNE(s1, s2) \ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2) +#define EXPECT_STRCASEEQ(expected, actual) \ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, expected, actual) +#define EXPECT_STRCASENE(s1, s2)\ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2) + +#define ASSERT_STREQ(expected, actual) \ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, expected, actual) +#define ASSERT_STRNE(s1, s2) \ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2) +#define ASSERT_STRCASEEQ(expected, actual) \ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, expected, actual) +#define ASSERT_STRCASENE(s1, s2)\ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2) + +// Macros for comparing floating-point numbers. +// +// * {ASSERT|EXPECT}_FLOAT_EQ(expected, actual): +// Tests that two float values are almost equal. +// * {ASSERT|EXPECT}_DOUBLE_EQ(expected, actual): +// Tests that two double values are almost equal. +// * {ASSERT|EXPECT}_NEAR(v1, v2, abs_error): +// Tests that v1 and v2 are within the given distance to each other. +// +// Google Test uses ULP-based comparison to automatically pick a default +// error bound that is appropriate for the operands. See the +// FloatingPoint template class in gtest-internal.h if you are +// interested in the implementation details. + +#define EXPECT_FLOAT_EQ(expected, actual)\ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ, \ + expected, actual) + +#define EXPECT_DOUBLE_EQ(expected, actual)\ + EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ, \ + expected, actual) + +#define ASSERT_FLOAT_EQ(expected, actual)\ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ, \ + expected, actual) + +#define ASSERT_DOUBLE_EQ(expected, actual)\ + ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ, \ + expected, actual) + +#define EXPECT_NEAR(val1, val2, abs_error)\ + EXPECT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, \ + val1, val2, abs_error) + +#define ASSERT_NEAR(val1, val2, abs_error)\ + ASSERT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, \ + val1, val2, abs_error) + +// These predicate format functions work on floating-point values, and +// can be used in {ASSERT|EXPECT}_PRED_FORMAT2*(), e.g. +// +// EXPECT_PRED_FORMAT2(testing::DoubleLE, Foo(), 5.0); + +// Asserts that val1 is less than, or almost equal to, val2. Fails +// otherwise. In particular, it fails if either val1 or val2 is NaN. +GTEST_API_ AssertionResult FloatLE(const char* expr1, const char* expr2, + float val1, float val2); +GTEST_API_ AssertionResult DoubleLE(const char* expr1, const char* expr2, + double val1, double val2); + + +#if GTEST_OS_WINDOWS + +// Macros that test for HRESULT failure and success, these are only useful +// on Windows, and rely on Windows SDK macros and APIs to compile. +// +// * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr) +// +// When expr unexpectedly fails or succeeds, Google Test prints the +// expected result and the actual result with both a human-readable +// string representation of the error, if available, as well as the +// hex result code. +# define EXPECT_HRESULT_SUCCEEDED(expr) \ + EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) + +# define ASSERT_HRESULT_SUCCEEDED(expr) \ + ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr)) + +# define EXPECT_HRESULT_FAILED(expr) \ + EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) + +# define ASSERT_HRESULT_FAILED(expr) \ + ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr)) + +#endif // GTEST_OS_WINDOWS + +// Macros that execute statement and check that it doesn't generate new fatal +// failures in the current thread. +// +// * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement); +// +// Examples: +// +// EXPECT_NO_FATAL_FAILURE(Process()); +// ASSERT_NO_FATAL_FAILURE(Process()) << "Process() failed"; +// +#define ASSERT_NO_FATAL_FAILURE(statement) \ + GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_FATAL_FAILURE_) +#define EXPECT_NO_FATAL_FAILURE(statement) \ + GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_NONFATAL_FAILURE_) + +// Causes a trace (including the source file path, the current line +// number, and the given message) to be included in every test failure +// message generated by code in the current scope. The effect is +// undone when the control leaves the current scope. +// +// The message argument can be anything streamable to std::ostream. +// +// In the implementation, we include the current line number as part +// of the dummy variable name, thus allowing multiple SCOPED_TRACE()s +// to appear in the same block - as long as they are on different +// lines. +#define SCOPED_TRACE(message) \ + ::testing::internal::ScopedTrace GTEST_CONCAT_TOKEN_(gtest_trace_, __LINE__)(\ + __FILE__, __LINE__, ::testing::Message() << (message)) + +// Compile-time assertion for type equality. +// StaticAssertTypeEq() compiles iff type1 and type2 are +// the same type. The value it returns is not interesting. +// +// Instead of making StaticAssertTypeEq a class template, we make it a +// function template that invokes a helper class template. This +// prevents a user from misusing StaticAssertTypeEq by +// defining objects of that type. +// +// CAVEAT: +// +// When used inside a method of a class template, +// StaticAssertTypeEq() is effective ONLY IF the method is +// instantiated. For example, given: +// +// template class Foo { +// public: +// void Bar() { testing::StaticAssertTypeEq(); } +// }; +// +// the code: +// +// void Test1() { Foo foo; } +// +// will NOT generate a compiler error, as Foo::Bar() is never +// actually instantiated. Instead, you need: +// +// void Test2() { Foo foo; foo.Bar(); } +// +// to cause a compiler error. +template +bool StaticAssertTypeEq() { + (void)internal::StaticAssertTypeEqHelper(); + return true; +} + +// Defines a test. +// +// The first parameter is the name of the test case, and the second +// parameter is the name of the test within the test case. +// +// The convention is to end the test case name with "Test". For +// example, a test case for the Foo class can be named FooTest. +// +// The user should put his test code between braces after using this +// macro. Example: +// +// TEST(FooTest, InitializesCorrectly) { +// Foo foo; +// EXPECT_TRUE(foo.StatusIsOK()); +// } + +// Note that we call GetTestTypeId() instead of GetTypeId< +// ::testing::Test>() here to get the type ID of testing::Test. This +// is to work around a suspected linker bug when using Google Test as +// a framework on Mac OS X. The bug causes GetTypeId< +// ::testing::Test>() to return different values depending on whether +// the call is from the Google Test framework itself or from user test +// code. GetTestTypeId() is guaranteed to always return the same +// value, as it always calls GetTypeId<>() from the Google Test +// framework. +#define GTEST_TEST(test_case_name, test_name)\ + GTEST_TEST_(test_case_name, test_name, \ + ::testing::Test, ::testing::internal::GetTestTypeId()) + +// Define this macro to 1 to omit the definition of TEST(), which +// is a generic name and clashes with some other libraries. +#if !GTEST_DONT_DEFINE_TEST +# define TEST(test_case_name, test_name) GTEST_TEST(test_case_name, test_name) +#endif + +// Defines a test that uses a test fixture. +// +// The first parameter is the name of the test fixture class, which +// also doubles as the test case name. The second parameter is the +// name of the test within the test case. +// +// A test fixture class must be declared earlier. The user should put +// his test code between braces after using this macro. Example: +// +// class FooTest : public testing::Test { +// protected: +// virtual void SetUp() { b_.AddElement(3); } +// +// Foo a_; +// Foo b_; +// }; +// +// TEST_F(FooTest, InitializesCorrectly) { +// EXPECT_TRUE(a_.StatusIsOK()); +// } +// +// TEST_F(FooTest, ReturnsElementCountCorrectly) { +// EXPECT_EQ(0, a_.size()); +// EXPECT_EQ(1, b_.size()); +// } + +#define TEST_F(test_fixture, test_name)\ + GTEST_TEST_(test_fixture, test_name, test_fixture, \ + ::testing::internal::GetTypeId()) + +// Use this macro in main() to run all tests. It returns 0 if all +// tests are successful, or 1 otherwise. +// +// RUN_ALL_TESTS() should be invoked after the command line has been +// parsed by InitGoogleTest(). + +#define RUN_ALL_TESTS()\ + (::testing::UnitTest::GetInstance()->Run()) + +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_GTEST_H_ diff --git a/thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest_pred_impl.h b/thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest_pred_impl.h new file mode 100644 index 00000000..30ae712f --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest_pred_impl.h @@ -0,0 +1,358 @@ +// Copyright 2006, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// This file is AUTOMATICALLY GENERATED on 10/31/2011 by command +// 'gen_gtest_pred_impl.py 5'. DO NOT EDIT BY HAND! +// +// Implements a family of generic predicate assertion macros. + +#ifndef GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_ +#define GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_ + +// Makes sure this header is not included before gtest.h. +#ifndef GTEST_INCLUDE_GTEST_GTEST_H_ +# error Do not include gtest_pred_impl.h directly. Include gtest.h instead. +#endif // GTEST_INCLUDE_GTEST_GTEST_H_ + +// This header implements a family of generic predicate assertion +// macros: +// +// ASSERT_PRED_FORMAT1(pred_format, v1) +// ASSERT_PRED_FORMAT2(pred_format, v1, v2) +// ... +// +// where pred_format is a function or functor that takes n (in the +// case of ASSERT_PRED_FORMATn) values and their source expression +// text, and returns a testing::AssertionResult. See the definition +// of ASSERT_EQ in gtest.h for an example. +// +// If you don't care about formatting, you can use the more +// restrictive version: +// +// ASSERT_PRED1(pred, v1) +// ASSERT_PRED2(pred, v1, v2) +// ... +// +// where pred is an n-ary function or functor that returns bool, +// and the values v1, v2, ..., must support the << operator for +// streaming to std::ostream. +// +// We also define the EXPECT_* variations. +// +// For now we only support predicates whose arity is at most 5. +// Please email googletestframework@googlegroups.com if you need +// support for higher arities. + +// GTEST_ASSERT_ is the basic statement to which all of the assertions +// in this file reduce. Don't use this in your code. + +#define GTEST_ASSERT_(expression, on_failure) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (const ::testing::AssertionResult gtest_ar = (expression)) \ + ; \ + else \ + on_failure(gtest_ar.failure_message()) + + +// Helper function for implementing {EXPECT|ASSERT}_PRED1. Don't use +// this in your code. +template +AssertionResult AssertPred1Helper(const char* pred_text, + const char* e1, + Pred pred, + const T1& v1) { + if (pred(v1)) return AssertionSuccess(); + + return AssertionFailure() << pred_text << "(" + << e1 << ") evaluates to false, where" + << "\n" << e1 << " evaluates to " << v1; +} + +// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT1. +// Don't use this in your code. +#define GTEST_PRED_FORMAT1_(pred_format, v1, on_failure)\ + GTEST_ASSERT_(pred_format(#v1, v1), \ + on_failure) + +// Internal macro for implementing {EXPECT|ASSERT}_PRED1. Don't use +// this in your code. +#define GTEST_PRED1_(pred, v1, on_failure)\ + GTEST_ASSERT_(::testing::AssertPred1Helper(#pred, \ + #v1, \ + pred, \ + v1), on_failure) + +// Unary predicate assertion macros. +#define EXPECT_PRED_FORMAT1(pred_format, v1) \ + GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_NONFATAL_FAILURE_) +#define EXPECT_PRED1(pred, v1) \ + GTEST_PRED1_(pred, v1, GTEST_NONFATAL_FAILURE_) +#define ASSERT_PRED_FORMAT1(pred_format, v1) \ + GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_FATAL_FAILURE_) +#define ASSERT_PRED1(pred, v1) \ + GTEST_PRED1_(pred, v1, GTEST_FATAL_FAILURE_) + + + +// Helper function for implementing {EXPECT|ASSERT}_PRED2. Don't use +// this in your code. +template +AssertionResult AssertPred2Helper(const char* pred_text, + const char* e1, + const char* e2, + Pred pred, + const T1& v1, + const T2& v2) { + if (pred(v1, v2)) return AssertionSuccess(); + + return AssertionFailure() << pred_text << "(" + << e1 << ", " + << e2 << ") evaluates to false, where" + << "\n" << e1 << " evaluates to " << v1 + << "\n" << e2 << " evaluates to " << v2; +} + +// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT2. +// Don't use this in your code. +#define GTEST_PRED_FORMAT2_(pred_format, v1, v2, on_failure)\ + GTEST_ASSERT_(pred_format(#v1, #v2, v1, v2), \ + on_failure) + +// Internal macro for implementing {EXPECT|ASSERT}_PRED2. Don't use +// this in your code. +#define GTEST_PRED2_(pred, v1, v2, on_failure)\ + GTEST_ASSERT_(::testing::AssertPred2Helper(#pred, \ + #v1, \ + #v2, \ + pred, \ + v1, \ + v2), on_failure) + +// Binary predicate assertion macros. +#define EXPECT_PRED_FORMAT2(pred_format, v1, v2) \ + GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_NONFATAL_FAILURE_) +#define EXPECT_PRED2(pred, v1, v2) \ + GTEST_PRED2_(pred, v1, v2, GTEST_NONFATAL_FAILURE_) +#define ASSERT_PRED_FORMAT2(pred_format, v1, v2) \ + GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_FATAL_FAILURE_) +#define ASSERT_PRED2(pred, v1, v2) \ + GTEST_PRED2_(pred, v1, v2, GTEST_FATAL_FAILURE_) + + + +// Helper function for implementing {EXPECT|ASSERT}_PRED3. Don't use +// this in your code. +template +AssertionResult AssertPred3Helper(const char* pred_text, + const char* e1, + const char* e2, + const char* e3, + Pred pred, + const T1& v1, + const T2& v2, + const T3& v3) { + if (pred(v1, v2, v3)) return AssertionSuccess(); + + return AssertionFailure() << pred_text << "(" + << e1 << ", " + << e2 << ", " + << e3 << ") evaluates to false, where" + << "\n" << e1 << " evaluates to " << v1 + << "\n" << e2 << " evaluates to " << v2 + << "\n" << e3 << " evaluates to " << v3; +} + +// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT3. +// Don't use this in your code. +#define GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, on_failure)\ + GTEST_ASSERT_(pred_format(#v1, #v2, #v3, v1, v2, v3), \ + on_failure) + +// Internal macro for implementing {EXPECT|ASSERT}_PRED3. Don't use +// this in your code. +#define GTEST_PRED3_(pred, v1, v2, v3, on_failure)\ + GTEST_ASSERT_(::testing::AssertPred3Helper(#pred, \ + #v1, \ + #v2, \ + #v3, \ + pred, \ + v1, \ + v2, \ + v3), on_failure) + +// Ternary predicate assertion macros. +#define EXPECT_PRED_FORMAT3(pred_format, v1, v2, v3) \ + GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_NONFATAL_FAILURE_) +#define EXPECT_PRED3(pred, v1, v2, v3) \ + GTEST_PRED3_(pred, v1, v2, v3, GTEST_NONFATAL_FAILURE_) +#define ASSERT_PRED_FORMAT3(pred_format, v1, v2, v3) \ + GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_FATAL_FAILURE_) +#define ASSERT_PRED3(pred, v1, v2, v3) \ + GTEST_PRED3_(pred, v1, v2, v3, GTEST_FATAL_FAILURE_) + + + +// Helper function for implementing {EXPECT|ASSERT}_PRED4. Don't use +// this in your code. +template +AssertionResult AssertPred4Helper(const char* pred_text, + const char* e1, + const char* e2, + const char* e3, + const char* e4, + Pred pred, + const T1& v1, + const T2& v2, + const T3& v3, + const T4& v4) { + if (pred(v1, v2, v3, v4)) return AssertionSuccess(); + + return AssertionFailure() << pred_text << "(" + << e1 << ", " + << e2 << ", " + << e3 << ", " + << e4 << ") evaluates to false, where" + << "\n" << e1 << " evaluates to " << v1 + << "\n" << e2 << " evaluates to " << v2 + << "\n" << e3 << " evaluates to " << v3 + << "\n" << e4 << " evaluates to " << v4; +} + +// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT4. +// Don't use this in your code. +#define GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, on_failure)\ + GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, v1, v2, v3, v4), \ + on_failure) + +// Internal macro for implementing {EXPECT|ASSERT}_PRED4. Don't use +// this in your code. +#define GTEST_PRED4_(pred, v1, v2, v3, v4, on_failure)\ + GTEST_ASSERT_(::testing::AssertPred4Helper(#pred, \ + #v1, \ + #v2, \ + #v3, \ + #v4, \ + pred, \ + v1, \ + v2, \ + v3, \ + v4), on_failure) + +// 4-ary predicate assertion macros. +#define EXPECT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \ + GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_) +#define EXPECT_PRED4(pred, v1, v2, v3, v4) \ + GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_) +#define ASSERT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \ + GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_FATAL_FAILURE_) +#define ASSERT_PRED4(pred, v1, v2, v3, v4) \ + GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_FATAL_FAILURE_) + + + +// Helper function for implementing {EXPECT|ASSERT}_PRED5. Don't use +// this in your code. +template +AssertionResult AssertPred5Helper(const char* pred_text, + const char* e1, + const char* e2, + const char* e3, + const char* e4, + const char* e5, + Pred pred, + const T1& v1, + const T2& v2, + const T3& v3, + const T4& v4, + const T5& v5) { + if (pred(v1, v2, v3, v4, v5)) return AssertionSuccess(); + + return AssertionFailure() << pred_text << "(" + << e1 << ", " + << e2 << ", " + << e3 << ", " + << e4 << ", " + << e5 << ") evaluates to false, where" + << "\n" << e1 << " evaluates to " << v1 + << "\n" << e2 << " evaluates to " << v2 + << "\n" << e3 << " evaluates to " << v3 + << "\n" << e4 << " evaluates to " << v4 + << "\n" << e5 << " evaluates to " << v5; +} + +// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT5. +// Don't use this in your code. +#define GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, on_failure)\ + GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, #v5, v1, v2, v3, v4, v5), \ + on_failure) + +// Internal macro for implementing {EXPECT|ASSERT}_PRED5. Don't use +// this in your code. +#define GTEST_PRED5_(pred, v1, v2, v3, v4, v5, on_failure)\ + GTEST_ASSERT_(::testing::AssertPred5Helper(#pred, \ + #v1, \ + #v2, \ + #v3, \ + #v4, \ + #v5, \ + pred, \ + v1, \ + v2, \ + v3, \ + v4, \ + v5), on_failure) + +// 5-ary predicate assertion macros. +#define EXPECT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \ + GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_) +#define EXPECT_PRED5(pred, v1, v2, v3, v4, v5) \ + GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_) +#define ASSERT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \ + GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_) +#define ASSERT_PRED5(pred, v1, v2, v3, v4, v5) \ + GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_) + + + +#endif // GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_ diff --git a/thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest_prod.h b/thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest_prod.h new file mode 100644 index 00000000..da80ddc6 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/include/gtest/gtest_prod.h @@ -0,0 +1,58 @@ +// Copyright 2006, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) +// +// Google C++ Testing Framework definitions useful in production code. + +#ifndef GTEST_INCLUDE_GTEST_GTEST_PROD_H_ +#define GTEST_INCLUDE_GTEST_GTEST_PROD_H_ + +// When you need to test the private or protected members of a class, +// use the FRIEND_TEST macro to declare your tests as friends of the +// class. For example: +// +// class MyClass { +// private: +// void MyMethod(); +// FRIEND_TEST(MyClassTest, MyMethod); +// }; +// +// class MyClassTest : public testing::Test { +// // ... +// }; +// +// TEST_F(MyClassTest, MyMethod) { +// // Can call MyClass::MyMethod() here. +// } + +#define FRIEND_TEST(test_case_name, test_name)\ +friend class test_case_name##_##test_name##_Test + +#endif // GTEST_INCLUDE_GTEST_GTEST_PROD_H_ diff --git a/thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-death-test-internal.h b/thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-death-test-internal.h new file mode 100644 index 00000000..2b3a78f5 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-death-test-internal.h @@ -0,0 +1,319 @@ +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Authors: wan@google.com (Zhanyong Wan), eefacm@gmail.com (Sean Mcafee) +// +// The Google C++ Testing Framework (Google Test) +// +// This header file defines internal utilities needed for implementing +// death tests. They are subject to change without notice. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_ + +#include "gtest/internal/gtest-internal.h" + +#include + +namespace testing { +namespace internal { + +GTEST_DECLARE_string_(internal_run_death_test); + +// Names of the flags (needed for parsing Google Test flags). +const char kDeathTestStyleFlag[] = "death_test_style"; +const char kDeathTestUseFork[] = "death_test_use_fork"; +const char kInternalRunDeathTestFlag[] = "internal_run_death_test"; + +#if GTEST_HAS_DEATH_TEST + +// DeathTest is a class that hides much of the complexity of the +// GTEST_DEATH_TEST_ macro. It is abstract; its static Create method +// returns a concrete class that depends on the prevailing death test +// style, as defined by the --gtest_death_test_style and/or +// --gtest_internal_run_death_test flags. + +// In describing the results of death tests, these terms are used with +// the corresponding definitions: +// +// exit status: The integer exit information in the format specified +// by wait(2) +// exit code: The integer code passed to exit(3), _exit(2), or +// returned from main() +class GTEST_API_ DeathTest { + public: + // Create returns false if there was an error determining the + // appropriate action to take for the current death test; for example, + // if the gtest_death_test_style flag is set to an invalid value. + // The LastMessage method will return a more detailed message in that + // case. Otherwise, the DeathTest pointer pointed to by the "test" + // argument is set. If the death test should be skipped, the pointer + // is set to NULL; otherwise, it is set to the address of a new concrete + // DeathTest object that controls the execution of the current test. + static bool Create(const char* statement, const RE* regex, + const char* file, int line, DeathTest** test); + DeathTest(); + virtual ~DeathTest() { } + + // A helper class that aborts a death test when it's deleted. + class ReturnSentinel { + public: + explicit ReturnSentinel(DeathTest* test) : test_(test) { } + ~ReturnSentinel() { test_->Abort(TEST_ENCOUNTERED_RETURN_STATEMENT); } + private: + DeathTest* const test_; + GTEST_DISALLOW_COPY_AND_ASSIGN_(ReturnSentinel); + } GTEST_ATTRIBUTE_UNUSED_; + + // An enumeration of possible roles that may be taken when a death + // test is encountered. EXECUTE means that the death test logic should + // be executed immediately. OVERSEE means that the program should prepare + // the appropriate environment for a child process to execute the death + // test, then wait for it to complete. + enum TestRole { OVERSEE_TEST, EXECUTE_TEST }; + + // An enumeration of the three reasons that a test might be aborted. + enum AbortReason { + TEST_ENCOUNTERED_RETURN_STATEMENT, + TEST_THREW_EXCEPTION, + TEST_DID_NOT_DIE + }; + + // Assumes one of the above roles. + virtual TestRole AssumeRole() = 0; + + // Waits for the death test to finish and returns its status. + virtual int Wait() = 0; + + // Returns true if the death test passed; that is, the test process + // exited during the test, its exit status matches a user-supplied + // predicate, and its stderr output matches a user-supplied regular + // expression. + // The user-supplied predicate may be a macro expression rather + // than a function pointer or functor, or else Wait and Passed could + // be combined. + virtual bool Passed(bool exit_status_ok) = 0; + + // Signals that the death test did not die as expected. + virtual void Abort(AbortReason reason) = 0; + + // Returns a human-readable outcome message regarding the outcome of + // the last death test. + static const char* LastMessage(); + + static void set_last_death_test_message(const std::string& message); + + private: + // A string containing a description of the outcome of the last death test. + static std::string last_death_test_message_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(DeathTest); +}; + +// Factory interface for death tests. May be mocked out for testing. +class DeathTestFactory { + public: + virtual ~DeathTestFactory() { } + virtual bool Create(const char* statement, const RE* regex, + const char* file, int line, DeathTest** test) = 0; +}; + +// A concrete DeathTestFactory implementation for normal use. +class DefaultDeathTestFactory : public DeathTestFactory { + public: + virtual bool Create(const char* statement, const RE* regex, + const char* file, int line, DeathTest** test); +}; + +// Returns true if exit_status describes a process that was terminated +// by a signal, or exited normally with a nonzero exit code. +GTEST_API_ bool ExitedUnsuccessfully(int exit_status); + +// Traps C++ exceptions escaping statement and reports them as test +// failures. Note that trapping SEH exceptions is not implemented here. +# if GTEST_HAS_EXCEPTIONS +# define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \ + try { \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ + } catch (const ::std::exception& gtest_exception) { \ + fprintf(\ + stderr, \ + "\n%s: Caught std::exception-derived exception escaping the " \ + "death test statement. Exception message: %s\n", \ + ::testing::internal::FormatFileLocation(__FILE__, __LINE__).c_str(), \ + gtest_exception.what()); \ + fflush(stderr); \ + death_test->Abort(::testing::internal::DeathTest::TEST_THREW_EXCEPTION); \ + } catch (...) { \ + death_test->Abort(::testing::internal::DeathTest::TEST_THREW_EXCEPTION); \ + } + +# else +# define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement) + +# endif + +// This macro is for implementing ASSERT_DEATH*, EXPECT_DEATH*, +// ASSERT_EXIT*, and EXPECT_EXIT*. +# define GTEST_DEATH_TEST_(statement, predicate, regex, fail) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::AlwaysTrue()) { \ + const ::testing::internal::RE& gtest_regex = (regex); \ + ::testing::internal::DeathTest* gtest_dt; \ + if (!::testing::internal::DeathTest::Create(#statement, >est_regex, \ + __FILE__, __LINE__, >est_dt)) { \ + goto GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__); \ + } \ + if (gtest_dt != NULL) { \ + ::testing::internal::scoped_ptr< ::testing::internal::DeathTest> \ + gtest_dt_ptr(gtest_dt); \ + switch (gtest_dt->AssumeRole()) { \ + case ::testing::internal::DeathTest::OVERSEE_TEST: \ + if (!gtest_dt->Passed(predicate(gtest_dt->Wait()))) { \ + goto GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__); \ + } \ + break; \ + case ::testing::internal::DeathTest::EXECUTE_TEST: { \ + ::testing::internal::DeathTest::ReturnSentinel \ + gtest_sentinel(gtest_dt); \ + GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, gtest_dt); \ + gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE); \ + break; \ + } \ + default: \ + break; \ + } \ + } \ + } else \ + GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__): \ + fail(::testing::internal::DeathTest::LastMessage()) +// The symbol "fail" here expands to something into which a message +// can be streamed. + +// This macro is for implementing ASSERT/EXPECT_DEBUG_DEATH when compiled in +// NDEBUG mode. In this case we need the statements to be executed, the regex is +// ignored, and the macro must accept a streamed message even though the message +// is never printed. +# define GTEST_EXECUTE_STATEMENT_(statement, regex) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::AlwaysTrue()) { \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ + } else \ + ::testing::Message() + +// A class representing the parsed contents of the +// --gtest_internal_run_death_test flag, as it existed when +// RUN_ALL_TESTS was called. +class InternalRunDeathTestFlag { + public: + InternalRunDeathTestFlag(const std::string& a_file, + int a_line, + int an_index, + int a_write_fd) + : file_(a_file), line_(a_line), index_(an_index), + write_fd_(a_write_fd) {} + + ~InternalRunDeathTestFlag() { + if (write_fd_ >= 0) + posix::Close(write_fd_); + } + + const std::string& file() const { return file_; } + int line() const { return line_; } + int index() const { return index_; } + int write_fd() const { return write_fd_; } + + private: + std::string file_; + int line_; + int index_; + int write_fd_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(InternalRunDeathTestFlag); +}; + +// Returns a newly created InternalRunDeathTestFlag object with fields +// initialized from the GTEST_FLAG(internal_run_death_test) flag if +// the flag is specified; otherwise returns NULL. +InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag(); + +#else // GTEST_HAS_DEATH_TEST + +// This macro is used for implementing macros such as +// EXPECT_DEATH_IF_SUPPORTED and ASSERT_DEATH_IF_SUPPORTED on systems where +// death tests are not supported. Those macros must compile on such systems +// iff EXPECT_DEATH and ASSERT_DEATH compile with the same parameters on +// systems that support death tests. This allows one to write such a macro +// on a system that does not support death tests and be sure that it will +// compile on a death-test supporting system. +// +// Parameters: +// statement - A statement that a macro such as EXPECT_DEATH would test +// for program termination. This macro has to make sure this +// statement is compiled but not executed, to ensure that +// EXPECT_DEATH_IF_SUPPORTED compiles with a certain +// parameter iff EXPECT_DEATH compiles with it. +// regex - A regex that a macro such as EXPECT_DEATH would use to test +// the output of statement. This parameter has to be +// compiled but not evaluated by this macro, to ensure that +// this macro only accepts expressions that a macro such as +// EXPECT_DEATH would accept. +// terminator - Must be an empty statement for EXPECT_DEATH_IF_SUPPORTED +// and a return statement for ASSERT_DEATH_IF_SUPPORTED. +// This ensures that ASSERT_DEATH_IF_SUPPORTED will not +// compile inside functions where ASSERT_DEATH doesn't +// compile. +// +// The branch that has an always false condition is used to ensure that +// statement and regex are compiled (and thus syntactically correct) but +// never executed. The unreachable code macro protects the terminator +// statement from generating an 'unreachable code' warning in case +// statement unconditionally returns or throws. The Message constructor at +// the end allows the syntax of streaming additional messages into the +// macro, for compilational compatibility with EXPECT_DEATH/ASSERT_DEATH. +# define GTEST_UNSUPPORTED_DEATH_TEST_(statement, regex, terminator) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::AlwaysTrue()) { \ + GTEST_LOG_(WARNING) \ + << "Death tests are not supported on this platform.\n" \ + << "Statement '" #statement "' cannot be verified."; \ + } else if (::testing::internal::AlwaysFalse()) { \ + ::testing::internal::RE::PartialMatch(".*", (regex)); \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ + terminator; \ + } else \ + ::testing::Message() + +#endif // GTEST_HAS_DEATH_TEST + +} // namespace internal +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_ diff --git a/thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-filepath.h b/thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-filepath.h new file mode 100644 index 00000000..7a13b4b0 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-filepath.h @@ -0,0 +1,206 @@ +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: keith.ray@gmail.com (Keith Ray) +// +// Google Test filepath utilities +// +// This header file declares classes and functions used internally by +// Google Test. They are subject to change without notice. +// +// This file is #included in . +// Do not include this header file separately! + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_ + +#include "gtest/internal/gtest-string.h" + +namespace testing { +namespace internal { + +// FilePath - a class for file and directory pathname manipulation which +// handles platform-specific conventions (like the pathname separator). +// Used for helper functions for naming files in a directory for xml output. +// Except for Set methods, all methods are const or static, which provides an +// "immutable value object" -- useful for peace of mind. +// A FilePath with a value ending in a path separator ("like/this/") represents +// a directory, otherwise it is assumed to represent a file. In either case, +// it may or may not represent an actual file or directory in the file system. +// Names are NOT checked for syntax correctness -- no checking for illegal +// characters, malformed paths, etc. + +class GTEST_API_ FilePath { + public: + FilePath() : pathname_("") { } + FilePath(const FilePath& rhs) : pathname_(rhs.pathname_) { } + + explicit FilePath(const std::string& pathname) : pathname_(pathname) { + Normalize(); + } + + FilePath& operator=(const FilePath& rhs) { + Set(rhs); + return *this; + } + + void Set(const FilePath& rhs) { + pathname_ = rhs.pathname_; + } + + const std::string& string() const { return pathname_; } + const char* c_str() const { return pathname_.c_str(); } + + // Returns the current working directory, or "" if unsuccessful. + static FilePath GetCurrentDir(); + + // Given directory = "dir", base_name = "test", number = 0, + // extension = "xml", returns "dir/test.xml". If number is greater + // than zero (e.g., 12), returns "dir/test_12.xml". + // On Windows platform, uses \ as the separator rather than /. + static FilePath MakeFileName(const FilePath& directory, + const FilePath& base_name, + int number, + const char* extension); + + // Given directory = "dir", relative_path = "test.xml", + // returns "dir/test.xml". + // On Windows, uses \ as the separator rather than /. + static FilePath ConcatPaths(const FilePath& directory, + const FilePath& relative_path); + + // Returns a pathname for a file that does not currently exist. The pathname + // will be directory/base_name.extension or + // directory/base_name_.extension if directory/base_name.extension + // already exists. The number will be incremented until a pathname is found + // that does not already exist. + // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. + // There could be a race condition if two or more processes are calling this + // function at the same time -- they could both pick the same filename. + static FilePath GenerateUniqueFileName(const FilePath& directory, + const FilePath& base_name, + const char* extension); + + // Returns true iff the path is "". + bool IsEmpty() const { return pathname_.empty(); } + + // If input name has a trailing separator character, removes it and returns + // the name, otherwise return the name string unmodified. + // On Windows platform, uses \ as the separator, other platforms use /. + FilePath RemoveTrailingPathSeparator() const; + + // Returns a copy of the FilePath with the directory part removed. + // Example: FilePath("path/to/file").RemoveDirectoryName() returns + // FilePath("file"). If there is no directory part ("just_a_file"), it returns + // the FilePath unmodified. If there is no file part ("just_a_dir/") it + // returns an empty FilePath (""). + // On Windows platform, '\' is the path separator, otherwise it is '/'. + FilePath RemoveDirectoryName() const; + + // RemoveFileName returns the directory path with the filename removed. + // Example: FilePath("path/to/file").RemoveFileName() returns "path/to/". + // If the FilePath is "a_file" or "/a_file", RemoveFileName returns + // FilePath("./") or, on Windows, FilePath(".\\"). If the filepath does + // not have a file, like "just/a/dir/", it returns the FilePath unmodified. + // On Windows platform, '\' is the path separator, otherwise it is '/'. + FilePath RemoveFileName() const; + + // Returns a copy of the FilePath with the case-insensitive extension removed. + // Example: FilePath("dir/file.exe").RemoveExtension("EXE") returns + // FilePath("dir/file"). If a case-insensitive extension is not + // found, returns a copy of the original FilePath. + FilePath RemoveExtension(const char* extension) const; + + // Creates directories so that path exists. Returns true if successful or if + // the directories already exist; returns false if unable to create + // directories for any reason. Will also return false if the FilePath does + // not represent a directory (that is, it doesn't end with a path separator). + bool CreateDirectoriesRecursively() const; + + // Create the directory so that path exists. Returns true if successful or + // if the directory already exists; returns false if unable to create the + // directory for any reason, including if the parent directory does not + // exist. Not named "CreateDirectory" because that's a macro on Windows. + bool CreateFolder() const; + + // Returns true if FilePath describes something in the file-system, + // either a file, directory, or whatever, and that something exists. + bool FileOrDirectoryExists() const; + + // Returns true if pathname describes a directory in the file-system + // that exists. + bool DirectoryExists() const; + + // Returns true if FilePath ends with a path separator, which indicates that + // it is intended to represent a directory. Returns false otherwise. + // This does NOT check that a directory (or file) actually exists. + bool IsDirectory() const; + + // Returns true if pathname describes a root directory. (Windows has one + // root directory per disk drive.) + bool IsRootDirectory() const; + + // Returns true if pathname describes an absolute path. + bool IsAbsolutePath() const; + + private: + // Replaces multiple consecutive separators with a single separator. + // For example, "bar///foo" becomes "bar/foo". Does not eliminate other + // redundancies that might be in a pathname involving "." or "..". + // + // A pathname with multiple consecutive separators may occur either through + // user error or as a result of some scripts or APIs that generate a pathname + // with a trailing separator. On other platforms the same API or script + // may NOT generate a pathname with a trailing "/". Then elsewhere that + // pathname may have another "/" and pathname components added to it, + // without checking for the separator already being there. + // The script language and operating system may allow paths like "foo//bar" + // but some of the functions in FilePath will not handle that correctly. In + // particular, RemoveTrailingPathSeparator() only removes one separator, and + // it is called in CreateDirectoriesRecursively() assuming that it will change + // a pathname from directory syntax (trailing separator) to filename syntax. + // + // On Windows this method also replaces the alternate path separator '/' with + // the primary path separator '\\', so that for example "bar\\/\\foo" becomes + // "bar\\foo". + + void Normalize(); + + // Returns a pointer to the last occurence of a valid path separator in + // the FilePath. On Windows, for example, both '/' and '\' are valid path + // separators. Returns NULL if no path separator was found. + const char* FindLastPathSeparator() const; + + std::string pathname_; +}; // class FilePath + +} // namespace internal +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_ diff --git a/thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-internal.h b/thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-internal.h new file mode 100644 index 00000000..6e3dd66b --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-internal.h @@ -0,0 +1,1171 @@ +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Authors: wan@google.com (Zhanyong Wan), eefacm@gmail.com (Sean Mcafee) +// +// The Google C++ Testing Framework (Google Test) +// +// This header file declares functions and macros used internally by +// Google Test. They are subject to change without notice. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_ + +#include "gtest/internal/gtest-port.h" + +#if GTEST_OS_LINUX +# include +# include +# include +# include +#endif // GTEST_OS_LINUX + +#include +#include +#include +#include +#include + +#include "gtest/internal/gtest-string.h" +#include "gtest/internal/gtest-filepath.h" +#include "gtest/internal/gtest-type-util.h" + +// Due to C++ preprocessor weirdness, we need double indirection to +// concatenate two tokens when one of them is __LINE__. Writing +// +// foo ## __LINE__ +// +// will result in the token foo__LINE__, instead of foo followed by +// the current line number. For more details, see +// http://www.parashift.com/c++-faq-lite/misc-technical-issues.html#faq-39.6 +#define GTEST_CONCAT_TOKEN_(foo, bar) GTEST_CONCAT_TOKEN_IMPL_(foo, bar) +#define GTEST_CONCAT_TOKEN_IMPL_(foo, bar) foo ## bar + +// Google Test defines the testing::Message class to allow construction of +// test messages via the << operator. The idea is that anything +// streamable to std::ostream can be streamed to a testing::Message. +// This allows a user to use his own types in Google Test assertions by +// overloading the << operator. +// +// util/gtl/stl_logging.h overloads << for STL containers. These +// overloads cannot be defined in the std namespace, as that will be +// undefined behavior. Therefore, they are defined in the global +// namespace instead. +// +// C++'s symbol lookup rule (i.e. Koenig lookup) says that these +// overloads are visible in either the std namespace or the global +// namespace, but not other namespaces, including the testing +// namespace which Google Test's Message class is in. +// +// To allow STL containers (and other types that has a << operator +// defined in the global namespace) to be used in Google Test assertions, +// testing::Message must access the custom << operator from the global +// namespace. Hence this helper function. +// +// Note: Jeffrey Yasskin suggested an alternative fix by "using +// ::operator<<;" in the definition of Message's operator<<. That fix +// doesn't require a helper function, but unfortunately doesn't +// compile with MSVC. +template +inline void GTestStreamToHelper(std::ostream* os, const T& val) { + *os << val; +} + +class ProtocolMessage; +namespace proto2 { class Message; } + +namespace testing { + +// Forward declarations. + +class AssertionResult; // Result of an assertion. +class Message; // Represents a failure message. +class Test; // Represents a test. +class TestInfo; // Information about a test. +class TestPartResult; // Result of a test part. +class UnitTest; // A collection of test cases. + +template +::std::string PrintToString(const T& value); + +namespace internal { + +struct TraceInfo; // Information about a trace point. +class ScopedTrace; // Implements scoped trace. +class TestInfoImpl; // Opaque implementation of TestInfo +class UnitTestImpl; // Opaque implementation of UnitTest + +// How many times InitGoogleTest() has been called. +GTEST_API_ extern int g_init_gtest_count; + +// The text used in failure messages to indicate the start of the +// stack trace. +GTEST_API_ extern const char kStackTraceMarker[]; + +// A secret type that Google Test users don't know about. It has no +// definition on purpose. Therefore it's impossible to create a +// Secret object, which is what we want. +class Secret; + +// Two overloaded helpers for checking at compile time whether an +// expression is a null pointer literal (i.e. NULL or any 0-valued +// compile-time integral constant). Their return values have +// different sizes, so we can use sizeof() to test which version is +// picked by the compiler. These helpers have no implementations, as +// we only need their signatures. +// +// Given IsNullLiteralHelper(x), the compiler will pick the first +// version if x can be implicitly converted to Secret*, and pick the +// second version otherwise. Since Secret is a secret and incomplete +// type, the only expression a user can write that has type Secret* is +// a null pointer literal. Therefore, we know that x is a null +// pointer literal if and only if the first version is picked by the +// compiler. +char IsNullLiteralHelper(Secret* p); +char (&IsNullLiteralHelper(...))[2]; // NOLINT + +// A compile-time bool constant that is true if and only if x is a +// null pointer literal (i.e. NULL or any 0-valued compile-time +// integral constant). +#ifdef GTEST_ELLIPSIS_NEEDS_POD_ +// We lose support for NULL detection where the compiler doesn't like +// passing non-POD classes through ellipsis (...). +# define GTEST_IS_NULL_LITERAL_(x) false +#else +# define GTEST_IS_NULL_LITERAL_(x) \ + (sizeof(::testing::internal::IsNullLiteralHelper(x)) == 1) +#endif // GTEST_ELLIPSIS_NEEDS_POD_ + +// Appends the user-supplied message to the Google-Test-generated message. +GTEST_API_ std::string AppendUserMessage( + const std::string& gtest_msg, const Message& user_msg); + +// A helper class for creating scoped traces in user programs. +class GTEST_API_ ScopedTrace { + public: + // The c'tor pushes the given source file location and message onto + // a trace stack maintained by Google Test. + ScopedTrace(const char* file, int line, const Message& message); + + // The d'tor pops the info pushed by the c'tor. + // + // Note that the d'tor is not virtual in order to be efficient. + // Don't inherit from ScopedTrace! + ~ScopedTrace(); + + private: + GTEST_DISALLOW_COPY_AND_ASSIGN_(ScopedTrace); +} GTEST_ATTRIBUTE_UNUSED_; // A ScopedTrace object does its job in its + // c'tor and d'tor. Therefore it doesn't + // need to be used otherwise. + +// Converts a streamable value to an std::string. A NULL pointer is +// converted to "(null)". When the input value is a ::string, +// ::std::string, ::wstring, or ::std::wstring object, each NUL +// character in it is replaced with "\\0". +// Declared here but defined in gtest.h, so that it has access +// to the definition of the Message class, required by the ARM +// compiler. +template +std::string StreamableToString(const T& streamable); + +// Constructs and returns the message for an equality assertion +// (e.g. ASSERT_EQ, EXPECT_STREQ, etc) failure. +// +// The first four parameters are the expressions used in the assertion +// and their values, as strings. For example, for ASSERT_EQ(foo, bar) +// where foo is 5 and bar is 6, we have: +// +// expected_expression: "foo" +// actual_expression: "bar" +// expected_value: "5" +// actual_value: "6" +// +// The ignoring_case parameter is true iff the assertion is a +// *_STRCASEEQ*. When it's true, the string " (ignoring case)" will +// be inserted into the message. +GTEST_API_ AssertionResult EqFailure(const char* expected_expression, + const char* actual_expression, + const std::string& expected_value, + const std::string& actual_value, + bool ignoring_case); + +// Constructs a failure message for Boolean assertions such as EXPECT_TRUE. +GTEST_API_ std::string GetBoolAssertionFailureMessage( + const AssertionResult& assertion_result, + const char* expression_text, + const char* actual_predicate_value, + const char* expected_predicate_value); + +// This template class represents an IEEE floating-point number +// (either single-precision or double-precision, depending on the +// template parameters). +// +// The purpose of this class is to do more sophisticated number +// comparison. (Due to round-off error, etc, it's very unlikely that +// two floating-points will be equal exactly. Hence a naive +// comparison by the == operation often doesn't work.) +// +// Format of IEEE floating-point: +// +// The most-significant bit being the leftmost, an IEEE +// floating-point looks like +// +// sign_bit exponent_bits fraction_bits +// +// Here, sign_bit is a single bit that designates the sign of the +// number. +// +// For float, there are 8 exponent bits and 23 fraction bits. +// +// For double, there are 11 exponent bits and 52 fraction bits. +// +// More details can be found at +// http://en.wikipedia.org/wiki/IEEE_floating-point_standard. +// +// Template parameter: +// +// RawType: the raw floating-point type (either float or double) +template +class FloatingPoint { + public: + // Defines the unsigned integer type that has the same size as the + // floating point number. + typedef typename TypeWithSize::UInt Bits; + + // Constants. + + // # of bits in a number. + static const size_t kBitCount = 8*sizeof(RawType); + + // # of fraction bits in a number. + static const size_t kFractionBitCount = + std::numeric_limits::digits - 1; + + // # of exponent bits in a number. + static const size_t kExponentBitCount = kBitCount - 1 - kFractionBitCount; + + // The mask for the sign bit. + static const Bits kSignBitMask = static_cast(1) << (kBitCount - 1); + + // The mask for the fraction bits. + static const Bits kFractionBitMask = + ~static_cast(0) >> (kExponentBitCount + 1); + + // The mask for the exponent bits. + static const Bits kExponentBitMask = ~(kSignBitMask | kFractionBitMask); + + // How many ULP's (Units in the Last Place) we want to tolerate when + // comparing two numbers. The larger the value, the more error we + // allow. A 0 value means that two numbers must be exactly the same + // to be considered equal. + // + // The maximum error of a single floating-point operation is 0.5 + // units in the last place. On Intel CPU's, all floating-point + // calculations are done with 80-bit precision, while double has 64 + // bits. Therefore, 4 should be enough for ordinary use. + // + // See the following article for more details on ULP: + // http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm. + static const size_t kMaxUlps = 4; + + // Constructs a FloatingPoint from a raw floating-point number. + // + // On an Intel CPU, passing a non-normalized NAN (Not a Number) + // around may change its bits, although the new value is guaranteed + // to be also a NAN. Therefore, don't expect this constructor to + // preserve the bits in x when x is a NAN. + explicit FloatingPoint(const RawType& x) { u_.value_ = x; } + + // Static methods + + // Reinterprets a bit pattern as a floating-point number. + // + // This function is needed to test the AlmostEquals() method. + static RawType ReinterpretBits(const Bits bits) { + FloatingPoint fp(0); + fp.u_.bits_ = bits; + return fp.u_.value_; + } + + // Returns the floating-point number that represent positive infinity. + static RawType Infinity() { + return ReinterpretBits(kExponentBitMask); + } + + // Non-static methods + + // Returns the bits that represents this number. + const Bits &bits() const { return u_.bits_; } + + // Returns the exponent bits of this number. + Bits exponent_bits() const { return kExponentBitMask & u_.bits_; } + + // Returns the fraction bits of this number. + Bits fraction_bits() const { return kFractionBitMask & u_.bits_; } + + // Returns the sign bit of this number. + Bits sign_bit() const { return kSignBitMask & u_.bits_; } + + // Returns true iff this is NAN (not a number). + bool is_nan() const { + // It's a NAN if the exponent bits are all ones and the fraction + // bits are not entirely zeros. + return (exponent_bits() == kExponentBitMask) && (fraction_bits() != 0); + } + + // Returns true iff this number is at most kMaxUlps ULP's away from + // rhs. In particular, this function: + // + // - returns false if either number is (or both are) NAN. + // - treats really large numbers as almost equal to infinity. + // - thinks +0.0 and -0.0 are 0 DLP's apart. + bool AlmostEquals(const FloatingPoint& rhs) const { + // The IEEE standard says that any comparison operation involving + // a NAN must return false. + if (is_nan() || rhs.is_nan()) return false; + + return DistanceBetweenSignAndMagnitudeNumbers(u_.bits_, rhs.u_.bits_) + <= kMaxUlps; + } + + private: + // The data type used to store the actual floating-point number. + union FloatingPointUnion { + RawType value_; // The raw floating-point number. + Bits bits_; // The bits that represent the number. + }; + + // Converts an integer from the sign-and-magnitude representation to + // the biased representation. More precisely, let N be 2 to the + // power of (kBitCount - 1), an integer x is represented by the + // unsigned number x + N. + // + // For instance, + // + // -N + 1 (the most negative number representable using + // sign-and-magnitude) is represented by 1; + // 0 is represented by N; and + // N - 1 (the biggest number representable using + // sign-and-magnitude) is represented by 2N - 1. + // + // Read http://en.wikipedia.org/wiki/Signed_number_representations + // for more details on signed number representations. + static Bits SignAndMagnitudeToBiased(const Bits &sam) { + if (kSignBitMask & sam) { + // sam represents a negative number. + return ~sam + 1; + } else { + // sam represents a positive number. + return kSignBitMask | sam; + } + } + + // Given two numbers in the sign-and-magnitude representation, + // returns the distance between them as an unsigned number. + static Bits DistanceBetweenSignAndMagnitudeNumbers(const Bits &sam1, + const Bits &sam2) { + const Bits biased1 = SignAndMagnitudeToBiased(sam1); + const Bits biased2 = SignAndMagnitudeToBiased(sam2); + return (biased1 >= biased2) ? (biased1 - biased2) : (biased2 - biased1); + } + + FloatingPointUnion u_; +}; + +// Typedefs the instances of the FloatingPoint template class that we +// care to use. +typedef FloatingPoint Float; +typedef FloatingPoint Double; + +// In order to catch the mistake of putting tests that use different +// test fixture classes in the same test case, we need to assign +// unique IDs to fixture classes and compare them. The TypeId type is +// used to hold such IDs. The user should treat TypeId as an opaque +// type: the only operation allowed on TypeId values is to compare +// them for equality using the == operator. +typedef const void* TypeId; + +template +class TypeIdHelper { + public: + // dummy_ must not have a const type. Otherwise an overly eager + // compiler (e.g. MSVC 7.1 & 8.0) may try to merge + // TypeIdHelper::dummy_ for different Ts as an "optimization". + static bool dummy_; +}; + +template +bool TypeIdHelper::dummy_ = false; + +// GetTypeId() returns the ID of type T. Different values will be +// returned for different types. Calling the function twice with the +// same type argument is guaranteed to return the same ID. +template +TypeId GetTypeId() { + // The compiler is required to allocate a different + // TypeIdHelper::dummy_ variable for each T used to instantiate + // the template. Therefore, the address of dummy_ is guaranteed to + // be unique. + return &(TypeIdHelper::dummy_); +} + +// Returns the type ID of ::testing::Test. Always call this instead +// of GetTypeId< ::testing::Test>() to get the type ID of +// ::testing::Test, as the latter may give the wrong result due to a +// suspected linker bug when compiling Google Test as a Mac OS X +// framework. +GTEST_API_ TypeId GetTestTypeId(); + +// Defines the abstract factory interface that creates instances +// of a Test object. +class TestFactoryBase { + public: + virtual ~TestFactoryBase() {} + + // Creates a test instance to run. The instance is both created and destroyed + // within TestInfoImpl::Run() + virtual Test* CreateTest() = 0; + + protected: + TestFactoryBase() {} + + private: + GTEST_DISALLOW_COPY_AND_ASSIGN_(TestFactoryBase); +}; + +// This class provides implementation of TeastFactoryBase interface. +// It is used in TEST and TEST_F macros. +template +class TestFactoryImpl : public TestFactoryBase { + public: + virtual Test* CreateTest() { return new TestClass; } +}; + +#if GTEST_OS_WINDOWS + +// Predicate-formatters for implementing the HRESULT checking macros +// {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED} +// We pass a long instead of HRESULT to avoid causing an +// include dependency for the HRESULT type. +GTEST_API_ AssertionResult IsHRESULTSuccess(const char* expr, + long hr); // NOLINT +GTEST_API_ AssertionResult IsHRESULTFailure(const char* expr, + long hr); // NOLINT + +#endif // GTEST_OS_WINDOWS + +// Types of SetUpTestCase() and TearDownTestCase() functions. +typedef void (*SetUpTestCaseFunc)(); +typedef void (*TearDownTestCaseFunc)(); + +// Creates a new TestInfo object and registers it with Google Test; +// returns the created object. +// +// Arguments: +// +// test_case_name: name of the test case +// name: name of the test +// type_param the name of the test's type parameter, or NULL if +// this is not a typed or a type-parameterized test. +// value_param text representation of the test's value parameter, +// or NULL if this is not a type-parameterized test. +// fixture_class_id: ID of the test fixture class +// set_up_tc: pointer to the function that sets up the test case +// tear_down_tc: pointer to the function that tears down the test case +// factory: pointer to the factory that creates a test object. +// The newly created TestInfo instance will assume +// ownership of the factory object. +GTEST_API_ TestInfo* MakeAndRegisterTestInfo( + const char* test_case_name, const char* name, + const char* type_param, + const char* value_param, + TypeId fixture_class_id, + SetUpTestCaseFunc set_up_tc, + TearDownTestCaseFunc tear_down_tc, + TestFactoryBase* factory); + +// If *pstr starts with the given prefix, modifies *pstr to be right +// past the prefix and returns true; otherwise leaves *pstr unchanged +// and returns false. None of pstr, *pstr, and prefix can be NULL. +GTEST_API_ bool SkipPrefix(const char* prefix, const char** pstr); + +#if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P + +// State of the definition of a type-parameterized test case. +class GTEST_API_ TypedTestCasePState { + public: + TypedTestCasePState() : registered_(false) {} + + // Adds the given test name to defined_test_names_ and return true + // if the test case hasn't been registered; otherwise aborts the + // program. + bool AddTestName(const char* file, int line, const char* case_name, + const char* test_name) { + if (registered_) { + fprintf(stderr, "%s Test %s must be defined before " + "REGISTER_TYPED_TEST_CASE_P(%s, ...).\n", + FormatFileLocation(file, line).c_str(), test_name, case_name); + fflush(stderr); + posix::Abort(); + } + defined_test_names_.insert(test_name); + return true; + } + + // Verifies that registered_tests match the test names in + // defined_test_names_; returns registered_tests if successful, or + // aborts the program otherwise. + const char* VerifyRegisteredTestNames( + const char* file, int line, const char* registered_tests); + + private: + bool registered_; + ::std::set defined_test_names_; +}; + +// Skips to the first non-space char after the first comma in 'str'; +// returns NULL if no comma is found in 'str'. +inline const char* SkipComma(const char* str) { + const char* comma = strchr(str, ','); + if (comma == NULL) { + return NULL; + } + while (IsSpace(*(++comma))) {} + return comma; +} + +// Returns the prefix of 'str' before the first comma in it; returns +// the entire string if it contains no comma. +inline std::string GetPrefixUntilComma(const char* str) { + const char* comma = strchr(str, ','); + return comma == NULL ? str : std::string(str, comma); +} + +// TypeParameterizedTest::Register() +// registers a list of type-parameterized tests with Google Test. The +// return value is insignificant - we just need to return something +// such that we can call this function in a namespace scope. +// +// Implementation note: The GTEST_TEMPLATE_ macro declares a template +// template parameter. It's defined in gtest-type-util.h. +template +class TypeParameterizedTest { + public: + // 'index' is the index of the test in the type list 'Types' + // specified in INSTANTIATE_TYPED_TEST_CASE_P(Prefix, TestCase, + // Types). Valid values for 'index' are [0, N - 1] where N is the + // length of Types. + static bool Register(const char* prefix, const char* case_name, + const char* test_names, int index) { + typedef typename Types::Head Type; + typedef Fixture FixtureClass; + typedef typename GTEST_BIND_(TestSel, Type) TestClass; + + // First, registers the first type-parameterized test in the type + // list. + MakeAndRegisterTestInfo( + String::Format("%s%s%s/%d", prefix, prefix[0] == '\0' ? "" : "/", + case_name, index).c_str(), + GetPrefixUntilComma(test_names).c_str(), + GetTypeName().c_str(), + NULL, // No value parameter. + GetTypeId(), + TestClass::SetUpTestCase, + TestClass::TearDownTestCase, + new TestFactoryImpl); + + // Next, recurses (at compile time) with the tail of the type list. + return TypeParameterizedTest + ::Register(prefix, case_name, test_names, index + 1); + } +}; + +// The base case for the compile time recursion. +template +class TypeParameterizedTest { + public: + static bool Register(const char* /*prefix*/, const char* /*case_name*/, + const char* /*test_names*/, int /*index*/) { + return true; + } +}; + +// TypeParameterizedTestCase::Register() +// registers *all combinations* of 'Tests' and 'Types' with Google +// Test. The return value is insignificant - we just need to return +// something such that we can call this function in a namespace scope. +template +class TypeParameterizedTestCase { + public: + static bool Register(const char* prefix, const char* case_name, + const char* test_names) { + typedef typename Tests::Head Head; + + // First, register the first test in 'Test' for each type in 'Types'. + TypeParameterizedTest::Register( + prefix, case_name, test_names, 0); + + // Next, recurses (at compile time) with the tail of the test list. + return TypeParameterizedTestCase + ::Register(prefix, case_name, SkipComma(test_names)); + } +}; + +// The base case for the compile time recursion. +template +class TypeParameterizedTestCase { + public: + static bool Register(const char* /*prefix*/, const char* /*case_name*/, + const char* /*test_names*/) { + return true; + } +}; + +#endif // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P + +// Returns the current OS stack trace as an std::string. +// +// The maximum number of stack frames to be included is specified by +// the gtest_stack_trace_depth flag. The skip_count parameter +// specifies the number of top frames to be skipped, which doesn't +// count against the number of frames to be included. +// +// For example, if Foo() calls Bar(), which in turn calls +// GetCurrentOsStackTraceExceptTop(..., 1), Foo() will be included in +// the trace but Bar() and GetCurrentOsStackTraceExceptTop() won't. +GTEST_API_ std::string GetCurrentOsStackTraceExceptTop( + UnitTest* unit_test, int skip_count); + +// Helpers for suppressing warnings on unreachable code or constant +// condition. + +// Always returns true. +GTEST_API_ bool AlwaysTrue(); + +// Always returns false. +inline bool AlwaysFalse() { return !AlwaysTrue(); } + +// Helper for suppressing false warning from Clang on a const char* +// variable declared in a conditional expression always being NULL in +// the else branch. +struct GTEST_API_ ConstCharPtr { + ConstCharPtr(const char* str) : value(str) {} + operator bool() const { return true; } + const char* value; +}; + +// A simple Linear Congruential Generator for generating random +// numbers with a uniform distribution. Unlike rand() and srand(), it +// doesn't use global state (and therefore can't interfere with user +// code). Unlike rand_r(), it's portable. An LCG isn't very random, +// but it's good enough for our purposes. +class GTEST_API_ Random { + public: + static const UInt32 kMaxRange = 1u << 31; + + explicit Random(UInt32 seed) : state_(seed) {} + + void Reseed(UInt32 seed) { state_ = seed; } + + // Generates a random number from [0, range). Crashes if 'range' is + // 0 or greater than kMaxRange. + UInt32 Generate(UInt32 range); + + private: + UInt32 state_; + GTEST_DISALLOW_COPY_AND_ASSIGN_(Random); +}; + +// Defining a variable of type CompileAssertTypesEqual will cause a +// compiler error iff T1 and T2 are different types. +template +struct CompileAssertTypesEqual; + +template +struct CompileAssertTypesEqual { +}; + +// Removes the reference from a type if it is a reference type, +// otherwise leaves it unchanged. This is the same as +// tr1::remove_reference, which is not widely available yet. +template +struct RemoveReference { typedef T type; }; // NOLINT +template +struct RemoveReference { typedef T type; }; // NOLINT + +// A handy wrapper around RemoveReference that works when the argument +// T depends on template parameters. +#define GTEST_REMOVE_REFERENCE_(T) \ + typename ::testing::internal::RemoveReference::type + +// Removes const from a type if it is a const type, otherwise leaves +// it unchanged. This is the same as tr1::remove_const, which is not +// widely available yet. +template +struct RemoveConst { typedef T type; }; // NOLINT +template +struct RemoveConst { typedef T type; }; // NOLINT + +// MSVC 8.0, Sun C++, and IBM XL C++ have a bug which causes the above +// definition to fail to remove the const in 'const int[3]' and 'const +// char[3][4]'. The following specialization works around the bug. +template +struct RemoveConst { + typedef typename RemoveConst::type type[N]; +}; + +#if defined(_MSC_VER) && _MSC_VER < 1400 +// This is the only specialization that allows VC++ 7.1 to remove const in +// 'const int[3] and 'const int[3][4]'. However, it causes trouble with GCC +// and thus needs to be conditionally compiled. +template +struct RemoveConst { + typedef typename RemoveConst::type type[N]; +}; +#endif + +// A handy wrapper around RemoveConst that works when the argument +// T depends on template parameters. +#define GTEST_REMOVE_CONST_(T) \ + typename ::testing::internal::RemoveConst::type + +// Turns const U&, U&, const U, and U all into U. +#define GTEST_REMOVE_REFERENCE_AND_CONST_(T) \ + GTEST_REMOVE_CONST_(GTEST_REMOVE_REFERENCE_(T)) + +// Adds reference to a type if it is not a reference type, +// otherwise leaves it unchanged. This is the same as +// tr1::add_reference, which is not widely available yet. +template +struct AddReference { typedef T& type; }; // NOLINT +template +struct AddReference { typedef T& type; }; // NOLINT + +// A handy wrapper around AddReference that works when the argument T +// depends on template parameters. +#define GTEST_ADD_REFERENCE_(T) \ + typename ::testing::internal::AddReference::type + +// Adds a reference to const on top of T as necessary. For example, +// it transforms +// +// char ==> const char& +// const char ==> const char& +// char& ==> const char& +// const char& ==> const char& +// +// The argument T must depend on some template parameters. +#define GTEST_REFERENCE_TO_CONST_(T) \ + GTEST_ADD_REFERENCE_(const GTEST_REMOVE_REFERENCE_(T)) + +// ImplicitlyConvertible::value is a compile-time bool +// constant that's true iff type From can be implicitly converted to +// type To. +template +class ImplicitlyConvertible { + private: + // We need the following helper functions only for their types. + // They have no implementations. + + // MakeFrom() is an expression whose type is From. We cannot simply + // use From(), as the type From may not have a public default + // constructor. + static From MakeFrom(); + + // These two functions are overloaded. Given an expression + // Helper(x), the compiler will pick the first version if x can be + // implicitly converted to type To; otherwise it will pick the + // second version. + // + // The first version returns a value of size 1, and the second + // version returns a value of size 2. Therefore, by checking the + // size of Helper(x), which can be done at compile time, we can tell + // which version of Helper() is used, and hence whether x can be + // implicitly converted to type To. + static char Helper(To); + static char (&Helper(...))[2]; // NOLINT + + // We have to put the 'public' section after the 'private' section, + // or MSVC refuses to compile the code. + public: + // MSVC warns about implicitly converting from double to int for + // possible loss of data, so we need to temporarily disable the + // warning. +#ifdef _MSC_VER +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4244) // Temporarily disables warning 4244. + + static const bool value = + sizeof(Helper(ImplicitlyConvertible::MakeFrom())) == 1; +# pragma warning(pop) // Restores the warning state. +#elif defined(__BORLANDC__) + // C++Builder cannot use member overload resolution during template + // instantiation. The simplest workaround is to use its C++0x type traits + // functions (C++Builder 2009 and above only). + static const bool value = __is_convertible(From, To); +#else + static const bool value = + sizeof(Helper(ImplicitlyConvertible::MakeFrom())) == 1; +#endif // _MSV_VER +}; +template +const bool ImplicitlyConvertible::value; + +// IsAProtocolMessage::value is a compile-time bool constant that's +// true iff T is type ProtocolMessage, proto2::Message, or a subclass +// of those. +template +struct IsAProtocolMessage + : public bool_constant< + ImplicitlyConvertible::value || + ImplicitlyConvertible::value> { +}; + +// When the compiler sees expression IsContainerTest(0), if C is an +// STL-style container class, the first overload of IsContainerTest +// will be viable (since both C::iterator* and C::const_iterator* are +// valid types and NULL can be implicitly converted to them). It will +// be picked over the second overload as 'int' is a perfect match for +// the type of argument 0. If C::iterator or C::const_iterator is not +// a valid type, the first overload is not viable, and the second +// overload will be picked. Therefore, we can determine whether C is +// a container class by checking the type of IsContainerTest(0). +// The value of the expression is insignificant. +// +// Note that we look for both C::iterator and C::const_iterator. The +// reason is that C++ injects the name of a class as a member of the +// class itself (e.g. you can refer to class iterator as either +// 'iterator' or 'iterator::iterator'). If we look for C::iterator +// only, for example, we would mistakenly think that a class named +// iterator is an STL container. +// +// Also note that the simpler approach of overloading +// IsContainerTest(typename C::const_iterator*) and +// IsContainerTest(...) doesn't work with Visual Age C++ and Sun C++. +typedef int IsContainer; +template +IsContainer IsContainerTest(int /* dummy */, + typename C::iterator* /* it */ = NULL, + typename C::const_iterator* /* const_it */ = NULL) { + return 0; +} + +typedef char IsNotContainer; +template +IsNotContainer IsContainerTest(long /* dummy */) { return '\0'; } + +// EnableIf::type is void when 'Cond' is true, and +// undefined when 'Cond' is false. To use SFINAE to make a function +// overload only apply when a particular expression is true, add +// "typename EnableIf::type* = 0" as the last parameter. +template struct EnableIf; +template<> struct EnableIf { typedef void type; }; // NOLINT + +// Utilities for native arrays. + +// ArrayEq() compares two k-dimensional native arrays using the +// elements' operator==, where k can be any integer >= 0. When k is +// 0, ArrayEq() degenerates into comparing a single pair of values. + +template +bool ArrayEq(const T* lhs, size_t size, const U* rhs); + +// This generic version is used when k is 0. +template +inline bool ArrayEq(const T& lhs, const U& rhs) { return lhs == rhs; } + +// This overload is used when k >= 1. +template +inline bool ArrayEq(const T(&lhs)[N], const U(&rhs)[N]) { + return internal::ArrayEq(lhs, N, rhs); +} + +// This helper reduces code bloat. If we instead put its logic inside +// the previous ArrayEq() function, arrays with different sizes would +// lead to different copies of the template code. +template +bool ArrayEq(const T* lhs, size_t size, const U* rhs) { + for (size_t i = 0; i != size; i++) { + if (!internal::ArrayEq(lhs[i], rhs[i])) + return false; + } + return true; +} + +// Finds the first element in the iterator range [begin, end) that +// equals elem. Element may be a native array type itself. +template +Iter ArrayAwareFind(Iter begin, Iter end, const Element& elem) { + for (Iter it = begin; it != end; ++it) { + if (internal::ArrayEq(*it, elem)) + return it; + } + return end; +} + +// CopyArray() copies a k-dimensional native array using the elements' +// operator=, where k can be any integer >= 0. When k is 0, +// CopyArray() degenerates into copying a single value. + +template +void CopyArray(const T* from, size_t size, U* to); + +// This generic version is used when k is 0. +template +inline void CopyArray(const T& from, U* to) { *to = from; } + +// This overload is used when k >= 1. +template +inline void CopyArray(const T(&from)[N], U(*to)[N]) { + internal::CopyArray(from, N, *to); +} + +// This helper reduces code bloat. If we instead put its logic inside +// the previous CopyArray() function, arrays with different sizes +// would lead to different copies of the template code. +template +void CopyArray(const T* from, size_t size, U* to) { + for (size_t i = 0; i != size; i++) { + internal::CopyArray(from[i], to + i); + } +} + +// The relation between an NativeArray object (see below) and the +// native array it represents. +enum RelationToSource { + kReference, // The NativeArray references the native array. + kCopy // The NativeArray makes a copy of the native array and + // owns the copy. +}; + +// Adapts a native array to a read-only STL-style container. Instead +// of the complete STL container concept, this adaptor only implements +// members useful for Google Mock's container matchers. New members +// should be added as needed. To simplify the implementation, we only +// support Element being a raw type (i.e. having no top-level const or +// reference modifier). It's the client's responsibility to satisfy +// this requirement. Element can be an array type itself (hence +// multi-dimensional arrays are supported). +template +class NativeArray { + public: + // STL-style container typedefs. + typedef Element value_type; + typedef Element* iterator; + typedef const Element* const_iterator; + + // Constructs from a native array. + NativeArray(const Element* array, size_t count, RelationToSource relation) { + Init(array, count, relation); + } + + // Copy constructor. + NativeArray(const NativeArray& rhs) { + Init(rhs.array_, rhs.size_, rhs.relation_to_source_); + } + + ~NativeArray() { + // Ensures that the user doesn't instantiate NativeArray with a + // const or reference type. + static_cast(StaticAssertTypeEqHelper()); + if (relation_to_source_ == kCopy) + delete[] array_; + } + + // STL-style container methods. + size_t size() const { return size_; } + const_iterator begin() const { return array_; } + const_iterator end() const { return array_ + size_; } + bool operator==(const NativeArray& rhs) const { + return size() == rhs.size() && + ArrayEq(begin(), size(), rhs.begin()); + } + + private: + // Initializes this object; makes a copy of the input array if + // 'relation' is kCopy. + void Init(const Element* array, size_t a_size, RelationToSource relation) { + if (relation == kReference) { + array_ = array; + } else { + Element* const copy = new Element[a_size]; + CopyArray(array, a_size, copy); + array_ = copy; + } + size_ = a_size; + relation_to_source_ = relation; + } + + const Element* array_; + size_t size_; + RelationToSource relation_to_source_; + + GTEST_DISALLOW_ASSIGN_(NativeArray); +}; + +} // namespace internal +} // namespace testing + +#define GTEST_MESSAGE_AT_(file, line, message, result_type) \ + ::testing::internal::AssertHelper(result_type, file, line, message) \ + = ::testing::Message() + +#define GTEST_MESSAGE_(message, result_type) \ + GTEST_MESSAGE_AT_(__FILE__, __LINE__, message, result_type) + +#define GTEST_FATAL_FAILURE_(message) \ + return GTEST_MESSAGE_(message, ::testing::TestPartResult::kFatalFailure) + +#define GTEST_NONFATAL_FAILURE_(message) \ + GTEST_MESSAGE_(message, ::testing::TestPartResult::kNonFatalFailure) + +#define GTEST_SUCCESS_(message) \ + GTEST_MESSAGE_(message, ::testing::TestPartResult::kSuccess) + +// Suppresses MSVC warnings 4072 (unreachable code) for the code following +// statement if it returns or throws (or doesn't return or throw in some +// situations). +#define GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement) \ + if (::testing::internal::AlwaysTrue()) { statement; } + +#define GTEST_TEST_THROW_(statement, expected_exception, fail) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::ConstCharPtr gtest_msg = "") { \ + bool gtest_caught_expected = false; \ + try { \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ + } \ + catch (expected_exception const&) { \ + gtest_caught_expected = true; \ + } \ + catch (...) { \ + gtest_msg.value = \ + "Expected: " #statement " throws an exception of type " \ + #expected_exception ".\n Actual: it throws a different type."; \ + goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \ + } \ + if (!gtest_caught_expected) { \ + gtest_msg.value = \ + "Expected: " #statement " throws an exception of type " \ + #expected_exception ".\n Actual: it throws nothing."; \ + goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \ + } \ + } else \ + GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__): \ + fail(gtest_msg.value) + +#define GTEST_TEST_NO_THROW_(statement, fail) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::AlwaysTrue()) { \ + try { \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ + } \ + catch (...) { \ + goto GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__); \ + } \ + } else \ + GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__): \ + fail("Expected: " #statement " doesn't throw an exception.\n" \ + " Actual: it throws.") + +#define GTEST_TEST_ANY_THROW_(statement, fail) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::AlwaysTrue()) { \ + bool gtest_caught_any = false; \ + try { \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ + } \ + catch (...) { \ + gtest_caught_any = true; \ + } \ + if (!gtest_caught_any) { \ + goto GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__); \ + } \ + } else \ + GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__): \ + fail("Expected: " #statement " throws an exception.\n" \ + " Actual: it doesn't.") + + +// Implements Boolean test assertions such as EXPECT_TRUE. expression can be +// either a boolean expression or an AssertionResult. text is a textual +// represenation of expression as it was passed into the EXPECT_TRUE. +#define GTEST_TEST_BOOLEAN_(expression, text, actual, expected, fail) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (const ::testing::AssertionResult gtest_ar_ = \ + ::testing::AssertionResult(expression)) \ + ; \ + else \ + fail(::testing::internal::GetBoolAssertionFailureMessage(\ + gtest_ar_, text, #actual, #expected).c_str()) + +#define GTEST_TEST_NO_FATAL_FAILURE_(statement, fail) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::AlwaysTrue()) { \ + ::testing::internal::HasNewFatalFailureHelper gtest_fatal_failure_checker; \ + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \ + if (gtest_fatal_failure_checker.has_new_fatal_failure()) { \ + goto GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__); \ + } \ + } else \ + GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__): \ + fail("Expected: " #statement " doesn't generate new fatal " \ + "failures in the current thread.\n" \ + " Actual: it does.") + +// Expands to the name of the class that implements the given test. +#define GTEST_TEST_CLASS_NAME_(test_case_name, test_name) \ + test_case_name##_##test_name##_Test + +// Helper macro for defining tests. +#define GTEST_TEST_(test_case_name, test_name, parent_class, parent_id)\ +class GTEST_TEST_CLASS_NAME_(test_case_name, test_name) : public parent_class {\ + public:\ + GTEST_TEST_CLASS_NAME_(test_case_name, test_name)() {}\ + private:\ + virtual void TestBody();\ + static ::testing::TestInfo* const test_info_ GTEST_ATTRIBUTE_UNUSED_;\ + GTEST_DISALLOW_COPY_AND_ASSIGN_(\ + GTEST_TEST_CLASS_NAME_(test_case_name, test_name));\ +};\ +\ +::testing::TestInfo* const GTEST_TEST_CLASS_NAME_(test_case_name, test_name)\ + ::test_info_ =\ + ::testing::internal::MakeAndRegisterTestInfo(\ + #test_case_name, #test_name, NULL, NULL, \ + (parent_id), \ + parent_class::SetUpTestCase, \ + parent_class::TearDownTestCase, \ + new ::testing::internal::TestFactoryImpl<\ + GTEST_TEST_CLASS_NAME_(test_case_name, test_name)>);\ +void GTEST_TEST_CLASS_NAME_(test_case_name, test_name)::TestBody() + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_ diff --git a/thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-linked_ptr.h b/thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-linked_ptr.h new file mode 100644 index 00000000..b1362cd0 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-linked_ptr.h @@ -0,0 +1,233 @@ +// Copyright 2003 Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Authors: Dan Egnor (egnor@google.com) +// +// A "smart" pointer type with reference tracking. Every pointer to a +// particular object is kept on a circular linked list. When the last pointer +// to an object is destroyed or reassigned, the object is deleted. +// +// Used properly, this deletes the object when the last reference goes away. +// There are several caveats: +// - Like all reference counting schemes, cycles lead to leaks. +// - Each smart pointer is actually two pointers (8 bytes instead of 4). +// - Every time a pointer is assigned, the entire list of pointers to that +// object is traversed. This class is therefore NOT SUITABLE when there +// will often be more than two or three pointers to a particular object. +// - References are only tracked as long as linked_ptr<> objects are copied. +// If a linked_ptr<> is converted to a raw pointer and back, BAD THINGS +// will happen (double deletion). +// +// A good use of this class is storing object references in STL containers. +// You can safely put linked_ptr<> in a vector<>. +// Other uses may not be as good. +// +// Note: If you use an incomplete type with linked_ptr<>, the class +// *containing* linked_ptr<> must have a constructor and destructor (even +// if they do nothing!). +// +// Bill Gibbons suggested we use something like this. +// +// Thread Safety: +// Unlike other linked_ptr implementations, in this implementation +// a linked_ptr object is thread-safe in the sense that: +// - it's safe to copy linked_ptr objects concurrently, +// - it's safe to copy *from* a linked_ptr and read its underlying +// raw pointer (e.g. via get()) concurrently, and +// - it's safe to write to two linked_ptrs that point to the same +// shared object concurrently. +// TODO(wan@google.com): rename this to safe_linked_ptr to avoid +// confusion with normal linked_ptr. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_ + +#include +#include + +#include "gtest/internal/gtest-port.h" + +namespace testing { +namespace internal { + +// Protects copying of all linked_ptr objects. +GTEST_API_ GTEST_DECLARE_STATIC_MUTEX_(g_linked_ptr_mutex); + +// This is used internally by all instances of linked_ptr<>. It needs to be +// a non-template class because different types of linked_ptr<> can refer to +// the same object (linked_ptr(obj) vs linked_ptr(obj)). +// So, it needs to be possible for different types of linked_ptr to participate +// in the same circular linked list, so we need a single class type here. +// +// DO NOT USE THIS CLASS DIRECTLY YOURSELF. Use linked_ptr. +class linked_ptr_internal { + public: + // Create a new circle that includes only this instance. + void join_new() { + next_ = this; + } + + // Many linked_ptr operations may change p.link_ for some linked_ptr + // variable p in the same circle as this object. Therefore we need + // to prevent two such operations from occurring concurrently. + // + // Note that different types of linked_ptr objects can coexist in a + // circle (e.g. linked_ptr, linked_ptr, and + // linked_ptr). Therefore we must use a single mutex to + // protect all linked_ptr objects. This can create serious + // contention in production code, but is acceptable in a testing + // framework. + + // Join an existing circle. + void join(linked_ptr_internal const* ptr) + GTEST_LOCK_EXCLUDED_(g_linked_ptr_mutex) { + MutexLock lock(&g_linked_ptr_mutex); + + linked_ptr_internal const* p = ptr; + while (p->next_ != ptr) p = p->next_; + p->next_ = this; + next_ = ptr; + } + + // Leave whatever circle we're part of. Returns true if we were the + // last member of the circle. Once this is done, you can join() another. + bool depart() + GTEST_LOCK_EXCLUDED_(g_linked_ptr_mutex) { + MutexLock lock(&g_linked_ptr_mutex); + + if (next_ == this) return true; + linked_ptr_internal const* p = next_; + while (p->next_ != this) p = p->next_; + p->next_ = next_; + return false; + } + + private: + mutable linked_ptr_internal const* next_; +}; + +template +class linked_ptr { + public: + typedef T element_type; + + // Take over ownership of a raw pointer. This should happen as soon as + // possible after the object is created. + explicit linked_ptr(T* ptr = NULL) { capture(ptr); } + ~linked_ptr() { depart(); } + + // Copy an existing linked_ptr<>, adding ourselves to the list of references. + template linked_ptr(linked_ptr const& ptr) { copy(&ptr); } + linked_ptr(linked_ptr const& ptr) { // NOLINT + assert(&ptr != this); + copy(&ptr); + } + + // Assignment releases the old value and acquires the new. + template linked_ptr& operator=(linked_ptr const& ptr) { + depart(); + copy(&ptr); + return *this; + } + + linked_ptr& operator=(linked_ptr const& ptr) { + if (&ptr != this) { + depart(); + copy(&ptr); + } + return *this; + } + + // Smart pointer members. + void reset(T* ptr = NULL) { + depart(); + capture(ptr); + } + T* get() const { return value_; } + T* operator->() const { return value_; } + T& operator*() const { return *value_; } + + bool operator==(T* p) const { return value_ == p; } + bool operator!=(T* p) const { return value_ != p; } + template + bool operator==(linked_ptr const& ptr) const { + return value_ == ptr.get(); + } + template + bool operator!=(linked_ptr const& ptr) const { + return value_ != ptr.get(); + } + + private: + template + friend class linked_ptr; + + T* value_; + linked_ptr_internal link_; + + void depart() { + if (link_.depart()) delete value_; + } + + void capture(T* ptr) { + value_ = ptr; + link_.join_new(); + } + + template void copy(linked_ptr const* ptr) { + value_ = ptr->get(); + if (value_) + link_.join(&ptr->link_); + else + link_.join_new(); + } +}; + +template inline +bool operator==(T* ptr, const linked_ptr& x) { + return ptr == x.get(); +} + +template inline +bool operator!=(T* ptr, const linked_ptr& x) { + return ptr != x.get(); +} + +// A function to convert T* into linked_ptr +// Doing e.g. make_linked_ptr(new FooBarBaz(arg)) is a shorter notation +// for linked_ptr >(new FooBarBaz(arg)) +template +linked_ptr make_linked_ptr(T* ptr) { + return linked_ptr(ptr); +} + +} // namespace internal +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_LINKED_PTR_H_ diff --git a/thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-param-util-generated.h b/thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-param-util-generated.h new file mode 100644 index 00000000..e8054859 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-param-util-generated.h @@ -0,0 +1,5143 @@ +// This file was GENERATED by command: +// pump.py gtest-param-util-generated.h.pump +// DO NOT EDIT BY HAND!!! + +// Copyright 2008 Google Inc. +// All Rights Reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: vladl@google.com (Vlad Losev) + +// Type and function utilities for implementing parameterized tests. +// This file is generated by a SCRIPT. DO NOT EDIT BY HAND! +// +// Currently Google Test supports at most 50 arguments in Values, +// and at most 10 arguments in Combine. Please contact +// googletestframework@googlegroups.com if you need more. +// Please note that the number of arguments to Combine is limited +// by the maximum arity of the implementation of tr1::tuple which is +// currently set at 10. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_ + +// scripts/fuse_gtest.py depends on gtest's own header being #included +// *unconditionally*. Therefore these #includes cannot be moved +// inside #if GTEST_HAS_PARAM_TEST. +#include "gtest/internal/gtest-param-util.h" +#include "gtest/internal/gtest-port.h" + +#if GTEST_HAS_PARAM_TEST + +namespace testing { + +// Forward declarations of ValuesIn(), which is implemented in +// include/gtest/gtest-param-test.h. +template +internal::ParamGenerator< + typename ::testing::internal::IteratorTraits::value_type> +ValuesIn(ForwardIterator begin, ForwardIterator end); + +template +internal::ParamGenerator ValuesIn(const T (&array)[N]); + +template +internal::ParamGenerator ValuesIn( + const Container& container); + +namespace internal { + +// Used in the Values() function to provide polymorphic capabilities. +template +class ValueArray1 { + public: + explicit ValueArray1(T1 v1) : v1_(v1) {} + + template + operator ParamGenerator() const { return ValuesIn(&v1_, &v1_ + 1); } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray1& other); + + const T1 v1_; +}; + +template +class ValueArray2 { + public: + ValueArray2(T1 v1, T2 v2) : v1_(v1), v2_(v2) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray2& other); + + const T1 v1_; + const T2 v2_; +}; + +template +class ValueArray3 { + public: + ValueArray3(T1 v1, T2 v2, T3 v3) : v1_(v1), v2_(v2), v3_(v3) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray3& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; +}; + +template +class ValueArray4 { + public: + ValueArray4(T1 v1, T2 v2, T3 v3, T4 v4) : v1_(v1), v2_(v2), v3_(v3), + v4_(v4) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray4& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; +}; + +template +class ValueArray5 { + public: + ValueArray5(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5) : v1_(v1), v2_(v2), v3_(v3), + v4_(v4), v5_(v5) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray5& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; +}; + +template +class ValueArray6 { + public: + ValueArray6(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6) : v1_(v1), v2_(v2), + v3_(v3), v4_(v4), v5_(v5), v6_(v6) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray6& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; +}; + +template +class ValueArray7 { + public: + ValueArray7(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7) : v1_(v1), + v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray7& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; +}; + +template +class ValueArray8 { + public: + ValueArray8(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, + T8 v8) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray8& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; +}; + +template +class ValueArray9 { + public: + ValueArray9(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, + T9 v9) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray9& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; +}; + +template +class ValueArray10 { + public: + ValueArray10(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray10& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; +}; + +template +class ValueArray11 { + public: + ValueArray11(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), + v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray11& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; +}; + +template +class ValueArray12 { + public: + ValueArray12(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), + v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray12& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; +}; + +template +class ValueArray13 { + public: + ValueArray13(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), + v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), + v12_(v12), v13_(v13) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray13& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; +}; + +template +class ValueArray14 { + public: + ValueArray14(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14) : v1_(v1), v2_(v2), v3_(v3), + v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray14& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; +}; + +template +class ValueArray15 { + public: + ValueArray15(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15) : v1_(v1), v2_(v2), + v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray15& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; +}; + +template +class ValueArray16 { + public: + ValueArray16(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16) : v1_(v1), + v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), + v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), + v16_(v16) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray16& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; +}; + +template +class ValueArray17 { + public: + ValueArray17(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, + T17 v17) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray17& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; +}; + +template +class ValueArray18 { + public: + ValueArray18(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17), v18_(v18) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray18& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; +}; + +template +class ValueArray19 { + public: + ValueArray19(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), + v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), + v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray19& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; +}; + +template +class ValueArray20 { + public: + ValueArray20(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), + v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), + v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), + v19_(v19), v20_(v20) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray20& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; +}; + +template +class ValueArray21 { + public: + ValueArray21(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), + v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), + v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), + v18_(v18), v19_(v19), v20_(v20), v21_(v21) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray21& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; +}; + +template +class ValueArray22 { + public: + ValueArray22(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22) : v1_(v1), v2_(v2), v3_(v3), + v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), + v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray22& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; +}; + +template +class ValueArray23 { + public: + ValueArray23(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23) : v1_(v1), v2_(v2), + v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), + v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), + v23_(v23) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray23& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; +}; + +template +class ValueArray24 { + public: + ValueArray24(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24) : v1_(v1), + v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), + v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), + v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), + v22_(v22), v23_(v23), v24_(v24) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray24& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; +}; + +template +class ValueArray25 { + public: + ValueArray25(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, + T25 v25) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), + v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray25& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; +}; + +template +class ValueArray26 { + public: + ValueArray26(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), + v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray26& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; +}; + +template +class ValueArray27 { + public: + ValueArray27(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), + v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), + v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), + v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), + v26_(v26), v27_(v27) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray27& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; +}; + +template +class ValueArray28 { + public: + ValueArray28(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), + v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), + v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), + v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), + v25_(v25), v26_(v26), v27_(v27), v28_(v28) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray28& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; +}; + +template +class ValueArray29 { + public: + ValueArray29(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), + v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), + v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), + v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), + v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray29& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; +}; + +template +class ValueArray30 { + public: + ValueArray30(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) : v1_(v1), v2_(v2), v3_(v3), + v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), + v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), + v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), + v29_(v29), v30_(v30) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray30& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; +}; + +template +class ValueArray31 { + public: + ValueArray31(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) : v1_(v1), v2_(v2), + v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), + v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), + v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), + v29_(v29), v30_(v30), v31_(v31) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray31& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; +}; + +template +class ValueArray32 { + public: + ValueArray32(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32) : v1_(v1), + v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), + v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), + v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), + v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), + v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray32& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; +}; + +template +class ValueArray33 { + public: + ValueArray33(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, + T33 v33) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), + v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), + v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), + v33_(v33) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray33& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; +}; + +template +class ValueArray34 { + public: + ValueArray34(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), + v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), + v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), + v33_(v33), v34_(v34) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray34& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; +}; + +template +class ValueArray35 { + public: + ValueArray35(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), + v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), + v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), + v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), + v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), + v32_(v32), v33_(v33), v34_(v34), v35_(v35) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray35& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; +}; + +template +class ValueArray36 { + public: + ValueArray36(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), + v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), + v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), + v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), + v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), + v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray36& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; +}; + +template +class ValueArray37 { + public: + ValueArray37(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), + v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), + v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), + v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), + v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), + v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), + v36_(v36), v37_(v37) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray37& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; +}; + +template +class ValueArray38 { + public: + ValueArray38(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38) : v1_(v1), v2_(v2), v3_(v3), + v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), + v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), + v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), + v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), + v35_(v35), v36_(v36), v37_(v37), v38_(v38) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray38& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; +}; + +template +class ValueArray39 { + public: + ValueArray39(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39) : v1_(v1), v2_(v2), + v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), + v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), + v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), + v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), + v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray39& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; +}; + +template +class ValueArray40 { + public: + ValueArray40(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) : v1_(v1), + v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), + v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), + v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), + v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), + v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), + v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), + v40_(v40) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray40& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; +}; + +template +class ValueArray41 { + public: + ValueArray41(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, + T41 v41) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), + v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), + v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), + v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), + v39_(v39), v40_(v40), v41_(v41) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray41& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; +}; + +template +class ValueArray42 { + public: + ValueArray42(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), + v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), + v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), + v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), + v39_(v39), v40_(v40), v41_(v41), v42_(v42) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_), + static_cast(v42_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray42& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; + const T42 v42_; +}; + +template +class ValueArray43 { + public: + ValueArray43(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), + v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), + v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), + v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), + v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), + v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), + v38_(v38), v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_), + static_cast(v42_), static_cast(v43_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray43& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; + const T42 v42_; + const T43 v43_; +}; + +template +class ValueArray44 { + public: + ValueArray44(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43, T44 v44) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), + v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), + v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), v18_(v18), + v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), v24_(v24), + v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), v30_(v30), + v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), v36_(v36), + v37_(v37), v38_(v38), v39_(v39), v40_(v40), v41_(v41), v42_(v42), + v43_(v43), v44_(v44) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_), + static_cast(v42_), static_cast(v43_), static_cast(v44_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray44& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; + const T42 v42_; + const T43 v43_; + const T44 v44_; +}; + +template +class ValueArray45 { + public: + ValueArray45(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43, T44 v44, T45 v45) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), + v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), v11_(v11), + v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), v17_(v17), + v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), v23_(v23), + v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), v29_(v29), + v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), v35_(v35), + v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40), v41_(v41), + v42_(v42), v43_(v43), v44_(v44), v45_(v45) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_), + static_cast(v42_), static_cast(v43_), static_cast(v44_), + static_cast(v45_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray45& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; + const T42 v42_; + const T43 v43_; + const T44 v44_; + const T45 v45_; +}; + +template +class ValueArray46 { + public: + ValueArray46(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) : v1_(v1), v2_(v2), v3_(v3), + v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), + v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), + v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), + v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), + v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40), + v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), v46_(v46) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_), + static_cast(v42_), static_cast(v43_), static_cast(v44_), + static_cast(v45_), static_cast(v46_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray46& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; + const T42 v42_; + const T43 v43_; + const T44 v44_; + const T45 v45_; + const T46 v46_; +}; + +template +class ValueArray47 { + public: + ValueArray47(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) : v1_(v1), v2_(v2), + v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), v10_(v10), + v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), v16_(v16), + v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), v22_(v22), + v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), v28_(v28), + v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), v34_(v34), + v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), v40_(v40), + v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), v46_(v46), + v47_(v47) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_), + static_cast(v42_), static_cast(v43_), static_cast(v44_), + static_cast(v45_), static_cast(v46_), static_cast(v47_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray47& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; + const T42 v42_; + const T43 v43_; + const T44 v44_; + const T45 v45_; + const T46 v46_; + const T47 v47_; +}; + +template +class ValueArray48 { + public: + ValueArray48(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48) : v1_(v1), + v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), v8_(v8), v9_(v9), + v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), v15_(v15), + v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), v21_(v21), + v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), v27_(v27), + v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), v33_(v33), + v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), v39_(v39), + v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44), v45_(v45), + v46_(v46), v47_(v47), v48_(v48) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_), + static_cast(v42_), static_cast(v43_), static_cast(v44_), + static_cast(v45_), static_cast(v46_), static_cast(v47_), + static_cast(v48_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray48& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; + const T42 v42_; + const T43 v43_; + const T44 v44_; + const T45 v45_; + const T46 v46_; + const T47 v47_; + const T48 v48_; +}; + +template +class ValueArray49 { + public: + ValueArray49(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, + T49 v49) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), + v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), + v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), + v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), + v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44), + v45_(v45), v46_(v46), v47_(v47), v48_(v48), v49_(v49) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_), + static_cast(v42_), static_cast(v43_), static_cast(v44_), + static_cast(v45_), static_cast(v46_), static_cast(v47_), + static_cast(v48_), static_cast(v49_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray49& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; + const T42 v42_; + const T43 v43_; + const T44 v44_; + const T45 v45_; + const T46 v46_; + const T47 v47_; + const T48 v48_; + const T49 v49_; +}; + +template +class ValueArray50 { + public: + ValueArray50(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, + T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, + T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, + T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, + T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, + T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, T49 v49, + T50 v50) : v1_(v1), v2_(v2), v3_(v3), v4_(v4), v5_(v5), v6_(v6), v7_(v7), + v8_(v8), v9_(v9), v10_(v10), v11_(v11), v12_(v12), v13_(v13), v14_(v14), + v15_(v15), v16_(v16), v17_(v17), v18_(v18), v19_(v19), v20_(v20), + v21_(v21), v22_(v22), v23_(v23), v24_(v24), v25_(v25), v26_(v26), + v27_(v27), v28_(v28), v29_(v29), v30_(v30), v31_(v31), v32_(v32), + v33_(v33), v34_(v34), v35_(v35), v36_(v36), v37_(v37), v38_(v38), + v39_(v39), v40_(v40), v41_(v41), v42_(v42), v43_(v43), v44_(v44), + v45_(v45), v46_(v46), v47_(v47), v48_(v48), v49_(v49), v50_(v50) {} + + template + operator ParamGenerator() const { + const T array[] = {static_cast(v1_), static_cast(v2_), + static_cast(v3_), static_cast(v4_), static_cast(v5_), + static_cast(v6_), static_cast(v7_), static_cast(v8_), + static_cast(v9_), static_cast(v10_), static_cast(v11_), + static_cast(v12_), static_cast(v13_), static_cast(v14_), + static_cast(v15_), static_cast(v16_), static_cast(v17_), + static_cast(v18_), static_cast(v19_), static_cast(v20_), + static_cast(v21_), static_cast(v22_), static_cast(v23_), + static_cast(v24_), static_cast(v25_), static_cast(v26_), + static_cast(v27_), static_cast(v28_), static_cast(v29_), + static_cast(v30_), static_cast(v31_), static_cast(v32_), + static_cast(v33_), static_cast(v34_), static_cast(v35_), + static_cast(v36_), static_cast(v37_), static_cast(v38_), + static_cast(v39_), static_cast(v40_), static_cast(v41_), + static_cast(v42_), static_cast(v43_), static_cast(v44_), + static_cast(v45_), static_cast(v46_), static_cast(v47_), + static_cast(v48_), static_cast(v49_), static_cast(v50_)}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray50& other); + + const T1 v1_; + const T2 v2_; + const T3 v3_; + const T4 v4_; + const T5 v5_; + const T6 v6_; + const T7 v7_; + const T8 v8_; + const T9 v9_; + const T10 v10_; + const T11 v11_; + const T12 v12_; + const T13 v13_; + const T14 v14_; + const T15 v15_; + const T16 v16_; + const T17 v17_; + const T18 v18_; + const T19 v19_; + const T20 v20_; + const T21 v21_; + const T22 v22_; + const T23 v23_; + const T24 v24_; + const T25 v25_; + const T26 v26_; + const T27 v27_; + const T28 v28_; + const T29 v29_; + const T30 v30_; + const T31 v31_; + const T32 v32_; + const T33 v33_; + const T34 v34_; + const T35 v35_; + const T36 v36_; + const T37 v37_; + const T38 v38_; + const T39 v39_; + const T40 v40_; + const T41 v41_; + const T42 v42_; + const T43 v43_; + const T44 v44_; + const T45 v45_; + const T46 v46_; + const T47 v47_; + const T48 v48_; + const T49 v49_; + const T50 v50_; +}; + +# if GTEST_HAS_COMBINE +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// Generates values from the Cartesian product of values produced +// by the argument generators. +// +template +class CartesianProductGenerator2 + : public ParamGeneratorInterface< ::std::tr1::tuple > { + public: + typedef ::std::tr1::tuple ParamType; + + CartesianProductGenerator2(const ParamGenerator& g1, + const ParamGenerator& g2) + : g1_(g1), g2_(g2) {} + virtual ~CartesianProductGenerator2() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, g1_, g1_.end(), g2_, g2_.end()); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + const ParamGenerator& g1, + const typename ParamGenerator::iterator& current1, + const ParamGenerator& g2, + const typename ParamGenerator::iterator& current2) + : base_(base), + begin1_(g1.begin()), end1_(g1.end()), current1_(current1), + begin2_(g2.begin()), end2_(g2.end()), current2_(current2) { + ComputeCurrentValue(); + } + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + // Advance should not be called on beyond-of-range iterators + // so no component iterators must be beyond end of range, either. + virtual void Advance() { + assert(!AtEnd()); + ++current2_; + if (current2_ == end2_) { + current2_ = begin2_; + ++current1_; + } + ComputeCurrentValue(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const ParamType* Current() const { return ¤t_value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = + CheckedDowncastToActualType(&other); + // We must report iterators equal if they both point beyond their + // respective ranges. That can happen in a variety of fashions, + // so we have to consult AtEnd(). + return (AtEnd() && typed_other->AtEnd()) || + ( + current1_ == typed_other->current1_ && + current2_ == typed_other->current2_); + } + + private: + Iterator(const Iterator& other) + : base_(other.base_), + begin1_(other.begin1_), + end1_(other.end1_), + current1_(other.current1_), + begin2_(other.begin2_), + end2_(other.end2_), + current2_(other.current2_) { + ComputeCurrentValue(); + } + + void ComputeCurrentValue() { + if (!AtEnd()) + current_value_ = ParamType(*current1_, *current2_); + } + bool AtEnd() const { + // We must report iterator past the end of the range when either of the + // component iterators has reached the end of its range. + return + current1_ == end1_ || + current2_ == end2_; + } + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. + // current[i]_ is the actual traversing iterator. + const typename ParamGenerator::iterator begin1_; + const typename ParamGenerator::iterator end1_; + typename ParamGenerator::iterator current1_; + const typename ParamGenerator::iterator begin2_; + const typename ParamGenerator::iterator end2_; + typename ParamGenerator::iterator current2_; + ParamType current_value_; + }; // class CartesianProductGenerator2::Iterator + + // No implementation - assignment is unsupported. + void operator=(const CartesianProductGenerator2& other); + + const ParamGenerator g1_; + const ParamGenerator g2_; +}; // class CartesianProductGenerator2 + + +template +class CartesianProductGenerator3 + : public ParamGeneratorInterface< ::std::tr1::tuple > { + public: + typedef ::std::tr1::tuple ParamType; + + CartesianProductGenerator3(const ParamGenerator& g1, + const ParamGenerator& g2, const ParamGenerator& g3) + : g1_(g1), g2_(g2), g3_(g3) {} + virtual ~CartesianProductGenerator3() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, + g3_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end()); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + const ParamGenerator& g1, + const typename ParamGenerator::iterator& current1, + const ParamGenerator& g2, + const typename ParamGenerator::iterator& current2, + const ParamGenerator& g3, + const typename ParamGenerator::iterator& current3) + : base_(base), + begin1_(g1.begin()), end1_(g1.end()), current1_(current1), + begin2_(g2.begin()), end2_(g2.end()), current2_(current2), + begin3_(g3.begin()), end3_(g3.end()), current3_(current3) { + ComputeCurrentValue(); + } + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + // Advance should not be called on beyond-of-range iterators + // so no component iterators must be beyond end of range, either. + virtual void Advance() { + assert(!AtEnd()); + ++current3_; + if (current3_ == end3_) { + current3_ = begin3_; + ++current2_; + } + if (current2_ == end2_) { + current2_ = begin2_; + ++current1_; + } + ComputeCurrentValue(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const ParamType* Current() const { return ¤t_value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = + CheckedDowncastToActualType(&other); + // We must report iterators equal if they both point beyond their + // respective ranges. That can happen in a variety of fashions, + // so we have to consult AtEnd(). + return (AtEnd() && typed_other->AtEnd()) || + ( + current1_ == typed_other->current1_ && + current2_ == typed_other->current2_ && + current3_ == typed_other->current3_); + } + + private: + Iterator(const Iterator& other) + : base_(other.base_), + begin1_(other.begin1_), + end1_(other.end1_), + current1_(other.current1_), + begin2_(other.begin2_), + end2_(other.end2_), + current2_(other.current2_), + begin3_(other.begin3_), + end3_(other.end3_), + current3_(other.current3_) { + ComputeCurrentValue(); + } + + void ComputeCurrentValue() { + if (!AtEnd()) + current_value_ = ParamType(*current1_, *current2_, *current3_); + } + bool AtEnd() const { + // We must report iterator past the end of the range when either of the + // component iterators has reached the end of its range. + return + current1_ == end1_ || + current2_ == end2_ || + current3_ == end3_; + } + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. + // current[i]_ is the actual traversing iterator. + const typename ParamGenerator::iterator begin1_; + const typename ParamGenerator::iterator end1_; + typename ParamGenerator::iterator current1_; + const typename ParamGenerator::iterator begin2_; + const typename ParamGenerator::iterator end2_; + typename ParamGenerator::iterator current2_; + const typename ParamGenerator::iterator begin3_; + const typename ParamGenerator::iterator end3_; + typename ParamGenerator::iterator current3_; + ParamType current_value_; + }; // class CartesianProductGenerator3::Iterator + + // No implementation - assignment is unsupported. + void operator=(const CartesianProductGenerator3& other); + + const ParamGenerator g1_; + const ParamGenerator g2_; + const ParamGenerator g3_; +}; // class CartesianProductGenerator3 + + +template +class CartesianProductGenerator4 + : public ParamGeneratorInterface< ::std::tr1::tuple > { + public: + typedef ::std::tr1::tuple ParamType; + + CartesianProductGenerator4(const ParamGenerator& g1, + const ParamGenerator& g2, const ParamGenerator& g3, + const ParamGenerator& g4) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4) {} + virtual ~CartesianProductGenerator4() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, + g3_.begin(), g4_, g4_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), + g4_, g4_.end()); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + const ParamGenerator& g1, + const typename ParamGenerator::iterator& current1, + const ParamGenerator& g2, + const typename ParamGenerator::iterator& current2, + const ParamGenerator& g3, + const typename ParamGenerator::iterator& current3, + const ParamGenerator& g4, + const typename ParamGenerator::iterator& current4) + : base_(base), + begin1_(g1.begin()), end1_(g1.end()), current1_(current1), + begin2_(g2.begin()), end2_(g2.end()), current2_(current2), + begin3_(g3.begin()), end3_(g3.end()), current3_(current3), + begin4_(g4.begin()), end4_(g4.end()), current4_(current4) { + ComputeCurrentValue(); + } + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + // Advance should not be called on beyond-of-range iterators + // so no component iterators must be beyond end of range, either. + virtual void Advance() { + assert(!AtEnd()); + ++current4_; + if (current4_ == end4_) { + current4_ = begin4_; + ++current3_; + } + if (current3_ == end3_) { + current3_ = begin3_; + ++current2_; + } + if (current2_ == end2_) { + current2_ = begin2_; + ++current1_; + } + ComputeCurrentValue(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const ParamType* Current() const { return ¤t_value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = + CheckedDowncastToActualType(&other); + // We must report iterators equal if they both point beyond their + // respective ranges. That can happen in a variety of fashions, + // so we have to consult AtEnd(). + return (AtEnd() && typed_other->AtEnd()) || + ( + current1_ == typed_other->current1_ && + current2_ == typed_other->current2_ && + current3_ == typed_other->current3_ && + current4_ == typed_other->current4_); + } + + private: + Iterator(const Iterator& other) + : base_(other.base_), + begin1_(other.begin1_), + end1_(other.end1_), + current1_(other.current1_), + begin2_(other.begin2_), + end2_(other.end2_), + current2_(other.current2_), + begin3_(other.begin3_), + end3_(other.end3_), + current3_(other.current3_), + begin4_(other.begin4_), + end4_(other.end4_), + current4_(other.current4_) { + ComputeCurrentValue(); + } + + void ComputeCurrentValue() { + if (!AtEnd()) + current_value_ = ParamType(*current1_, *current2_, *current3_, + *current4_); + } + bool AtEnd() const { + // We must report iterator past the end of the range when either of the + // component iterators has reached the end of its range. + return + current1_ == end1_ || + current2_ == end2_ || + current3_ == end3_ || + current4_ == end4_; + } + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. + // current[i]_ is the actual traversing iterator. + const typename ParamGenerator::iterator begin1_; + const typename ParamGenerator::iterator end1_; + typename ParamGenerator::iterator current1_; + const typename ParamGenerator::iterator begin2_; + const typename ParamGenerator::iterator end2_; + typename ParamGenerator::iterator current2_; + const typename ParamGenerator::iterator begin3_; + const typename ParamGenerator::iterator end3_; + typename ParamGenerator::iterator current3_; + const typename ParamGenerator::iterator begin4_; + const typename ParamGenerator::iterator end4_; + typename ParamGenerator::iterator current4_; + ParamType current_value_; + }; // class CartesianProductGenerator4::Iterator + + // No implementation - assignment is unsupported. + void operator=(const CartesianProductGenerator4& other); + + const ParamGenerator g1_; + const ParamGenerator g2_; + const ParamGenerator g3_; + const ParamGenerator g4_; +}; // class CartesianProductGenerator4 + + +template +class CartesianProductGenerator5 + : public ParamGeneratorInterface< ::std::tr1::tuple > { + public: + typedef ::std::tr1::tuple ParamType; + + CartesianProductGenerator5(const ParamGenerator& g1, + const ParamGenerator& g2, const ParamGenerator& g3, + const ParamGenerator& g4, const ParamGenerator& g5) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5) {} + virtual ~CartesianProductGenerator5() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, + g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), + g4_, g4_.end(), g5_, g5_.end()); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + const ParamGenerator& g1, + const typename ParamGenerator::iterator& current1, + const ParamGenerator& g2, + const typename ParamGenerator::iterator& current2, + const ParamGenerator& g3, + const typename ParamGenerator::iterator& current3, + const ParamGenerator& g4, + const typename ParamGenerator::iterator& current4, + const ParamGenerator& g5, + const typename ParamGenerator::iterator& current5) + : base_(base), + begin1_(g1.begin()), end1_(g1.end()), current1_(current1), + begin2_(g2.begin()), end2_(g2.end()), current2_(current2), + begin3_(g3.begin()), end3_(g3.end()), current3_(current3), + begin4_(g4.begin()), end4_(g4.end()), current4_(current4), + begin5_(g5.begin()), end5_(g5.end()), current5_(current5) { + ComputeCurrentValue(); + } + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + // Advance should not be called on beyond-of-range iterators + // so no component iterators must be beyond end of range, either. + virtual void Advance() { + assert(!AtEnd()); + ++current5_; + if (current5_ == end5_) { + current5_ = begin5_; + ++current4_; + } + if (current4_ == end4_) { + current4_ = begin4_; + ++current3_; + } + if (current3_ == end3_) { + current3_ = begin3_; + ++current2_; + } + if (current2_ == end2_) { + current2_ = begin2_; + ++current1_; + } + ComputeCurrentValue(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const ParamType* Current() const { return ¤t_value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = + CheckedDowncastToActualType(&other); + // We must report iterators equal if they both point beyond their + // respective ranges. That can happen in a variety of fashions, + // so we have to consult AtEnd(). + return (AtEnd() && typed_other->AtEnd()) || + ( + current1_ == typed_other->current1_ && + current2_ == typed_other->current2_ && + current3_ == typed_other->current3_ && + current4_ == typed_other->current4_ && + current5_ == typed_other->current5_); + } + + private: + Iterator(const Iterator& other) + : base_(other.base_), + begin1_(other.begin1_), + end1_(other.end1_), + current1_(other.current1_), + begin2_(other.begin2_), + end2_(other.end2_), + current2_(other.current2_), + begin3_(other.begin3_), + end3_(other.end3_), + current3_(other.current3_), + begin4_(other.begin4_), + end4_(other.end4_), + current4_(other.current4_), + begin5_(other.begin5_), + end5_(other.end5_), + current5_(other.current5_) { + ComputeCurrentValue(); + } + + void ComputeCurrentValue() { + if (!AtEnd()) + current_value_ = ParamType(*current1_, *current2_, *current3_, + *current4_, *current5_); + } + bool AtEnd() const { + // We must report iterator past the end of the range when either of the + // component iterators has reached the end of its range. + return + current1_ == end1_ || + current2_ == end2_ || + current3_ == end3_ || + current4_ == end4_ || + current5_ == end5_; + } + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. + // current[i]_ is the actual traversing iterator. + const typename ParamGenerator::iterator begin1_; + const typename ParamGenerator::iterator end1_; + typename ParamGenerator::iterator current1_; + const typename ParamGenerator::iterator begin2_; + const typename ParamGenerator::iterator end2_; + typename ParamGenerator::iterator current2_; + const typename ParamGenerator::iterator begin3_; + const typename ParamGenerator::iterator end3_; + typename ParamGenerator::iterator current3_; + const typename ParamGenerator::iterator begin4_; + const typename ParamGenerator::iterator end4_; + typename ParamGenerator::iterator current4_; + const typename ParamGenerator::iterator begin5_; + const typename ParamGenerator::iterator end5_; + typename ParamGenerator::iterator current5_; + ParamType current_value_; + }; // class CartesianProductGenerator5::Iterator + + // No implementation - assignment is unsupported. + void operator=(const CartesianProductGenerator5& other); + + const ParamGenerator g1_; + const ParamGenerator g2_; + const ParamGenerator g3_; + const ParamGenerator g4_; + const ParamGenerator g5_; +}; // class CartesianProductGenerator5 + + +template +class CartesianProductGenerator6 + : public ParamGeneratorInterface< ::std::tr1::tuple > { + public: + typedef ::std::tr1::tuple ParamType; + + CartesianProductGenerator6(const ParamGenerator& g1, + const ParamGenerator& g2, const ParamGenerator& g3, + const ParamGenerator& g4, const ParamGenerator& g5, + const ParamGenerator& g6) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6) {} + virtual ~CartesianProductGenerator6() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, + g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), + g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end()); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + const ParamGenerator& g1, + const typename ParamGenerator::iterator& current1, + const ParamGenerator& g2, + const typename ParamGenerator::iterator& current2, + const ParamGenerator& g3, + const typename ParamGenerator::iterator& current3, + const ParamGenerator& g4, + const typename ParamGenerator::iterator& current4, + const ParamGenerator& g5, + const typename ParamGenerator::iterator& current5, + const ParamGenerator& g6, + const typename ParamGenerator::iterator& current6) + : base_(base), + begin1_(g1.begin()), end1_(g1.end()), current1_(current1), + begin2_(g2.begin()), end2_(g2.end()), current2_(current2), + begin3_(g3.begin()), end3_(g3.end()), current3_(current3), + begin4_(g4.begin()), end4_(g4.end()), current4_(current4), + begin5_(g5.begin()), end5_(g5.end()), current5_(current5), + begin6_(g6.begin()), end6_(g6.end()), current6_(current6) { + ComputeCurrentValue(); + } + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + // Advance should not be called on beyond-of-range iterators + // so no component iterators must be beyond end of range, either. + virtual void Advance() { + assert(!AtEnd()); + ++current6_; + if (current6_ == end6_) { + current6_ = begin6_; + ++current5_; + } + if (current5_ == end5_) { + current5_ = begin5_; + ++current4_; + } + if (current4_ == end4_) { + current4_ = begin4_; + ++current3_; + } + if (current3_ == end3_) { + current3_ = begin3_; + ++current2_; + } + if (current2_ == end2_) { + current2_ = begin2_; + ++current1_; + } + ComputeCurrentValue(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const ParamType* Current() const { return ¤t_value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = + CheckedDowncastToActualType(&other); + // We must report iterators equal if they both point beyond their + // respective ranges. That can happen in a variety of fashions, + // so we have to consult AtEnd(). + return (AtEnd() && typed_other->AtEnd()) || + ( + current1_ == typed_other->current1_ && + current2_ == typed_other->current2_ && + current3_ == typed_other->current3_ && + current4_ == typed_other->current4_ && + current5_ == typed_other->current5_ && + current6_ == typed_other->current6_); + } + + private: + Iterator(const Iterator& other) + : base_(other.base_), + begin1_(other.begin1_), + end1_(other.end1_), + current1_(other.current1_), + begin2_(other.begin2_), + end2_(other.end2_), + current2_(other.current2_), + begin3_(other.begin3_), + end3_(other.end3_), + current3_(other.current3_), + begin4_(other.begin4_), + end4_(other.end4_), + current4_(other.current4_), + begin5_(other.begin5_), + end5_(other.end5_), + current5_(other.current5_), + begin6_(other.begin6_), + end6_(other.end6_), + current6_(other.current6_) { + ComputeCurrentValue(); + } + + void ComputeCurrentValue() { + if (!AtEnd()) + current_value_ = ParamType(*current1_, *current2_, *current3_, + *current4_, *current5_, *current6_); + } + bool AtEnd() const { + // We must report iterator past the end of the range when either of the + // component iterators has reached the end of its range. + return + current1_ == end1_ || + current2_ == end2_ || + current3_ == end3_ || + current4_ == end4_ || + current5_ == end5_ || + current6_ == end6_; + } + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. + // current[i]_ is the actual traversing iterator. + const typename ParamGenerator::iterator begin1_; + const typename ParamGenerator::iterator end1_; + typename ParamGenerator::iterator current1_; + const typename ParamGenerator::iterator begin2_; + const typename ParamGenerator::iterator end2_; + typename ParamGenerator::iterator current2_; + const typename ParamGenerator::iterator begin3_; + const typename ParamGenerator::iterator end3_; + typename ParamGenerator::iterator current3_; + const typename ParamGenerator::iterator begin4_; + const typename ParamGenerator::iterator end4_; + typename ParamGenerator::iterator current4_; + const typename ParamGenerator::iterator begin5_; + const typename ParamGenerator::iterator end5_; + typename ParamGenerator::iterator current5_; + const typename ParamGenerator::iterator begin6_; + const typename ParamGenerator::iterator end6_; + typename ParamGenerator::iterator current6_; + ParamType current_value_; + }; // class CartesianProductGenerator6::Iterator + + // No implementation - assignment is unsupported. + void operator=(const CartesianProductGenerator6& other); + + const ParamGenerator g1_; + const ParamGenerator g2_; + const ParamGenerator g3_; + const ParamGenerator g4_; + const ParamGenerator g5_; + const ParamGenerator g6_; +}; // class CartesianProductGenerator6 + + +template +class CartesianProductGenerator7 + : public ParamGeneratorInterface< ::std::tr1::tuple > { + public: + typedef ::std::tr1::tuple ParamType; + + CartesianProductGenerator7(const ParamGenerator& g1, + const ParamGenerator& g2, const ParamGenerator& g3, + const ParamGenerator& g4, const ParamGenerator& g5, + const ParamGenerator& g6, const ParamGenerator& g7) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7) {} + virtual ~CartesianProductGenerator7() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, + g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_, + g7_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), + g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end()); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + const ParamGenerator& g1, + const typename ParamGenerator::iterator& current1, + const ParamGenerator& g2, + const typename ParamGenerator::iterator& current2, + const ParamGenerator& g3, + const typename ParamGenerator::iterator& current3, + const ParamGenerator& g4, + const typename ParamGenerator::iterator& current4, + const ParamGenerator& g5, + const typename ParamGenerator::iterator& current5, + const ParamGenerator& g6, + const typename ParamGenerator::iterator& current6, + const ParamGenerator& g7, + const typename ParamGenerator::iterator& current7) + : base_(base), + begin1_(g1.begin()), end1_(g1.end()), current1_(current1), + begin2_(g2.begin()), end2_(g2.end()), current2_(current2), + begin3_(g3.begin()), end3_(g3.end()), current3_(current3), + begin4_(g4.begin()), end4_(g4.end()), current4_(current4), + begin5_(g5.begin()), end5_(g5.end()), current5_(current5), + begin6_(g6.begin()), end6_(g6.end()), current6_(current6), + begin7_(g7.begin()), end7_(g7.end()), current7_(current7) { + ComputeCurrentValue(); + } + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + // Advance should not be called on beyond-of-range iterators + // so no component iterators must be beyond end of range, either. + virtual void Advance() { + assert(!AtEnd()); + ++current7_; + if (current7_ == end7_) { + current7_ = begin7_; + ++current6_; + } + if (current6_ == end6_) { + current6_ = begin6_; + ++current5_; + } + if (current5_ == end5_) { + current5_ = begin5_; + ++current4_; + } + if (current4_ == end4_) { + current4_ = begin4_; + ++current3_; + } + if (current3_ == end3_) { + current3_ = begin3_; + ++current2_; + } + if (current2_ == end2_) { + current2_ = begin2_; + ++current1_; + } + ComputeCurrentValue(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const ParamType* Current() const { return ¤t_value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = + CheckedDowncastToActualType(&other); + // We must report iterators equal if they both point beyond their + // respective ranges. That can happen in a variety of fashions, + // so we have to consult AtEnd(). + return (AtEnd() && typed_other->AtEnd()) || + ( + current1_ == typed_other->current1_ && + current2_ == typed_other->current2_ && + current3_ == typed_other->current3_ && + current4_ == typed_other->current4_ && + current5_ == typed_other->current5_ && + current6_ == typed_other->current6_ && + current7_ == typed_other->current7_); + } + + private: + Iterator(const Iterator& other) + : base_(other.base_), + begin1_(other.begin1_), + end1_(other.end1_), + current1_(other.current1_), + begin2_(other.begin2_), + end2_(other.end2_), + current2_(other.current2_), + begin3_(other.begin3_), + end3_(other.end3_), + current3_(other.current3_), + begin4_(other.begin4_), + end4_(other.end4_), + current4_(other.current4_), + begin5_(other.begin5_), + end5_(other.end5_), + current5_(other.current5_), + begin6_(other.begin6_), + end6_(other.end6_), + current6_(other.current6_), + begin7_(other.begin7_), + end7_(other.end7_), + current7_(other.current7_) { + ComputeCurrentValue(); + } + + void ComputeCurrentValue() { + if (!AtEnd()) + current_value_ = ParamType(*current1_, *current2_, *current3_, + *current4_, *current5_, *current6_, *current7_); + } + bool AtEnd() const { + // We must report iterator past the end of the range when either of the + // component iterators has reached the end of its range. + return + current1_ == end1_ || + current2_ == end2_ || + current3_ == end3_ || + current4_ == end4_ || + current5_ == end5_ || + current6_ == end6_ || + current7_ == end7_; + } + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. + // current[i]_ is the actual traversing iterator. + const typename ParamGenerator::iterator begin1_; + const typename ParamGenerator::iterator end1_; + typename ParamGenerator::iterator current1_; + const typename ParamGenerator::iterator begin2_; + const typename ParamGenerator::iterator end2_; + typename ParamGenerator::iterator current2_; + const typename ParamGenerator::iterator begin3_; + const typename ParamGenerator::iterator end3_; + typename ParamGenerator::iterator current3_; + const typename ParamGenerator::iterator begin4_; + const typename ParamGenerator::iterator end4_; + typename ParamGenerator::iterator current4_; + const typename ParamGenerator::iterator begin5_; + const typename ParamGenerator::iterator end5_; + typename ParamGenerator::iterator current5_; + const typename ParamGenerator::iterator begin6_; + const typename ParamGenerator::iterator end6_; + typename ParamGenerator::iterator current6_; + const typename ParamGenerator::iterator begin7_; + const typename ParamGenerator::iterator end7_; + typename ParamGenerator::iterator current7_; + ParamType current_value_; + }; // class CartesianProductGenerator7::Iterator + + // No implementation - assignment is unsupported. + void operator=(const CartesianProductGenerator7& other); + + const ParamGenerator g1_; + const ParamGenerator g2_; + const ParamGenerator g3_; + const ParamGenerator g4_; + const ParamGenerator g5_; + const ParamGenerator g6_; + const ParamGenerator g7_; +}; // class CartesianProductGenerator7 + + +template +class CartesianProductGenerator8 + : public ParamGeneratorInterface< ::std::tr1::tuple > { + public: + typedef ::std::tr1::tuple ParamType; + + CartesianProductGenerator8(const ParamGenerator& g1, + const ParamGenerator& g2, const ParamGenerator& g3, + const ParamGenerator& g4, const ParamGenerator& g5, + const ParamGenerator& g6, const ParamGenerator& g7, + const ParamGenerator& g8) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), + g8_(g8) {} + virtual ~CartesianProductGenerator8() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, + g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_, + g7_.begin(), g8_, g8_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), + g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_, + g8_.end()); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + const ParamGenerator& g1, + const typename ParamGenerator::iterator& current1, + const ParamGenerator& g2, + const typename ParamGenerator::iterator& current2, + const ParamGenerator& g3, + const typename ParamGenerator::iterator& current3, + const ParamGenerator& g4, + const typename ParamGenerator::iterator& current4, + const ParamGenerator& g5, + const typename ParamGenerator::iterator& current5, + const ParamGenerator& g6, + const typename ParamGenerator::iterator& current6, + const ParamGenerator& g7, + const typename ParamGenerator::iterator& current7, + const ParamGenerator& g8, + const typename ParamGenerator::iterator& current8) + : base_(base), + begin1_(g1.begin()), end1_(g1.end()), current1_(current1), + begin2_(g2.begin()), end2_(g2.end()), current2_(current2), + begin3_(g3.begin()), end3_(g3.end()), current3_(current3), + begin4_(g4.begin()), end4_(g4.end()), current4_(current4), + begin5_(g5.begin()), end5_(g5.end()), current5_(current5), + begin6_(g6.begin()), end6_(g6.end()), current6_(current6), + begin7_(g7.begin()), end7_(g7.end()), current7_(current7), + begin8_(g8.begin()), end8_(g8.end()), current8_(current8) { + ComputeCurrentValue(); + } + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + // Advance should not be called on beyond-of-range iterators + // so no component iterators must be beyond end of range, either. + virtual void Advance() { + assert(!AtEnd()); + ++current8_; + if (current8_ == end8_) { + current8_ = begin8_; + ++current7_; + } + if (current7_ == end7_) { + current7_ = begin7_; + ++current6_; + } + if (current6_ == end6_) { + current6_ = begin6_; + ++current5_; + } + if (current5_ == end5_) { + current5_ = begin5_; + ++current4_; + } + if (current4_ == end4_) { + current4_ = begin4_; + ++current3_; + } + if (current3_ == end3_) { + current3_ = begin3_; + ++current2_; + } + if (current2_ == end2_) { + current2_ = begin2_; + ++current1_; + } + ComputeCurrentValue(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const ParamType* Current() const { return ¤t_value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = + CheckedDowncastToActualType(&other); + // We must report iterators equal if they both point beyond their + // respective ranges. That can happen in a variety of fashions, + // so we have to consult AtEnd(). + return (AtEnd() && typed_other->AtEnd()) || + ( + current1_ == typed_other->current1_ && + current2_ == typed_other->current2_ && + current3_ == typed_other->current3_ && + current4_ == typed_other->current4_ && + current5_ == typed_other->current5_ && + current6_ == typed_other->current6_ && + current7_ == typed_other->current7_ && + current8_ == typed_other->current8_); + } + + private: + Iterator(const Iterator& other) + : base_(other.base_), + begin1_(other.begin1_), + end1_(other.end1_), + current1_(other.current1_), + begin2_(other.begin2_), + end2_(other.end2_), + current2_(other.current2_), + begin3_(other.begin3_), + end3_(other.end3_), + current3_(other.current3_), + begin4_(other.begin4_), + end4_(other.end4_), + current4_(other.current4_), + begin5_(other.begin5_), + end5_(other.end5_), + current5_(other.current5_), + begin6_(other.begin6_), + end6_(other.end6_), + current6_(other.current6_), + begin7_(other.begin7_), + end7_(other.end7_), + current7_(other.current7_), + begin8_(other.begin8_), + end8_(other.end8_), + current8_(other.current8_) { + ComputeCurrentValue(); + } + + void ComputeCurrentValue() { + if (!AtEnd()) + current_value_ = ParamType(*current1_, *current2_, *current3_, + *current4_, *current5_, *current6_, *current7_, *current8_); + } + bool AtEnd() const { + // We must report iterator past the end of the range when either of the + // component iterators has reached the end of its range. + return + current1_ == end1_ || + current2_ == end2_ || + current3_ == end3_ || + current4_ == end4_ || + current5_ == end5_ || + current6_ == end6_ || + current7_ == end7_ || + current8_ == end8_; + } + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. + // current[i]_ is the actual traversing iterator. + const typename ParamGenerator::iterator begin1_; + const typename ParamGenerator::iterator end1_; + typename ParamGenerator::iterator current1_; + const typename ParamGenerator::iterator begin2_; + const typename ParamGenerator::iterator end2_; + typename ParamGenerator::iterator current2_; + const typename ParamGenerator::iterator begin3_; + const typename ParamGenerator::iterator end3_; + typename ParamGenerator::iterator current3_; + const typename ParamGenerator::iterator begin4_; + const typename ParamGenerator::iterator end4_; + typename ParamGenerator::iterator current4_; + const typename ParamGenerator::iterator begin5_; + const typename ParamGenerator::iterator end5_; + typename ParamGenerator::iterator current5_; + const typename ParamGenerator::iterator begin6_; + const typename ParamGenerator::iterator end6_; + typename ParamGenerator::iterator current6_; + const typename ParamGenerator::iterator begin7_; + const typename ParamGenerator::iterator end7_; + typename ParamGenerator::iterator current7_; + const typename ParamGenerator::iterator begin8_; + const typename ParamGenerator::iterator end8_; + typename ParamGenerator::iterator current8_; + ParamType current_value_; + }; // class CartesianProductGenerator8::Iterator + + // No implementation - assignment is unsupported. + void operator=(const CartesianProductGenerator8& other); + + const ParamGenerator g1_; + const ParamGenerator g2_; + const ParamGenerator g3_; + const ParamGenerator g4_; + const ParamGenerator g5_; + const ParamGenerator g6_; + const ParamGenerator g7_; + const ParamGenerator g8_; +}; // class CartesianProductGenerator8 + + +template +class CartesianProductGenerator9 + : public ParamGeneratorInterface< ::std::tr1::tuple > { + public: + typedef ::std::tr1::tuple ParamType; + + CartesianProductGenerator9(const ParamGenerator& g1, + const ParamGenerator& g2, const ParamGenerator& g3, + const ParamGenerator& g4, const ParamGenerator& g5, + const ParamGenerator& g6, const ParamGenerator& g7, + const ParamGenerator& g8, const ParamGenerator& g9) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8), + g9_(g9) {} + virtual ~CartesianProductGenerator9() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, + g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_, + g7_.begin(), g8_, g8_.begin(), g9_, g9_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), + g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_, + g8_.end(), g9_, g9_.end()); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + const ParamGenerator& g1, + const typename ParamGenerator::iterator& current1, + const ParamGenerator& g2, + const typename ParamGenerator::iterator& current2, + const ParamGenerator& g3, + const typename ParamGenerator::iterator& current3, + const ParamGenerator& g4, + const typename ParamGenerator::iterator& current4, + const ParamGenerator& g5, + const typename ParamGenerator::iterator& current5, + const ParamGenerator& g6, + const typename ParamGenerator::iterator& current6, + const ParamGenerator& g7, + const typename ParamGenerator::iterator& current7, + const ParamGenerator& g8, + const typename ParamGenerator::iterator& current8, + const ParamGenerator& g9, + const typename ParamGenerator::iterator& current9) + : base_(base), + begin1_(g1.begin()), end1_(g1.end()), current1_(current1), + begin2_(g2.begin()), end2_(g2.end()), current2_(current2), + begin3_(g3.begin()), end3_(g3.end()), current3_(current3), + begin4_(g4.begin()), end4_(g4.end()), current4_(current4), + begin5_(g5.begin()), end5_(g5.end()), current5_(current5), + begin6_(g6.begin()), end6_(g6.end()), current6_(current6), + begin7_(g7.begin()), end7_(g7.end()), current7_(current7), + begin8_(g8.begin()), end8_(g8.end()), current8_(current8), + begin9_(g9.begin()), end9_(g9.end()), current9_(current9) { + ComputeCurrentValue(); + } + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + // Advance should not be called on beyond-of-range iterators + // so no component iterators must be beyond end of range, either. + virtual void Advance() { + assert(!AtEnd()); + ++current9_; + if (current9_ == end9_) { + current9_ = begin9_; + ++current8_; + } + if (current8_ == end8_) { + current8_ = begin8_; + ++current7_; + } + if (current7_ == end7_) { + current7_ = begin7_; + ++current6_; + } + if (current6_ == end6_) { + current6_ = begin6_; + ++current5_; + } + if (current5_ == end5_) { + current5_ = begin5_; + ++current4_; + } + if (current4_ == end4_) { + current4_ = begin4_; + ++current3_; + } + if (current3_ == end3_) { + current3_ = begin3_; + ++current2_; + } + if (current2_ == end2_) { + current2_ = begin2_; + ++current1_; + } + ComputeCurrentValue(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const ParamType* Current() const { return ¤t_value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = + CheckedDowncastToActualType(&other); + // We must report iterators equal if they both point beyond their + // respective ranges. That can happen in a variety of fashions, + // so we have to consult AtEnd(). + return (AtEnd() && typed_other->AtEnd()) || + ( + current1_ == typed_other->current1_ && + current2_ == typed_other->current2_ && + current3_ == typed_other->current3_ && + current4_ == typed_other->current4_ && + current5_ == typed_other->current5_ && + current6_ == typed_other->current6_ && + current7_ == typed_other->current7_ && + current8_ == typed_other->current8_ && + current9_ == typed_other->current9_); + } + + private: + Iterator(const Iterator& other) + : base_(other.base_), + begin1_(other.begin1_), + end1_(other.end1_), + current1_(other.current1_), + begin2_(other.begin2_), + end2_(other.end2_), + current2_(other.current2_), + begin3_(other.begin3_), + end3_(other.end3_), + current3_(other.current3_), + begin4_(other.begin4_), + end4_(other.end4_), + current4_(other.current4_), + begin5_(other.begin5_), + end5_(other.end5_), + current5_(other.current5_), + begin6_(other.begin6_), + end6_(other.end6_), + current6_(other.current6_), + begin7_(other.begin7_), + end7_(other.end7_), + current7_(other.current7_), + begin8_(other.begin8_), + end8_(other.end8_), + current8_(other.current8_), + begin9_(other.begin9_), + end9_(other.end9_), + current9_(other.current9_) { + ComputeCurrentValue(); + } + + void ComputeCurrentValue() { + if (!AtEnd()) + current_value_ = ParamType(*current1_, *current2_, *current3_, + *current4_, *current5_, *current6_, *current7_, *current8_, + *current9_); + } + bool AtEnd() const { + // We must report iterator past the end of the range when either of the + // component iterators has reached the end of its range. + return + current1_ == end1_ || + current2_ == end2_ || + current3_ == end3_ || + current4_ == end4_ || + current5_ == end5_ || + current6_ == end6_ || + current7_ == end7_ || + current8_ == end8_ || + current9_ == end9_; + } + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. + // current[i]_ is the actual traversing iterator. + const typename ParamGenerator::iterator begin1_; + const typename ParamGenerator::iterator end1_; + typename ParamGenerator::iterator current1_; + const typename ParamGenerator::iterator begin2_; + const typename ParamGenerator::iterator end2_; + typename ParamGenerator::iterator current2_; + const typename ParamGenerator::iterator begin3_; + const typename ParamGenerator::iterator end3_; + typename ParamGenerator::iterator current3_; + const typename ParamGenerator::iterator begin4_; + const typename ParamGenerator::iterator end4_; + typename ParamGenerator::iterator current4_; + const typename ParamGenerator::iterator begin5_; + const typename ParamGenerator::iterator end5_; + typename ParamGenerator::iterator current5_; + const typename ParamGenerator::iterator begin6_; + const typename ParamGenerator::iterator end6_; + typename ParamGenerator::iterator current6_; + const typename ParamGenerator::iterator begin7_; + const typename ParamGenerator::iterator end7_; + typename ParamGenerator::iterator current7_; + const typename ParamGenerator::iterator begin8_; + const typename ParamGenerator::iterator end8_; + typename ParamGenerator::iterator current8_; + const typename ParamGenerator::iterator begin9_; + const typename ParamGenerator::iterator end9_; + typename ParamGenerator::iterator current9_; + ParamType current_value_; + }; // class CartesianProductGenerator9::Iterator + + // No implementation - assignment is unsupported. + void operator=(const CartesianProductGenerator9& other); + + const ParamGenerator g1_; + const ParamGenerator g2_; + const ParamGenerator g3_; + const ParamGenerator g4_; + const ParamGenerator g5_; + const ParamGenerator g6_; + const ParamGenerator g7_; + const ParamGenerator g8_; + const ParamGenerator g9_; +}; // class CartesianProductGenerator9 + + +template +class CartesianProductGenerator10 + : public ParamGeneratorInterface< ::std::tr1::tuple > { + public: + typedef ::std::tr1::tuple ParamType; + + CartesianProductGenerator10(const ParamGenerator& g1, + const ParamGenerator& g2, const ParamGenerator& g3, + const ParamGenerator& g4, const ParamGenerator& g5, + const ParamGenerator& g6, const ParamGenerator& g7, + const ParamGenerator& g8, const ParamGenerator& g9, + const ParamGenerator& g10) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8), + g9_(g9), g10_(g10) {} + virtual ~CartesianProductGenerator10() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_, + g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_, + g7_.begin(), g8_, g8_.begin(), g9_, g9_.begin(), g10_, g10_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(), + g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_, + g8_.end(), g9_, g9_.end(), g10_, g10_.end()); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + const ParamGenerator& g1, + const typename ParamGenerator::iterator& current1, + const ParamGenerator& g2, + const typename ParamGenerator::iterator& current2, + const ParamGenerator& g3, + const typename ParamGenerator::iterator& current3, + const ParamGenerator& g4, + const typename ParamGenerator::iterator& current4, + const ParamGenerator& g5, + const typename ParamGenerator::iterator& current5, + const ParamGenerator& g6, + const typename ParamGenerator::iterator& current6, + const ParamGenerator& g7, + const typename ParamGenerator::iterator& current7, + const ParamGenerator& g8, + const typename ParamGenerator::iterator& current8, + const ParamGenerator& g9, + const typename ParamGenerator::iterator& current9, + const ParamGenerator& g10, + const typename ParamGenerator::iterator& current10) + : base_(base), + begin1_(g1.begin()), end1_(g1.end()), current1_(current1), + begin2_(g2.begin()), end2_(g2.end()), current2_(current2), + begin3_(g3.begin()), end3_(g3.end()), current3_(current3), + begin4_(g4.begin()), end4_(g4.end()), current4_(current4), + begin5_(g5.begin()), end5_(g5.end()), current5_(current5), + begin6_(g6.begin()), end6_(g6.end()), current6_(current6), + begin7_(g7.begin()), end7_(g7.end()), current7_(current7), + begin8_(g8.begin()), end8_(g8.end()), current8_(current8), + begin9_(g9.begin()), end9_(g9.end()), current9_(current9), + begin10_(g10.begin()), end10_(g10.end()), current10_(current10) { + ComputeCurrentValue(); + } + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + // Advance should not be called on beyond-of-range iterators + // so no component iterators must be beyond end of range, either. + virtual void Advance() { + assert(!AtEnd()); + ++current10_; + if (current10_ == end10_) { + current10_ = begin10_; + ++current9_; + } + if (current9_ == end9_) { + current9_ = begin9_; + ++current8_; + } + if (current8_ == end8_) { + current8_ = begin8_; + ++current7_; + } + if (current7_ == end7_) { + current7_ = begin7_; + ++current6_; + } + if (current6_ == end6_) { + current6_ = begin6_; + ++current5_; + } + if (current5_ == end5_) { + current5_ = begin5_; + ++current4_; + } + if (current4_ == end4_) { + current4_ = begin4_; + ++current3_; + } + if (current3_ == end3_) { + current3_ = begin3_; + ++current2_; + } + if (current2_ == end2_) { + current2_ = begin2_; + ++current1_; + } + ComputeCurrentValue(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const ParamType* Current() const { return ¤t_value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = + CheckedDowncastToActualType(&other); + // We must report iterators equal if they both point beyond their + // respective ranges. That can happen in a variety of fashions, + // so we have to consult AtEnd(). + return (AtEnd() && typed_other->AtEnd()) || + ( + current1_ == typed_other->current1_ && + current2_ == typed_other->current2_ && + current3_ == typed_other->current3_ && + current4_ == typed_other->current4_ && + current5_ == typed_other->current5_ && + current6_ == typed_other->current6_ && + current7_ == typed_other->current7_ && + current8_ == typed_other->current8_ && + current9_ == typed_other->current9_ && + current10_ == typed_other->current10_); + } + + private: + Iterator(const Iterator& other) + : base_(other.base_), + begin1_(other.begin1_), + end1_(other.end1_), + current1_(other.current1_), + begin2_(other.begin2_), + end2_(other.end2_), + current2_(other.current2_), + begin3_(other.begin3_), + end3_(other.end3_), + current3_(other.current3_), + begin4_(other.begin4_), + end4_(other.end4_), + current4_(other.current4_), + begin5_(other.begin5_), + end5_(other.end5_), + current5_(other.current5_), + begin6_(other.begin6_), + end6_(other.end6_), + current6_(other.current6_), + begin7_(other.begin7_), + end7_(other.end7_), + current7_(other.current7_), + begin8_(other.begin8_), + end8_(other.end8_), + current8_(other.current8_), + begin9_(other.begin9_), + end9_(other.end9_), + current9_(other.current9_), + begin10_(other.begin10_), + end10_(other.end10_), + current10_(other.current10_) { + ComputeCurrentValue(); + } + + void ComputeCurrentValue() { + if (!AtEnd()) + current_value_ = ParamType(*current1_, *current2_, *current3_, + *current4_, *current5_, *current6_, *current7_, *current8_, + *current9_, *current10_); + } + bool AtEnd() const { + // We must report iterator past the end of the range when either of the + // component iterators has reached the end of its range. + return + current1_ == end1_ || + current2_ == end2_ || + current3_ == end3_ || + current4_ == end4_ || + current5_ == end5_ || + current6_ == end6_ || + current7_ == end7_ || + current8_ == end8_ || + current9_ == end9_ || + current10_ == end10_; + } + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. + // current[i]_ is the actual traversing iterator. + const typename ParamGenerator::iterator begin1_; + const typename ParamGenerator::iterator end1_; + typename ParamGenerator::iterator current1_; + const typename ParamGenerator::iterator begin2_; + const typename ParamGenerator::iterator end2_; + typename ParamGenerator::iterator current2_; + const typename ParamGenerator::iterator begin3_; + const typename ParamGenerator::iterator end3_; + typename ParamGenerator::iterator current3_; + const typename ParamGenerator::iterator begin4_; + const typename ParamGenerator::iterator end4_; + typename ParamGenerator::iterator current4_; + const typename ParamGenerator::iterator begin5_; + const typename ParamGenerator::iterator end5_; + typename ParamGenerator::iterator current5_; + const typename ParamGenerator::iterator begin6_; + const typename ParamGenerator::iterator end6_; + typename ParamGenerator::iterator current6_; + const typename ParamGenerator::iterator begin7_; + const typename ParamGenerator::iterator end7_; + typename ParamGenerator::iterator current7_; + const typename ParamGenerator::iterator begin8_; + const typename ParamGenerator::iterator end8_; + typename ParamGenerator::iterator current8_; + const typename ParamGenerator::iterator begin9_; + const typename ParamGenerator::iterator end9_; + typename ParamGenerator::iterator current9_; + const typename ParamGenerator::iterator begin10_; + const typename ParamGenerator::iterator end10_; + typename ParamGenerator::iterator current10_; + ParamType current_value_; + }; // class CartesianProductGenerator10::Iterator + + // No implementation - assignment is unsupported. + void operator=(const CartesianProductGenerator10& other); + + const ParamGenerator g1_; + const ParamGenerator g2_; + const ParamGenerator g3_; + const ParamGenerator g4_; + const ParamGenerator g5_; + const ParamGenerator g6_; + const ParamGenerator g7_; + const ParamGenerator g8_; + const ParamGenerator g9_; + const ParamGenerator g10_; +}; // class CartesianProductGenerator10 + + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// Helper classes providing Combine() with polymorphic features. They allow +// casting CartesianProductGeneratorN to ParamGenerator if T is +// convertible to U. +// +template +class CartesianProductHolder2 { + public: +CartesianProductHolder2(const Generator1& g1, const Generator2& g2) + : g1_(g1), g2_(g2) {} + template + operator ParamGenerator< ::std::tr1::tuple >() const { + return ParamGenerator< ::std::tr1::tuple >( + new CartesianProductGenerator2( + static_cast >(g1_), + static_cast >(g2_))); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const CartesianProductHolder2& other); + + const Generator1 g1_; + const Generator2 g2_; +}; // class CartesianProductHolder2 + +template +class CartesianProductHolder3 { + public: +CartesianProductHolder3(const Generator1& g1, const Generator2& g2, + const Generator3& g3) + : g1_(g1), g2_(g2), g3_(g3) {} + template + operator ParamGenerator< ::std::tr1::tuple >() const { + return ParamGenerator< ::std::tr1::tuple >( + new CartesianProductGenerator3( + static_cast >(g1_), + static_cast >(g2_), + static_cast >(g3_))); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const CartesianProductHolder3& other); + + const Generator1 g1_; + const Generator2 g2_; + const Generator3 g3_; +}; // class CartesianProductHolder3 + +template +class CartesianProductHolder4 { + public: +CartesianProductHolder4(const Generator1& g1, const Generator2& g2, + const Generator3& g3, const Generator4& g4) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4) {} + template + operator ParamGenerator< ::std::tr1::tuple >() const { + return ParamGenerator< ::std::tr1::tuple >( + new CartesianProductGenerator4( + static_cast >(g1_), + static_cast >(g2_), + static_cast >(g3_), + static_cast >(g4_))); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const CartesianProductHolder4& other); + + const Generator1 g1_; + const Generator2 g2_; + const Generator3 g3_; + const Generator4 g4_; +}; // class CartesianProductHolder4 + +template +class CartesianProductHolder5 { + public: +CartesianProductHolder5(const Generator1& g1, const Generator2& g2, + const Generator3& g3, const Generator4& g4, const Generator5& g5) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5) {} + template + operator ParamGenerator< ::std::tr1::tuple >() const { + return ParamGenerator< ::std::tr1::tuple >( + new CartesianProductGenerator5( + static_cast >(g1_), + static_cast >(g2_), + static_cast >(g3_), + static_cast >(g4_), + static_cast >(g5_))); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const CartesianProductHolder5& other); + + const Generator1 g1_; + const Generator2 g2_; + const Generator3 g3_; + const Generator4 g4_; + const Generator5 g5_; +}; // class CartesianProductHolder5 + +template +class CartesianProductHolder6 { + public: +CartesianProductHolder6(const Generator1& g1, const Generator2& g2, + const Generator3& g3, const Generator4& g4, const Generator5& g5, + const Generator6& g6) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6) {} + template + operator ParamGenerator< ::std::tr1::tuple >() const { + return ParamGenerator< ::std::tr1::tuple >( + new CartesianProductGenerator6( + static_cast >(g1_), + static_cast >(g2_), + static_cast >(g3_), + static_cast >(g4_), + static_cast >(g5_), + static_cast >(g6_))); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const CartesianProductHolder6& other); + + const Generator1 g1_; + const Generator2 g2_; + const Generator3 g3_; + const Generator4 g4_; + const Generator5 g5_; + const Generator6 g6_; +}; // class CartesianProductHolder6 + +template +class CartesianProductHolder7 { + public: +CartesianProductHolder7(const Generator1& g1, const Generator2& g2, + const Generator3& g3, const Generator4& g4, const Generator5& g5, + const Generator6& g6, const Generator7& g7) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7) {} + template + operator ParamGenerator< ::std::tr1::tuple >() const { + return ParamGenerator< ::std::tr1::tuple >( + new CartesianProductGenerator7( + static_cast >(g1_), + static_cast >(g2_), + static_cast >(g3_), + static_cast >(g4_), + static_cast >(g5_), + static_cast >(g6_), + static_cast >(g7_))); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const CartesianProductHolder7& other); + + const Generator1 g1_; + const Generator2 g2_; + const Generator3 g3_; + const Generator4 g4_; + const Generator5 g5_; + const Generator6 g6_; + const Generator7 g7_; +}; // class CartesianProductHolder7 + +template +class CartesianProductHolder8 { + public: +CartesianProductHolder8(const Generator1& g1, const Generator2& g2, + const Generator3& g3, const Generator4& g4, const Generator5& g5, + const Generator6& g6, const Generator7& g7, const Generator8& g8) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), + g8_(g8) {} + template + operator ParamGenerator< ::std::tr1::tuple >() const { + return ParamGenerator< ::std::tr1::tuple >( + new CartesianProductGenerator8( + static_cast >(g1_), + static_cast >(g2_), + static_cast >(g3_), + static_cast >(g4_), + static_cast >(g5_), + static_cast >(g6_), + static_cast >(g7_), + static_cast >(g8_))); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const CartesianProductHolder8& other); + + const Generator1 g1_; + const Generator2 g2_; + const Generator3 g3_; + const Generator4 g4_; + const Generator5 g5_; + const Generator6 g6_; + const Generator7 g7_; + const Generator8 g8_; +}; // class CartesianProductHolder8 + +template +class CartesianProductHolder9 { + public: +CartesianProductHolder9(const Generator1& g1, const Generator2& g2, + const Generator3& g3, const Generator4& g4, const Generator5& g5, + const Generator6& g6, const Generator7& g7, const Generator8& g8, + const Generator9& g9) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8), + g9_(g9) {} + template + operator ParamGenerator< ::std::tr1::tuple >() const { + return ParamGenerator< ::std::tr1::tuple >( + new CartesianProductGenerator9( + static_cast >(g1_), + static_cast >(g2_), + static_cast >(g3_), + static_cast >(g4_), + static_cast >(g5_), + static_cast >(g6_), + static_cast >(g7_), + static_cast >(g8_), + static_cast >(g9_))); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const CartesianProductHolder9& other); + + const Generator1 g1_; + const Generator2 g2_; + const Generator3 g3_; + const Generator4 g4_; + const Generator5 g5_; + const Generator6 g6_; + const Generator7 g7_; + const Generator8 g8_; + const Generator9 g9_; +}; // class CartesianProductHolder9 + +template +class CartesianProductHolder10 { + public: +CartesianProductHolder10(const Generator1& g1, const Generator2& g2, + const Generator3& g3, const Generator4& g4, const Generator5& g5, + const Generator6& g6, const Generator7& g7, const Generator8& g8, + const Generator9& g9, const Generator10& g10) + : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8), + g9_(g9), g10_(g10) {} + template + operator ParamGenerator< ::std::tr1::tuple >() const { + return ParamGenerator< ::std::tr1::tuple >( + new CartesianProductGenerator10( + static_cast >(g1_), + static_cast >(g2_), + static_cast >(g3_), + static_cast >(g4_), + static_cast >(g5_), + static_cast >(g6_), + static_cast >(g7_), + static_cast >(g8_), + static_cast >(g9_), + static_cast >(g10_))); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const CartesianProductHolder10& other); + + const Generator1 g1_; + const Generator2 g2_; + const Generator3 g3_; + const Generator4 g4_; + const Generator5 g5_; + const Generator6 g6_; + const Generator7 g7_; + const Generator8 g8_; + const Generator9 g9_; + const Generator10 g10_; +}; // class CartesianProductHolder10 + +# endif // GTEST_HAS_COMBINE + +} // namespace internal +} // namespace testing + +#endif // GTEST_HAS_PARAM_TEST + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_ diff --git a/thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-param-util-generated.h.pump b/thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-param-util-generated.h.pump new file mode 100644 index 00000000..009206fd --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-param-util-generated.h.pump @@ -0,0 +1,301 @@ +$$ -*- mode: c++; -*- +$var n = 50 $$ Maximum length of Values arguments we want to support. +$var maxtuple = 10 $$ Maximum number of Combine arguments we want to support. +// Copyright 2008 Google Inc. +// All Rights Reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: vladl@google.com (Vlad Losev) + +// Type and function utilities for implementing parameterized tests. +// This file is generated by a SCRIPT. DO NOT EDIT BY HAND! +// +// Currently Google Test supports at most $n arguments in Values, +// and at most $maxtuple arguments in Combine. Please contact +// googletestframework@googlegroups.com if you need more. +// Please note that the number of arguments to Combine is limited +// by the maximum arity of the implementation of tr1::tuple which is +// currently set at $maxtuple. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_ + +// scripts/fuse_gtest.py depends on gtest's own header being #included +// *unconditionally*. Therefore these #includes cannot be moved +// inside #if GTEST_HAS_PARAM_TEST. +#include "gtest/internal/gtest-param-util.h" +#include "gtest/internal/gtest-port.h" + +#if GTEST_HAS_PARAM_TEST + +namespace testing { + +// Forward declarations of ValuesIn(), which is implemented in +// include/gtest/gtest-param-test.h. +template +internal::ParamGenerator< + typename ::testing::internal::IteratorTraits::value_type> +ValuesIn(ForwardIterator begin, ForwardIterator end); + +template +internal::ParamGenerator ValuesIn(const T (&array)[N]); + +template +internal::ParamGenerator ValuesIn( + const Container& container); + +namespace internal { + +// Used in the Values() function to provide polymorphic capabilities. +template +class ValueArray1 { + public: + explicit ValueArray1(T1 v1) : v1_(v1) {} + + template + operator ParamGenerator() const { return ValuesIn(&v1_, &v1_ + 1); } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray1& other); + + const T1 v1_; +}; + +$range i 2..n +$for i [[ +$range j 1..i + +template <$for j, [[typename T$j]]> +class ValueArray$i { + public: + ValueArray$i($for j, [[T$j v$j]]) : $for j, [[v$(j)_(v$j)]] {} + + template + operator ParamGenerator() const { + const T array[] = {$for j, [[static_cast(v$(j)_)]]}; + return ValuesIn(array); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const ValueArray$i& other); + +$for j [[ + + const T$j v$(j)_; +]] + +}; + +]] + +# if GTEST_HAS_COMBINE +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// Generates values from the Cartesian product of values produced +// by the argument generators. +// +$range i 2..maxtuple +$for i [[ +$range j 1..i +$range k 2..i + +template <$for j, [[typename T$j]]> +class CartesianProductGenerator$i + : public ParamGeneratorInterface< ::std::tr1::tuple<$for j, [[T$j]]> > { + public: + typedef ::std::tr1::tuple<$for j, [[T$j]]> ParamType; + + CartesianProductGenerator$i($for j, [[const ParamGenerator& g$j]]) + : $for j, [[g$(j)_(g$j)]] {} + virtual ~CartesianProductGenerator$i() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, $for j, [[g$(j)_, g$(j)_.begin()]]); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, $for j, [[g$(j)_, g$(j)_.end()]]); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, $for j, [[ + + const ParamGenerator& g$j, + const typename ParamGenerator::iterator& current$(j)]]) + : base_(base), +$for j, [[ + + begin$(j)_(g$j.begin()), end$(j)_(g$j.end()), current$(j)_(current$j) +]] { + ComputeCurrentValue(); + } + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + // Advance should not be called on beyond-of-range iterators + // so no component iterators must be beyond end of range, either. + virtual void Advance() { + assert(!AtEnd()); + ++current$(i)_; + +$for k [[ + if (current$(i+2-k)_ == end$(i+2-k)_) { + current$(i+2-k)_ = begin$(i+2-k)_; + ++current$(i+2-k-1)_; + } + +]] + ComputeCurrentValue(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const ParamType* Current() const { return ¤t_value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const Iterator* typed_other = + CheckedDowncastToActualType(&other); + // We must report iterators equal if they both point beyond their + // respective ranges. That can happen in a variety of fashions, + // so we have to consult AtEnd(). + return (AtEnd() && typed_other->AtEnd()) || + ($for j && [[ + + current$(j)_ == typed_other->current$(j)_ +]]); + } + + private: + Iterator(const Iterator& other) + : base_(other.base_), $for j, [[ + + begin$(j)_(other.begin$(j)_), + end$(j)_(other.end$(j)_), + current$(j)_(other.current$(j)_) +]] { + ComputeCurrentValue(); + } + + void ComputeCurrentValue() { + if (!AtEnd()) + current_value_ = ParamType($for j, [[*current$(j)_]]); + } + bool AtEnd() const { + // We must report iterator past the end of the range when either of the + // component iterators has reached the end of its range. + return +$for j || [[ + + current$(j)_ == end$(j)_ +]]; + } + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + // begin[i]_ and end[i]_ define the i-th range that Iterator traverses. + // current[i]_ is the actual traversing iterator. +$for j [[ + + const typename ParamGenerator::iterator begin$(j)_; + const typename ParamGenerator::iterator end$(j)_; + typename ParamGenerator::iterator current$(j)_; +]] + + ParamType current_value_; + }; // class CartesianProductGenerator$i::Iterator + + // No implementation - assignment is unsupported. + void operator=(const CartesianProductGenerator$i& other); + + +$for j [[ + const ParamGenerator g$(j)_; + +]] +}; // class CartesianProductGenerator$i + + +]] + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// Helper classes providing Combine() with polymorphic features. They allow +// casting CartesianProductGeneratorN to ParamGenerator if T is +// convertible to U. +// +$range i 2..maxtuple +$for i [[ +$range j 1..i + +template <$for j, [[class Generator$j]]> +class CartesianProductHolder$i { + public: +CartesianProductHolder$i($for j, [[const Generator$j& g$j]]) + : $for j, [[g$(j)_(g$j)]] {} + template <$for j, [[typename T$j]]> + operator ParamGenerator< ::std::tr1::tuple<$for j, [[T$j]]> >() const { + return ParamGenerator< ::std::tr1::tuple<$for j, [[T$j]]> >( + new CartesianProductGenerator$i<$for j, [[T$j]]>( +$for j,[[ + + static_cast >(g$(j)_) +]])); + } + + private: + // No implementation - assignment is unsupported. + void operator=(const CartesianProductHolder$i& other); + + +$for j [[ + const Generator$j g$(j)_; + +]] +}; // class CartesianProductHolder$i + +]] + +# endif // GTEST_HAS_COMBINE + +} // namespace internal +} // namespace testing + +#endif // GTEST_HAS_PARAM_TEST + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_ diff --git a/thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-param-util.h b/thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-param-util.h new file mode 100644 index 00000000..0ef9718c --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-param-util.h @@ -0,0 +1,619 @@ +// Copyright 2008 Google Inc. +// All Rights Reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: vladl@google.com (Vlad Losev) + +// Type and function utilities for implementing parameterized tests. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_ + +#include +#include +#include + +// scripts/fuse_gtest.py depends on gtest's own header being #included +// *unconditionally*. Therefore these #includes cannot be moved +// inside #if GTEST_HAS_PARAM_TEST. +#include "gtest/internal/gtest-internal.h" +#include "gtest/internal/gtest-linked_ptr.h" +#include "gtest/internal/gtest-port.h" +#include "gtest/gtest-printers.h" + +#if GTEST_HAS_PARAM_TEST + +namespace testing { +namespace internal { + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// Outputs a message explaining invalid registration of different +// fixture class for the same test case. This may happen when +// TEST_P macro is used to define two tests with the same name +// but in different namespaces. +GTEST_API_ void ReportInvalidTestCaseType(const char* test_case_name, + const char* file, int line); + +template class ParamGeneratorInterface; +template class ParamGenerator; + +// Interface for iterating over elements provided by an implementation +// of ParamGeneratorInterface. +template +class ParamIteratorInterface { + public: + virtual ~ParamIteratorInterface() {} + // A pointer to the base generator instance. + // Used only for the purposes of iterator comparison + // to make sure that two iterators belong to the same generator. + virtual const ParamGeneratorInterface* BaseGenerator() const = 0; + // Advances iterator to point to the next element + // provided by the generator. The caller is responsible + // for not calling Advance() on an iterator equal to + // BaseGenerator()->End(). + virtual void Advance() = 0; + // Clones the iterator object. Used for implementing copy semantics + // of ParamIterator. + virtual ParamIteratorInterface* Clone() const = 0; + // Dereferences the current iterator and provides (read-only) access + // to the pointed value. It is the caller's responsibility not to call + // Current() on an iterator equal to BaseGenerator()->End(). + // Used for implementing ParamGenerator::operator*(). + virtual const T* Current() const = 0; + // Determines whether the given iterator and other point to the same + // element in the sequence generated by the generator. + // Used for implementing ParamGenerator::operator==(). + virtual bool Equals(const ParamIteratorInterface& other) const = 0; +}; + +// Class iterating over elements provided by an implementation of +// ParamGeneratorInterface. It wraps ParamIteratorInterface +// and implements the const forward iterator concept. +template +class ParamIterator { + public: + typedef T value_type; + typedef const T& reference; + typedef ptrdiff_t difference_type; + + // ParamIterator assumes ownership of the impl_ pointer. + ParamIterator(const ParamIterator& other) : impl_(other.impl_->Clone()) {} + ParamIterator& operator=(const ParamIterator& other) { + if (this != &other) + impl_.reset(other.impl_->Clone()); + return *this; + } + + const T& operator*() const { return *impl_->Current(); } + const T* operator->() const { return impl_->Current(); } + // Prefix version of operator++. + ParamIterator& operator++() { + impl_->Advance(); + return *this; + } + // Postfix version of operator++. + ParamIterator operator++(int /*unused*/) { + ParamIteratorInterface* clone = impl_->Clone(); + impl_->Advance(); + return ParamIterator(clone); + } + bool operator==(const ParamIterator& other) const { + return impl_.get() == other.impl_.get() || impl_->Equals(*other.impl_); + } + bool operator!=(const ParamIterator& other) const { + return !(*this == other); + } + + private: + friend class ParamGenerator; + explicit ParamIterator(ParamIteratorInterface* impl) : impl_(impl) {} + scoped_ptr > impl_; +}; + +// ParamGeneratorInterface is the binary interface to access generators +// defined in other translation units. +template +class ParamGeneratorInterface { + public: + typedef T ParamType; + + virtual ~ParamGeneratorInterface() {} + + // Generator interface definition + virtual ParamIteratorInterface* Begin() const = 0; + virtual ParamIteratorInterface* End() const = 0; +}; + +// Wraps ParamGeneratorInterface and provides general generator syntax +// compatible with the STL Container concept. +// This class implements copy initialization semantics and the contained +// ParamGeneratorInterface instance is shared among all copies +// of the original object. This is possible because that instance is immutable. +template +class ParamGenerator { + public: + typedef ParamIterator iterator; + + explicit ParamGenerator(ParamGeneratorInterface* impl) : impl_(impl) {} + ParamGenerator(const ParamGenerator& other) : impl_(other.impl_) {} + + ParamGenerator& operator=(const ParamGenerator& other) { + impl_ = other.impl_; + return *this; + } + + iterator begin() const { return iterator(impl_->Begin()); } + iterator end() const { return iterator(impl_->End()); } + + private: + linked_ptr > impl_; +}; + +// Generates values from a range of two comparable values. Can be used to +// generate sequences of user-defined types that implement operator+() and +// operator<(). +// This class is used in the Range() function. +template +class RangeGenerator : public ParamGeneratorInterface { + public: + RangeGenerator(T begin, T end, IncrementT step) + : begin_(begin), end_(end), + step_(step), end_index_(CalculateEndIndex(begin, end, step)) {} + virtual ~RangeGenerator() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, begin_, 0, step_); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, end_, end_index_, step_); + } + + private: + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, T value, int index, + IncrementT step) + : base_(base), value_(value), index_(index), step_(step) {} + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + virtual void Advance() { + value_ = value_ + step_; + index_++; + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + virtual const T* Current() const { return &value_; } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + const int other_index = + CheckedDowncastToActualType(&other)->index_; + return index_ == other_index; + } + + private: + Iterator(const Iterator& other) + : ParamIteratorInterface(), + base_(other.base_), value_(other.value_), index_(other.index_), + step_(other.step_) {} + + // No implementation - assignment is unsupported. + void operator=(const Iterator& other); + + const ParamGeneratorInterface* const base_; + T value_; + int index_; + const IncrementT step_; + }; // class RangeGenerator::Iterator + + static int CalculateEndIndex(const T& begin, + const T& end, + const IncrementT& step) { + int end_index = 0; + for (T i = begin; i < end; i = i + step) + end_index++; + return end_index; + } + + // No implementation - assignment is unsupported. + void operator=(const RangeGenerator& other); + + const T begin_; + const T end_; + const IncrementT step_; + // The index for the end() iterator. All the elements in the generated + // sequence are indexed (0-based) to aid iterator comparison. + const int end_index_; +}; // class RangeGenerator + + +// Generates values from a pair of STL-style iterators. Used in the +// ValuesIn() function. The elements are copied from the source range +// since the source can be located on the stack, and the generator +// is likely to persist beyond that stack frame. +template +class ValuesInIteratorRangeGenerator : public ParamGeneratorInterface { + public: + template + ValuesInIteratorRangeGenerator(ForwardIterator begin, ForwardIterator end) + : container_(begin, end) {} + virtual ~ValuesInIteratorRangeGenerator() {} + + virtual ParamIteratorInterface* Begin() const { + return new Iterator(this, container_.begin()); + } + virtual ParamIteratorInterface* End() const { + return new Iterator(this, container_.end()); + } + + private: + typedef typename ::std::vector ContainerType; + + class Iterator : public ParamIteratorInterface { + public: + Iterator(const ParamGeneratorInterface* base, + typename ContainerType::const_iterator iterator) + : base_(base), iterator_(iterator) {} + virtual ~Iterator() {} + + virtual const ParamGeneratorInterface* BaseGenerator() const { + return base_; + } + virtual void Advance() { + ++iterator_; + value_.reset(); + } + virtual ParamIteratorInterface* Clone() const { + return new Iterator(*this); + } + // We need to use cached value referenced by iterator_ because *iterator_ + // can return a temporary object (and of type other then T), so just + // having "return &*iterator_;" doesn't work. + // value_ is updated here and not in Advance() because Advance() + // can advance iterator_ beyond the end of the range, and we cannot + // detect that fact. The client code, on the other hand, is + // responsible for not calling Current() on an out-of-range iterator. + virtual const T* Current() const { + if (value_.get() == NULL) + value_.reset(new T(*iterator_)); + return value_.get(); + } + virtual bool Equals(const ParamIteratorInterface& other) const { + // Having the same base generator guarantees that the other + // iterator is of the same type and we can downcast. + GTEST_CHECK_(BaseGenerator() == other.BaseGenerator()) + << "The program attempted to compare iterators " + << "from different generators." << std::endl; + return iterator_ == + CheckedDowncastToActualType(&other)->iterator_; + } + + private: + Iterator(const Iterator& other) + // The explicit constructor call suppresses a false warning + // emitted by gcc when supplied with the -Wextra option. + : ParamIteratorInterface(), + base_(other.base_), + iterator_(other.iterator_) {} + + const ParamGeneratorInterface* const base_; + typename ContainerType::const_iterator iterator_; + // A cached value of *iterator_. We keep it here to allow access by + // pointer in the wrapping iterator's operator->(). + // value_ needs to be mutable to be accessed in Current(). + // Use of scoped_ptr helps manage cached value's lifetime, + // which is bound by the lifespan of the iterator itself. + mutable scoped_ptr value_; + }; // class ValuesInIteratorRangeGenerator::Iterator + + // No implementation - assignment is unsupported. + void operator=(const ValuesInIteratorRangeGenerator& other); + + const ContainerType container_; +}; // class ValuesInIteratorRangeGenerator + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// Stores a parameter value and later creates tests parameterized with that +// value. +template +class ParameterizedTestFactory : public TestFactoryBase { + public: + typedef typename TestClass::ParamType ParamType; + explicit ParameterizedTestFactory(ParamType parameter) : + parameter_(parameter) {} + virtual Test* CreateTest() { + TestClass::SetParam(¶meter_); + return new TestClass(); + } + + private: + const ParamType parameter_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestFactory); +}; + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// TestMetaFactoryBase is a base class for meta-factories that create +// test factories for passing into MakeAndRegisterTestInfo function. +template +class TestMetaFactoryBase { + public: + virtual ~TestMetaFactoryBase() {} + + virtual TestFactoryBase* CreateTestFactory(ParamType parameter) = 0; +}; + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// TestMetaFactory creates test factories for passing into +// MakeAndRegisterTestInfo function. Since MakeAndRegisterTestInfo receives +// ownership of test factory pointer, same factory object cannot be passed +// into that method twice. But ParameterizedTestCaseInfo is going to call +// it for each Test/Parameter value combination. Thus it needs meta factory +// creator class. +template +class TestMetaFactory + : public TestMetaFactoryBase { + public: + typedef typename TestCase::ParamType ParamType; + + TestMetaFactory() {} + + virtual TestFactoryBase* CreateTestFactory(ParamType parameter) { + return new ParameterizedTestFactory(parameter); + } + + private: + GTEST_DISALLOW_COPY_AND_ASSIGN_(TestMetaFactory); +}; + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// ParameterizedTestCaseInfoBase is a generic interface +// to ParameterizedTestCaseInfo classes. ParameterizedTestCaseInfoBase +// accumulates test information provided by TEST_P macro invocations +// and generators provided by INSTANTIATE_TEST_CASE_P macro invocations +// and uses that information to register all resulting test instances +// in RegisterTests method. The ParameterizeTestCaseRegistry class holds +// a collection of pointers to the ParameterizedTestCaseInfo objects +// and calls RegisterTests() on each of them when asked. +class ParameterizedTestCaseInfoBase { + public: + virtual ~ParameterizedTestCaseInfoBase() {} + + // Base part of test case name for display purposes. + virtual const string& GetTestCaseName() const = 0; + // Test case id to verify identity. + virtual TypeId GetTestCaseTypeId() const = 0; + // UnitTest class invokes this method to register tests in this + // test case right before running them in RUN_ALL_TESTS macro. + // This method should not be called more then once on any single + // instance of a ParameterizedTestCaseInfoBase derived class. + virtual void RegisterTests() = 0; + + protected: + ParameterizedTestCaseInfoBase() {} + + private: + GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestCaseInfoBase); +}; + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// ParameterizedTestCaseInfo accumulates tests obtained from TEST_P +// macro invocations for a particular test case and generators +// obtained from INSTANTIATE_TEST_CASE_P macro invocations for that +// test case. It registers tests with all values generated by all +// generators when asked. +template +class ParameterizedTestCaseInfo : public ParameterizedTestCaseInfoBase { + public: + // ParamType and GeneratorCreationFunc are private types but are required + // for declarations of public methods AddTestPattern() and + // AddTestCaseInstantiation(). + typedef typename TestCase::ParamType ParamType; + // A function that returns an instance of appropriate generator type. + typedef ParamGenerator(GeneratorCreationFunc)(); + + explicit ParameterizedTestCaseInfo(const char* name) + : test_case_name_(name) {} + + // Test case base name for display purposes. + virtual const string& GetTestCaseName() const { return test_case_name_; } + // Test case id to verify identity. + virtual TypeId GetTestCaseTypeId() const { return GetTypeId(); } + // TEST_P macro uses AddTestPattern() to record information + // about a single test in a LocalTestInfo structure. + // test_case_name is the base name of the test case (without invocation + // prefix). test_base_name is the name of an individual test without + // parameter index. For the test SequenceA/FooTest.DoBar/1 FooTest is + // test case base name and DoBar is test base name. + void AddTestPattern(const char* test_case_name, + const char* test_base_name, + TestMetaFactoryBase* meta_factory) { + tests_.push_back(linked_ptr(new TestInfo(test_case_name, + test_base_name, + meta_factory))); + } + // INSTANTIATE_TEST_CASE_P macro uses AddGenerator() to record information + // about a generator. + int AddTestCaseInstantiation(const string& instantiation_name, + GeneratorCreationFunc* func, + const char* /* file */, + int /* line */) { + instantiations_.push_back(::std::make_pair(instantiation_name, func)); + return 0; // Return value used only to run this method in namespace scope. + } + // UnitTest class invokes this method to register tests in this test case + // test cases right before running tests in RUN_ALL_TESTS macro. + // This method should not be called more then once on any single + // instance of a ParameterizedTestCaseInfoBase derived class. + // UnitTest has a guard to prevent from calling this method more then once. + virtual void RegisterTests() { + for (typename TestInfoContainer::iterator test_it = tests_.begin(); + test_it != tests_.end(); ++test_it) { + linked_ptr test_info = *test_it; + for (typename InstantiationContainer::iterator gen_it = + instantiations_.begin(); gen_it != instantiations_.end(); + ++gen_it) { + const string& instantiation_name = gen_it->first; + ParamGenerator generator((*gen_it->second)()); + + Message test_case_name_stream; + if ( !instantiation_name.empty() ) + test_case_name_stream << instantiation_name << "/"; + test_case_name_stream << test_info->test_case_base_name; + + int i = 0; + for (typename ParamGenerator::iterator param_it = + generator.begin(); + param_it != generator.end(); ++param_it, ++i) { + Message test_name_stream; + test_name_stream << test_info->test_base_name << "/" << i; + MakeAndRegisterTestInfo( + test_case_name_stream.GetString().c_str(), + test_name_stream.GetString().c_str(), + NULL, // No type parameter. + PrintToString(*param_it).c_str(), + GetTestCaseTypeId(), + TestCase::SetUpTestCase, + TestCase::TearDownTestCase, + test_info->test_meta_factory->CreateTestFactory(*param_it)); + } // for param_it + } // for gen_it + } // for test_it + } // RegisterTests + + private: + // LocalTestInfo structure keeps information about a single test registered + // with TEST_P macro. + struct TestInfo { + TestInfo(const char* a_test_case_base_name, + const char* a_test_base_name, + TestMetaFactoryBase* a_test_meta_factory) : + test_case_base_name(a_test_case_base_name), + test_base_name(a_test_base_name), + test_meta_factory(a_test_meta_factory) {} + + const string test_case_base_name; + const string test_base_name; + const scoped_ptr > test_meta_factory; + }; + typedef ::std::vector > TestInfoContainer; + // Keeps pairs of + // received from INSTANTIATE_TEST_CASE_P macros. + typedef ::std::vector > + InstantiationContainer; + + const string test_case_name_; + TestInfoContainer tests_; + InstantiationContainer instantiations_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestCaseInfo); +}; // class ParameterizedTestCaseInfo + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// ParameterizedTestCaseRegistry contains a map of ParameterizedTestCaseInfoBase +// classes accessed by test case names. TEST_P and INSTANTIATE_TEST_CASE_P +// macros use it to locate their corresponding ParameterizedTestCaseInfo +// descriptors. +class ParameterizedTestCaseRegistry { + public: + ParameterizedTestCaseRegistry() {} + ~ParameterizedTestCaseRegistry() { + for (TestCaseInfoContainer::iterator it = test_case_infos_.begin(); + it != test_case_infos_.end(); ++it) { + delete *it; + } + } + + // Looks up or creates and returns a structure containing information about + // tests and instantiations of a particular test case. + template + ParameterizedTestCaseInfo* GetTestCasePatternHolder( + const char* test_case_name, + const char* file, + int line) { + ParameterizedTestCaseInfo* typed_test_info = NULL; + for (TestCaseInfoContainer::iterator it = test_case_infos_.begin(); + it != test_case_infos_.end(); ++it) { + if ((*it)->GetTestCaseName() == test_case_name) { + if ((*it)->GetTestCaseTypeId() != GetTypeId()) { + // Complain about incorrect usage of Google Test facilities + // and terminate the program since we cannot guaranty correct + // test case setup and tear-down in this case. + ReportInvalidTestCaseType(test_case_name, file, line); + posix::Abort(); + } else { + // At this point we are sure that the object we found is of the same + // type we are looking for, so we downcast it to that type + // without further checks. + typed_test_info = CheckedDowncastToActualType< + ParameterizedTestCaseInfo >(*it); + } + break; + } + } + if (typed_test_info == NULL) { + typed_test_info = new ParameterizedTestCaseInfo(test_case_name); + test_case_infos_.push_back(typed_test_info); + } + return typed_test_info; + } + void RegisterTests() { + for (TestCaseInfoContainer::iterator it = test_case_infos_.begin(); + it != test_case_infos_.end(); ++it) { + (*it)->RegisterTests(); + } + } + + private: + typedef ::std::vector TestCaseInfoContainer; + + TestCaseInfoContainer test_case_infos_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestCaseRegistry); +}; + +} // namespace internal +} // namespace testing + +#endif // GTEST_HAS_PARAM_TEST + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_ diff --git a/thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-port.h b/thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-port.h new file mode 100644 index 00000000..e9050ce5 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-port.h @@ -0,0 +1,1947 @@ +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Authors: wan@google.com (Zhanyong Wan) +// +// Low-level types and utilities for porting Google Test to various +// platforms. They are subject to change without notice. DO NOT USE +// THEM IN USER CODE. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_ + +// The user can define the following macros in the build script to +// control Google Test's behavior. If the user doesn't define a macro +// in this list, Google Test will define it. +// +// GTEST_HAS_CLONE - Define it to 1/0 to indicate that clone(2) +// is/isn't available. +// GTEST_HAS_EXCEPTIONS - Define it to 1/0 to indicate that exceptions +// are enabled. +// GTEST_HAS_GLOBAL_STRING - Define it to 1/0 to indicate that ::string +// is/isn't available (some systems define +// ::string, which is different to std::string). +// GTEST_HAS_GLOBAL_WSTRING - Define it to 1/0 to indicate that ::string +// is/isn't available (some systems define +// ::wstring, which is different to std::wstring). +// GTEST_HAS_POSIX_RE - Define it to 1/0 to indicate that POSIX regular +// expressions are/aren't available. +// GTEST_HAS_PTHREAD - Define it to 1/0 to indicate that +// is/isn't available. +// GTEST_HAS_RTTI - Define it to 1/0 to indicate that RTTI is/isn't +// enabled. +// GTEST_HAS_STD_WSTRING - Define it to 1/0 to indicate that +// std::wstring does/doesn't work (Google Test can +// be used where std::wstring is unavailable). +// GTEST_HAS_TR1_TUPLE - Define it to 1/0 to indicate tr1::tuple +// is/isn't available. +// GTEST_HAS_SEH - Define it to 1/0 to indicate whether the +// compiler supports Microsoft's "Structured +// Exception Handling". +// GTEST_HAS_STREAM_REDIRECTION +// - Define it to 1/0 to indicate whether the +// platform supports I/O stream redirection using +// dup() and dup2(). +// GTEST_USE_OWN_TR1_TUPLE - Define it to 1/0 to indicate whether Google +// Test's own tr1 tuple implementation should be +// used. Unused when the user sets +// GTEST_HAS_TR1_TUPLE to 0. +// GTEST_LANG_CXX11 - Define it to 1/0 to indicate that Google Test +// is building in C++11/C++98 mode. +// GTEST_LINKED_AS_SHARED_LIBRARY +// - Define to 1 when compiling tests that use +// Google Test as a shared library (known as +// DLL on Windows). +// GTEST_CREATE_SHARED_LIBRARY +// - Define to 1 when compiling Google Test itself +// as a shared library. + +// This header defines the following utilities: +// +// Macros indicating the current platform (defined to 1 if compiled on +// the given platform; otherwise undefined): +// GTEST_OS_AIX - IBM AIX +// GTEST_OS_CYGWIN - Cygwin +// GTEST_OS_HPUX - HP-UX +// GTEST_OS_LINUX - Linux +// GTEST_OS_LINUX_ANDROID - Google Android +// GTEST_OS_MAC - Mac OS X +// GTEST_OS_IOS - iOS +// GTEST_OS_IOS_SIMULATOR - iOS simulator +// GTEST_OS_NACL - Google Native Client (NaCl) +// GTEST_OS_OPENBSD - OpenBSD +// GTEST_OS_QNX - QNX +// GTEST_OS_SOLARIS - Sun Solaris +// GTEST_OS_SYMBIAN - Symbian +// GTEST_OS_WINDOWS - Windows (Desktop, MinGW, or Mobile) +// GTEST_OS_WINDOWS_DESKTOP - Windows Desktop +// GTEST_OS_WINDOWS_MINGW - MinGW +// GTEST_OS_WINDOWS_MOBILE - Windows Mobile +// GTEST_OS_ZOS - z/OS +// +// Among the platforms, Cygwin, Linux, Max OS X, and Windows have the +// most stable support. Since core members of the Google Test project +// don't have access to other platforms, support for them may be less +// stable. If you notice any problems on your platform, please notify +// googletestframework@googlegroups.com (patches for fixing them are +// even more welcome!). +// +// Note that it is possible that none of the GTEST_OS_* macros are defined. +// +// Macros indicating available Google Test features (defined to 1 if +// the corresponding feature is supported; otherwise undefined): +// GTEST_HAS_COMBINE - the Combine() function (for value-parameterized +// tests) +// GTEST_HAS_DEATH_TEST - death tests +// GTEST_HAS_PARAM_TEST - value-parameterized tests +// GTEST_HAS_TYPED_TEST - typed tests +// GTEST_HAS_TYPED_TEST_P - type-parameterized tests +// GTEST_USES_POSIX_RE - enhanced POSIX regex is used. Do not confuse with +// GTEST_HAS_POSIX_RE (see above) which users can +// define themselves. +// GTEST_USES_SIMPLE_RE - our own simple regex is used; +// the above two are mutually exclusive. +// GTEST_CAN_COMPARE_NULL - accepts untyped NULL in EXPECT_EQ(). +// +// Macros for basic C++ coding: +// GTEST_AMBIGUOUS_ELSE_BLOCKER_ - for disabling a gcc warning. +// GTEST_ATTRIBUTE_UNUSED_ - declares that a class' instances or a +// variable don't have to be used. +// GTEST_DISALLOW_ASSIGN_ - disables operator=. +// GTEST_DISALLOW_COPY_AND_ASSIGN_ - disables copy ctor and operator=. +// GTEST_MUST_USE_RESULT_ - declares that a function's result must be used. +// +// Synchronization: +// Mutex, MutexLock, ThreadLocal, GetThreadCount() +// - synchronization primitives. +// GTEST_IS_THREADSAFE - defined to 1 to indicate that the above +// synchronization primitives have real implementations +// and Google Test is thread-safe; or 0 otherwise. +// +// Template meta programming: +// is_pointer - as in TR1; needed on Symbian and IBM XL C/C++ only. +// IteratorTraits - partial implementation of std::iterator_traits, which +// is not available in libCstd when compiled with Sun C++. +// +// Smart pointers: +// scoped_ptr - as in TR2. +// +// Regular expressions: +// RE - a simple regular expression class using the POSIX +// Extended Regular Expression syntax on UNIX-like +// platforms, or a reduced regular exception syntax on +// other platforms, including Windows. +// +// Logging: +// GTEST_LOG_() - logs messages at the specified severity level. +// LogToStderr() - directs all log messages to stderr. +// FlushInfoLog() - flushes informational log messages. +// +// Stdout and stderr capturing: +// CaptureStdout() - starts capturing stdout. +// GetCapturedStdout() - stops capturing stdout and returns the captured +// string. +// CaptureStderr() - starts capturing stderr. +// GetCapturedStderr() - stops capturing stderr and returns the captured +// string. +// +// Integer types: +// TypeWithSize - maps an integer to a int type. +// Int32, UInt32, Int64, UInt64, TimeInMillis +// - integers of known sizes. +// BiggestInt - the biggest signed integer type. +// +// Command-line utilities: +// GTEST_FLAG() - references a flag. +// GTEST_DECLARE_*() - declares a flag. +// GTEST_DEFINE_*() - defines a flag. +// GetInjectableArgvs() - returns the command line as a vector of strings. +// +// Environment variable utilities: +// GetEnv() - gets the value of an environment variable. +// BoolFromGTestEnv() - parses a bool environment variable. +// Int32FromGTestEnv() - parses an Int32 environment variable. +// StringFromGTestEnv() - parses a string environment variable. + +#include // for isspace, etc +#include // for ptrdiff_t +#include +#include +#include +#ifndef _WIN32_WCE +# include +# include +#endif // !_WIN32_WCE + +#if defined __APPLE__ +# include +# include +#endif + +#include // NOLINT +#include // NOLINT +#include // NOLINT + +#define GTEST_DEV_EMAIL_ "googletestframework@@googlegroups.com" +#define GTEST_FLAG_PREFIX_ "gtest_" +#define GTEST_FLAG_PREFIX_DASH_ "gtest-" +#define GTEST_FLAG_PREFIX_UPPER_ "GTEST_" +#define GTEST_NAME_ "Google Test" +#define GTEST_PROJECT_URL_ "http://code.google.com/p/googletest/" + +// Determines the version of gcc that is used to compile this. +#ifdef __GNUC__ +// 40302 means version 4.3.2. +# define GTEST_GCC_VER_ \ + (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__) +#endif // __GNUC__ + +// Determines the platform on which Google Test is compiled. +#ifdef __CYGWIN__ +# define GTEST_OS_CYGWIN 1 +#elif defined __SYMBIAN32__ +# define GTEST_OS_SYMBIAN 1 +#elif defined _WIN32 +# define GTEST_OS_WINDOWS 1 +# ifdef _WIN32_WCE +# define GTEST_OS_WINDOWS_MOBILE 1 +# elif defined(__MINGW__) || defined(__MINGW32__) +# define GTEST_OS_WINDOWS_MINGW 1 +# else +# define GTEST_OS_WINDOWS_DESKTOP 1 +# endif // _WIN32_WCE +#elif defined __APPLE__ +# define GTEST_OS_MAC 1 +# if TARGET_OS_IPHONE +# define GTEST_OS_IOS 1 +# if TARGET_IPHONE_SIMULATOR +# define GTEST_OS_IOS_SIMULATOR 1 +# endif +# endif +#elif defined __linux__ +# define GTEST_OS_LINUX 1 +# if defined __ANDROID__ +# define GTEST_OS_LINUX_ANDROID 1 +# endif +#elif defined __MVS__ +# define GTEST_OS_ZOS 1 +#elif defined(__sun) && defined(__SVR4) +# define GTEST_OS_SOLARIS 1 +#elif defined(_AIX) +# define GTEST_OS_AIX 1 +#elif defined(__hpux) +# define GTEST_OS_HPUX 1 +#elif defined __native_client__ +# define GTEST_OS_NACL 1 +#elif defined __OpenBSD__ +# define GTEST_OS_OPENBSD 1 +#elif defined __QNX__ +# define GTEST_OS_QNX 1 +#endif // __CYGWIN__ + +#ifndef GTEST_LANG_CXX11 +// gcc and clang define __GXX_EXPERIMENTAL_CXX0X__ when +// -std={c,gnu}++{0x,11} is passed. The C++11 standard specifies a +// value for __cplusplus, and recent versions of clang, gcc, and +// probably other compilers set that too in C++11 mode. +# if __GXX_EXPERIMENTAL_CXX0X__ || __cplusplus >= 201103L +// Compiling in at least C++11 mode. +# define GTEST_LANG_CXX11 1 +# else +# define GTEST_LANG_CXX11 0 +# endif +#endif + +// Brings in definitions for functions used in the testing::internal::posix +// namespace (read, write, close, chdir, isatty, stat). We do not currently +// use them on Windows Mobile. +#if !GTEST_OS_WINDOWS +// This assumes that non-Windows OSes provide unistd.h. For OSes where this +// is not the case, we need to include headers that provide the functions +// mentioned above. +# include +# include +#elif !GTEST_OS_WINDOWS_MOBILE +# include +# include +#endif + +#if GTEST_OS_LINUX_ANDROID +// Used to define __ANDROID_API__ matching the target NDK API level. +# include // NOLINT +#endif + +// Defines this to true iff Google Test can use POSIX regular expressions. +#ifndef GTEST_HAS_POSIX_RE +# if GTEST_OS_LINUX_ANDROID +// On Android, is only available starting with Gingerbread. +# define GTEST_HAS_POSIX_RE (__ANDROID_API__ >= 9) +# else +# define GTEST_HAS_POSIX_RE (!GTEST_OS_WINDOWS) +# endif +#endif + +#if GTEST_HAS_POSIX_RE + +// On some platforms, needs someone to define size_t, and +// won't compile otherwise. We can #include it here as we already +// included , which is guaranteed to define size_t through +// . +# include // NOLINT + +# define GTEST_USES_POSIX_RE 1 + +#elif GTEST_OS_WINDOWS + +// is not available on Windows. Use our own simple regex +// implementation instead. +# define GTEST_USES_SIMPLE_RE 1 + +#else + +// may not be available on this platform. Use our own +// simple regex implementation instead. +# define GTEST_USES_SIMPLE_RE 1 + +#endif // GTEST_HAS_POSIX_RE + +#ifndef GTEST_HAS_EXCEPTIONS +// The user didn't tell us whether exceptions are enabled, so we need +// to figure it out. +# if defined(_MSC_VER) || defined(__BORLANDC__) +// MSVC's and C++Builder's implementations of the STL use the _HAS_EXCEPTIONS +// macro to enable exceptions, so we'll do the same. +// Assumes that exceptions are enabled by default. +# ifndef _HAS_EXCEPTIONS +# define _HAS_EXCEPTIONS 1 +# endif // _HAS_EXCEPTIONS +# define GTEST_HAS_EXCEPTIONS _HAS_EXCEPTIONS +# elif defined(__GNUC__) && __EXCEPTIONS +// gcc defines __EXCEPTIONS to 1 iff exceptions are enabled. +# define GTEST_HAS_EXCEPTIONS 1 +# elif defined(__SUNPRO_CC) +// Sun Pro CC supports exceptions. However, there is no compile-time way of +// detecting whether they are enabled or not. Therefore, we assume that +// they are enabled unless the user tells us otherwise. +# define GTEST_HAS_EXCEPTIONS 1 +# elif defined(__IBMCPP__) && __EXCEPTIONS +// xlC defines __EXCEPTIONS to 1 iff exceptions are enabled. +# define GTEST_HAS_EXCEPTIONS 1 +# elif defined(__HP_aCC) +// Exception handling is in effect by default in HP aCC compiler. It has to +// be turned of by +noeh compiler option if desired. +# define GTEST_HAS_EXCEPTIONS 1 +# else +// For other compilers, we assume exceptions are disabled to be +// conservative. +# define GTEST_HAS_EXCEPTIONS 0 +# endif // defined(_MSC_VER) || defined(__BORLANDC__) +#endif // GTEST_HAS_EXCEPTIONS + +#if !defined(GTEST_HAS_STD_STRING) +// Even though we don't use this macro any longer, we keep it in case +// some clients still depend on it. +# define GTEST_HAS_STD_STRING 1 +#elif !GTEST_HAS_STD_STRING +// The user told us that ::std::string isn't available. +# error "Google Test cannot be used where ::std::string isn't available." +#endif // !defined(GTEST_HAS_STD_STRING) + +#ifndef GTEST_HAS_GLOBAL_STRING +// The user didn't tell us whether ::string is available, so we need +// to figure it out. + +# define GTEST_HAS_GLOBAL_STRING 0 + +#endif // GTEST_HAS_GLOBAL_STRING + +#ifndef GTEST_HAS_STD_WSTRING +// The user didn't tell us whether ::std::wstring is available, so we need +// to figure it out. +// TODO(wan@google.com): uses autoconf to detect whether ::std::wstring +// is available. + +// Cygwin 1.7 and below doesn't support ::std::wstring. +// Solaris' libc++ doesn't support it either. Android has +// no support for it at least as recent as Froyo (2.2). +# define GTEST_HAS_STD_WSTRING \ + (!(GTEST_OS_LINUX_ANDROID || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS)) + +#endif // GTEST_HAS_STD_WSTRING + +#ifndef GTEST_HAS_GLOBAL_WSTRING +// The user didn't tell us whether ::wstring is available, so we need +// to figure it out. +# define GTEST_HAS_GLOBAL_WSTRING \ + (GTEST_HAS_STD_WSTRING && GTEST_HAS_GLOBAL_STRING) +#endif // GTEST_HAS_GLOBAL_WSTRING + +// Determines whether RTTI is available. +#ifndef GTEST_HAS_RTTI +// The user didn't tell us whether RTTI is enabled, so we need to +// figure it out. + +# ifdef _MSC_VER + +# ifdef _CPPRTTI // MSVC defines this macro iff RTTI is enabled. +# define GTEST_HAS_RTTI 1 +# else +# define GTEST_HAS_RTTI 0 +# endif + +// Starting with version 4.3.2, gcc defines __GXX_RTTI iff RTTI is enabled. +# elif defined(__GNUC__) && (GTEST_GCC_VER_ >= 40302) + +# ifdef __GXX_RTTI +// When building against STLport with the Android NDK and with +// -frtti -fno-exceptions, the build fails at link time with undefined +// references to __cxa_bad_typeid. Note sure if STL or toolchain bug, +// so disable RTTI when detected. +# if GTEST_OS_LINUX_ANDROID && defined(_STLPORT_MAJOR) && \ + !defined(__EXCEPTIONS) +# define GTEST_HAS_RTTI 0 +# else +# define GTEST_HAS_RTTI 1 +# endif // GTEST_OS_LINUX_ANDROID && __STLPORT_MAJOR && !__EXCEPTIONS +# else +# define GTEST_HAS_RTTI 0 +# endif // __GXX_RTTI + +// Clang defines __GXX_RTTI starting with version 3.0, but its manual recommends +// using has_feature instead. has_feature(cxx_rtti) is supported since 2.7, the +// first version with C++ support. +# elif defined(__clang__) + +# define GTEST_HAS_RTTI __has_feature(cxx_rtti) + +// Starting with version 9.0 IBM Visual Age defines __RTTI_ALL__ to 1 if +// both the typeid and dynamic_cast features are present. +# elif defined(__IBMCPP__) && (__IBMCPP__ >= 900) + +# ifdef __RTTI_ALL__ +# define GTEST_HAS_RTTI 1 +# else +# define GTEST_HAS_RTTI 0 +# endif + +# else + +// For all other compilers, we assume RTTI is enabled. +# define GTEST_HAS_RTTI 1 + +# endif // _MSC_VER + +#endif // GTEST_HAS_RTTI + +// It's this header's responsibility to #include when RTTI +// is enabled. +#if GTEST_HAS_RTTI +# include +#endif + +// Determines whether Google Test can use the pthreads library. +#ifndef GTEST_HAS_PTHREAD +// The user didn't tell us explicitly, so we assume pthreads support is +// available on Linux and Mac. +// +// To disable threading support in Google Test, add -DGTEST_HAS_PTHREAD=0 +// to your compiler flags. +# define GTEST_HAS_PTHREAD (GTEST_OS_LINUX || GTEST_OS_MAC || GTEST_OS_HPUX \ + || GTEST_OS_QNX) +#endif // GTEST_HAS_PTHREAD + +#ifdef GTEST_OS_WINDOWS_MINGW +// Disable pthread support for MinGW for now. To enable it, we need to: +// 1) Implement ThreadLocal object under MinGW. The internal pthread calls are +// not available on MinGW. +// 2) Replace the nanosleep() with usleep() for MinGW. +#undef GTEST_HAS_PTHREAD +#define GTEST_HAS_PTHREAD 0 +#endif + +#if GTEST_HAS_PTHREAD +// gtest-port.h guarantees to #include when GTEST_HAS_PTHREAD is +// true. +# include // NOLINT + +// For timespec and nanosleep, used below. +# include // NOLINT +#endif + +// Determines whether Google Test can use tr1/tuple. You can define +// this macro to 0 to prevent Google Test from using tuple (any +// feature depending on tuple with be disabled in this mode). +#ifndef GTEST_HAS_TR1_TUPLE +# if GTEST_OS_LINUX_ANDROID && defined(_STLPORT_MAJOR) +// STLport, provided with the Android NDK, has neither or . +# define GTEST_HAS_TR1_TUPLE 0 +# else +// The user didn't tell us not to do it, so we assume it's OK. +# define GTEST_HAS_TR1_TUPLE 1 +# endif +#endif // GTEST_HAS_TR1_TUPLE + +// Determines whether Google Test's own tr1 tuple implementation +// should be used. +#ifndef GTEST_USE_OWN_TR1_TUPLE +// The user didn't tell us, so we need to figure it out. + +// We use our own TR1 tuple if we aren't sure the user has an +// implementation of it already. At this time, libstdc++ 4.0.0+ and +// MSVC 2010 are the only mainstream standard libraries that come +// with a TR1 tuple implementation. NVIDIA's CUDA NVCC compiler +// pretends to be GCC by defining __GNUC__ and friends, but cannot +// compile GCC's tuple implementation. MSVC 2008 (9.0) provides TR1 +// tuple in a 323 MB Feature Pack download, which we cannot assume the +// user has. QNX's QCC compiler is a modified GCC but it doesn't +// support TR1 tuple. libc++ only provides std::tuple, in C++11 mode, +// and it can be used with some compilers that define __GNUC__. +# if (defined(__GNUC__) && !defined(__CUDACC__) && (GTEST_GCC_VER_ >= 40000) \ + && !GTEST_OS_QNX && !defined(_LIBCPP_VERSION)) || _MSC_VER >= 1600 +# define GTEST_ENV_HAS_TR1_TUPLE_ 1 +# endif + +// C++11 specifies that provides std::tuple. Use that if gtest is used +// in C++11 mode and libstdc++ isn't very old (binaries targeting OS X 10.6 +// can build with clang but need to use gcc4.2's libstdc++). +# if GTEST_LANG_CXX11 && (!defined(__GLIBCXX__) || __GLIBCXX__ > 20110325) +# define GTEST_ENV_HAS_STD_TUPLE_ 1 +# endif + +# if GTEST_ENV_HAS_TR1_TUPLE_ || GTEST_ENV_HAS_STD_TUPLE_ +# define GTEST_USE_OWN_TR1_TUPLE 0 +# else +# define GTEST_USE_OWN_TR1_TUPLE 1 +# endif + +#endif // GTEST_USE_OWN_TR1_TUPLE + +// To avoid conditional compilation everywhere, we make it +// gtest-port.h's responsibility to #include the header implementing +// tr1/tuple. +#if GTEST_HAS_TR1_TUPLE + +# if GTEST_USE_OWN_TR1_TUPLE +# include "gtest/internal/gtest-tuple.h" +# elif GTEST_ENV_HAS_STD_TUPLE_ +# include +// C++11 puts its tuple into the ::std namespace rather than +// ::std::tr1. gtest expects tuple to live in ::std::tr1, so put it there. +// This causes undefined behavior, but supported compilers react in +// the way we intend. +namespace std { +namespace tr1 { +using ::std::get; +using ::std::make_tuple; +using ::std::tuple; +using ::std::tuple_element; +using ::std::tuple_size; +} +} + +# elif GTEST_OS_SYMBIAN + +// On Symbian, BOOST_HAS_TR1_TUPLE causes Boost's TR1 tuple library to +// use STLport's tuple implementation, which unfortunately doesn't +// work as the copy of STLport distributed with Symbian is incomplete. +// By making sure BOOST_HAS_TR1_TUPLE is undefined, we force Boost to +// use its own tuple implementation. +# ifdef BOOST_HAS_TR1_TUPLE +# undef BOOST_HAS_TR1_TUPLE +# endif // BOOST_HAS_TR1_TUPLE + +// This prevents , which defines +// BOOST_HAS_TR1_TUPLE, from being #included by Boost's . +# define BOOST_TR1_DETAIL_CONFIG_HPP_INCLUDED +# include + +# elif defined(__GNUC__) && (GTEST_GCC_VER_ >= 40000) +// GCC 4.0+ implements tr1/tuple in the header. This does +// not conform to the TR1 spec, which requires the header to be . + +# if !GTEST_HAS_RTTI && GTEST_GCC_VER_ < 40302 +// Until version 4.3.2, gcc has a bug that causes , +// which is #included by , to not compile when RTTI is +// disabled. _TR1_FUNCTIONAL is the header guard for +// . Hence the following #define is a hack to prevent +// from being included. +# define _TR1_FUNCTIONAL 1 +# include +# undef _TR1_FUNCTIONAL // Allows the user to #include + // if he chooses to. +# else +# include // NOLINT +# endif // !GTEST_HAS_RTTI && GTEST_GCC_VER_ < 40302 + +# else +// If the compiler is not GCC 4.0+, we assume the user is using a +// spec-conforming TR1 implementation. +# include // NOLINT +# endif // GTEST_USE_OWN_TR1_TUPLE + +#endif // GTEST_HAS_TR1_TUPLE + +// Determines whether clone(2) is supported. +// Usually it will only be available on Linux, excluding +// Linux on the Itanium architecture. +// Also see http://linux.die.net/man/2/clone. +#ifndef GTEST_HAS_CLONE +// The user didn't tell us, so we need to figure it out. + +# if GTEST_OS_LINUX && !defined(__ia64__) +# if GTEST_OS_LINUX_ANDROID +// On Android, clone() is only available on ARM starting with Gingerbread. +# if defined(__arm__) && __ANDROID_API__ >= 9 +# define GTEST_HAS_CLONE 1 +# else +# define GTEST_HAS_CLONE 0 +# endif +# else +# define GTEST_HAS_CLONE 1 +# endif +# else +# define GTEST_HAS_CLONE 0 +# endif // GTEST_OS_LINUX && !defined(__ia64__) + +#endif // GTEST_HAS_CLONE + +// Determines whether to support stream redirection. This is used to test +// output correctness and to implement death tests. +#ifndef GTEST_HAS_STREAM_REDIRECTION +// By default, we assume that stream redirection is supported on all +// platforms except known mobile ones. +# if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN +# define GTEST_HAS_STREAM_REDIRECTION 0 +# else +# define GTEST_HAS_STREAM_REDIRECTION 1 +# endif // !GTEST_OS_WINDOWS_MOBILE && !GTEST_OS_SYMBIAN +#endif // GTEST_HAS_STREAM_REDIRECTION + +// Determines whether to support death tests. +// Google Test does not support death tests for VC 7.1 and earlier as +// abort() in a VC 7.1 application compiled as GUI in debug config +// pops up a dialog window that cannot be suppressed programmatically. +#if (GTEST_OS_LINUX || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS || \ + (GTEST_OS_MAC && !GTEST_OS_IOS) || GTEST_OS_IOS_SIMULATOR || \ + (GTEST_OS_WINDOWS_DESKTOP && _MSC_VER >= 1400) || \ + GTEST_OS_WINDOWS_MINGW || GTEST_OS_AIX || GTEST_OS_HPUX || \ + GTEST_OS_OPENBSD || GTEST_OS_QNX) +# define GTEST_HAS_DEATH_TEST 1 +# include // NOLINT +#endif + +// We don't support MSVC 7.1 with exceptions disabled now. Therefore +// all the compilers we care about are adequate for supporting +// value-parameterized tests. +#define GTEST_HAS_PARAM_TEST 1 + +// Determines whether to support type-driven tests. + +// Typed tests need and variadic macros, which GCC, VC++ 8.0, +// Sun Pro CC, IBM Visual Age, and HP aCC support. +#if defined(__GNUC__) || (_MSC_VER >= 1400) || defined(__SUNPRO_CC) || \ + defined(__IBMCPP__) || defined(__HP_aCC) +# define GTEST_HAS_TYPED_TEST 1 +# define GTEST_HAS_TYPED_TEST_P 1 +#endif + +// Determines whether to support Combine(). This only makes sense when +// value-parameterized tests are enabled. The implementation doesn't +// work on Sun Studio since it doesn't understand templated conversion +// operators. +#if GTEST_HAS_PARAM_TEST && GTEST_HAS_TR1_TUPLE && !defined(__SUNPRO_CC) +# define GTEST_HAS_COMBINE 1 +#endif + +// Determines whether the system compiler uses UTF-16 for encoding wide strings. +#define GTEST_WIDE_STRING_USES_UTF16_ \ + (GTEST_OS_WINDOWS || GTEST_OS_CYGWIN || GTEST_OS_SYMBIAN || GTEST_OS_AIX) + +// Determines whether test results can be streamed to a socket. +#if GTEST_OS_LINUX +# define GTEST_CAN_STREAM_RESULTS_ 1 +#endif + +// Defines some utility macros. + +// The GNU compiler emits a warning if nested "if" statements are followed by +// an "else" statement and braces are not used to explicitly disambiguate the +// "else" binding. This leads to problems with code like: +// +// if (gate) +// ASSERT_*(condition) << "Some message"; +// +// The "switch (0) case 0:" idiom is used to suppress this. +#ifdef __INTEL_COMPILER +# define GTEST_AMBIGUOUS_ELSE_BLOCKER_ +#else +# define GTEST_AMBIGUOUS_ELSE_BLOCKER_ switch (0) case 0: default: // NOLINT +#endif + +// Use this annotation at the end of a struct/class definition to +// prevent the compiler from optimizing away instances that are never +// used. This is useful when all interesting logic happens inside the +// c'tor and / or d'tor. Example: +// +// struct Foo { +// Foo() { ... } +// } GTEST_ATTRIBUTE_UNUSED_; +// +// Also use it after a variable or parameter declaration to tell the +// compiler the variable/parameter does not have to be used. +#if defined(__GNUC__) && !defined(COMPILER_ICC) +# define GTEST_ATTRIBUTE_UNUSED_ __attribute__ ((unused)) +#else +# define GTEST_ATTRIBUTE_UNUSED_ +#endif + +// A macro to disallow operator= +// This should be used in the private: declarations for a class. +#define GTEST_DISALLOW_ASSIGN_(type)\ + void operator=(type const &) + +// A macro to disallow copy constructor and operator= +// This should be used in the private: declarations for a class. +#define GTEST_DISALLOW_COPY_AND_ASSIGN_(type)\ + type(type const &);\ + GTEST_DISALLOW_ASSIGN_(type) + +// Tell the compiler to warn about unused return values for functions declared +// with this macro. The macro should be used on function declarations +// following the argument list: +// +// Sprocket* AllocateSprocket() GTEST_MUST_USE_RESULT_; +#if defined(__GNUC__) && (GTEST_GCC_VER_ >= 30400) && !defined(COMPILER_ICC) +# define GTEST_MUST_USE_RESULT_ __attribute__ ((warn_unused_result)) +#else +# define GTEST_MUST_USE_RESULT_ +#endif // __GNUC__ && (GTEST_GCC_VER_ >= 30400) && !COMPILER_ICC + +// Determine whether the compiler supports Microsoft's Structured Exception +// Handling. This is supported by several Windows compilers but generally +// does not exist on any other system. +#ifndef GTEST_HAS_SEH +// The user didn't tell us, so we need to figure it out. + +# if defined(_MSC_VER) || defined(__BORLANDC__) +// These two compilers are known to support SEH. +# define GTEST_HAS_SEH 1 +# else +// Assume no SEH. +# define GTEST_HAS_SEH 0 +# endif + +#endif // GTEST_HAS_SEH + +#ifdef _MSC_VER + +# if GTEST_LINKED_AS_SHARED_LIBRARY +# define GTEST_API_ __declspec(dllimport) +# elif GTEST_CREATE_SHARED_LIBRARY +# define GTEST_API_ __declspec(dllexport) +# endif + +#endif // _MSC_VER + +#ifndef GTEST_API_ +# define GTEST_API_ +#endif + +#ifdef __GNUC__ +// Ask the compiler to never inline a given function. +# define GTEST_NO_INLINE_ __attribute__((noinline)) +#else +# define GTEST_NO_INLINE_ +#endif + +// _LIBCPP_VERSION is defined by the libc++ library from the LLVM project. +#if defined(__GLIBCXX__) || defined(_LIBCPP_VERSION) +# define GTEST_HAS_CXXABI_H_ 1 +#else +# define GTEST_HAS_CXXABI_H_ 0 +#endif + +namespace testing { + +class Message; + +namespace internal { + +// The GTEST_COMPILE_ASSERT_ macro can be used to verify that a compile time +// expression is true. For example, you could use it to verify the +// size of a static array: +// +// GTEST_COMPILE_ASSERT_(ARRAYSIZE(content_type_names) == CONTENT_NUM_TYPES, +// content_type_names_incorrect_size); +// +// or to make sure a struct is smaller than a certain size: +// +// GTEST_COMPILE_ASSERT_(sizeof(foo) < 128, foo_too_large); +// +// The second argument to the macro is the name of the variable. If +// the expression is false, most compilers will issue a warning/error +// containing the name of the variable. + +template +struct CompileAssert { +}; + +#define GTEST_COMPILE_ASSERT_(expr, msg) \ + typedef ::testing::internal::CompileAssert<(bool(expr))> \ + msg[bool(expr) ? 1 : -1] + +// Implementation details of GTEST_COMPILE_ASSERT_: +// +// - GTEST_COMPILE_ASSERT_ works by defining an array type that has -1 +// elements (and thus is invalid) when the expression is false. +// +// - The simpler definition +// +// #define GTEST_COMPILE_ASSERT_(expr, msg) typedef char msg[(expr) ? 1 : -1] +// +// does not work, as gcc supports variable-length arrays whose sizes +// are determined at run-time (this is gcc's extension and not part +// of the C++ standard). As a result, gcc fails to reject the +// following code with the simple definition: +// +// int foo; +// GTEST_COMPILE_ASSERT_(foo, msg); // not supposed to compile as foo is +// // not a compile-time constant. +// +// - By using the type CompileAssert<(bool(expr))>, we ensures that +// expr is a compile-time constant. (Template arguments must be +// determined at compile-time.) +// +// - The outter parentheses in CompileAssert<(bool(expr))> are necessary +// to work around a bug in gcc 3.4.4 and 4.0.1. If we had written +// +// CompileAssert +// +// instead, these compilers will refuse to compile +// +// GTEST_COMPILE_ASSERT_(5 > 0, some_message); +// +// (They seem to think the ">" in "5 > 0" marks the end of the +// template argument list.) +// +// - The array size is (bool(expr) ? 1 : -1), instead of simply +// +// ((expr) ? 1 : -1). +// +// This is to avoid running into a bug in MS VC 7.1, which +// causes ((0.0) ? 1 : -1) to incorrectly evaluate to 1. + +// StaticAssertTypeEqHelper is used by StaticAssertTypeEq defined in gtest.h. +// +// This template is declared, but intentionally undefined. +template +struct StaticAssertTypeEqHelper; + +template +struct StaticAssertTypeEqHelper {}; + +#if GTEST_HAS_GLOBAL_STRING +typedef ::string string; +#else +typedef ::std::string string; +#endif // GTEST_HAS_GLOBAL_STRING + +#if GTEST_HAS_GLOBAL_WSTRING +typedef ::wstring wstring; +#elif GTEST_HAS_STD_WSTRING +typedef ::std::wstring wstring; +#endif // GTEST_HAS_GLOBAL_WSTRING + +// A helper for suppressing warnings on constant condition. It just +// returns 'condition'. +GTEST_API_ bool IsTrue(bool condition); + +// Defines scoped_ptr. + +// This implementation of scoped_ptr is PARTIAL - it only contains +// enough stuff to satisfy Google Test's need. +template +class scoped_ptr { + public: + typedef T element_type; + + explicit scoped_ptr(T* p = NULL) : ptr_(p) {} + ~scoped_ptr() { reset(); } + + T& operator*() const { return *ptr_; } + T* operator->() const { return ptr_; } + T* get() const { return ptr_; } + + T* release() { + T* const ptr = ptr_; + ptr_ = NULL; + return ptr; + } + + void reset(T* p = NULL) { + if (p != ptr_) { + if (IsTrue(sizeof(T) > 0)) { // Makes sure T is a complete type. + delete ptr_; + } + ptr_ = p; + } + } + + private: + T* ptr_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(scoped_ptr); +}; + +// Defines RE. + +// A simple C++ wrapper for . It uses the POSIX Extended +// Regular Expression syntax. +class GTEST_API_ RE { + public: + // A copy constructor is required by the Standard to initialize object + // references from r-values. + RE(const RE& other) { Init(other.pattern()); } + + // Constructs an RE from a string. + RE(const ::std::string& regex) { Init(regex.c_str()); } // NOLINT + +#if GTEST_HAS_GLOBAL_STRING + + RE(const ::string& regex) { Init(regex.c_str()); } // NOLINT + +#endif // GTEST_HAS_GLOBAL_STRING + + RE(const char* regex) { Init(regex); } // NOLINT + ~RE(); + + // Returns the string representation of the regex. + const char* pattern() const { return pattern_; } + + // FullMatch(str, re) returns true iff regular expression re matches + // the entire str. + // PartialMatch(str, re) returns true iff regular expression re + // matches a substring of str (including str itself). + // + // TODO(wan@google.com): make FullMatch() and PartialMatch() work + // when str contains NUL characters. + static bool FullMatch(const ::std::string& str, const RE& re) { + return FullMatch(str.c_str(), re); + } + static bool PartialMatch(const ::std::string& str, const RE& re) { + return PartialMatch(str.c_str(), re); + } + +#if GTEST_HAS_GLOBAL_STRING + + static bool FullMatch(const ::string& str, const RE& re) { + return FullMatch(str.c_str(), re); + } + static bool PartialMatch(const ::string& str, const RE& re) { + return PartialMatch(str.c_str(), re); + } + +#endif // GTEST_HAS_GLOBAL_STRING + + static bool FullMatch(const char* str, const RE& re); + static bool PartialMatch(const char* str, const RE& re); + + private: + void Init(const char* regex); + + // We use a const char* instead of an std::string, as Google Test used to be + // used where std::string is not available. TODO(wan@google.com): change to + // std::string. + const char* pattern_; + bool is_valid_; + +#if GTEST_USES_POSIX_RE + + regex_t full_regex_; // For FullMatch(). + regex_t partial_regex_; // For PartialMatch(). + +#else // GTEST_USES_SIMPLE_RE + + const char* full_pattern_; // For FullMatch(); + +#endif + + GTEST_DISALLOW_ASSIGN_(RE); +}; + +// Formats a source file path and a line number as they would appear +// in an error message from the compiler used to compile this code. +GTEST_API_ ::std::string FormatFileLocation(const char* file, int line); + +// Formats a file location for compiler-independent XML output. +// Although this function is not platform dependent, we put it next to +// FormatFileLocation in order to contrast the two functions. +GTEST_API_ ::std::string FormatCompilerIndependentFileLocation(const char* file, + int line); + +// Defines logging utilities: +// GTEST_LOG_(severity) - logs messages at the specified severity level. The +// message itself is streamed into the macro. +// LogToStderr() - directs all log messages to stderr. +// FlushInfoLog() - flushes informational log messages. + +enum GTestLogSeverity { + GTEST_INFO, + GTEST_WARNING, + GTEST_ERROR, + GTEST_FATAL +}; + +// Formats log entry severity, provides a stream object for streaming the +// log message, and terminates the message with a newline when going out of +// scope. +class GTEST_API_ GTestLog { + public: + GTestLog(GTestLogSeverity severity, const char* file, int line); + + // Flushes the buffers and, if severity is GTEST_FATAL, aborts the program. + ~GTestLog(); + + ::std::ostream& GetStream() { return ::std::cerr; } + + private: + const GTestLogSeverity severity_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestLog); +}; + +#define GTEST_LOG_(severity) \ + ::testing::internal::GTestLog(::testing::internal::GTEST_##severity, \ + __FILE__, __LINE__).GetStream() + +inline void LogToStderr() {} +inline void FlushInfoLog() { fflush(NULL); } + +// INTERNAL IMPLEMENTATION - DO NOT USE. +// +// GTEST_CHECK_ is an all-mode assert. It aborts the program if the condition +// is not satisfied. +// Synopsys: +// GTEST_CHECK_(boolean_condition); +// or +// GTEST_CHECK_(boolean_condition) << "Additional message"; +// +// This checks the condition and if the condition is not satisfied +// it prints message about the condition violation, including the +// condition itself, plus additional message streamed into it, if any, +// and then it aborts the program. It aborts the program irrespective of +// whether it is built in the debug mode or not. +#define GTEST_CHECK_(condition) \ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \ + if (::testing::internal::IsTrue(condition)) \ + ; \ + else \ + GTEST_LOG_(FATAL) << "Condition " #condition " failed. " + +// An all-mode assert to verify that the given POSIX-style function +// call returns 0 (indicating success). Known limitation: this +// doesn't expand to a balanced 'if' statement, so enclose the macro +// in {} if you need to use it as the only statement in an 'if' +// branch. +#define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \ + if (const int gtest_error = (posix_call)) \ + GTEST_LOG_(FATAL) << #posix_call << "failed with error " \ + << gtest_error + +// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE. +// +// Use ImplicitCast_ as a safe version of static_cast for upcasting in +// the type hierarchy (e.g. casting a Foo* to a SuperclassOfFoo* or a +// const Foo*). When you use ImplicitCast_, the compiler checks that +// the cast is safe. Such explicit ImplicitCast_s are necessary in +// surprisingly many situations where C++ demands an exact type match +// instead of an argument type convertable to a target type. +// +// The syntax for using ImplicitCast_ is the same as for static_cast: +// +// ImplicitCast_(expr) +// +// ImplicitCast_ would have been part of the C++ standard library, +// but the proposal was submitted too late. It will probably make +// its way into the language in the future. +// +// This relatively ugly name is intentional. It prevents clashes with +// similar functions users may have (e.g., implicit_cast). The internal +// namespace alone is not enough because the function can be found by ADL. +template +inline To ImplicitCast_(To x) { return x; } + +// When you upcast (that is, cast a pointer from type Foo to type +// SuperclassOfFoo), it's fine to use ImplicitCast_<>, since upcasts +// always succeed. When you downcast (that is, cast a pointer from +// type Foo to type SubclassOfFoo), static_cast<> isn't safe, because +// how do you know the pointer is really of type SubclassOfFoo? It +// could be a bare Foo, or of type DifferentSubclassOfFoo. Thus, +// when you downcast, you should use this macro. In debug mode, we +// use dynamic_cast<> to double-check the downcast is legal (we die +// if it's not). In normal mode, we do the efficient static_cast<> +// instead. Thus, it's important to test in debug mode to make sure +// the cast is legal! +// This is the only place in the code we should use dynamic_cast<>. +// In particular, you SHOULDN'T be using dynamic_cast<> in order to +// do RTTI (eg code like this: +// if (dynamic_cast(foo)) HandleASubclass1Object(foo); +// if (dynamic_cast(foo)) HandleASubclass2Object(foo); +// You should design the code some other way not to need this. +// +// This relatively ugly name is intentional. It prevents clashes with +// similar functions users may have (e.g., down_cast). The internal +// namespace alone is not enough because the function can be found by ADL. +template // use like this: DownCast_(foo); +inline To DownCast_(From* f) { // so we only accept pointers + // Ensures that To is a sub-type of From *. This test is here only + // for compile-time type checking, and has no overhead in an + // optimized build at run-time, as it will be optimized away + // completely. + if (false) { + const To to = NULL; + ::testing::internal::ImplicitCast_(to); + } + +#if GTEST_HAS_RTTI + // RTTI: debug mode only! + GTEST_CHECK_(f == NULL || dynamic_cast(f) != NULL); +#endif + return static_cast(f); +} + +// Downcasts the pointer of type Base to Derived. +// Derived must be a subclass of Base. The parameter MUST +// point to a class of type Derived, not any subclass of it. +// When RTTI is available, the function performs a runtime +// check to enforce this. +template +Derived* CheckedDowncastToActualType(Base* base) { +#if GTEST_HAS_RTTI + GTEST_CHECK_(typeid(*base) == typeid(Derived)); + return dynamic_cast(base); // NOLINT +#else + return static_cast(base); // Poor man's downcast. +#endif +} + +#if GTEST_HAS_STREAM_REDIRECTION + +// Defines the stderr capturer: +// CaptureStdout - starts capturing stdout. +// GetCapturedStdout - stops capturing stdout and returns the captured string. +// CaptureStderr - starts capturing stderr. +// GetCapturedStderr - stops capturing stderr and returns the captured string. +// +GTEST_API_ void CaptureStdout(); +GTEST_API_ std::string GetCapturedStdout(); +GTEST_API_ void CaptureStderr(); +GTEST_API_ std::string GetCapturedStderr(); + +#endif // GTEST_HAS_STREAM_REDIRECTION + + +#if GTEST_HAS_DEATH_TEST + +const ::std::vector& GetInjectableArgvs(); +void SetInjectableArgvs(const ::std::vector* + new_argvs); + +// A copy of all command line arguments. Set by InitGoogleTest(). +extern ::std::vector g_argvs; + +#endif // GTEST_HAS_DEATH_TEST + +// Defines synchronization primitives. + +#if GTEST_HAS_PTHREAD + +// Sleeps for (roughly) n milli-seconds. This function is only for +// testing Google Test's own constructs. Don't use it in user tests, +// either directly or indirectly. +inline void SleepMilliseconds(int n) { + const timespec time = { + 0, // 0 seconds. + n * 1000L * 1000L, // And n ms. + }; + nanosleep(&time, NULL); +} + +// Allows a controller thread to pause execution of newly created +// threads until notified. Instances of this class must be created +// and destroyed in the controller thread. +// +// This class is only for testing Google Test's own constructs. Do not +// use it in user tests, either directly or indirectly. +class Notification { + public: + Notification() : notified_(false) { + GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_init(&mutex_, NULL)); + } + ~Notification() { + pthread_mutex_destroy(&mutex_); + } + + // Notifies all threads created with this notification to start. Must + // be called from the controller thread. + void Notify() { + pthread_mutex_lock(&mutex_); + notified_ = true; + pthread_mutex_unlock(&mutex_); + } + + // Blocks until the controller thread notifies. Must be called from a test + // thread. + void WaitForNotification() { + for (;;) { + pthread_mutex_lock(&mutex_); + const bool notified = notified_; + pthread_mutex_unlock(&mutex_); + if (notified) + break; + SleepMilliseconds(10); + } + } + + private: + pthread_mutex_t mutex_; + bool notified_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(Notification); +}; + +// As a C-function, ThreadFuncWithCLinkage cannot be templated itself. +// Consequently, it cannot select a correct instantiation of ThreadWithParam +// in order to call its Run(). Introducing ThreadWithParamBase as a +// non-templated base class for ThreadWithParam allows us to bypass this +// problem. +class ThreadWithParamBase { + public: + virtual ~ThreadWithParamBase() {} + virtual void Run() = 0; +}; + +// pthread_create() accepts a pointer to a function type with the C linkage. +// According to the Standard (7.5/1), function types with different linkages +// are different even if they are otherwise identical. Some compilers (for +// example, SunStudio) treat them as different types. Since class methods +// cannot be defined with C-linkage we need to define a free C-function to +// pass into pthread_create(). +extern "C" inline void* ThreadFuncWithCLinkage(void* thread) { + static_cast(thread)->Run(); + return NULL; +} + +// Helper class for testing Google Test's multi-threading constructs. +// To use it, write: +// +// void ThreadFunc(int param) { /* Do things with param */ } +// Notification thread_can_start; +// ... +// // The thread_can_start parameter is optional; you can supply NULL. +// ThreadWithParam thread(&ThreadFunc, 5, &thread_can_start); +// thread_can_start.Notify(); +// +// These classes are only for testing Google Test's own constructs. Do +// not use them in user tests, either directly or indirectly. +template +class ThreadWithParam : public ThreadWithParamBase { + public: + typedef void (*UserThreadFunc)(T); + + ThreadWithParam( + UserThreadFunc func, T param, Notification* thread_can_start) + : func_(func), + param_(param), + thread_can_start_(thread_can_start), + finished_(false) { + ThreadWithParamBase* const base = this; + // The thread can be created only after all fields except thread_ + // have been initialized. + GTEST_CHECK_POSIX_SUCCESS_( + pthread_create(&thread_, 0, &ThreadFuncWithCLinkage, base)); + } + ~ThreadWithParam() { Join(); } + + void Join() { + if (!finished_) { + GTEST_CHECK_POSIX_SUCCESS_(pthread_join(thread_, 0)); + finished_ = true; + } + } + + virtual void Run() { + if (thread_can_start_ != NULL) + thread_can_start_->WaitForNotification(); + func_(param_); + } + + private: + const UserThreadFunc func_; // User-supplied thread function. + const T param_; // User-supplied parameter to the thread function. + // When non-NULL, used to block execution until the controller thread + // notifies. + Notification* const thread_can_start_; + bool finished_; // true iff we know that the thread function has finished. + pthread_t thread_; // The native thread object. + + GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParam); +}; + +// MutexBase and Mutex implement mutex on pthreads-based platforms. They +// are used in conjunction with class MutexLock: +// +// Mutex mutex; +// ... +// MutexLock lock(&mutex); // Acquires the mutex and releases it at the end +// // of the current scope. +// +// MutexBase implements behavior for both statically and dynamically +// allocated mutexes. Do not use MutexBase directly. Instead, write +// the following to define a static mutex: +// +// GTEST_DEFINE_STATIC_MUTEX_(g_some_mutex); +// +// You can forward declare a static mutex like this: +// +// GTEST_DECLARE_STATIC_MUTEX_(g_some_mutex); +// +// To create a dynamic mutex, just define an object of type Mutex. +class MutexBase { + public: + // Acquires this mutex. + void Lock() { + GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_lock(&mutex_)); + owner_ = pthread_self(); + has_owner_ = true; + } + + // Releases this mutex. + void Unlock() { + // Since the lock is being released the owner_ field should no longer be + // considered valid. We don't protect writing to has_owner_ here, as it's + // the caller's responsibility to ensure that the current thread holds the + // mutex when this is called. + has_owner_ = false; + GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_unlock(&mutex_)); + } + + // Does nothing if the current thread holds the mutex. Otherwise, crashes + // with high probability. + void AssertHeld() const { + GTEST_CHECK_(has_owner_ && pthread_equal(owner_, pthread_self())) + << "The current thread is not holding the mutex @" << this; + } + + // A static mutex may be used before main() is entered. It may even + // be used before the dynamic initialization stage. Therefore we + // must be able to initialize a static mutex object at link time. + // This means MutexBase has to be a POD and its member variables + // have to be public. + public: + pthread_mutex_t mutex_; // The underlying pthread mutex. + // has_owner_ indicates whether the owner_ field below contains a valid thread + // ID and is therefore safe to inspect (e.g., to use in pthread_equal()). All + // accesses to the owner_ field should be protected by a check of this field. + // An alternative might be to memset() owner_ to all zeros, but there's no + // guarantee that a zero'd pthread_t is necessarily invalid or even different + // from pthread_self(). + bool has_owner_; + pthread_t owner_; // The thread holding the mutex. +}; + +// Forward-declares a static mutex. +# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \ + extern ::testing::internal::MutexBase mutex + +// Defines and statically (i.e. at link time) initializes a static mutex. +// The initialization list here does not explicitly initialize each field, +// instead relying on default initialization for the unspecified fields. In +// particular, the owner_ field (a pthread_t) is not explicitly initialized. +// This allows initialization to work whether pthread_t is a scalar or struct. +// The flag -Wmissing-field-initializers must not be specified for this to work. +# define GTEST_DEFINE_STATIC_MUTEX_(mutex) \ + ::testing::internal::MutexBase mutex = { PTHREAD_MUTEX_INITIALIZER, false } + +// The Mutex class can only be used for mutexes created at runtime. It +// shares its API with MutexBase otherwise. +class Mutex : public MutexBase { + public: + Mutex() { + GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_init(&mutex_, NULL)); + has_owner_ = false; + } + ~Mutex() { + GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_destroy(&mutex_)); + } + + private: + GTEST_DISALLOW_COPY_AND_ASSIGN_(Mutex); +}; + +// We cannot name this class MutexLock as the ctor declaration would +// conflict with a macro named MutexLock, which is defined on some +// platforms. Hence the typedef trick below. +class GTestMutexLock { + public: + explicit GTestMutexLock(MutexBase* mutex) + : mutex_(mutex) { mutex_->Lock(); } + + ~GTestMutexLock() { mutex_->Unlock(); } + + private: + MutexBase* const mutex_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(GTestMutexLock); +}; + +typedef GTestMutexLock MutexLock; + +// Helpers for ThreadLocal. + +// pthread_key_create() requires DeleteThreadLocalValue() to have +// C-linkage. Therefore it cannot be templatized to access +// ThreadLocal. Hence the need for class +// ThreadLocalValueHolderBase. +class ThreadLocalValueHolderBase { + public: + virtual ~ThreadLocalValueHolderBase() {} +}; + +// Called by pthread to delete thread-local data stored by +// pthread_setspecific(). +extern "C" inline void DeleteThreadLocalValue(void* value_holder) { + delete static_cast(value_holder); +} + +// Implements thread-local storage on pthreads-based systems. +// +// // Thread 1 +// ThreadLocal tl(100); // 100 is the default value for each thread. +// +// // Thread 2 +// tl.set(150); // Changes the value for thread 2 only. +// EXPECT_EQ(150, tl.get()); +// +// // Thread 1 +// EXPECT_EQ(100, tl.get()); // In thread 1, tl has the original value. +// tl.set(200); +// EXPECT_EQ(200, tl.get()); +// +// The template type argument T must have a public copy constructor. +// In addition, the default ThreadLocal constructor requires T to have +// a public default constructor. +// +// An object managed for a thread by a ThreadLocal instance is deleted +// when the thread exits. Or, if the ThreadLocal instance dies in +// that thread, when the ThreadLocal dies. It's the user's +// responsibility to ensure that all other threads using a ThreadLocal +// have exited when it dies, or the per-thread objects for those +// threads will not be deleted. +// +// Google Test only uses global ThreadLocal objects. That means they +// will die after main() has returned. Therefore, no per-thread +// object managed by Google Test will be leaked as long as all threads +// using Google Test have exited when main() returns. +template +class ThreadLocal { + public: + ThreadLocal() : key_(CreateKey()), + default_() {} + explicit ThreadLocal(const T& value) : key_(CreateKey()), + default_(value) {} + + ~ThreadLocal() { + // Destroys the managed object for the current thread, if any. + DeleteThreadLocalValue(pthread_getspecific(key_)); + + // Releases resources associated with the key. This will *not* + // delete managed objects for other threads. + GTEST_CHECK_POSIX_SUCCESS_(pthread_key_delete(key_)); + } + + T* pointer() { return GetOrCreateValue(); } + const T* pointer() const { return GetOrCreateValue(); } + const T& get() const { return *pointer(); } + void set(const T& value) { *pointer() = value; } + + private: + // Holds a value of type T. + class ValueHolder : public ThreadLocalValueHolderBase { + public: + explicit ValueHolder(const T& value) : value_(value) {} + + T* pointer() { return &value_; } + + private: + T value_; + GTEST_DISALLOW_COPY_AND_ASSIGN_(ValueHolder); + }; + + static pthread_key_t CreateKey() { + pthread_key_t key; + // When a thread exits, DeleteThreadLocalValue() will be called on + // the object managed for that thread. + GTEST_CHECK_POSIX_SUCCESS_( + pthread_key_create(&key, &DeleteThreadLocalValue)); + return key; + } + + T* GetOrCreateValue() const { + ThreadLocalValueHolderBase* const holder = + static_cast(pthread_getspecific(key_)); + if (holder != NULL) { + return CheckedDowncastToActualType(holder)->pointer(); + } + + ValueHolder* const new_holder = new ValueHolder(default_); + ThreadLocalValueHolderBase* const holder_base = new_holder; + GTEST_CHECK_POSIX_SUCCESS_(pthread_setspecific(key_, holder_base)); + return new_holder->pointer(); + } + + // A key pthreads uses for looking up per-thread values. + const pthread_key_t key_; + const T default_; // The default value for each thread. + + GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadLocal); +}; + +# define GTEST_IS_THREADSAFE 1 + +#else // GTEST_HAS_PTHREAD + +// A dummy implementation of synchronization primitives (mutex, lock, +// and thread-local variable). Necessary for compiling Google Test where +// mutex is not supported - using Google Test in multiple threads is not +// supported on such platforms. + +class Mutex { + public: + Mutex() {} + void Lock() {} + void Unlock() {} + void AssertHeld() const {} +}; + +# define GTEST_DECLARE_STATIC_MUTEX_(mutex) \ + extern ::testing::internal::Mutex mutex + +# define GTEST_DEFINE_STATIC_MUTEX_(mutex) ::testing::internal::Mutex mutex + +class GTestMutexLock { + public: + explicit GTestMutexLock(Mutex*) {} // NOLINT +}; + +typedef GTestMutexLock MutexLock; + +template +class ThreadLocal { + public: + ThreadLocal() : value_() {} + explicit ThreadLocal(const T& value) : value_(value) {} + T* pointer() { return &value_; } + const T* pointer() const { return &value_; } + const T& get() const { return value_; } + void set(const T& value) { value_ = value; } + private: + T value_; +}; + +// The above synchronization primitives have dummy implementations. +// Therefore Google Test is not thread-safe. +# define GTEST_IS_THREADSAFE 0 + +#endif // GTEST_HAS_PTHREAD + +// Returns the number of threads running in the process, or 0 to indicate that +// we cannot detect it. +GTEST_API_ size_t GetThreadCount(); + +// Passing non-POD classes through ellipsis (...) crashes the ARM +// compiler and generates a warning in Sun Studio. The Nokia Symbian +// and the IBM XL C/C++ compiler try to instantiate a copy constructor +// for objects passed through ellipsis (...), failing for uncopyable +// objects. We define this to ensure that only POD is passed through +// ellipsis on these systems. +#if defined(__SYMBIAN32__) || defined(__IBMCPP__) || defined(__SUNPRO_CC) +// We lose support for NULL detection where the compiler doesn't like +// passing non-POD classes through ellipsis (...). +# define GTEST_ELLIPSIS_NEEDS_POD_ 1 +#else +# define GTEST_CAN_COMPARE_NULL 1 +#endif + +// The Nokia Symbian and IBM XL C/C++ compilers cannot decide between +// const T& and const T* in a function template. These compilers +// _can_ decide between class template specializations for T and T*, +// so a tr1::type_traits-like is_pointer works. +#if defined(__SYMBIAN32__) || defined(__IBMCPP__) +# define GTEST_NEEDS_IS_POINTER_ 1 +#endif + +template +struct bool_constant { + typedef bool_constant type; + static const bool value = bool_value; +}; +template const bool bool_constant::value; + +typedef bool_constant false_type; +typedef bool_constant true_type; + +template +struct is_pointer : public false_type {}; + +template +struct is_pointer : public true_type {}; + +template +struct IteratorTraits { + typedef typename Iterator::value_type value_type; +}; + +template +struct IteratorTraits { + typedef T value_type; +}; + +template +struct IteratorTraits { + typedef T value_type; +}; + +#if GTEST_OS_WINDOWS +# define GTEST_PATH_SEP_ "\\" +# define GTEST_HAS_ALT_PATH_SEP_ 1 +// The biggest signed integer type the compiler supports. +typedef __int64 BiggestInt; +#else +# define GTEST_PATH_SEP_ "/" +# define GTEST_HAS_ALT_PATH_SEP_ 0 +typedef long long BiggestInt; // NOLINT +#endif // GTEST_OS_WINDOWS + +// Utilities for char. + +// isspace(int ch) and friends accept an unsigned char or EOF. char +// may be signed, depending on the compiler (or compiler flags). +// Therefore we need to cast a char to unsigned char before calling +// isspace(), etc. + +inline bool IsAlpha(char ch) { + return isalpha(static_cast(ch)) != 0; +} +inline bool IsAlNum(char ch) { + return isalnum(static_cast(ch)) != 0; +} +inline bool IsDigit(char ch) { + return isdigit(static_cast(ch)) != 0; +} +inline bool IsLower(char ch) { + return islower(static_cast(ch)) != 0; +} +inline bool IsSpace(char ch) { + return isspace(static_cast(ch)) != 0; +} +inline bool IsUpper(char ch) { + return isupper(static_cast(ch)) != 0; +} +inline bool IsXDigit(char ch) { + return isxdigit(static_cast(ch)) != 0; +} +inline bool IsXDigit(wchar_t ch) { + const unsigned char low_byte = static_cast(ch); + return ch == low_byte && isxdigit(low_byte) != 0; +} + +inline char ToLower(char ch) { + return static_cast(tolower(static_cast(ch))); +} +inline char ToUpper(char ch) { + return static_cast(toupper(static_cast(ch))); +} + +// The testing::internal::posix namespace holds wrappers for common +// POSIX functions. These wrappers hide the differences between +// Windows/MSVC and POSIX systems. Since some compilers define these +// standard functions as macros, the wrapper cannot have the same name +// as the wrapped function. + +namespace posix { + +// Functions with a different name on Windows. + +#if GTEST_OS_WINDOWS + +typedef struct _stat StatStruct; + +# ifdef __BORLANDC__ +inline int IsATTY(int fd) { return isatty(fd); } +inline int StrCaseCmp(const char* s1, const char* s2) { + return stricmp(s1, s2); +} +inline char* StrDup(const char* src) { return strdup(src); } +# else // !__BORLANDC__ +# if GTEST_OS_WINDOWS_MOBILE +inline int IsATTY(int /* fd */) { return 0; } +# else +inline int IsATTY(int fd) { return _isatty(fd); } +# endif // GTEST_OS_WINDOWS_MOBILE +inline int StrCaseCmp(const char* s1, const char* s2) { + return _stricmp(s1, s2); +} +inline char* StrDup(const char* src) { return _strdup(src); } +# endif // __BORLANDC__ + +# if GTEST_OS_WINDOWS_MOBILE +inline int FileNo(FILE* file) { return reinterpret_cast(_fileno(file)); } +// Stat(), RmDir(), and IsDir() are not needed on Windows CE at this +// time and thus not defined there. +# else +inline int FileNo(FILE* file) { return _fileno(file); } +inline int Stat(const char* path, StatStruct* buf) { return _stat(path, buf); } +inline int RmDir(const char* dir) { return _rmdir(dir); } +inline bool IsDir(const StatStruct& st) { + return (_S_IFDIR & st.st_mode) != 0; +} +# endif // GTEST_OS_WINDOWS_MOBILE + +#else + +typedef struct stat StatStruct; + +inline int FileNo(FILE* file) { return fileno(file); } +inline int IsATTY(int fd) { return isatty(fd); } +inline int Stat(const char* path, StatStruct* buf) { return stat(path, buf); } +inline int StrCaseCmp(const char* s1, const char* s2) { + return strcasecmp(s1, s2); +} +inline char* StrDup(const char* src) { return strdup(src); } +inline int RmDir(const char* dir) { return rmdir(dir); } +inline bool IsDir(const StatStruct& st) { return S_ISDIR(st.st_mode); } + +#endif // GTEST_OS_WINDOWS + +// Functions deprecated by MSVC 8.0. + +#ifdef _MSC_VER +// Temporarily disable warning 4996 (deprecated function). +# pragma warning(push) +# pragma warning(disable:4996) +#endif + +inline const char* StrNCpy(char* dest, const char* src, size_t n) { + return strncpy(dest, src, n); +} + +// ChDir(), FReopen(), FDOpen(), Read(), Write(), Close(), and +// StrError() aren't needed on Windows CE at this time and thus not +// defined there. + +#if !GTEST_OS_WINDOWS_MOBILE +inline int ChDir(const char* dir) { return chdir(dir); } +#endif +inline FILE* FOpen(const char* path, const char* mode) { + return fopen(path, mode); +} +#if !GTEST_OS_WINDOWS_MOBILE +inline FILE *FReopen(const char* path, const char* mode, FILE* stream) { + return freopen(path, mode, stream); +} +inline FILE* FDOpen(int fd, const char* mode) { return fdopen(fd, mode); } +#endif +inline int FClose(FILE* fp) { return fclose(fp); } +#if !GTEST_OS_WINDOWS_MOBILE +inline int Read(int fd, void* buf, unsigned int count) { + return static_cast(read(fd, buf, count)); +} +inline int Write(int fd, const void* buf, unsigned int count) { + return static_cast(write(fd, buf, count)); +} +inline int Close(int fd) { return close(fd); } +inline const char* StrError(int errnum) { return strerror(errnum); } +#endif +inline const char* GetEnv(const char* name) { +#if GTEST_OS_WINDOWS_MOBILE + // We are on Windows CE, which has no environment variables. + return NULL; +#elif defined(__BORLANDC__) || defined(__SunOS_5_8) || defined(__SunOS_5_9) + // Environment variables which we programmatically clear will be set to the + // empty string rather than unset (NULL). Handle that case. + const char* const env = getenv(name); + return (env != NULL && env[0] != '\0') ? env : NULL; +#else + return getenv(name); +#endif +} + +#ifdef _MSC_VER +# pragma warning(pop) // Restores the warning state. +#endif + +#if GTEST_OS_WINDOWS_MOBILE +// Windows CE has no C library. The abort() function is used in +// several places in Google Test. This implementation provides a reasonable +// imitation of standard behaviour. +void Abort(); +#else +inline void Abort() { abort(); } +#endif // GTEST_OS_WINDOWS_MOBILE + +} // namespace posix + +// MSVC "deprecates" snprintf and issues warnings wherever it is used. In +// order to avoid these warnings, we need to use _snprintf or _snprintf_s on +// MSVC-based platforms. We map the GTEST_SNPRINTF_ macro to the appropriate +// function in order to achieve that. We use macro definition here because +// snprintf is a variadic function. +#if _MSC_VER >= 1400 && !GTEST_OS_WINDOWS_MOBILE +// MSVC 2005 and above support variadic macros. +# define GTEST_SNPRINTF_(buffer, size, format, ...) \ + _snprintf_s(buffer, size, size, format, __VA_ARGS__) +#elif defined(_MSC_VER) +// Windows CE does not define _snprintf_s and MSVC prior to 2005 doesn't +// complain about _snprintf. +# define GTEST_SNPRINTF_ _snprintf +#else +# define GTEST_SNPRINTF_ snprintf +#endif + +// The maximum number a BiggestInt can represent. This definition +// works no matter BiggestInt is represented in one's complement or +// two's complement. +// +// We cannot rely on numeric_limits in STL, as __int64 and long long +// are not part of standard C++ and numeric_limits doesn't need to be +// defined for them. +const BiggestInt kMaxBiggestInt = + ~(static_cast(1) << (8*sizeof(BiggestInt) - 1)); + +// This template class serves as a compile-time function from size to +// type. It maps a size in bytes to a primitive type with that +// size. e.g. +// +// TypeWithSize<4>::UInt +// +// is typedef-ed to be unsigned int (unsigned integer made up of 4 +// bytes). +// +// Such functionality should belong to STL, but I cannot find it +// there. +// +// Google Test uses this class in the implementation of floating-point +// comparison. +// +// For now it only handles UInt (unsigned int) as that's all Google Test +// needs. Other types can be easily added in the future if need +// arises. +template +class TypeWithSize { + public: + // This prevents the user from using TypeWithSize with incorrect + // values of N. + typedef void UInt; +}; + +// The specialization for size 4. +template <> +class TypeWithSize<4> { + public: + // unsigned int has size 4 in both gcc and MSVC. + // + // As base/basictypes.h doesn't compile on Windows, we cannot use + // uint32, uint64, and etc here. + typedef int Int; + typedef unsigned int UInt; +}; + +// The specialization for size 8. +template <> +class TypeWithSize<8> { + public: +#if GTEST_OS_WINDOWS + typedef __int64 Int; + typedef unsigned __int64 UInt; +#else + typedef long long Int; // NOLINT + typedef unsigned long long UInt; // NOLINT +#endif // GTEST_OS_WINDOWS +}; + +// Integer types of known sizes. +typedef TypeWithSize<4>::Int Int32; +typedef TypeWithSize<4>::UInt UInt32; +typedef TypeWithSize<8>::Int Int64; +typedef TypeWithSize<8>::UInt UInt64; +typedef TypeWithSize<8>::Int TimeInMillis; // Represents time in milliseconds. + +// Utilities for command line flags and environment variables. + +// Macro for referencing flags. +#define GTEST_FLAG(name) FLAGS_gtest_##name + +// Macros for declaring flags. +#define GTEST_DECLARE_bool_(name) GTEST_API_ extern bool GTEST_FLAG(name) +#define GTEST_DECLARE_int32_(name) \ + GTEST_API_ extern ::testing::internal::Int32 GTEST_FLAG(name) +#define GTEST_DECLARE_string_(name) \ + GTEST_API_ extern ::std::string GTEST_FLAG(name) + +// Macros for defining flags. +#define GTEST_DEFINE_bool_(name, default_val, doc) \ + GTEST_API_ bool GTEST_FLAG(name) = (default_val) +#define GTEST_DEFINE_int32_(name, default_val, doc) \ + GTEST_API_ ::testing::internal::Int32 GTEST_FLAG(name) = (default_val) +#define GTEST_DEFINE_string_(name, default_val, doc) \ + GTEST_API_ ::std::string GTEST_FLAG(name) = (default_val) + +// Thread annotations +#define GTEST_EXCLUSIVE_LOCK_REQUIRED_(locks) +#define GTEST_LOCK_EXCLUDED_(locks) + +// Parses 'str' for a 32-bit signed integer. If successful, writes the result +// to *value and returns true; otherwise leaves *value unchanged and returns +// false. +// TODO(chandlerc): Find a better way to refactor flag and environment parsing +// out of both gtest-port.cc and gtest.cc to avoid exporting this utility +// function. +bool ParseInt32(const Message& src_text, const char* str, Int32* value); + +// Parses a bool/Int32/string from the environment variable +// corresponding to the given Google Test flag. +bool BoolFromGTestEnv(const char* flag, bool default_val); +GTEST_API_ Int32 Int32FromGTestEnv(const char* flag, Int32 default_val); +const char* StringFromGTestEnv(const char* flag, const char* default_val); + +} // namespace internal +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_ diff --git a/thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-string.h b/thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-string.h new file mode 100644 index 00000000..472dd058 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-string.h @@ -0,0 +1,180 @@ +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Authors: wan@google.com (Zhanyong Wan), eefacm@gmail.com (Sean Mcafee) +// +// The Google C++ Testing Framework (Google Test) +// +// This header file declares the String class and functions used internally by +// Google Test. They are subject to change without notice. They should not used +// by code external to Google Test. +// +// This header file is #included by . +// It should not be #included by other files. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_ + +#ifdef __BORLANDC__ +// string.h is not guaranteed to provide strcpy on C++ Builder. +# include +#endif + +#include +#include + +#include "gtest/internal/gtest-port.h" + +namespace testing { +namespace internal { + +// String - an abstract class holding static string utilities. +class GTEST_API_ String { + public: + // Static utility methods + + // Clones a 0-terminated C string, allocating memory using new. The + // caller is responsible for deleting the return value using + // delete[]. Returns the cloned string, or NULL if the input is + // NULL. + // + // This is different from strdup() in string.h, which allocates + // memory using malloc(). + static const char* CloneCString(const char* c_str); + +#if GTEST_OS_WINDOWS_MOBILE + // Windows CE does not have the 'ANSI' versions of Win32 APIs. To be + // able to pass strings to Win32 APIs on CE we need to convert them + // to 'Unicode', UTF-16. + + // Creates a UTF-16 wide string from the given ANSI string, allocating + // memory using new. The caller is responsible for deleting the return + // value using delete[]. Returns the wide string, or NULL if the + // input is NULL. + // + // The wide string is created using the ANSI codepage (CP_ACP) to + // match the behaviour of the ANSI versions of Win32 calls and the + // C runtime. + static LPCWSTR AnsiToUtf16(const char* c_str); + + // Creates an ANSI string from the given wide string, allocating + // memory using new. The caller is responsible for deleting the return + // value using delete[]. Returns the ANSI string, or NULL if the + // input is NULL. + // + // The returned string is created using the ANSI codepage (CP_ACP) to + // match the behaviour of the ANSI versions of Win32 calls and the + // C runtime. + static const char* Utf16ToAnsi(LPCWSTR utf16_str); +#endif + + // Compares two C strings. Returns true iff they have the same content. + // + // Unlike strcmp(), this function can handle NULL argument(s). A + // NULL C string is considered different to any non-NULL C string, + // including the empty string. + static bool CStringEquals(const char* lhs, const char* rhs); + + // Converts a wide C string to a String using the UTF-8 encoding. + // NULL will be converted to "(null)". If an error occurred during + // the conversion, "(failed to convert from wide string)" is + // returned. + static std::string ShowWideCString(const wchar_t* wide_c_str); + + // Compares two wide C strings. Returns true iff they have the same + // content. + // + // Unlike wcscmp(), this function can handle NULL argument(s). A + // NULL C string is considered different to any non-NULL C string, + // including the empty string. + static bool WideCStringEquals(const wchar_t* lhs, const wchar_t* rhs); + + // Compares two C strings, ignoring case. Returns true iff they + // have the same content. + // + // Unlike strcasecmp(), this function can handle NULL argument(s). + // A NULL C string is considered different to any non-NULL C string, + // including the empty string. + static bool CaseInsensitiveCStringEquals(const char* lhs, + const char* rhs); + + // Compares two wide C strings, ignoring case. Returns true iff they + // have the same content. + // + // Unlike wcscasecmp(), this function can handle NULL argument(s). + // A NULL C string is considered different to any non-NULL wide C string, + // including the empty string. + // NB: The implementations on different platforms slightly differ. + // On windows, this method uses _wcsicmp which compares according to LC_CTYPE + // environment variable. On GNU platform this method uses wcscasecmp + // which compares according to LC_CTYPE category of the current locale. + // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the + // current locale. + static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs, + const wchar_t* rhs); + + // Returns true iff the given string ends with the given suffix, ignoring + // case. Any string is considered to end with an empty suffix. + static bool EndsWithCaseInsensitive( + const std::string& str, const std::string& suffix); + + // Formats a list of arguments to an std::string, using the same format + // spec string as for printf. + // + // We do not use the StringPrintf class as it is not universally + // available. + // + // The result is limited to 4096 characters (including the tailing + // 0). If 4096 characters are not enough to format the input, + // "" is returned. + static std::string Format(const char* format, ...); + + private: + String(); // Not meant to be instantiated. +}; // class String + +// Gets the content of the stringstream's buffer as an std::string. Each '\0' +// character in the buffer is replaced with "\\0". +GTEST_API_ std::string StringStreamToString(::std::stringstream* stream); + +// Converts a streamable value to an std::string. A NULL pointer is +// converted to "(null)". When the input value is a ::string, +// ::std::string, ::wstring, or ::std::wstring object, each NUL +// character in it is replaced with "\\0". + +// Declared here but defined in gtest.h, so that it has access +// to the definition of the Message class, required by the ARM +// compiler. +template +std::string StreamableToString(const T& streamable); + +} // namespace internal +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_ diff --git a/thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-tuple.h b/thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-tuple.h new file mode 100644 index 00000000..7b3dfc31 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-tuple.h @@ -0,0 +1,1012 @@ +// This file was GENERATED by command: +// pump.py gtest-tuple.h.pump +// DO NOT EDIT BY HAND!!! + +// Copyright 2009 Google Inc. +// All Rights Reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +// Implements a subset of TR1 tuple needed by Google Test and Google Mock. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_ + +#include // For ::std::pair. + +// The compiler used in Symbian has a bug that prevents us from declaring the +// tuple template as a friend (it complains that tuple is redefined). This +// hack bypasses the bug by declaring the members that should otherwise be +// private as public. +// Sun Studio versions < 12 also have the above bug. +#if defined(__SYMBIAN32__) || (defined(__SUNPRO_CC) && __SUNPRO_CC < 0x590) +# define GTEST_DECLARE_TUPLE_AS_FRIEND_ public: +#else +# define GTEST_DECLARE_TUPLE_AS_FRIEND_ \ + template friend class tuple; \ + private: +#endif + +// GTEST_n_TUPLE_(T) is the type of an n-tuple. +#define GTEST_0_TUPLE_(T) tuple<> +#define GTEST_1_TUPLE_(T) tuple +#define GTEST_2_TUPLE_(T) tuple +#define GTEST_3_TUPLE_(T) tuple +#define GTEST_4_TUPLE_(T) tuple +#define GTEST_5_TUPLE_(T) tuple +#define GTEST_6_TUPLE_(T) tuple +#define GTEST_7_TUPLE_(T) tuple +#define GTEST_8_TUPLE_(T) tuple +#define GTEST_9_TUPLE_(T) tuple +#define GTEST_10_TUPLE_(T) tuple + +// GTEST_n_TYPENAMES_(T) declares a list of n typenames. +#define GTEST_0_TYPENAMES_(T) +#define GTEST_1_TYPENAMES_(T) typename T##0 +#define GTEST_2_TYPENAMES_(T) typename T##0, typename T##1 +#define GTEST_3_TYPENAMES_(T) typename T##0, typename T##1, typename T##2 +#define GTEST_4_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ + typename T##3 +#define GTEST_5_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ + typename T##3, typename T##4 +#define GTEST_6_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ + typename T##3, typename T##4, typename T##5 +#define GTEST_7_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ + typename T##3, typename T##4, typename T##5, typename T##6 +#define GTEST_8_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ + typename T##3, typename T##4, typename T##5, typename T##6, typename T##7 +#define GTEST_9_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ + typename T##3, typename T##4, typename T##5, typename T##6, \ + typename T##7, typename T##8 +#define GTEST_10_TYPENAMES_(T) typename T##0, typename T##1, typename T##2, \ + typename T##3, typename T##4, typename T##5, typename T##6, \ + typename T##7, typename T##8, typename T##9 + +// In theory, defining stuff in the ::std namespace is undefined +// behavior. We can do this as we are playing the role of a standard +// library vendor. +namespace std { +namespace tr1 { + +template +class tuple; + +// Anything in namespace gtest_internal is Google Test's INTERNAL +// IMPLEMENTATION DETAIL and MUST NOT BE USED DIRECTLY in user code. +namespace gtest_internal { + +// ByRef::type is T if T is a reference; otherwise it's const T&. +template +struct ByRef { typedef const T& type; }; // NOLINT +template +struct ByRef { typedef T& type; }; // NOLINT + +// A handy wrapper for ByRef. +#define GTEST_BY_REF_(T) typename ::std::tr1::gtest_internal::ByRef::type + +// AddRef::type is T if T is a reference; otherwise it's T&. This +// is the same as tr1::add_reference::type. +template +struct AddRef { typedef T& type; }; // NOLINT +template +struct AddRef { typedef T& type; }; // NOLINT + +// A handy wrapper for AddRef. +#define GTEST_ADD_REF_(T) typename ::std::tr1::gtest_internal::AddRef::type + +// A helper for implementing get(). +template class Get; + +// A helper for implementing tuple_element. kIndexValid is true +// iff k < the number of fields in tuple type T. +template +struct TupleElement; + +template +struct TupleElement { + typedef T0 type; +}; + +template +struct TupleElement { + typedef T1 type; +}; + +template +struct TupleElement { + typedef T2 type; +}; + +template +struct TupleElement { + typedef T3 type; +}; + +template +struct TupleElement { + typedef T4 type; +}; + +template +struct TupleElement { + typedef T5 type; +}; + +template +struct TupleElement { + typedef T6 type; +}; + +template +struct TupleElement { + typedef T7 type; +}; + +template +struct TupleElement { + typedef T8 type; +}; + +template +struct TupleElement { + typedef T9 type; +}; + +} // namespace gtest_internal + +template <> +class tuple<> { + public: + tuple() {} + tuple(const tuple& /* t */) {} + tuple& operator=(const tuple& /* t */) { return *this; } +}; + +template +class GTEST_1_TUPLE_(T) { + public: + template friend class gtest_internal::Get; + + tuple() : f0_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0) : f0_(f0) {} + + tuple(const tuple& t) : f0_(t.f0_) {} + + template + tuple(const GTEST_1_TUPLE_(U)& t) : f0_(t.f0_) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_1_TUPLE_(U)& t) { + return CopyFrom(t); + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_1_TUPLE_(U)& t) { + f0_ = t.f0_; + return *this; + } + + T0 f0_; +}; + +template +class GTEST_2_TUPLE_(T) { + public: + template friend class gtest_internal::Get; + + tuple() : f0_(), f1_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1) : f0_(f0), + f1_(f1) {} + + tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_) {} + + template + tuple(const GTEST_2_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_) {} + template + tuple(const ::std::pair& p) : f0_(p.first), f1_(p.second) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_2_TUPLE_(U)& t) { + return CopyFrom(t); + } + template + tuple& operator=(const ::std::pair& p) { + f0_ = p.first; + f1_ = p.second; + return *this; + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_2_TUPLE_(U)& t) { + f0_ = t.f0_; + f1_ = t.f1_; + return *this; + } + + T0 f0_; + T1 f1_; +}; + +template +class GTEST_3_TUPLE_(T) { + public: + template friend class gtest_internal::Get; + + tuple() : f0_(), f1_(), f2_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, + GTEST_BY_REF_(T2) f2) : f0_(f0), f1_(f1), f2_(f2) {} + + tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_) {} + + template + tuple(const GTEST_3_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_3_TUPLE_(U)& t) { + return CopyFrom(t); + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_3_TUPLE_(U)& t) { + f0_ = t.f0_; + f1_ = t.f1_; + f2_ = t.f2_; + return *this; + } + + T0 f0_; + T1 f1_; + T2 f2_; +}; + +template +class GTEST_4_TUPLE_(T) { + public: + template friend class gtest_internal::Get; + + tuple() : f0_(), f1_(), f2_(), f3_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, + GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3) : f0_(f0), f1_(f1), f2_(f2), + f3_(f3) {} + + tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_) {} + + template + tuple(const GTEST_4_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), + f3_(t.f3_) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_4_TUPLE_(U)& t) { + return CopyFrom(t); + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_4_TUPLE_(U)& t) { + f0_ = t.f0_; + f1_ = t.f1_; + f2_ = t.f2_; + f3_ = t.f3_; + return *this; + } + + T0 f0_; + T1 f1_; + T2 f2_; + T3 f3_; +}; + +template +class GTEST_5_TUPLE_(T) { + public: + template friend class gtest_internal::Get; + + tuple() : f0_(), f1_(), f2_(), f3_(), f4_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, + GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, + GTEST_BY_REF_(T4) f4) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4) {} + + tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), + f4_(t.f4_) {} + + template + tuple(const GTEST_5_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), + f3_(t.f3_), f4_(t.f4_) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_5_TUPLE_(U)& t) { + return CopyFrom(t); + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_5_TUPLE_(U)& t) { + f0_ = t.f0_; + f1_ = t.f1_; + f2_ = t.f2_; + f3_ = t.f3_; + f4_ = t.f4_; + return *this; + } + + T0 f0_; + T1 f1_; + T2 f2_; + T3 f3_; + T4 f4_; +}; + +template +class GTEST_6_TUPLE_(T) { + public: + template friend class gtest_internal::Get; + + tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, + GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, + GTEST_BY_REF_(T5) f5) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4), + f5_(f5) {} + + tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), + f4_(t.f4_), f5_(t.f5_) {} + + template + tuple(const GTEST_6_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), + f3_(t.f3_), f4_(t.f4_), f5_(t.f5_) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_6_TUPLE_(U)& t) { + return CopyFrom(t); + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_6_TUPLE_(U)& t) { + f0_ = t.f0_; + f1_ = t.f1_; + f2_ = t.f2_; + f3_ = t.f3_; + f4_ = t.f4_; + f5_ = t.f5_; + return *this; + } + + T0 f0_; + T1 f1_; + T2 f2_; + T3 f3_; + T4 f4_; + T5 f5_; +}; + +template +class GTEST_7_TUPLE_(T) { + public: + template friend class gtest_internal::Get; + + tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, + GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, + GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6) : f0_(f0), f1_(f1), f2_(f2), + f3_(f3), f4_(f4), f5_(f5), f6_(f6) {} + + tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), + f4_(t.f4_), f5_(t.f5_), f6_(t.f6_) {} + + template + tuple(const GTEST_7_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), + f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_7_TUPLE_(U)& t) { + return CopyFrom(t); + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_7_TUPLE_(U)& t) { + f0_ = t.f0_; + f1_ = t.f1_; + f2_ = t.f2_; + f3_ = t.f3_; + f4_ = t.f4_; + f5_ = t.f5_; + f6_ = t.f6_; + return *this; + } + + T0 f0_; + T1 f1_; + T2 f2_; + T3 f3_; + T4 f4_; + T5 f5_; + T6 f6_; +}; + +template +class GTEST_8_TUPLE_(T) { + public: + template friend class gtest_internal::Get; + + tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, + GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, + GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, + GTEST_BY_REF_(T7) f7) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4), + f5_(f5), f6_(f6), f7_(f7) {} + + tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), + f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_) {} + + template + tuple(const GTEST_8_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), + f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_8_TUPLE_(U)& t) { + return CopyFrom(t); + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_8_TUPLE_(U)& t) { + f0_ = t.f0_; + f1_ = t.f1_; + f2_ = t.f2_; + f3_ = t.f3_; + f4_ = t.f4_; + f5_ = t.f5_; + f6_ = t.f6_; + f7_ = t.f7_; + return *this; + } + + T0 f0_; + T1 f1_; + T2 f2_; + T3 f3_; + T4 f4_; + T5 f5_; + T6 f6_; + T7 f7_; +}; + +template +class GTEST_9_TUPLE_(T) { + public: + template friend class gtest_internal::Get; + + tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_(), f8_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, + GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, + GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, GTEST_BY_REF_(T7) f7, + GTEST_BY_REF_(T8) f8) : f0_(f0), f1_(f1), f2_(f2), f3_(f3), f4_(f4), + f5_(f5), f6_(f6), f7_(f7), f8_(f8) {} + + tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), + f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_) {} + + template + tuple(const GTEST_9_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), + f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_9_TUPLE_(U)& t) { + return CopyFrom(t); + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_9_TUPLE_(U)& t) { + f0_ = t.f0_; + f1_ = t.f1_; + f2_ = t.f2_; + f3_ = t.f3_; + f4_ = t.f4_; + f5_ = t.f5_; + f6_ = t.f6_; + f7_ = t.f7_; + f8_ = t.f8_; + return *this; + } + + T0 f0_; + T1 f1_; + T2 f2_; + T3 f3_; + T4 f4_; + T5 f5_; + T6 f6_; + T7 f7_; + T8 f8_; +}; + +template +class tuple { + public: + template friend class gtest_internal::Get; + + tuple() : f0_(), f1_(), f2_(), f3_(), f4_(), f5_(), f6_(), f7_(), f8_(), + f9_() {} + + explicit tuple(GTEST_BY_REF_(T0) f0, GTEST_BY_REF_(T1) f1, + GTEST_BY_REF_(T2) f2, GTEST_BY_REF_(T3) f3, GTEST_BY_REF_(T4) f4, + GTEST_BY_REF_(T5) f5, GTEST_BY_REF_(T6) f6, GTEST_BY_REF_(T7) f7, + GTEST_BY_REF_(T8) f8, GTEST_BY_REF_(T9) f9) : f0_(f0), f1_(f1), f2_(f2), + f3_(f3), f4_(f4), f5_(f5), f6_(f6), f7_(f7), f8_(f8), f9_(f9) {} + + tuple(const tuple& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), f3_(t.f3_), + f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_), f9_(t.f9_) {} + + template + tuple(const GTEST_10_TUPLE_(U)& t) : f0_(t.f0_), f1_(t.f1_), f2_(t.f2_), + f3_(t.f3_), f4_(t.f4_), f5_(t.f5_), f6_(t.f6_), f7_(t.f7_), f8_(t.f8_), + f9_(t.f9_) {} + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_10_TUPLE_(U)& t) { + return CopyFrom(t); + } + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_10_TUPLE_(U)& t) { + f0_ = t.f0_; + f1_ = t.f1_; + f2_ = t.f2_; + f3_ = t.f3_; + f4_ = t.f4_; + f5_ = t.f5_; + f6_ = t.f6_; + f7_ = t.f7_; + f8_ = t.f8_; + f9_ = t.f9_; + return *this; + } + + T0 f0_; + T1 f1_; + T2 f2_; + T3 f3_; + T4 f4_; + T5 f5_; + T6 f6_; + T7 f7_; + T8 f8_; + T9 f9_; +}; + +// 6.1.3.2 Tuple creation functions. + +// Known limitations: we don't support passing an +// std::tr1::reference_wrapper to make_tuple(). And we don't +// implement tie(). + +inline tuple<> make_tuple() { return tuple<>(); } + +template +inline GTEST_1_TUPLE_(T) make_tuple(const T0& f0) { + return GTEST_1_TUPLE_(T)(f0); +} + +template +inline GTEST_2_TUPLE_(T) make_tuple(const T0& f0, const T1& f1) { + return GTEST_2_TUPLE_(T)(f0, f1); +} + +template +inline GTEST_3_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2) { + return GTEST_3_TUPLE_(T)(f0, f1, f2); +} + +template +inline GTEST_4_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, + const T3& f3) { + return GTEST_4_TUPLE_(T)(f0, f1, f2, f3); +} + +template +inline GTEST_5_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, + const T3& f3, const T4& f4) { + return GTEST_5_TUPLE_(T)(f0, f1, f2, f3, f4); +} + +template +inline GTEST_6_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, + const T3& f3, const T4& f4, const T5& f5) { + return GTEST_6_TUPLE_(T)(f0, f1, f2, f3, f4, f5); +} + +template +inline GTEST_7_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, + const T3& f3, const T4& f4, const T5& f5, const T6& f6) { + return GTEST_7_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6); +} + +template +inline GTEST_8_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, + const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7) { + return GTEST_8_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7); +} + +template +inline GTEST_9_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, + const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7, + const T8& f8) { + return GTEST_9_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7, f8); +} + +template +inline GTEST_10_TUPLE_(T) make_tuple(const T0& f0, const T1& f1, const T2& f2, + const T3& f3, const T4& f4, const T5& f5, const T6& f6, const T7& f7, + const T8& f8, const T9& f9) { + return GTEST_10_TUPLE_(T)(f0, f1, f2, f3, f4, f5, f6, f7, f8, f9); +} + +// 6.1.3.3 Tuple helper classes. + +template struct tuple_size; + +template +struct tuple_size { + static const int value = 0; +}; + +template +struct tuple_size { + static const int value = 1; +}; + +template +struct tuple_size { + static const int value = 2; +}; + +template +struct tuple_size { + static const int value = 3; +}; + +template +struct tuple_size { + static const int value = 4; +}; + +template +struct tuple_size { + static const int value = 5; +}; + +template +struct tuple_size { + static const int value = 6; +}; + +template +struct tuple_size { + static const int value = 7; +}; + +template +struct tuple_size { + static const int value = 8; +}; + +template +struct tuple_size { + static const int value = 9; +}; + +template +struct tuple_size { + static const int value = 10; +}; + +template +struct tuple_element { + typedef typename gtest_internal::TupleElement< + k < (tuple_size::value), k, Tuple>::type type; +}; + +#define GTEST_TUPLE_ELEMENT_(k, Tuple) typename tuple_element::type + +// 6.1.3.4 Element access. + +namespace gtest_internal { + +template <> +class Get<0> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(0, Tuple)) + Field(Tuple& t) { return t.f0_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(0, Tuple)) + ConstField(const Tuple& t) { return t.f0_; } +}; + +template <> +class Get<1> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(1, Tuple)) + Field(Tuple& t) { return t.f1_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(1, Tuple)) + ConstField(const Tuple& t) { return t.f1_; } +}; + +template <> +class Get<2> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(2, Tuple)) + Field(Tuple& t) { return t.f2_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(2, Tuple)) + ConstField(const Tuple& t) { return t.f2_; } +}; + +template <> +class Get<3> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(3, Tuple)) + Field(Tuple& t) { return t.f3_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(3, Tuple)) + ConstField(const Tuple& t) { return t.f3_; } +}; + +template <> +class Get<4> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(4, Tuple)) + Field(Tuple& t) { return t.f4_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(4, Tuple)) + ConstField(const Tuple& t) { return t.f4_; } +}; + +template <> +class Get<5> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(5, Tuple)) + Field(Tuple& t) { return t.f5_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(5, Tuple)) + ConstField(const Tuple& t) { return t.f5_; } +}; + +template <> +class Get<6> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(6, Tuple)) + Field(Tuple& t) { return t.f6_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(6, Tuple)) + ConstField(const Tuple& t) { return t.f6_; } +}; + +template <> +class Get<7> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(7, Tuple)) + Field(Tuple& t) { return t.f7_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(7, Tuple)) + ConstField(const Tuple& t) { return t.f7_; } +}; + +template <> +class Get<8> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(8, Tuple)) + Field(Tuple& t) { return t.f8_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(8, Tuple)) + ConstField(const Tuple& t) { return t.f8_; } +}; + +template <> +class Get<9> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(9, Tuple)) + Field(Tuple& t) { return t.f9_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(9, Tuple)) + ConstField(const Tuple& t) { return t.f9_; } +}; + +} // namespace gtest_internal + +template +GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(k, GTEST_10_TUPLE_(T))) +get(GTEST_10_TUPLE_(T)& t) { + return gtest_internal::Get::Field(t); +} + +template +GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(k, GTEST_10_TUPLE_(T))) +get(const GTEST_10_TUPLE_(T)& t) { + return gtest_internal::Get::ConstField(t); +} + +// 6.1.3.5 Relational operators + +// We only implement == and !=, as we don't have a need for the rest yet. + +namespace gtest_internal { + +// SameSizeTuplePrefixComparator::Eq(t1, t2) returns true if the +// first k fields of t1 equals the first k fields of t2. +// SameSizeTuplePrefixComparator(k1, k2) would be a compiler error if +// k1 != k2. +template +struct SameSizeTuplePrefixComparator; + +template <> +struct SameSizeTuplePrefixComparator<0, 0> { + template + static bool Eq(const Tuple1& /* t1 */, const Tuple2& /* t2 */) { + return true; + } +}; + +template +struct SameSizeTuplePrefixComparator { + template + static bool Eq(const Tuple1& t1, const Tuple2& t2) { + return SameSizeTuplePrefixComparator::Eq(t1, t2) && + ::std::tr1::get(t1) == ::std::tr1::get(t2); + } +}; + +} // namespace gtest_internal + +template +inline bool operator==(const GTEST_10_TUPLE_(T)& t, + const GTEST_10_TUPLE_(U)& u) { + return gtest_internal::SameSizeTuplePrefixComparator< + tuple_size::value, + tuple_size::value>::Eq(t, u); +} + +template +inline bool operator!=(const GTEST_10_TUPLE_(T)& t, + const GTEST_10_TUPLE_(U)& u) { return !(t == u); } + +// 6.1.4 Pairs. +// Unimplemented. + +} // namespace tr1 +} // namespace std + +#undef GTEST_0_TUPLE_ +#undef GTEST_1_TUPLE_ +#undef GTEST_2_TUPLE_ +#undef GTEST_3_TUPLE_ +#undef GTEST_4_TUPLE_ +#undef GTEST_5_TUPLE_ +#undef GTEST_6_TUPLE_ +#undef GTEST_7_TUPLE_ +#undef GTEST_8_TUPLE_ +#undef GTEST_9_TUPLE_ +#undef GTEST_10_TUPLE_ + +#undef GTEST_0_TYPENAMES_ +#undef GTEST_1_TYPENAMES_ +#undef GTEST_2_TYPENAMES_ +#undef GTEST_3_TYPENAMES_ +#undef GTEST_4_TYPENAMES_ +#undef GTEST_5_TYPENAMES_ +#undef GTEST_6_TYPENAMES_ +#undef GTEST_7_TYPENAMES_ +#undef GTEST_8_TYPENAMES_ +#undef GTEST_9_TYPENAMES_ +#undef GTEST_10_TYPENAMES_ + +#undef GTEST_DECLARE_TUPLE_AS_FRIEND_ +#undef GTEST_BY_REF_ +#undef GTEST_ADD_REF_ +#undef GTEST_TUPLE_ELEMENT_ + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_ diff --git a/thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-tuple.h.pump b/thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-tuple.h.pump new file mode 100644 index 00000000..c7d9e039 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-tuple.h.pump @@ -0,0 +1,339 @@ +$$ -*- mode: c++; -*- +$var n = 10 $$ Maximum number of tuple fields we want to support. +$$ This meta comment fixes auto-indentation in Emacs. }} +// Copyright 2009 Google Inc. +// All Rights Reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +// Implements a subset of TR1 tuple needed by Google Test and Google Mock. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_ + +#include // For ::std::pair. + +// The compiler used in Symbian has a bug that prevents us from declaring the +// tuple template as a friend (it complains that tuple is redefined). This +// hack bypasses the bug by declaring the members that should otherwise be +// private as public. +// Sun Studio versions < 12 also have the above bug. +#if defined(__SYMBIAN32__) || (defined(__SUNPRO_CC) && __SUNPRO_CC < 0x590) +# define GTEST_DECLARE_TUPLE_AS_FRIEND_ public: +#else +# define GTEST_DECLARE_TUPLE_AS_FRIEND_ \ + template friend class tuple; \ + private: +#endif + + +$range i 0..n-1 +$range j 0..n +$range k 1..n +// GTEST_n_TUPLE_(T) is the type of an n-tuple. +#define GTEST_0_TUPLE_(T) tuple<> + +$for k [[ +$range m 0..k-1 +$range m2 k..n-1 +#define GTEST_$(k)_TUPLE_(T) tuple<$for m, [[T##$m]]$for m2 [[, void]]> + +]] + +// GTEST_n_TYPENAMES_(T) declares a list of n typenames. + +$for j [[ +$range m 0..j-1 +#define GTEST_$(j)_TYPENAMES_(T) $for m, [[typename T##$m]] + + +]] + +// In theory, defining stuff in the ::std namespace is undefined +// behavior. We can do this as we are playing the role of a standard +// library vendor. +namespace std { +namespace tr1 { + +template <$for i, [[typename T$i = void]]> +class tuple; + +// Anything in namespace gtest_internal is Google Test's INTERNAL +// IMPLEMENTATION DETAIL and MUST NOT BE USED DIRECTLY in user code. +namespace gtest_internal { + +// ByRef::type is T if T is a reference; otherwise it's const T&. +template +struct ByRef { typedef const T& type; }; // NOLINT +template +struct ByRef { typedef T& type; }; // NOLINT + +// A handy wrapper for ByRef. +#define GTEST_BY_REF_(T) typename ::std::tr1::gtest_internal::ByRef::type + +// AddRef::type is T if T is a reference; otherwise it's T&. This +// is the same as tr1::add_reference::type. +template +struct AddRef { typedef T& type; }; // NOLINT +template +struct AddRef { typedef T& type; }; // NOLINT + +// A handy wrapper for AddRef. +#define GTEST_ADD_REF_(T) typename ::std::tr1::gtest_internal::AddRef::type + +// A helper for implementing get(). +template class Get; + +// A helper for implementing tuple_element. kIndexValid is true +// iff k < the number of fields in tuple type T. +template +struct TupleElement; + + +$for i [[ +template +struct TupleElement { + typedef T$i type; +}; + + +]] +} // namespace gtest_internal + +template <> +class tuple<> { + public: + tuple() {} + tuple(const tuple& /* t */) {} + tuple& operator=(const tuple& /* t */) { return *this; } +}; + + +$for k [[ +$range m 0..k-1 +template +class $if k < n [[GTEST_$(k)_TUPLE_(T)]] $else [[tuple]] { + public: + template friend class gtest_internal::Get; + + tuple() : $for m, [[f$(m)_()]] {} + + explicit tuple($for m, [[GTEST_BY_REF_(T$m) f$m]]) : [[]] +$for m, [[f$(m)_(f$m)]] {} + + tuple(const tuple& t) : $for m, [[f$(m)_(t.f$(m)_)]] {} + + template + tuple(const GTEST_$(k)_TUPLE_(U)& t) : $for m, [[f$(m)_(t.f$(m)_)]] {} + +$if k == 2 [[ + template + tuple(const ::std::pair& p) : f0_(p.first), f1_(p.second) {} + +]] + + tuple& operator=(const tuple& t) { return CopyFrom(t); } + + template + tuple& operator=(const GTEST_$(k)_TUPLE_(U)& t) { + return CopyFrom(t); + } + +$if k == 2 [[ + template + tuple& operator=(const ::std::pair& p) { + f0_ = p.first; + f1_ = p.second; + return *this; + } + +]] + + GTEST_DECLARE_TUPLE_AS_FRIEND_ + + template + tuple& CopyFrom(const GTEST_$(k)_TUPLE_(U)& t) { + +$for m [[ + f$(m)_ = t.f$(m)_; + +]] + return *this; + } + + +$for m [[ + T$m f$(m)_; + +]] +}; + + +]] +// 6.1.3.2 Tuple creation functions. + +// Known limitations: we don't support passing an +// std::tr1::reference_wrapper to make_tuple(). And we don't +// implement tie(). + +inline tuple<> make_tuple() { return tuple<>(); } + +$for k [[ +$range m 0..k-1 + +template +inline GTEST_$(k)_TUPLE_(T) make_tuple($for m, [[const T$m& f$m]]) { + return GTEST_$(k)_TUPLE_(T)($for m, [[f$m]]); +} + +]] + +// 6.1.3.3 Tuple helper classes. + +template struct tuple_size; + + +$for j [[ +template +struct tuple_size { + static const int value = $j; +}; + + +]] +template +struct tuple_element { + typedef typename gtest_internal::TupleElement< + k < (tuple_size::value), k, Tuple>::type type; +}; + +#define GTEST_TUPLE_ELEMENT_(k, Tuple) typename tuple_element::type + +// 6.1.3.4 Element access. + +namespace gtest_internal { + + +$for i [[ +template <> +class Get<$i> { + public: + template + static GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_($i, Tuple)) + Field(Tuple& t) { return t.f$(i)_; } // NOLINT + + template + static GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_($i, Tuple)) + ConstField(const Tuple& t) { return t.f$(i)_; } +}; + + +]] +} // namespace gtest_internal + +template +GTEST_ADD_REF_(GTEST_TUPLE_ELEMENT_(k, GTEST_$(n)_TUPLE_(T))) +get(GTEST_$(n)_TUPLE_(T)& t) { + return gtest_internal::Get::Field(t); +} + +template +GTEST_BY_REF_(GTEST_TUPLE_ELEMENT_(k, GTEST_$(n)_TUPLE_(T))) +get(const GTEST_$(n)_TUPLE_(T)& t) { + return gtest_internal::Get::ConstField(t); +} + +// 6.1.3.5 Relational operators + +// We only implement == and !=, as we don't have a need for the rest yet. + +namespace gtest_internal { + +// SameSizeTuplePrefixComparator::Eq(t1, t2) returns true if the +// first k fields of t1 equals the first k fields of t2. +// SameSizeTuplePrefixComparator(k1, k2) would be a compiler error if +// k1 != k2. +template +struct SameSizeTuplePrefixComparator; + +template <> +struct SameSizeTuplePrefixComparator<0, 0> { + template + static bool Eq(const Tuple1& /* t1 */, const Tuple2& /* t2 */) { + return true; + } +}; + +template +struct SameSizeTuplePrefixComparator { + template + static bool Eq(const Tuple1& t1, const Tuple2& t2) { + return SameSizeTuplePrefixComparator::Eq(t1, t2) && + ::std::tr1::get(t1) == ::std::tr1::get(t2); + } +}; + +} // namespace gtest_internal + +template +inline bool operator==(const GTEST_$(n)_TUPLE_(T)& t, + const GTEST_$(n)_TUPLE_(U)& u) { + return gtest_internal::SameSizeTuplePrefixComparator< + tuple_size::value, + tuple_size::value>::Eq(t, u); +} + +template +inline bool operator!=(const GTEST_$(n)_TUPLE_(T)& t, + const GTEST_$(n)_TUPLE_(U)& u) { return !(t == u); } + +// 6.1.4 Pairs. +// Unimplemented. + +} // namespace tr1 +} // namespace std + + +$for j [[ +#undef GTEST_$(j)_TUPLE_ + +]] + + +$for j [[ +#undef GTEST_$(j)_TYPENAMES_ + +]] + +#undef GTEST_DECLARE_TUPLE_AS_FRIEND_ +#undef GTEST_BY_REF_ +#undef GTEST_ADD_REF_ +#undef GTEST_TUPLE_ELEMENT_ + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TUPLE_H_ diff --git a/thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-type-util.h b/thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-type-util.h new file mode 100644 index 00000000..4a7d946f --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-type-util.h @@ -0,0 +1,3332 @@ +// This file was GENERATED by command: +// pump.py gtest-type-util.h.pump +// DO NOT EDIT BY HAND!!! + +// Copyright 2008 Google Inc. +// All Rights Reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +// Type utilities needed for implementing typed and type-parameterized +// tests. This file is generated by a SCRIPT. DO NOT EDIT BY HAND! +// +// Currently we support at most 50 types in a list, and at most 50 +// type-parameterized tests in one type-parameterized test case. +// Please contact googletestframework@googlegroups.com if you need +// more. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_ + +#include "gtest/internal/gtest-port.h" +#include "gtest/internal/gtest-string.h" + +// #ifdef __GNUC__ is too general here. It is possible to use gcc without using +// libstdc++ (which is where cxxabi.h comes from). +# if GTEST_HAS_CXXABI_H_ +# include +# elif defined(__HP_aCC) +# include +# endif // GTEST_HASH_CXXABI_H_ + +namespace testing { +namespace internal { + +// GetTypeName() returns a human-readable name of type T. +// NB: This function is also used in Google Mock, so don't move it inside of +// the typed-test-only section below. +template +std::string GetTypeName() { +# if GTEST_HAS_RTTI + + const char* const name = typeid(T).name(); +# if GTEST_HAS_CXXABI_H_ || defined(__HP_aCC) + int status = 0; + // gcc's implementation of typeid(T).name() mangles the type name, + // so we have to demangle it. +# if GTEST_HAS_CXXABI_H_ + using abi::__cxa_demangle; +# endif // GTEST_HAS_CXXABI_H_ + char* const readable_name = __cxa_demangle(name, 0, 0, &status); + const std::string name_str(status == 0 ? readable_name : name); + free(readable_name); + return name_str; +# else + return name; +# endif // GTEST_HAS_CXXABI_H_ || __HP_aCC + +# else + + return ""; + +# endif // GTEST_HAS_RTTI +} + +#if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P + +// AssertyTypeEq::type is defined iff T1 and T2 are the same +// type. This can be used as a compile-time assertion to ensure that +// two types are equal. + +template +struct AssertTypeEq; + +template +struct AssertTypeEq { + typedef bool type; +}; + +// A unique type used as the default value for the arguments of class +// template Types. This allows us to simulate variadic templates +// (e.g. Types, Type, and etc), which C++ doesn't +// support directly. +struct None {}; + +// The following family of struct and struct templates are used to +// represent type lists. In particular, TypesN +// represents a type list with N types (T1, T2, ..., and TN) in it. +// Except for Types0, every struct in the family has two member types: +// Head for the first type in the list, and Tail for the rest of the +// list. + +// The empty type list. +struct Types0 {}; + +// Type lists of length 1, 2, 3, and so on. + +template +struct Types1 { + typedef T1 Head; + typedef Types0 Tail; +}; +template +struct Types2 { + typedef T1 Head; + typedef Types1 Tail; +}; + +template +struct Types3 { + typedef T1 Head; + typedef Types2 Tail; +}; + +template +struct Types4 { + typedef T1 Head; + typedef Types3 Tail; +}; + +template +struct Types5 { + typedef T1 Head; + typedef Types4 Tail; +}; + +template +struct Types6 { + typedef T1 Head; + typedef Types5 Tail; +}; + +template +struct Types7 { + typedef T1 Head; + typedef Types6 Tail; +}; + +template +struct Types8 { + typedef T1 Head; + typedef Types7 Tail; +}; + +template +struct Types9 { + typedef T1 Head; + typedef Types8 Tail; +}; + +template +struct Types10 { + typedef T1 Head; + typedef Types9 Tail; +}; + +template +struct Types11 { + typedef T1 Head; + typedef Types10 Tail; +}; + +template +struct Types12 { + typedef T1 Head; + typedef Types11 Tail; +}; + +template +struct Types13 { + typedef T1 Head; + typedef Types12 Tail; +}; + +template +struct Types14 { + typedef T1 Head; + typedef Types13 Tail; +}; + +template +struct Types15 { + typedef T1 Head; + typedef Types14 Tail; +}; + +template +struct Types16 { + typedef T1 Head; + typedef Types15 Tail; +}; + +template +struct Types17 { + typedef T1 Head; + typedef Types16 Tail; +}; + +template +struct Types18 { + typedef T1 Head; + typedef Types17 Tail; +}; + +template +struct Types19 { + typedef T1 Head; + typedef Types18 Tail; +}; + +template +struct Types20 { + typedef T1 Head; + typedef Types19 Tail; +}; + +template +struct Types21 { + typedef T1 Head; + typedef Types20 Tail; +}; + +template +struct Types22 { + typedef T1 Head; + typedef Types21 Tail; +}; + +template +struct Types23 { + typedef T1 Head; + typedef Types22 Tail; +}; + +template +struct Types24 { + typedef T1 Head; + typedef Types23 Tail; +}; + +template +struct Types25 { + typedef T1 Head; + typedef Types24 Tail; +}; + +template +struct Types26 { + typedef T1 Head; + typedef Types25 Tail; +}; + +template +struct Types27 { + typedef T1 Head; + typedef Types26 Tail; +}; + +template +struct Types28 { + typedef T1 Head; + typedef Types27 Tail; +}; + +template +struct Types29 { + typedef T1 Head; + typedef Types28 Tail; +}; + +template +struct Types30 { + typedef T1 Head; + typedef Types29 Tail; +}; + +template +struct Types31 { + typedef T1 Head; + typedef Types30 Tail; +}; + +template +struct Types32 { + typedef T1 Head; + typedef Types31 Tail; +}; + +template +struct Types33 { + typedef T1 Head; + typedef Types32 Tail; +}; + +template +struct Types34 { + typedef T1 Head; + typedef Types33 Tail; +}; + +template +struct Types35 { + typedef T1 Head; + typedef Types34 Tail; +}; + +template +struct Types36 { + typedef T1 Head; + typedef Types35 Tail; +}; + +template +struct Types37 { + typedef T1 Head; + typedef Types36 Tail; +}; + +template +struct Types38 { + typedef T1 Head; + typedef Types37 Tail; +}; + +template +struct Types39 { + typedef T1 Head; + typedef Types38 Tail; +}; + +template +struct Types40 { + typedef T1 Head; + typedef Types39 Tail; +}; + +template +struct Types41 { + typedef T1 Head; + typedef Types40 Tail; +}; + +template +struct Types42 { + typedef T1 Head; + typedef Types41 Tail; +}; + +template +struct Types43 { + typedef T1 Head; + typedef Types42 Tail; +}; + +template +struct Types44 { + typedef T1 Head; + typedef Types43 Tail; +}; + +template +struct Types45 { + typedef T1 Head; + typedef Types44 Tail; +}; + +template +struct Types46 { + typedef T1 Head; + typedef Types45 Tail; +}; + +template +struct Types47 { + typedef T1 Head; + typedef Types46 Tail; +}; + +template +struct Types48 { + typedef T1 Head; + typedef Types47 Tail; +}; + +template +struct Types49 { + typedef T1 Head; + typedef Types48 Tail; +}; + +template +struct Types50 { + typedef T1 Head; + typedef Types49 Tail; +}; + + +} // namespace internal + +// We don't want to require the users to write TypesN<...> directly, +// as that would require them to count the length. Types<...> is much +// easier to write, but generates horrible messages when there is a +// compiler error, as gcc insists on printing out each template +// argument, even if it has the default value (this means Types +// will appear as Types in the compiler +// errors). +// +// Our solution is to combine the best part of the two approaches: a +// user would write Types, and Google Test will translate +// that to TypesN internally to make error messages +// readable. The translation is done by the 'type' member of the +// Types template. +template +struct Types { + typedef internal::Types50 type; +}; + +template <> +struct Types { + typedef internal::Types0 type; +}; +template +struct Types { + typedef internal::Types1 type; +}; +template +struct Types { + typedef internal::Types2 type; +}; +template +struct Types { + typedef internal::Types3 type; +}; +template +struct Types { + typedef internal::Types4 type; +}; +template +struct Types { + typedef internal::Types5 type; +}; +template +struct Types { + typedef internal::Types6 type; +}; +template +struct Types { + typedef internal::Types7 type; +}; +template +struct Types { + typedef internal::Types8 type; +}; +template +struct Types { + typedef internal::Types9 type; +}; +template +struct Types { + typedef internal::Types10 type; +}; +template +struct Types { + typedef internal::Types11 type; +}; +template +struct Types { + typedef internal::Types12 type; +}; +template +struct Types { + typedef internal::Types13 type; +}; +template +struct Types { + typedef internal::Types14 type; +}; +template +struct Types { + typedef internal::Types15 type; +}; +template +struct Types { + typedef internal::Types16 type; +}; +template +struct Types { + typedef internal::Types17 type; +}; +template +struct Types { + typedef internal::Types18 type; +}; +template +struct Types { + typedef internal::Types19 type; +}; +template +struct Types { + typedef internal::Types20 type; +}; +template +struct Types { + typedef internal::Types21 type; +}; +template +struct Types { + typedef internal::Types22 type; +}; +template +struct Types { + typedef internal::Types23 type; +}; +template +struct Types { + typedef internal::Types24 type; +}; +template +struct Types { + typedef internal::Types25 type; +}; +template +struct Types { + typedef internal::Types26 type; +}; +template +struct Types { + typedef internal::Types27 type; +}; +template +struct Types { + typedef internal::Types28 type; +}; +template +struct Types { + typedef internal::Types29 type; +}; +template +struct Types { + typedef internal::Types30 type; +}; +template +struct Types { + typedef internal::Types31 type; +}; +template +struct Types { + typedef internal::Types32 type; +}; +template +struct Types { + typedef internal::Types33 type; +}; +template +struct Types { + typedef internal::Types34 type; +}; +template +struct Types { + typedef internal::Types35 type; +}; +template +struct Types { + typedef internal::Types36 type; +}; +template +struct Types { + typedef internal::Types37 type; +}; +template +struct Types { + typedef internal::Types38 type; +}; +template +struct Types { + typedef internal::Types39 type; +}; +template +struct Types { + typedef internal::Types40 type; +}; +template +struct Types { + typedef internal::Types41 type; +}; +template +struct Types { + typedef internal::Types42 type; +}; +template +struct Types { + typedef internal::Types43 type; +}; +template +struct Types { + typedef internal::Types44 type; +}; +template +struct Types { + typedef internal::Types45 type; +}; +template +struct Types { + typedef internal::Types46 type; +}; +template +struct Types { + typedef internal::Types47 type; +}; +template +struct Types { + typedef internal::Types48 type; +}; +template +struct Types { + typedef internal::Types49 type; +}; + +namespace internal { + +# define GTEST_TEMPLATE_ template class + +// The template "selector" struct TemplateSel is used to +// represent Tmpl, which must be a class template with one type +// parameter, as a type. TemplateSel::Bind::type is defined +// as the type Tmpl. This allows us to actually instantiate the +// template "selected" by TemplateSel. +// +// This trick is necessary for simulating typedef for class templates, +// which C++ doesn't support directly. +template +struct TemplateSel { + template + struct Bind { + typedef Tmpl type; + }; +}; + +# define GTEST_BIND_(TmplSel, T) \ + TmplSel::template Bind::type + +// A unique struct template used as the default value for the +// arguments of class template Templates. This allows us to simulate +// variadic templates (e.g. Templates, Templates, +// and etc), which C++ doesn't support directly. +template +struct NoneT {}; + +// The following family of struct and struct templates are used to +// represent template lists. In particular, TemplatesN represents a list of N templates (T1, T2, ..., and TN). Except +// for Templates0, every struct in the family has two member types: +// Head for the selector of the first template in the list, and Tail +// for the rest of the list. + +// The empty template list. +struct Templates0 {}; + +// Template lists of length 1, 2, 3, and so on. + +template +struct Templates1 { + typedef TemplateSel Head; + typedef Templates0 Tail; +}; +template +struct Templates2 { + typedef TemplateSel Head; + typedef Templates1 Tail; +}; + +template +struct Templates3 { + typedef TemplateSel Head; + typedef Templates2 Tail; +}; + +template +struct Templates4 { + typedef TemplateSel Head; + typedef Templates3 Tail; +}; + +template +struct Templates5 { + typedef TemplateSel Head; + typedef Templates4 Tail; +}; + +template +struct Templates6 { + typedef TemplateSel Head; + typedef Templates5 Tail; +}; + +template +struct Templates7 { + typedef TemplateSel Head; + typedef Templates6 Tail; +}; + +template +struct Templates8 { + typedef TemplateSel Head; + typedef Templates7 Tail; +}; + +template +struct Templates9 { + typedef TemplateSel Head; + typedef Templates8 Tail; +}; + +template +struct Templates10 { + typedef TemplateSel Head; + typedef Templates9 Tail; +}; + +template +struct Templates11 { + typedef TemplateSel Head; + typedef Templates10 Tail; +}; + +template +struct Templates12 { + typedef TemplateSel Head; + typedef Templates11 Tail; +}; + +template +struct Templates13 { + typedef TemplateSel Head; + typedef Templates12 Tail; +}; + +template +struct Templates14 { + typedef TemplateSel Head; + typedef Templates13 Tail; +}; + +template +struct Templates15 { + typedef TemplateSel Head; + typedef Templates14 Tail; +}; + +template +struct Templates16 { + typedef TemplateSel Head; + typedef Templates15 Tail; +}; + +template +struct Templates17 { + typedef TemplateSel Head; + typedef Templates16 Tail; +}; + +template +struct Templates18 { + typedef TemplateSel Head; + typedef Templates17 Tail; +}; + +template +struct Templates19 { + typedef TemplateSel Head; + typedef Templates18 Tail; +}; + +template +struct Templates20 { + typedef TemplateSel Head; + typedef Templates19 Tail; +}; + +template +struct Templates21 { + typedef TemplateSel Head; + typedef Templates20 Tail; +}; + +template +struct Templates22 { + typedef TemplateSel Head; + typedef Templates21 Tail; +}; + +template +struct Templates23 { + typedef TemplateSel Head; + typedef Templates22 Tail; +}; + +template +struct Templates24 { + typedef TemplateSel Head; + typedef Templates23 Tail; +}; + +template +struct Templates25 { + typedef TemplateSel Head; + typedef Templates24 Tail; +}; + +template +struct Templates26 { + typedef TemplateSel Head; + typedef Templates25 Tail; +}; + +template +struct Templates27 { + typedef TemplateSel Head; + typedef Templates26 Tail; +}; + +template +struct Templates28 { + typedef TemplateSel Head; + typedef Templates27 Tail; +}; + +template +struct Templates29 { + typedef TemplateSel Head; + typedef Templates28 Tail; +}; + +template +struct Templates30 { + typedef TemplateSel Head; + typedef Templates29 Tail; +}; + +template +struct Templates31 { + typedef TemplateSel Head; + typedef Templates30 Tail; +}; + +template +struct Templates32 { + typedef TemplateSel Head; + typedef Templates31 Tail; +}; + +template +struct Templates33 { + typedef TemplateSel Head; + typedef Templates32 Tail; +}; + +template +struct Templates34 { + typedef TemplateSel Head; + typedef Templates33 Tail; +}; + +template +struct Templates35 { + typedef TemplateSel Head; + typedef Templates34 Tail; +}; + +template +struct Templates36 { + typedef TemplateSel Head; + typedef Templates35 Tail; +}; + +template +struct Templates37 { + typedef TemplateSel Head; + typedef Templates36 Tail; +}; + +template +struct Templates38 { + typedef TemplateSel Head; + typedef Templates37 Tail; +}; + +template +struct Templates39 { + typedef TemplateSel Head; + typedef Templates38 Tail; +}; + +template +struct Templates40 { + typedef TemplateSel Head; + typedef Templates39 Tail; +}; + +template +struct Templates41 { + typedef TemplateSel Head; + typedef Templates40 Tail; +}; + +template +struct Templates42 { + typedef TemplateSel Head; + typedef Templates41 Tail; +}; + +template +struct Templates43 { + typedef TemplateSel Head; + typedef Templates42 Tail; +}; + +template +struct Templates44 { + typedef TemplateSel Head; + typedef Templates43 Tail; +}; + +template +struct Templates45 { + typedef TemplateSel Head; + typedef Templates44 Tail; +}; + +template +struct Templates46 { + typedef TemplateSel Head; + typedef Templates45 Tail; +}; + +template +struct Templates47 { + typedef TemplateSel Head; + typedef Templates46 Tail; +}; + +template +struct Templates48 { + typedef TemplateSel Head; + typedef Templates47 Tail; +}; + +template +struct Templates49 { + typedef TemplateSel Head; + typedef Templates48 Tail; +}; + +template +struct Templates50 { + typedef TemplateSel Head; + typedef Templates49 Tail; +}; + + +// We don't want to require the users to write TemplatesN<...> directly, +// as that would require them to count the length. Templates<...> is much +// easier to write, but generates horrible messages when there is a +// compiler error, as gcc insists on printing out each template +// argument, even if it has the default value (this means Templates +// will appear as Templates in the compiler +// errors). +// +// Our solution is to combine the best part of the two approaches: a +// user would write Templates, and Google Test will translate +// that to TemplatesN internally to make error messages +// readable. The translation is done by the 'type' member of the +// Templates template. +template +struct Templates { + typedef Templates50 type; +}; + +template <> +struct Templates { + typedef Templates0 type; +}; +template +struct Templates { + typedef Templates1 type; +}; +template +struct Templates { + typedef Templates2 type; +}; +template +struct Templates { + typedef Templates3 type; +}; +template +struct Templates { + typedef Templates4 type; +}; +template +struct Templates { + typedef Templates5 type; +}; +template +struct Templates { + typedef Templates6 type; +}; +template +struct Templates { + typedef Templates7 type; +}; +template +struct Templates { + typedef Templates8 type; +}; +template +struct Templates { + typedef Templates9 type; +}; +template +struct Templates { + typedef Templates10 type; +}; +template +struct Templates { + typedef Templates11 type; +}; +template +struct Templates { + typedef Templates12 type; +}; +template +struct Templates { + typedef Templates13 type; +}; +template +struct Templates { + typedef Templates14 type; +}; +template +struct Templates { + typedef Templates15 type; +}; +template +struct Templates { + typedef Templates16 type; +}; +template +struct Templates { + typedef Templates17 type; +}; +template +struct Templates { + typedef Templates18 type; +}; +template +struct Templates { + typedef Templates19 type; +}; +template +struct Templates { + typedef Templates20 type; +}; +template +struct Templates { + typedef Templates21 type; +}; +template +struct Templates { + typedef Templates22 type; +}; +template +struct Templates { + typedef Templates23 type; +}; +template +struct Templates { + typedef Templates24 type; +}; +template +struct Templates { + typedef Templates25 type; +}; +template +struct Templates { + typedef Templates26 type; +}; +template +struct Templates { + typedef Templates27 type; +}; +template +struct Templates { + typedef Templates28 type; +}; +template +struct Templates { + typedef Templates29 type; +}; +template +struct Templates { + typedef Templates30 type; +}; +template +struct Templates { + typedef Templates31 type; +}; +template +struct Templates { + typedef Templates32 type; +}; +template +struct Templates { + typedef Templates33 type; +}; +template +struct Templates { + typedef Templates34 type; +}; +template +struct Templates { + typedef Templates35 type; +}; +template +struct Templates { + typedef Templates36 type; +}; +template +struct Templates { + typedef Templates37 type; +}; +template +struct Templates { + typedef Templates38 type; +}; +template +struct Templates { + typedef Templates39 type; +}; +template +struct Templates { + typedef Templates40 type; +}; +template +struct Templates { + typedef Templates41 type; +}; +template +struct Templates { + typedef Templates42 type; +}; +template +struct Templates { + typedef Templates43 type; +}; +template +struct Templates { + typedef Templates44 type; +}; +template +struct Templates { + typedef Templates45 type; +}; +template +struct Templates { + typedef Templates46 type; +}; +template +struct Templates { + typedef Templates47 type; +}; +template +struct Templates { + typedef Templates48 type; +}; +template +struct Templates { + typedef Templates49 type; +}; + +// The TypeList template makes it possible to use either a single type +// or a Types<...> list in TYPED_TEST_CASE() and +// INSTANTIATE_TYPED_TEST_CASE_P(). + +template +struct TypeList { + typedef Types1 type; +}; + +template +struct TypeList > { + typedef typename Types::type type; +}; + +#endif // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P + +} // namespace internal +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_ diff --git a/thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-type-util.h.pump b/thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-type-util.h.pump new file mode 100644 index 00000000..3638d516 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/include/gtest/internal/gtest-type-util.h.pump @@ -0,0 +1,298 @@ +$$ -*- mode: c++; -*- +$var n = 50 $$ Maximum length of type lists we want to support. +// Copyright 2008 Google Inc. +// All Rights Reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +// Type utilities needed for implementing typed and type-parameterized +// tests. This file is generated by a SCRIPT. DO NOT EDIT BY HAND! +// +// Currently we support at most $n types in a list, and at most $n +// type-parameterized tests in one type-parameterized test case. +// Please contact googletestframework@googlegroups.com if you need +// more. + +#ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_ +#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_ + +#include "gtest/internal/gtest-port.h" +#include "gtest/internal/gtest-string.h" + +// #ifdef __GNUC__ is too general here. It is possible to use gcc without using +// libstdc++ (which is where cxxabi.h comes from). +# if GTEST_HAS_CXXABI_H_ +# include +# elif defined(__HP_aCC) +# include +# endif // GTEST_HASH_CXXABI_H_ + +namespace testing { +namespace internal { + +// GetTypeName() returns a human-readable name of type T. +// NB: This function is also used in Google Mock, so don't move it inside of +// the typed-test-only section below. +template +std::string GetTypeName() { +# if GTEST_HAS_RTTI + + const char* const name = typeid(T).name(); +# if GTEST_HAS_CXXABI_H_ || defined(__HP_aCC) + int status = 0; + // gcc's implementation of typeid(T).name() mangles the type name, + // so we have to demangle it. +# if GTEST_HAS_CXXABI_H_ + using abi::__cxa_demangle; +# endif // GTEST_HAS_CXXABI_H_ + char* const readable_name = __cxa_demangle(name, 0, 0, &status); + const std::string name_str(status == 0 ? readable_name : name); + free(readable_name); + return name_str; +# else + return name; +# endif // GTEST_HAS_CXXABI_H_ || __HP_aCC + +# else + + return ""; + +# endif // GTEST_HAS_RTTI +} + +#if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P + +// AssertyTypeEq::type is defined iff T1 and T2 are the same +// type. This can be used as a compile-time assertion to ensure that +// two types are equal. + +template +struct AssertTypeEq; + +template +struct AssertTypeEq { + typedef bool type; +}; + +// A unique type used as the default value for the arguments of class +// template Types. This allows us to simulate variadic templates +// (e.g. Types, Type, and etc), which C++ doesn't +// support directly. +struct None {}; + +// The following family of struct and struct templates are used to +// represent type lists. In particular, TypesN +// represents a type list with N types (T1, T2, ..., and TN) in it. +// Except for Types0, every struct in the family has two member types: +// Head for the first type in the list, and Tail for the rest of the +// list. + +// The empty type list. +struct Types0 {}; + +// Type lists of length 1, 2, 3, and so on. + +template +struct Types1 { + typedef T1 Head; + typedef Types0 Tail; +}; + +$range i 2..n + +$for i [[ +$range j 1..i +$range k 2..i +template <$for j, [[typename T$j]]> +struct Types$i { + typedef T1 Head; + typedef Types$(i-1)<$for k, [[T$k]]> Tail; +}; + + +]] + +} // namespace internal + +// We don't want to require the users to write TypesN<...> directly, +// as that would require them to count the length. Types<...> is much +// easier to write, but generates horrible messages when there is a +// compiler error, as gcc insists on printing out each template +// argument, even if it has the default value (this means Types +// will appear as Types in the compiler +// errors). +// +// Our solution is to combine the best part of the two approaches: a +// user would write Types, and Google Test will translate +// that to TypesN internally to make error messages +// readable. The translation is done by the 'type' member of the +// Types template. + +$range i 1..n +template <$for i, [[typename T$i = internal::None]]> +struct Types { + typedef internal::Types$n<$for i, [[T$i]]> type; +}; + +template <> +struct Types<$for i, [[internal::None]]> { + typedef internal::Types0 type; +}; + +$range i 1..n-1 +$for i [[ +$range j 1..i +$range k i+1..n +template <$for j, [[typename T$j]]> +struct Types<$for j, [[T$j]]$for k[[, internal::None]]> { + typedef internal::Types$i<$for j, [[T$j]]> type; +}; + +]] + +namespace internal { + +# define GTEST_TEMPLATE_ template class + +// The template "selector" struct TemplateSel is used to +// represent Tmpl, which must be a class template with one type +// parameter, as a type. TemplateSel::Bind::type is defined +// as the type Tmpl. This allows us to actually instantiate the +// template "selected" by TemplateSel. +// +// This trick is necessary for simulating typedef for class templates, +// which C++ doesn't support directly. +template +struct TemplateSel { + template + struct Bind { + typedef Tmpl type; + }; +}; + +# define GTEST_BIND_(TmplSel, T) \ + TmplSel::template Bind::type + +// A unique struct template used as the default value for the +// arguments of class template Templates. This allows us to simulate +// variadic templates (e.g. Templates, Templates, +// and etc), which C++ doesn't support directly. +template +struct NoneT {}; + +// The following family of struct and struct templates are used to +// represent template lists. In particular, TemplatesN represents a list of N templates (T1, T2, ..., and TN). Except +// for Templates0, every struct in the family has two member types: +// Head for the selector of the first template in the list, and Tail +// for the rest of the list. + +// The empty template list. +struct Templates0 {}; + +// Template lists of length 1, 2, 3, and so on. + +template +struct Templates1 { + typedef TemplateSel Head; + typedef Templates0 Tail; +}; + +$range i 2..n + +$for i [[ +$range j 1..i +$range k 2..i +template <$for j, [[GTEST_TEMPLATE_ T$j]]> +struct Templates$i { + typedef TemplateSel Head; + typedef Templates$(i-1)<$for k, [[T$k]]> Tail; +}; + + +]] + +// We don't want to require the users to write TemplatesN<...> directly, +// as that would require them to count the length. Templates<...> is much +// easier to write, but generates horrible messages when there is a +// compiler error, as gcc insists on printing out each template +// argument, even if it has the default value (this means Templates +// will appear as Templates in the compiler +// errors). +// +// Our solution is to combine the best part of the two approaches: a +// user would write Templates, and Google Test will translate +// that to TemplatesN internally to make error messages +// readable. The translation is done by the 'type' member of the +// Templates template. + +$range i 1..n +template <$for i, [[GTEST_TEMPLATE_ T$i = NoneT]]> +struct Templates { + typedef Templates$n<$for i, [[T$i]]> type; +}; + +template <> +struct Templates<$for i, [[NoneT]]> { + typedef Templates0 type; +}; + +$range i 1..n-1 +$for i [[ +$range j 1..i +$range k i+1..n +template <$for j, [[GTEST_TEMPLATE_ T$j]]> +struct Templates<$for j, [[T$j]]$for k[[, NoneT]]> { + typedef Templates$i<$for j, [[T$j]]> type; +}; + +]] + +// The TypeList template makes it possible to use either a single type +// or a Types<...> list in TYPED_TEST_CASE() and +// INSTANTIATE_TYPED_TEST_CASE_P(). + +template +struct TypeList { + typedef Types1 type; +}; + + +$range i 1..n +template <$for i, [[typename T$i]]> +struct TypeList > { + typedef typename Types<$for i, [[T$i]]>::type type; +}; + +#endif // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P + +} // namespace internal +} // namespace testing + +#endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_ diff --git a/thirdparty/protobuf-2.6.1/gtest/lib/.dirstamp b/thirdparty/protobuf-2.6.1/gtest/lib/.dirstamp new file mode 100644 index 00000000..e69de29b diff --git a/thirdparty/protobuf-2.6.1/gtest/libtool b/thirdparty/protobuf-2.6.1/gtest/libtool new file mode 100755 index 00000000..0fa63f7a --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/libtool @@ -0,0 +1,11909 @@ +#! /bin/bash +# Generated automatically by config.status (gtest) 1.6.0 +# NOTE: Changes made to this file will be lost: look at ltmain.sh. + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + +# Copyright (C) 2014 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +# The names of the tagged configurations supported by this script. +available_tags='CXX ' + +# Configured defaults for sys_lib_dlsearch_path munging. +: ${LT_SYS_LIBRARY_PATH=""} + +# ### BEGIN LIBTOOL CONFIG + +# Which release of libtool.m4 was used? +macro_version=2.4.6 +macro_revision=2.4.6 + +# Whether or not to build shared libraries. +build_libtool_libs=yes + +# Whether or not to build static libraries. +build_old_libs=yes + +# What type of objects to build. +pic_mode=default + +# Whether or not to optimize for fast installation. +fast_install=needless + +# Shared archive member basename,for filename based shared library versioning on AIX. +shared_archive_member_spec= + +# Shell to use when invoking shell scripts. +SHELL="/bin/bash" + +# An echo program that protects backslashes. +ECHO="printf %s\\n" + +# The PATH separator for the build system. +PATH_SEPARATOR=":" + +# The host system. +host_alias= +host=x86_64-pc-linux-gnu +host_os=linux-gnu + +# The build system. +build_alias= +build=x86_64-pc-linux-gnu +build_os=linux-gnu + +# A sed program that does not truncate output. +SED="/bin/sed" + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP="/bin/grep" + +# An ERE matcher. +EGREP="/bin/grep -E" + +# A literal string matcher. +FGREP="/bin/grep -F" + +# A BSD- or MS-compatible name lister. +NM="/usr/bin/nm -B" + +# Whether we need soft or hard links. +LN_S="ln -s" + +# What is the maximum length of a command? +max_cmd_len=1572864 + +# Object file suffix (normally "o"). +objext=o + +# Executable file suffix (normally ""). +exeext= + +# whether the shell understands "unset". +lt_unset=unset + +# turn spaces into newlines. +SP2NL="tr \\040 \\012" + +# turn newlines into spaces. +NL2SP="tr \\015\\012 \\040\\040" + +# convert $build file names to $host format. +to_host_file_cmd=func_convert_file_noop + +# convert $build files to toolchain format. +to_tool_file_cmd=func_convert_file_noop + +# An object symbol dumper. +OBJDUMP="objdump" + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method="pass_all" + +# Command to use when deplibs_check_method = "file_magic". +file_magic_cmd="\$MAGIC_CMD" + +# How to find potential files when deplibs_check_method = "file_magic". +file_magic_glob="" + +# Find potential files using nocaseglob when deplibs_check_method = "file_magic". +want_nocaseglob="no" + +# DLL creation program. +DLLTOOL="false" + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd="printf %s\\n" + +# The archiver. +AR="ar" + +# Flags to create an archive. +AR_FLAGS="cru" + +# How to feed a file listing to the archiver. +archiver_list_spec="@" + +# A symbol stripping program. +STRIP="strip" + +# Commands used to install an old-style archive. +RANLIB="ranlib" +old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$tool_oldlib" +old_postuninstall_cmds="" + +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=no + +# A C compiler. +LTCC="gcc" + +# LTCC compiler flags. +LTCFLAGS="" + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p' | sed '/ __gnu_lto/d'" + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl="sed -n -e 's/^T .* \\(.*\\)\$/extern int \\1();/p' -e 's/^[ABCDGIRSTW][ABCDGIRSTW]* .* \\(.*\\)\$/extern char \\1;/p'" + +# Transform the output of nm into a list of symbols to manually relocate. +global_symbol_to_import="" + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address="sed -n -e 's/^: \\(.*\\) .*\$/ {\"\\1\", (void *) 0},/p' -e 's/^[ABCDGIRSTW][ABCDGIRSTW]* .* \\(.*\\)\$/ {\"\\1\", (void *) \\&\\1},/p'" + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \\(.*\\) .*\$/ {\"\\1\", (void *) 0},/p' -e 's/^[ABCDGIRSTW][ABCDGIRSTW]* .* \\(lib.*\\)\$/ {\"\\1\", (void *) \\&\\1},/p' -e 's/^[ABCDGIRSTW][ABCDGIRSTW]* .* \\(.*\\)\$/ {\"lib\\1\", (void *) \\&\\1},/p'" + +# The name lister interface. +nm_interface="BSD nm" + +# Specify filename containing input files for $NM. +nm_file_list_spec="@" + +# The root where to search for dependent libraries,and where our libraries should be installed. +lt_sysroot= + +# Command to truncate a binary pipe. +lt_truncate_bin="/bin/dd bs=4096 count=1" + +# The name of the directory that contains temporary libtool files. +objdir=.libs + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=file + +# Must we lock files when doing compilation? +need_locks="no" + +# Manifest tool. +MANIFEST_TOOL=":" + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL="" + +# Tool to change global to local symbols on Mac OS X. +NMEDIT="" + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO="" + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL="" + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64="" + +# Old archive suffix (normally "a"). +libext=a + +# Shared library suffix (normally ".so"). +shrext_cmds=".so" + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds="" + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" + +# Do we need the "lib" prefix for modules? +need_lib_prefix=no + +# Do we need a version for libraries? +need_version=no + +# Library versioning type. +version_type=linux + +# Shared library runtime path variable. +runpath_var=LD_RUN_PATH + +# Shared library path variable. +shlibpath_var=LD_LIBRARY_PATH + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=yes + +# Format of library name prefix. +libname_spec="lib\$name" + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec="\$libname\$release\$shared_ext\$versuffix \$libname\$release\$shared_ext\$major \$libname\$shared_ext" + +# The coded name of the library, if different from the real name. +soname_spec="\$libname\$release\$shared_ext\$major" + +# Permission mode override for installation of shared libraries. +install_override_mode="" + +# Command to use after installation of a shared archive. +postinstall_cmds="" + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds="" + +# Commands used to finish a libtool library installation in a directory. +finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir" + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval="" + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=yes + +# Compile-time system search path for libraries. +sys_lib_search_path_spec="/usr/lib/gcc/x86_64-linux-gnu/8 /usr/lib/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib " + +# Detected run-time system search path for libraries. +sys_lib_dlsearch_path_spec="/lib /usr/lib /usr/lib/x86_64-linux-gnu/libfakeroot /usr/local/lib /usr/local/lib/x86_64-linux-gnu /lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu /lib32 /usr/lib32 /libx32 /usr/libx32 " + +# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. +configure_time_lt_sys_library_path="" + +# Whether dlopen is supported. +dlopen_support=unknown + +# Whether dlopen of programs is supported. +dlopen_self=unknown + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=unknown + +# Commands to strip libraries. +old_striplib="strip --strip-debug" +striplib="strip --strip-unneeded" + + +# The linker used to build libraries. +LD="/usr/bin/ld -m elf_x86_64" + +# How to create reloadable object files. +reload_flag=" -r" +reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs" + +# Commands used to build an old-style archive. +old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$tool_oldlib" + +# A language specific compiler. +CC="gcc" + +# Is the compiler the GNU compiler? +with_gcc=yes + +# Compiler flag to turn off builtin functions. +no_builtin_flag=" -fno-builtin" + +# Additional compiler flags for building library objects. +pic_flag=" -fPIC -DPIC" + +# How to pass a linker flag through the compiler. +wl="-Wl," + +# Compiler flag to prevent dynamic linking. +link_static_flag="-static" + +# Does compiler simultaneously support -c and -o options? +compiler_c_o="yes" + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=no + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=no + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec="\$wl--export-dynamic" + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec="\$wl--whole-archive\$convenience \$wl--no-whole-archive" + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object="no" + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds="" + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds="" + +# Commands used to build a shared archive. +archive_cmds="\$CC -shared \$pic_flag \$libobjs \$deplibs \$compiler_flags \$wl-soname \$wl\$soname -o \$lib" +archive_expsym_cmds="echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~ + cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~ + echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~ + \$CC -shared \$pic_flag \$libobjs \$deplibs \$compiler_flags \$wl-soname \$wl\$soname \$wl-version-script \$wl\$output_objdir/\$libname.ver -o \$lib" + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds="" +module_expsym_cmds="" + +# Whether we are building with GNU ld or not. +with_gnu_ld="yes" + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag="" + +# Flag that enforces no undefined symbols. +no_undefined_flag="" + +# Flag to hardcode $libdir into a binary during linking. +# This must work even if $libdir does not exist +hardcode_libdir_flag_spec="\$wl-rpath \$wl\$libdir" + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator="" + +# Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=no + +# Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting $shlibpath_var if the +# library is relocated. +hardcode_direct_absolute=no + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=no + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=unsupported + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=no + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=no + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=no + +# Set to "yes" if exported symbols are required. +always_export_symbols=no + +# The commands to list exported symbols. +export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols" + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*" + +# Symbols that must always be exported. +include_expsyms="" + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds="" + +# Commands necessary for finishing linking programs. +postlink_cmds="" + +# Specify filename containing input files. +file_list_spec="" + +# How to hardcode a shared library path into an executable. +hardcode_action=immediate + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs="" + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects="" +postdep_objects="" +predeps="" +postdeps="" + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path="" + +# ### END LIBTOOL CONFIG + + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +#! /bin/sh +## DO NOT EDIT - This file generated from ./build-aux/ltmain.in +## by inline-source v2014-01-03.01 + +# libtool (GNU libtool) 2.4.6 +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit , 1996 + +# Copyright (C) 1996-2015 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +PROGRAM=libtool +PACKAGE=libtool +VERSION="2.4.6 Debian-2.4.6-9" +package_revision=2.4.6 + + +## ------ ## +## Usage. ## +## ------ ## + +# Run './libtool --help' for help with using this script from the +# command line. + + +## ------------------------------- ## +## User overridable command paths. ## +## ------------------------------- ## + +# After configure completes, it has a better idea of some of the +# shell tools we need than the defaults used by the functions shared +# with bootstrap, so set those here where they can still be over- +# ridden by the user, but otherwise take precedence. + +: ${AUTOCONF="autoconf"} +: ${AUTOMAKE="automake"} + + +## -------------------------- ## +## Source external libraries. ## +## -------------------------- ## + +# Much of our low-level functionality needs to be sourced from external +# libraries, which are installed to $pkgauxdir. + +# Set a version string for this script. +scriptversion=2015-01-20.17; # UTC + +# General shell script boiler plate, and helper functions. +# Written by Gary V. Vaughan, 2004 + +# Copyright (C) 2004-2015 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. + +# As a special exception to the GNU General Public License, if you distribute +# this file as part of a program or library that is built using GNU Libtool, +# you may include this file under the same distribution terms that you use +# for the rest of that program. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Please report bugs or propose patches to gary@gnu.org. + + +## ------ ## +## Usage. ## +## ------ ## + +# Evaluate this file near the top of your script to gain access to +# the functions and variables defined here: +# +# . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh +# +# If you need to override any of the default environment variable +# settings, do that before evaluating this file. + + +## -------------------- ## +## Shell normalisation. ## +## -------------------- ## + +# Some shells need a little help to be as Bourne compatible as possible. +# Before doing anything else, make sure all that help has been provided! + +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac +fi + +# NLS nuisances: We save the old values in case they are required later. +_G_user_locale= +_G_safe_locale= +for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES +do + eval "if test set = \"\${$_G_var+set}\"; then + save_$_G_var=\$$_G_var + $_G_var=C + export $_G_var + _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" + _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" + fi" +done + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Make sure IFS has a sensible default +sp=' ' +nl=' +' +IFS="$sp $nl" + +# There are apparently some retarded systems that use ';' as a PATH separator! +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + + +## ------------------------- ## +## Locate command utilities. ## +## ------------------------- ## + + +# func_executable_p FILE +# ---------------------- +# Check that FILE is an executable regular file. +func_executable_p () +{ + test -f "$1" && test -x "$1" +} + + +# func_path_progs PROGS_LIST CHECK_FUNC [PATH] +# -------------------------------------------- +# Search for either a program that responds to --version with output +# containing "GNU", or else returned by CHECK_FUNC otherwise, by +# trying all the directories in PATH with each of the elements of +# PROGS_LIST. +# +# CHECK_FUNC should accept the path to a candidate program, and +# set $func_check_prog_result if it truncates its output less than +# $_G_path_prog_max characters. +func_path_progs () +{ + _G_progs_list=$1 + _G_check_func=$2 + _G_PATH=${3-"$PATH"} + + _G_path_prog_max=0 + _G_path_prog_found=false + _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} + for _G_dir in $_G_PATH; do + IFS=$_G_save_IFS + test -z "$_G_dir" && _G_dir=. + for _G_prog_name in $_G_progs_list; do + for _exeext in '' .EXE; do + _G_path_prog=$_G_dir/$_G_prog_name$_exeext + func_executable_p "$_G_path_prog" || continue + case `"$_G_path_prog" --version 2>&1` in + *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; + *) $_G_check_func $_G_path_prog + func_path_progs_result=$func_check_prog_result + ;; + esac + $_G_path_prog_found && break 3 + done + done + done + IFS=$_G_save_IFS + test -z "$func_path_progs_result" && { + echo "no acceptable sed could be found in \$PATH" >&2 + exit 1 + } +} + + +# We want to be able to use the functions in this file before configure +# has figured out where the best binaries are kept, which means we have +# to search for them ourselves - except when the results are already set +# where we skip the searches. + +# Unless the user overrides by setting SED, search the path for either GNU +# sed, or the sed that truncates its output the least. +test -z "$SED" && { + _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for _G_i in 1 2 3 4 5 6 7; do + _G_sed_script=$_G_sed_script$nl$_G_sed_script + done + echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed + _G_sed_script= + + func_check_prog_sed () + { + _G_path_prog=$1 + + _G_count=0 + printf 0123456789 >conftest.in + while : + do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo '' >> conftest.nl + "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break + diff conftest.out conftest.nl >/dev/null 2>&1 || break + _G_count=`expr $_G_count + 1` + if test "$_G_count" -gt "$_G_path_prog_max"; then + # Best one so far, save it but keep looking for a better one + func_check_prog_result=$_G_path_prog + _G_path_prog_max=$_G_count + fi + # 10*(2^10) chars as input seems more than enough + test 10 -lt "$_G_count" && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out + } + + func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin + rm -f conftest.sed + SED=$func_path_progs_result +} + + +# Unless the user overrides by setting GREP, search the path for either GNU +# grep, or the grep that truncates its output the least. +test -z "$GREP" && { + func_check_prog_grep () + { + _G_path_prog=$1 + + _G_count=0 + _G_path_prog_max=0 + printf 0123456789 >conftest.in + while : + do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo 'GREP' >> conftest.nl + "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break + diff conftest.out conftest.nl >/dev/null 2>&1 || break + _G_count=`expr $_G_count + 1` + if test "$_G_count" -gt "$_G_path_prog_max"; then + # Best one so far, save it but keep looking for a better one + func_check_prog_result=$_G_path_prog + _G_path_prog_max=$_G_count + fi + # 10*(2^10) chars as input seems more than enough + test 10 -lt "$_G_count" && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out + } + + func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin + GREP=$func_path_progs_result +} + + +## ------------------------------- ## +## User overridable command paths. ## +## ------------------------------- ## + +# All uppercase variable names are used for environment variables. These +# variables can be overridden by the user before calling a script that +# uses them if a suitable command of that name is not already available +# in the command search PATH. + +: ${CP="cp -f"} +: ${ECHO="printf %s\n"} +: ${EGREP="$GREP -E"} +: ${FGREP="$GREP -F"} +: ${LN_S="ln -s"} +: ${MAKE="make"} +: ${MKDIR="mkdir"} +: ${MV="mv -f"} +: ${RM="rm -f"} +: ${SHELL="${CONFIG_SHELL-/bin/sh}"} + + +## -------------------- ## +## Useful sed snippets. ## +## -------------------- ## + +sed_dirname='s|/[^/]*$||' +sed_basename='s|^.*/||' + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='s|\([`"$\\]\)|\\\1|g' + +# Same as above, but do not quote variable references. +sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution that turns a string into a regex matching for the +# string literally. +sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' + +# Sed substitution that converts a w32 file name or path +# that contains forward slashes, into one that contains +# (escaped) backslashes. A very naive implementation. +sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + +# Re-'\' parameter expansions in output of sed_double_quote_subst that +# were '\'-ed in input to the same. If an odd number of '\' preceded a +# '$' in input to sed_double_quote_subst, that '$' was protected from +# expansion. Since each input '\' is now two '\'s, look for any number +# of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. +_G_bs='\\' +_G_bs2='\\\\' +_G_bs4='\\\\\\\\' +_G_dollar='\$' +sed_double_backslash="\ + s/$_G_bs4/&\\ +/g + s/^$_G_bs2$_G_dollar/$_G_bs&/ + s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g + s/\n//g" + + +## ----------------- ## +## Global variables. ## +## ----------------- ## + +# Except for the global variables explicitly listed below, the following +# functions in the '^func_' namespace, and the '^require_' namespace +# variables initialised in the 'Resource management' section, sourcing +# this file will not pollute your global namespace with anything +# else. There's no portable way to scope variables in Bourne shell +# though, so actually running these functions will sometimes place +# results into a variable named after the function, and often use +# temporary variables in the '^_G_' namespace. If you are careful to +# avoid using those namespaces casually in your sourcing script, things +# should continue to work as you expect. And, of course, you can freely +# overwrite any of the functions or variables defined here before +# calling anything to customize them. + +EXIT_SUCCESS=0 +EXIT_FAILURE=1 +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. + +# Allow overriding, eg assuming that you follow the convention of +# putting '$debug_cmd' at the start of all your functions, you can get +# bash to show function call trace with: +# +# debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name +debug_cmd=${debug_cmd-":"} +exit_cmd=: + +# By convention, finish your script with: +# +# exit $exit_status +# +# so that you can set exit_status to non-zero if you want to indicate +# something went wrong during execution without actually bailing out at +# the point of failure. +exit_status=$EXIT_SUCCESS + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath=$0 + +# The name of this program. +progname=`$ECHO "$progpath" |$SED "$sed_basename"` + +# Make sure we have an absolute progpath for reexecution: +case $progpath in + [\\/]*|[A-Za-z]:\\*) ;; + *[\\/]*) + progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` + progdir=`cd "$progdir" && pwd` + progpath=$progdir/$progname + ;; + *) + _G_IFS=$IFS + IFS=${PATH_SEPARATOR-:} + for progdir in $PATH; do + IFS=$_G_IFS + test -x "$progdir/$progname" && break + done + IFS=$_G_IFS + test -n "$progdir" || progdir=`pwd` + progpath=$progdir/$progname + ;; +esac + + +## ----------------- ## +## Standard options. ## +## ----------------- ## + +# The following options affect the operation of the functions defined +# below, and should be set appropriately depending on run-time para- +# meters passed on the command line. + +opt_dry_run=false +opt_quiet=false +opt_verbose=false + +# Categories 'all' and 'none' are always available. Append any others +# you will pass as the first argument to func_warning from your own +# code. +warning_categories= + +# By default, display warnings according to 'opt_warning_types'. Set +# 'warning_func' to ':' to elide all warnings, or func_fatal_error to +# treat the next displayed warning as a fatal error. +warning_func=func_warn_and_continue + +# Set to 'all' to display all warnings, 'none' to suppress all +# warnings, or a space delimited list of some subset of +# 'warning_categories' to display only the listed warnings. +opt_warning_types=all + + +## -------------------- ## +## Resource management. ## +## -------------------- ## + +# This section contains definitions for functions that each ensure a +# particular resource (a file, or a non-empty configuration variable for +# example) is available, and if appropriate to extract default values +# from pertinent package files. Call them using their associated +# 'require_*' variable to ensure that they are executed, at most, once. +# +# It's entirely deliberate that calling these functions can set +# variables that don't obey the namespace limitations obeyed by the rest +# of this file, in order that that they be as useful as possible to +# callers. + + +# require_term_colors +# ------------------- +# Allow display of bold text on terminals that support it. +require_term_colors=func_require_term_colors +func_require_term_colors () +{ + $debug_cmd + + test -t 1 && { + # COLORTERM and USE_ANSI_COLORS environment variables take + # precedence, because most terminfo databases neglect to describe + # whether color sequences are supported. + test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} + + if test 1 = "$USE_ANSI_COLORS"; then + # Standard ANSI escape sequences + tc_reset='' + tc_bold=''; tc_standout='' + tc_red=''; tc_green='' + tc_blue=''; tc_cyan='' + else + # Otherwise trust the terminfo database after all. + test -n "`tput sgr0 2>/dev/null`" && { + tc_reset=`tput sgr0` + test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` + tc_standout=$tc_bold + test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` + test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` + test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` + test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` + test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` + } + fi + } + + require_term_colors=: +} + + +## ----------------- ## +## Function library. ## +## ----------------- ## + +# This section contains a variety of useful functions to call in your +# scripts. Take note of the portable wrappers for features provided by +# some modern shells, which will fall back to slower equivalents on +# less featureful shells. + + +# func_append VAR VALUE +# --------------------- +# Append VALUE onto the existing contents of VAR. + + # We should try to minimise forks, especially on Windows where they are + # unreasonably slow, so skip the feature probes when bash or zsh are + # being used: + if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then + : ${_G_HAVE_ARITH_OP="yes"} + : ${_G_HAVE_XSI_OPS="yes"} + # The += operator was introduced in bash 3.1 + case $BASH_VERSION in + [12].* | 3.0 | 3.0*) ;; + *) + : ${_G_HAVE_PLUSEQ_OP="yes"} + ;; + esac + fi + + # _G_HAVE_PLUSEQ_OP + # Can be empty, in which case the shell is probed, "yes" if += is + # useable or anything else if it does not work. + test -z "$_G_HAVE_PLUSEQ_OP" \ + && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ + && _G_HAVE_PLUSEQ_OP=yes + +if test yes = "$_G_HAVE_PLUSEQ_OP" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_append () + { + $debug_cmd + + eval "$1+=\$2" + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_append () + { + $debug_cmd + + eval "$1=\$$1\$2" + } +fi + + +# func_append_quoted VAR VALUE +# ---------------------------- +# Quote VALUE and append to the end of shell variable VAR, separated +# by a space. +if test yes = "$_G_HAVE_PLUSEQ_OP"; then + eval 'func_append_quoted () + { + $debug_cmd + + func_quote_for_eval "$2" + eval "$1+=\\ \$func_quote_for_eval_result" + }' +else + func_append_quoted () + { + $debug_cmd + + func_quote_for_eval "$2" + eval "$1=\$$1\\ \$func_quote_for_eval_result" + } +fi + + +# func_append_uniq VAR VALUE +# -------------------------- +# Append unique VALUE onto the existing contents of VAR, assuming +# entries are delimited by the first character of VALUE. For example: +# +# func_append_uniq options " --another-option option-argument" +# +# will only append to $options if " --another-option option-argument " +# is not already present somewhere in $options already (note spaces at +# each end implied by leading space in second argument). +func_append_uniq () +{ + $debug_cmd + + eval _G_current_value='`$ECHO $'$1'`' + _G_delim=`expr "$2" : '\(.\)'` + + case $_G_delim$_G_current_value$_G_delim in + *"$2$_G_delim"*) ;; + *) func_append "$@" ;; + esac +} + + +# func_arith TERM... +# ------------------ +# Set func_arith_result to the result of evaluating TERMs. + test -z "$_G_HAVE_ARITH_OP" \ + && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ + && _G_HAVE_ARITH_OP=yes + +if test yes = "$_G_HAVE_ARITH_OP"; then + eval 'func_arith () + { + $debug_cmd + + func_arith_result=$(( $* )) + }' +else + func_arith () + { + $debug_cmd + + func_arith_result=`expr "$@"` + } +fi + + +# func_basename FILE +# ------------------ +# Set func_basename_result to FILE with everything up to and including +# the last / stripped. +if test yes = "$_G_HAVE_XSI_OPS"; then + # If this shell supports suffix pattern removal, then use it to avoid + # forking. Hide the definitions single quotes in case the shell chokes + # on unsupported syntax... + _b='func_basename_result=${1##*/}' + _d='case $1 in + */*) func_dirname_result=${1%/*}$2 ;; + * ) func_dirname_result=$3 ;; + esac' + +else + # ...otherwise fall back to using sed. + _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' + _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` + if test "X$func_dirname_result" = "X$1"; then + func_dirname_result=$3 + else + func_append func_dirname_result "$2" + fi' +fi + +eval 'func_basename () +{ + $debug_cmd + + '"$_b"' +}' + + +# func_dirname FILE APPEND NONDIR_REPLACEMENT +# ------------------------------------------- +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +eval 'func_dirname () +{ + $debug_cmd + + '"$_d"' +}' + + +# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT +# -------------------------------------------------------- +# Perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# For efficiency, we do not delegate to the functions above but instead +# duplicate the functionality here. +eval 'func_dirname_and_basename () +{ + $debug_cmd + + '"$_b"' + '"$_d"' +}' + + +# func_echo ARG... +# ---------------- +# Echo program name prefixed message. +func_echo () +{ + $debug_cmd + + _G_message=$* + + func_echo_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_IFS + $ECHO "$progname: $_G_line" + done + IFS=$func_echo_IFS +} + + +# func_echo_all ARG... +# -------------------- +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + + +# func_echo_infix_1 INFIX ARG... +# ------------------------------ +# Echo program name, followed by INFIX on the first line, with any +# additional lines not showing INFIX. +func_echo_infix_1 () +{ + $debug_cmd + + $require_term_colors + + _G_infix=$1; shift + _G_indent=$_G_infix + _G_prefix="$progname: $_G_infix: " + _G_message=$* + + # Strip color escape sequences before counting printable length + for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" + do + test -n "$_G_tc" && { + _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` + _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` + } + done + _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes + + func_echo_infix_1_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_infix_1_IFS + $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 + _G_prefix=$_G_indent + done + IFS=$func_echo_infix_1_IFS +} + + +# func_error ARG... +# ----------------- +# Echo program name prefixed message to standard error. +func_error () +{ + $debug_cmd + + $require_term_colors + + func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 +} + + +# func_fatal_error ARG... +# ----------------------- +# Echo program name prefixed message to standard error, and exit. +func_fatal_error () +{ + $debug_cmd + + func_error "$*" + exit $EXIT_FAILURE +} + + +# func_grep EXPRESSION FILENAME +# ----------------------------- +# Check whether EXPRESSION matches any line of FILENAME, without output. +func_grep () +{ + $debug_cmd + + $GREP "$1" "$2" >/dev/null 2>&1 +} + + +# func_len STRING +# --------------- +# Set func_len_result to the length of STRING. STRING may not +# start with a hyphen. + test -z "$_G_HAVE_XSI_OPS" \ + && (eval 'x=a/b/c; + test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ + && _G_HAVE_XSI_OPS=yes + +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_len () + { + $debug_cmd + + func_len_result=${#1} + }' +else + func_len () + { + $debug_cmd + + func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` + } +fi + + +# func_mkdir_p DIRECTORY-PATH +# --------------------------- +# Make sure the entire path to DIRECTORY-PATH is available. +func_mkdir_p () +{ + $debug_cmd + + _G_directory_path=$1 + _G_dir_list= + + if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then + + # Protect directory names starting with '-' + case $_G_directory_path in + -*) _G_directory_path=./$_G_directory_path ;; + esac + + # While some portion of DIR does not yet exist... + while test ! -d "$_G_directory_path"; do + # ...make a list in topmost first order. Use a colon delimited + # list incase some portion of path contains whitespace. + _G_dir_list=$_G_directory_path:$_G_dir_list + + # If the last portion added has no slash in it, the list is done + case $_G_directory_path in */*) ;; *) break ;; esac + + # ...otherwise throw away the child directory and loop + _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` + done + _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` + + func_mkdir_p_IFS=$IFS; IFS=: + for _G_dir in $_G_dir_list; do + IFS=$func_mkdir_p_IFS + # mkdir can fail with a 'File exist' error if two processes + # try to create one of the directories concurrently. Don't + # stop in that case! + $MKDIR "$_G_dir" 2>/dev/null || : + done + IFS=$func_mkdir_p_IFS + + # Bail out if we (or some other process) failed to create a directory. + test -d "$_G_directory_path" || \ + func_fatal_error "Failed to create '$1'" + fi +} + + +# func_mktempdir [BASENAME] +# ------------------------- +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, BASENAME is the basename for that directory. +func_mktempdir () +{ + $debug_cmd + + _G_template=${TMPDIR-/tmp}/${1-$progname} + + if test : = "$opt_dry_run"; then + # Return a directory name, but don't create it in dry-run mode + _G_tmpdir=$_G_template-$$ + else + + # If mktemp works, use that first and foremost + _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` + + if test ! -d "$_G_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + _G_tmpdir=$_G_template-${RANDOM-0}$$ + + func_mktempdir_umask=`umask` + umask 0077 + $MKDIR "$_G_tmpdir" + umask $func_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$_G_tmpdir" || \ + func_fatal_error "cannot create temporary directory '$_G_tmpdir'" + fi + + $ECHO "$_G_tmpdir" +} + + +# func_normal_abspath PATH +# ------------------------ +# Remove doubled-up and trailing slashes, "." path components, +# and cancel out any ".." path components in PATH after making +# it an absolute path. +func_normal_abspath () +{ + $debug_cmd + + # These SED scripts presuppose an absolute path with a trailing slash. + _G_pathcar='s|^/\([^/]*\).*$|\1|' + _G_pathcdr='s|^/[^/]*||' + _G_removedotparts=':dotsl + s|/\./|/|g + t dotsl + s|/\.$|/|' + _G_collapseslashes='s|/\{1,\}|/|g' + _G_finalslash='s|/*$|/|' + + # Start from root dir and reassemble the path. + func_normal_abspath_result= + func_normal_abspath_tpath=$1 + func_normal_abspath_altnamespace= + case $func_normal_abspath_tpath in + "") + # Empty path, that just means $cwd. + func_stripname '' '/' "`pwd`" + func_normal_abspath_result=$func_stripname_result + return + ;; + # The next three entries are used to spot a run of precisely + # two leading slashes without using negated character classes; + # we take advantage of case's first-match behaviour. + ///*) + # Unusual form of absolute path, do nothing. + ;; + //*) + # Not necessarily an ordinary path; POSIX reserves leading '//' + # and for example Cygwin uses it to access remote file shares + # over CIFS/SMB, so we conserve a leading double slash if found. + func_normal_abspath_altnamespace=/ + ;; + /*) + # Absolute path, do nothing. + ;; + *) + # Relative path, prepend $cwd. + func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath + ;; + esac + + # Cancel out all the simple stuff to save iterations. We also want + # the path to end with a slash for ease of parsing, so make sure + # there is one (and only one) here. + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` + while :; do + # Processed it all yet? + if test / = "$func_normal_abspath_tpath"; then + # If we ascended to the root using ".." the result may be empty now. + if test -z "$func_normal_abspath_result"; then + func_normal_abspath_result=/ + fi + break + fi + func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_pathcar"` + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$_G_pathcdr"` + # Figure out what to do with it + case $func_normal_abspath_tcomponent in + "") + # Trailing empty path component, ignore it. + ;; + ..) + # Parent dir; strip last assembled component from result. + func_dirname "$func_normal_abspath_result" + func_normal_abspath_result=$func_dirname_result + ;; + *) + # Actual path component, append it. + func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" + ;; + esac + done + # Restore leading double-slash if one was found on entry. + func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result +} + + +# func_notquiet ARG... +# -------------------- +# Echo program name prefixed message only when not in quiet mode. +func_notquiet () +{ + $debug_cmd + + $opt_quiet || func_echo ${1+"$@"} + + # A bug in bash halts the script if the last line of a function + # fails when set -e is in force, so we need another command to + # work around that: + : +} + + +# func_relative_path SRCDIR DSTDIR +# -------------------------------- +# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. +func_relative_path () +{ + $debug_cmd + + func_relative_path_result= + func_normal_abspath "$1" + func_relative_path_tlibdir=$func_normal_abspath_result + func_normal_abspath "$2" + func_relative_path_tbindir=$func_normal_abspath_result + + # Ascend the tree starting from libdir + while :; do + # check if we have found a prefix of bindir + case $func_relative_path_tbindir in + $func_relative_path_tlibdir) + # found an exact match + func_relative_path_tcancelled= + break + ;; + $func_relative_path_tlibdir*) + # found a matching prefix + func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" + func_relative_path_tcancelled=$func_stripname_result + if test -z "$func_relative_path_result"; then + func_relative_path_result=. + fi + break + ;; + *) + func_dirname $func_relative_path_tlibdir + func_relative_path_tlibdir=$func_dirname_result + if test -z "$func_relative_path_tlibdir"; then + # Have to descend all the way to the root! + func_relative_path_result=../$func_relative_path_result + func_relative_path_tcancelled=$func_relative_path_tbindir + break + fi + func_relative_path_result=../$func_relative_path_result + ;; + esac + done + + # Now calculate path; take care to avoid doubling-up slashes. + func_stripname '' '/' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + func_stripname '/' '/' "$func_relative_path_tcancelled" + if test -n "$func_stripname_result"; then + func_append func_relative_path_result "/$func_stripname_result" + fi + + # Normalisation. If bindir is libdir, return '.' else relative path. + if test -n "$func_relative_path_result"; then + func_stripname './' '' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + fi + + test -n "$func_relative_path_result" || func_relative_path_result=. + + : +} + + +# func_quote_for_eval ARG... +# -------------------------- +# Aesthetically quote ARGs to be evaled later. +# This function returns two values: +# i) func_quote_for_eval_result +# double-quoted, suitable for a subsequent eval +# ii) func_quote_for_eval_unquoted_result +# has all characters that are still active within double +# quotes backslashified. +func_quote_for_eval () +{ + $debug_cmd + + func_quote_for_eval_unquoted_result= + func_quote_for_eval_result= + while test 0 -lt $#; do + case $1 in + *[\\\`\"\$]*) + _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; + *) + _G_unquoted_arg=$1 ;; + esac + if test -n "$func_quote_for_eval_unquoted_result"; then + func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" + else + func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" + fi + + case $_G_unquoted_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting, command substitution and variable expansion + # for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + _G_quoted_arg=\"$_G_unquoted_arg\" + ;; + *) + _G_quoted_arg=$_G_unquoted_arg + ;; + esac + + if test -n "$func_quote_for_eval_result"; then + func_append func_quote_for_eval_result " $_G_quoted_arg" + else + func_append func_quote_for_eval_result "$_G_quoted_arg" + fi + shift + done +} + + +# func_quote_for_expand ARG +# ------------------------- +# Aesthetically quote ARG to be evaled later; same as above, +# but do not quote variable references. +func_quote_for_expand () +{ + $debug_cmd + + case $1 in + *[\\\`\"]*) + _G_arg=`$ECHO "$1" | $SED \ + -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; + *) + _G_arg=$1 ;; + esac + + case $_G_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting and command substitution for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + _G_arg=\"$_G_arg\" + ;; + esac + + func_quote_for_expand_result=$_G_arg +} + + +# func_stripname PREFIX SUFFIX NAME +# --------------------------------- +# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_stripname () + { + $debug_cmd + + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary variable first. + func_stripname_result=$3 + func_stripname_result=${func_stripname_result#"$1"} + func_stripname_result=${func_stripname_result%"$2"} + }' +else + func_stripname () + { + $debug_cmd + + case $2 in + .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; + *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; + esac + } +fi + + +# func_show_eval CMD [FAIL_EXP] +# ----------------------------- +# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. +func_show_eval () +{ + $debug_cmd + + _G_cmd=$1 + _G_fail_exp=${2-':'} + + func_quote_for_expand "$_G_cmd" + eval "func_notquiet $func_quote_for_expand_result" + + $opt_dry_run || { + eval "$_G_cmd" + _G_status=$? + if test 0 -ne "$_G_status"; then + eval "(exit $_G_status); $_G_fail_exp" + fi + } +} + + +# func_show_eval_locale CMD [FAIL_EXP] +# ------------------------------------ +# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. Use the saved locale for evaluation. +func_show_eval_locale () +{ + $debug_cmd + + _G_cmd=$1 + _G_fail_exp=${2-':'} + + $opt_quiet || { + func_quote_for_expand "$_G_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + $opt_dry_run || { + eval "$_G_user_locale + $_G_cmd" + _G_status=$? + eval "$_G_safe_locale" + if test 0 -ne "$_G_status"; then + eval "(exit $_G_status); $_G_fail_exp" + fi + } +} + + +# func_tr_sh +# ---------- +# Turn $1 into a string suitable for a shell variable name. +# Result is stored in $func_tr_sh_result. All characters +# not in the set a-zA-Z0-9_ are replaced with '_'. Further, +# if $1 begins with a digit, a '_' is prepended as well. +func_tr_sh () +{ + $debug_cmd + + case $1 in + [0-9]* | *[!a-zA-Z0-9_]*) + func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` + ;; + * ) + func_tr_sh_result=$1 + ;; + esac +} + + +# func_verbose ARG... +# ------------------- +# Echo program name prefixed message in verbose mode only. +func_verbose () +{ + $debug_cmd + + $opt_verbose && func_echo "$*" + + : +} + + +# func_warn_and_continue ARG... +# ----------------------------- +# Echo program name prefixed warning message to standard error. +func_warn_and_continue () +{ + $debug_cmd + + $require_term_colors + + func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 +} + + +# func_warning CATEGORY ARG... +# ---------------------------- +# Echo program name prefixed warning message to standard error. Warning +# messages can be filtered according to CATEGORY, where this function +# elides messages where CATEGORY is not listed in the global variable +# 'opt_warning_types'. +func_warning () +{ + $debug_cmd + + # CATEGORY must be in the warning_categories list! + case " $warning_categories " in + *" $1 "*) ;; + *) func_internal_error "invalid warning category '$1'" ;; + esac + + _G_category=$1 + shift + + case " $opt_warning_types " in + *" $_G_category "*) $warning_func ${1+"$@"} ;; + esac +} + + +# func_sort_ver VER1 VER2 +# ----------------------- +# 'sort -V' is not generally available. +# Note this deviates from the version comparison in automake +# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a +# but this should suffice as we won't be specifying old +# version formats or redundant trailing .0 in bootstrap.conf. +# If we did want full compatibility then we should probably +# use m4_version_compare from autoconf. +func_sort_ver () +{ + $debug_cmd + + printf '%s\n%s\n' "$1" "$2" \ + | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n +} + +# func_lt_ver PREV CURR +# --------------------- +# Return true if PREV and CURR are in the correct order according to +# func_sort_ver, otherwise false. Use it like this: +# +# func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." +func_lt_ver () +{ + $debug_cmd + + test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` +} + + +# Local variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" +# time-stamp-time-zone: "UTC" +# End: +#! /bin/sh + +# Set a version string for this script. +scriptversion=2015-10-07.11; # UTC + +# A portable, pluggable option parser for Bourne shell. +# Written by Gary V. Vaughan, 2010 + +# Copyright (C) 2010-2015 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Please report bugs or propose patches to gary@gnu.org. + + +## ------ ## +## Usage. ## +## ------ ## + +# This file is a library for parsing options in your shell scripts along +# with assorted other useful supporting features that you can make use +# of too. +# +# For the simplest scripts you might need only: +# +# #!/bin/sh +# . relative/path/to/funclib.sh +# . relative/path/to/options-parser +# scriptversion=1.0 +# func_options ${1+"$@"} +# eval set dummy "$func_options_result"; shift +# ...rest of your script... +# +# In order for the '--version' option to work, you will need to have a +# suitably formatted comment like the one at the top of this file +# starting with '# Written by ' and ending with '# warranty; '. +# +# For '-h' and '--help' to work, you will also need a one line +# description of your script's purpose in a comment directly above the +# '# Written by ' line, like the one at the top of this file. +# +# The default options also support '--debug', which will turn on shell +# execution tracing (see the comment above debug_cmd below for another +# use), and '--verbose' and the func_verbose function to allow your script +# to display verbose messages only when your user has specified +# '--verbose'. +# +# After sourcing this file, you can plug processing for additional +# options by amending the variables from the 'Configuration' section +# below, and following the instructions in the 'Option parsing' +# section further down. + +## -------------- ## +## Configuration. ## +## -------------- ## + +# You should override these variables in your script after sourcing this +# file so that they reflect the customisations you have added to the +# option parser. + +# The usage line for option parsing errors and the start of '-h' and +# '--help' output messages. You can embed shell variables for delayed +# expansion at the time the message is displayed, but you will need to +# quote other shell meta-characters carefully to prevent them being +# expanded when the contents are evaled. +usage='$progpath [OPTION]...' + +# Short help message in response to '-h' and '--help'. Add to this or +# override it after sourcing this library to reflect the full set of +# options your script accepts. +usage_message="\ + --debug enable verbose shell tracing + -W, --warnings=CATEGORY + report the warnings falling in CATEGORY [all] + -v, --verbose verbosely report processing + --version print version information and exit + -h, --help print short or long help message and exit +" + +# Additional text appended to 'usage_message' in response to '--help'. +long_help_message=" +Warning categories include: + 'all' show all warnings + 'none' turn off all the warnings + 'error' warnings are treated as fatal errors" + +# Help message printed before fatal option parsing errors. +fatal_help="Try '\$progname --help' for more information." + + + +## ------------------------- ## +## Hook function management. ## +## ------------------------- ## + +# This section contains functions for adding, removing, and running hooks +# to the main code. A hook is just a named list of of function, that can +# be run in order later on. + +# func_hookable FUNC_NAME +# ----------------------- +# Declare that FUNC_NAME will run hooks added with +# 'func_add_hook FUNC_NAME ...'. +func_hookable () +{ + $debug_cmd + + func_append hookable_fns " $1" +} + + +# func_add_hook FUNC_NAME HOOK_FUNC +# --------------------------------- +# Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must +# first have been declared "hookable" by a call to 'func_hookable'. +func_add_hook () +{ + $debug_cmd + + case " $hookable_fns " in + *" $1 "*) ;; + *) func_fatal_error "'$1' does not accept hook functions." ;; + esac + + eval func_append ${1}_hooks '" $2"' +} + + +# func_remove_hook FUNC_NAME HOOK_FUNC +# ------------------------------------ +# Remove HOOK_FUNC from the list of functions called by FUNC_NAME. +func_remove_hook () +{ + $debug_cmd + + eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' +} + + +# func_run_hooks FUNC_NAME [ARG]... +# --------------------------------- +# Run all hook functions registered to FUNC_NAME. +# It is assumed that the list of hook functions contains nothing more +# than a whitespace-delimited list of legal shell function names, and +# no effort is wasted trying to catch shell meta-characters or preserve +# whitespace. +func_run_hooks () +{ + $debug_cmd + + _G_rc_run_hooks=false + + case " $hookable_fns " in + *" $1 "*) ;; + *) func_fatal_error "'$1' does not support hook funcions.n" ;; + esac + + eval _G_hook_fns=\$$1_hooks; shift + + for _G_hook in $_G_hook_fns; do + if eval $_G_hook '"$@"'; then + # store returned options list back into positional + # parameters for next 'cmd' execution. + eval _G_hook_result=\$${_G_hook}_result + eval set dummy "$_G_hook_result"; shift + _G_rc_run_hooks=: + fi + done + + $_G_rc_run_hooks && func_run_hooks_result=$_G_hook_result +} + + + +## --------------- ## +## Option parsing. ## +## --------------- ## + +# In order to add your own option parsing hooks, you must accept the +# full positional parameter list in your hook function, you may remove/edit +# any options that you action, and then pass back the remaining unprocessed +# options in '_result', escaped suitably for +# 'eval'. In this case you also must return $EXIT_SUCCESS to let the +# hook's caller know that it should pay attention to +# '_result'. Returning $EXIT_FAILURE signalizes that +# arguments are left untouched by the hook and therefore caller will ignore the +# result variable. +# +# Like this: +# +# my_options_prep () +# { +# $debug_cmd +# +# # Extend the existing usage message. +# usage_message=$usage_message' +# -s, --silent don'\''t print informational messages +# ' +# # No change in '$@' (ignored completely by this hook). There is +# # no need to do the equivalent (but slower) action: +# # func_quote_for_eval ${1+"$@"} +# # my_options_prep_result=$func_quote_for_eval_result +# false +# } +# func_add_hook func_options_prep my_options_prep +# +# +# my_silent_option () +# { +# $debug_cmd +# +# args_changed=false +# +# # Note that for efficiency, we parse as many options as we can +# # recognise in a loop before passing the remainder back to the +# # caller on the first unrecognised argument we encounter. +# while test $# -gt 0; do +# opt=$1; shift +# case $opt in +# --silent|-s) opt_silent=: +# args_changed=: +# ;; +# # Separate non-argument short options: +# -s*) func_split_short_opt "$_G_opt" +# set dummy "$func_split_short_opt_name" \ +# "-$func_split_short_opt_arg" ${1+"$@"} +# shift +# args_changed=: +# ;; +# *) # Make sure the first unrecognised option "$_G_opt" +# # is added back to "$@", we could need that later +# # if $args_changed is true. +# set dummy "$_G_opt" ${1+"$@"}; shift; break ;; +# esac +# done +# +# if $args_changed; then +# func_quote_for_eval ${1+"$@"} +# my_silent_option_result=$func_quote_for_eval_result +# fi +# +# $args_changed +# } +# func_add_hook func_parse_options my_silent_option +# +# +# my_option_validation () +# { +# $debug_cmd +# +# $opt_silent && $opt_verbose && func_fatal_help "\ +# '--silent' and '--verbose' options are mutually exclusive." +# +# false +# } +# func_add_hook func_validate_options my_option_validation +# +# You'll also need to manually amend $usage_message to reflect the extra +# options you parse. It's preferable to append if you can, so that +# multiple option parsing hooks can be added safely. + + +# func_options_finish [ARG]... +# ---------------------------- +# Finishing the option parse loop (call 'func_options' hooks ATM). +func_options_finish () +{ + $debug_cmd + + _G_func_options_finish_exit=false + if func_run_hooks func_options ${1+"$@"}; then + func_options_finish_result=$func_run_hooks_result + _G_func_options_finish_exit=: + fi + + $_G_func_options_finish_exit +} + + +# func_options [ARG]... +# --------------------- +# All the functions called inside func_options are hookable. See the +# individual implementations for details. +func_hookable func_options +func_options () +{ + $debug_cmd + + _G_rc_options=false + + for my_func in options_prep parse_options validate_options options_finish + do + if eval func_$my_func '${1+"$@"}'; then + eval _G_res_var='$'"func_${my_func}_result" + eval set dummy "$_G_res_var" ; shift + _G_rc_options=: + fi + done + + # Save modified positional parameters for caller. As a top-level + # options-parser function we always need to set the 'func_options_result' + # variable (regardless the $_G_rc_options value). + if $_G_rc_options; then + func_options_result=$_G_res_var + else + func_quote_for_eval ${1+"$@"} + func_options_result=$func_quote_for_eval_result + fi + + $_G_rc_options +} + + +# func_options_prep [ARG]... +# -------------------------- +# All initialisations required before starting the option parse loop. +# Note that when calling hook functions, we pass through the list of +# positional parameters. If a hook function modifies that list, and +# needs to propagate that back to rest of this script, then the complete +# modified list must be put in 'func_run_hooks_result' before +# returning $EXIT_SUCCESS (otherwise $EXIT_FAILURE is returned). +func_hookable func_options_prep +func_options_prep () +{ + $debug_cmd + + # Option defaults: + opt_verbose=false + opt_warning_types= + + _G_rc_options_prep=false + if func_run_hooks func_options_prep ${1+"$@"}; then + _G_rc_options_prep=: + # save modified positional parameters for caller + func_options_prep_result=$func_run_hooks_result + fi + + $_G_rc_options_prep +} + + +# func_parse_options [ARG]... +# --------------------------- +# The main option parsing loop. +func_hookable func_parse_options +func_parse_options () +{ + $debug_cmd + + func_parse_options_result= + + _G_rc_parse_options=false + # this just eases exit handling + while test $# -gt 0; do + # Defer to hook functions for initial option parsing, so they + # get priority in the event of reusing an option name. + if func_run_hooks func_parse_options ${1+"$@"}; then + eval set dummy "$func_run_hooks_result"; shift + _G_rc_parse_options=: + fi + + # Break out of the loop if we already parsed every option. + test $# -gt 0 || break + + _G_match_parse_options=: + _G_opt=$1 + shift + case $_G_opt in + --debug|-x) debug_cmd='set -x' + func_echo "enabling shell trace mode" + $debug_cmd + ;; + + --no-warnings|--no-warning|--no-warn) + set dummy --warnings none ${1+"$@"} + shift + ;; + + --warnings|--warning|-W) + if test $# = 0 && func_missing_arg $_G_opt; then + _G_rc_parse_options=: + break + fi + case " $warning_categories $1" in + *" $1 "*) + # trailing space prevents matching last $1 above + func_append_uniq opt_warning_types " $1" + ;; + *all) + opt_warning_types=$warning_categories + ;; + *none) + opt_warning_types=none + warning_func=: + ;; + *error) + opt_warning_types=$warning_categories + warning_func=func_fatal_error + ;; + *) + func_fatal_error \ + "unsupported warning category: '$1'" + ;; + esac + shift + ;; + + --verbose|-v) opt_verbose=: ;; + --version) func_version ;; + -\?|-h) func_usage ;; + --help) func_help ;; + + # Separate optargs to long options (plugins may need this): + --*=*) func_split_equals "$_G_opt" + set dummy "$func_split_equals_lhs" \ + "$func_split_equals_rhs" ${1+"$@"} + shift + ;; + + # Separate optargs to short options: + -W*) + func_split_short_opt "$_G_opt" + set dummy "$func_split_short_opt_name" \ + "$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + # Separate non-argument short options: + -\?*|-h*|-v*|-x*) + func_split_short_opt "$_G_opt" + set dummy "$func_split_short_opt_name" \ + "-$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + --) _G_rc_parse_options=: ; break ;; + -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; + *) set dummy "$_G_opt" ${1+"$@"}; shift + _G_match_parse_options=false + break + ;; + esac + + $_G_match_parse_options && _G_rc_parse_options=: + done + + + if $_G_rc_parse_options; then + # save modified positional parameters for caller + func_quote_for_eval ${1+"$@"} + func_parse_options_result=$func_quote_for_eval_result + fi + + $_G_rc_parse_options +} + + +# func_validate_options [ARG]... +# ------------------------------ +# Perform any sanity checks on option settings and/or unconsumed +# arguments. +func_hookable func_validate_options +func_validate_options () +{ + $debug_cmd + + _G_rc_validate_options=false + + # Display all warnings if -W was not given. + test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" + + if func_run_hooks func_validate_options ${1+"$@"}; then + # save modified positional parameters for caller + func_validate_options_result=$func_run_hooks_result + _G_rc_validate_options=: + fi + + # Bail if the options were screwed! + $exit_cmd $EXIT_FAILURE + + $_G_rc_validate_options +} + + + +## ----------------- ## +## Helper functions. ## +## ----------------- ## + +# This section contains the helper functions used by the rest of the +# hookable option parser framework in ascii-betical order. + + +# func_fatal_help ARG... +# ---------------------- +# Echo program name prefixed message to standard error, followed by +# a help hint, and exit. +func_fatal_help () +{ + $debug_cmd + + eval \$ECHO \""Usage: $usage"\" + eval \$ECHO \""$fatal_help"\" + func_error ${1+"$@"} + exit $EXIT_FAILURE +} + + +# func_help +# --------- +# Echo long help message to standard output and exit. +func_help () +{ + $debug_cmd + + func_usage_message + $ECHO "$long_help_message" + exit 0 +} + + +# func_missing_arg ARGNAME +# ------------------------ +# Echo program name prefixed message to standard error and set global +# exit_cmd. +func_missing_arg () +{ + $debug_cmd + + func_error "Missing argument for '$1'." + exit_cmd=exit +} + + +# func_split_equals STRING +# ------------------------ +# Set func_split_equals_lhs and func_split_equals_rhs shell variables after +# splitting STRING at the '=' sign. +test -z "$_G_HAVE_XSI_OPS" \ + && (eval 'x=a/b/c; + test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ + && _G_HAVE_XSI_OPS=yes + +if test yes = "$_G_HAVE_XSI_OPS" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_split_equals () + { + $debug_cmd + + func_split_equals_lhs=${1%%=*} + func_split_equals_rhs=${1#*=} + test "x$func_split_equals_lhs" = "x$1" \ + && func_split_equals_rhs= + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_split_equals () + { + $debug_cmd + + func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` + func_split_equals_rhs= + test "x$func_split_equals_lhs" = "x$1" \ + || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` + } +fi #func_split_equals + + +# func_split_short_opt SHORTOPT +# ----------------------------- +# Set func_split_short_opt_name and func_split_short_opt_arg shell +# variables after splitting SHORTOPT after the 2nd character. +if test yes = "$_G_HAVE_XSI_OPS" +then + # This is an XSI compatible shell, allowing a faster implementation... + eval 'func_split_short_opt () + { + $debug_cmd + + func_split_short_opt_arg=${1#??} + func_split_short_opt_name=${1%"$func_split_short_opt_arg"} + }' +else + # ...otherwise fall back to using expr, which is often a shell builtin. + func_split_short_opt () + { + $debug_cmd + + func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` + func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` + } +fi #func_split_short_opt + + +# func_usage +# ---------- +# Echo short help message to standard output and exit. +func_usage () +{ + $debug_cmd + + func_usage_message + $ECHO "Run '$progname --help |${PAGER-more}' for full usage" + exit 0 +} + + +# func_usage_message +# ------------------ +# Echo short help message to standard output. +func_usage_message () +{ + $debug_cmd + + eval \$ECHO \""Usage: $usage"\" + echo + $SED -n 's|^# || + /^Written by/{ + x;p;x + } + h + /^Written by/q' < "$progpath" + echo + eval \$ECHO \""$usage_message"\" +} + + +# func_version +# ------------ +# Echo version message to standard output and exit. +func_version () +{ + $debug_cmd + + printf '%s\n' "$progname $scriptversion" + $SED -n ' + /(C)/!b go + :more + /\./!{ + N + s|\n# | | + b more + } + :go + /^# Written by /,/# warranty; / { + s|^# || + s|^# *$|| + s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| + p + } + /^# Written by / { + s|^# || + p + } + /^warranty; /q' < "$progpath" + + exit $? +} + + +# Local variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" +# time-stamp-time-zone: "UTC" +# End: + +# Set a version string. +scriptversion='(GNU libtool) 2.4.6' + + +# func_echo ARG... +# ---------------- +# Libtool also displays the current mode in messages, so override +# funclib.sh func_echo with this custom definition. +func_echo () +{ + $debug_cmd + + _G_message=$* + + func_echo_IFS=$IFS + IFS=$nl + for _G_line in $_G_message; do + IFS=$func_echo_IFS + $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" + done + IFS=$func_echo_IFS +} + + +# func_warning ARG... +# ------------------- +# Libtool warnings are not categorized, so override funclib.sh +# func_warning with this simpler definition. +func_warning () +{ + $debug_cmd + + $warning_func ${1+"$@"} +} + + +## ---------------- ## +## Options parsing. ## +## ---------------- ## + +# Hook in the functions to make sure our own options are parsed during +# the option parsing loop. + +usage='$progpath [OPTION]... [MODE-ARG]...' + +# Short help message in response to '-h'. +usage_message="Options: + --config show all configuration variables + --debug enable verbose shell tracing + -n, --dry-run display commands without modifying any files + --features display basic configuration information and exit + --mode=MODE use operation mode MODE + --no-warnings equivalent to '-Wnone' + --preserve-dup-deps don't remove duplicate dependency libraries + --quiet, --silent don't print informational messages + --tag=TAG use configuration variables from tag TAG + -v, --verbose print more informational messages than default + --version print version information + -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] + -h, --help, --help-all print short, long, or detailed help message +" + +# Additional text appended to 'usage_message' in response to '--help'. +func_help () +{ + $debug_cmd + + func_usage_message + $ECHO "$long_help_message + +MODE must be one of the following: + + clean remove files from the build directory + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. When passed as first option, +'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. +Try '$progname --help --mode=MODE' for a more detailed description of MODE. + +When reporting a bug, please describe a test case to reproduce it and +include the following information: + + host-triplet: $host + shell: $SHELL + compiler: $LTCC + compiler flags: $LTCFLAGS + linker: $LD (gnu? $with_gnu_ld) + version: $progname $scriptversion Debian-2.4.6-9 + automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` + autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` + +Report bugs to . +GNU libtool home page: . +General help using GNU software: ." + exit 0 +} + + +# func_lo2o OBJECT-NAME +# --------------------- +# Transform OBJECT-NAME from a '.lo' suffix to the platform specific +# object suffix. + +lo2o=s/\\.lo\$/.$objext/ +o2lo=s/\\.$objext\$/.lo/ + +if test yes = "$_G_HAVE_XSI_OPS"; then + eval 'func_lo2o () + { + case $1 in + *.lo) func_lo2o_result=${1%.lo}.$objext ;; + * ) func_lo2o_result=$1 ;; + esac + }' + + # func_xform LIBOBJ-OR-SOURCE + # --------------------------- + # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) + # suffix to a '.lo' libtool-object suffix. + eval 'func_xform () + { + func_xform_result=${1%.*}.lo + }' +else + # ...otherwise fall back to using sed. + func_lo2o () + { + func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` + } + + func_xform () + { + func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` + } +fi + + +# func_fatal_configuration ARG... +# ------------------------------- +# Echo program name prefixed message to standard error, followed by +# a configuration failure hint, and exit. +func_fatal_configuration () +{ + func__fatal_error ${1+"$@"} \ + "See the $PACKAGE documentation for more information." \ + "Fatal configuration error." +} + + +# func_config +# ----------- +# Display the configuration for all the tags in this script. +func_config () +{ + re_begincf='^# ### BEGIN LIBTOOL' + re_endcf='^# ### END LIBTOOL' + + # Default configuration. + $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" + + # Now print the configurations for the tags. + for tagname in $taglist; do + $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" + done + + exit $? +} + + +# func_features +# ------------- +# Display the features supported by this script. +func_features () +{ + echo "host: $host" + if test yes = "$build_libtool_libs"; then + echo "enable shared libraries" + else + echo "disable shared libraries" + fi + if test yes = "$build_old_libs"; then + echo "enable static libraries" + else + echo "disable static libraries" + fi + + exit $? +} + + +# func_enable_tag TAGNAME +# ----------------------- +# Verify that TAGNAME is valid, and either flag an error and exit, or +# enable the TAGNAME tag. We also add TAGNAME to the global $taglist +# variable here. +func_enable_tag () +{ + # Global variable: + tagname=$1 + + re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" + re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" + sed_extractcf=/$re_begincf/,/$re_endcf/p + + # Validate tagname. + case $tagname in + *[!-_A-Za-z0-9,/]*) + func_fatal_error "invalid tag name: $tagname" + ;; + esac + + # Don't test for the "default" C tag, as we know it's + # there but not specially marked. + case $tagname in + CC) ;; + *) + if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then + taglist="$taglist $tagname" + + # Evaluate the configuration. Be careful to quote the path + # and the sed script, to avoid splitting on whitespace, but + # also don't use non-portable quotes within backquotes within + # quotes we have to do it in 2 steps: + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` + eval "$extractedcf" + else + func_error "ignoring unknown tag $tagname" + fi + ;; + esac +} + + +# func_check_version_match +# ------------------------ +# Ensure that we are using m4 macros, and libtool script from the same +# release of libtool. +func_check_version_match () +{ + if test "$package_revision" != "$macro_revision"; then + if test "$VERSION" != "$macro_version"; then + if test -z "$macro_version"; then + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from an older release. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + fi + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, +$progname: but the definition of this LT_INIT comes from revision $macro_revision. +$progname: You should recreate aclocal.m4 with macros from revision $package_revision +$progname: of $PACKAGE $VERSION and run autoconf again. +_LT_EOF + fi + + exit $EXIT_MISMATCH + fi +} + + +# libtool_options_prep [ARG]... +# ----------------------------- +# Preparation for options parsed by libtool. +libtool_options_prep () +{ + $debug_mode + + # Option defaults: + opt_config=false + opt_dlopen= + opt_dry_run=false + opt_help=false + opt_mode= + opt_preserve_dup_deps=false + opt_quiet=false + + nonopt= + preserve_args= + + _G_rc_lt_options_prep=: + + # Shorthand for --mode=foo, only valid as the first argument + case $1 in + clean|clea|cle|cl) + shift; set dummy --mode clean ${1+"$@"}; shift + ;; + compile|compil|compi|comp|com|co|c) + shift; set dummy --mode compile ${1+"$@"}; shift + ;; + execute|execut|execu|exec|exe|ex|e) + shift; set dummy --mode execute ${1+"$@"}; shift + ;; + finish|finis|fini|fin|fi|f) + shift; set dummy --mode finish ${1+"$@"}; shift + ;; + install|instal|insta|inst|ins|in|i) + shift; set dummy --mode install ${1+"$@"}; shift + ;; + link|lin|li|l) + shift; set dummy --mode link ${1+"$@"}; shift + ;; + uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; + *) + _G_rc_lt_options_prep=false + ;; + esac + + if $_G_rc_lt_options_prep; then + # Pass back the list of options. + func_quote_for_eval ${1+"$@"} + libtool_options_prep_result=$func_quote_for_eval_result + fi + + $_G_rc_lt_options_prep +} +func_add_hook func_options_prep libtool_options_prep + + +# libtool_parse_options [ARG]... +# --------------------------------- +# Provide handling for libtool specific options. +libtool_parse_options () +{ + $debug_cmd + + _G_rc_lt_parse_options=false + + # Perform our own loop to consume as many options as possible in + # each iteration. + while test $# -gt 0; do + _G_match_lt_parse_options=: + _G_opt=$1 + shift + case $_G_opt in + --dry-run|--dryrun|-n) + opt_dry_run=: + ;; + + --config) func_config ;; + + --dlopen|-dlopen) + opt_dlopen="${opt_dlopen+$opt_dlopen +}$1" + shift + ;; + + --preserve-dup-deps) + opt_preserve_dup_deps=: ;; + + --features) func_features ;; + + --finish) set dummy --mode finish ${1+"$@"}; shift ;; + + --help) opt_help=: ;; + + --help-all) opt_help=': help-all' ;; + + --mode) test $# = 0 && func_missing_arg $_G_opt && break + opt_mode=$1 + case $1 in + # Valid mode arguments: + clean|compile|execute|finish|install|link|relink|uninstall) ;; + + # Catch anything else as an error + *) func_error "invalid argument for $_G_opt" + exit_cmd=exit + break + ;; + esac + shift + ;; + + --no-silent|--no-quiet) + opt_quiet=false + func_append preserve_args " $_G_opt" + ;; + + --no-warnings|--no-warning|--no-warn) + opt_warning=false + func_append preserve_args " $_G_opt" + ;; + + --no-verbose) + opt_verbose=false + func_append preserve_args " $_G_opt" + ;; + + --silent|--quiet) + opt_quiet=: + opt_verbose=false + func_append preserve_args " $_G_opt" + ;; + + --tag) test $# = 0 && func_missing_arg $_G_opt && break + opt_tag=$1 + func_append preserve_args " $_G_opt $1" + func_enable_tag "$1" + shift + ;; + + --verbose|-v) opt_quiet=false + opt_verbose=: + func_append preserve_args " $_G_opt" + ;; + + # An option not handled by this hook function: + *) set dummy "$_G_opt" ${1+"$@"} ; shift + _G_match_lt_parse_options=false + break + ;; + esac + $_G_match_lt_parse_options && _G_rc_lt_parse_options=: + done + + if $_G_rc_lt_parse_options; then + # save modified positional parameters for caller + func_quote_for_eval ${1+"$@"} + libtool_parse_options_result=$func_quote_for_eval_result + fi + + $_G_rc_lt_parse_options +} +func_add_hook func_parse_options libtool_parse_options + + + +# libtool_validate_options [ARG]... +# --------------------------------- +# Perform any sanity checks on option settings and/or unconsumed +# arguments. +libtool_validate_options () +{ + # save first non-option argument + if test 0 -lt $#; then + nonopt=$1 + shift + fi + + # preserve --debug + test : = "$debug_cmd" || func_append preserve_args " --debug" + + case $host in + # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 + # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 + *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) + # don't eliminate duplications in $postdeps and $predeps + opt_duplicate_compiler_generated_deps=: + ;; + *) + opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps + ;; + esac + + $opt_help || { + # Sanity checks first: + func_check_version_match + + test yes != "$build_libtool_libs" \ + && test yes != "$build_old_libs" \ + && func_fatal_configuration "not configured to build any kind of library" + + # Darwin sucks + eval std_shrext=\"$shrext_cmds\" + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$opt_dlopen" && test execute != "$opt_mode"; then + func_error "unrecognized option '-dlopen'" + $ECHO "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help=$help + help="Try '$progname --help --mode=$opt_mode' for more information." + } + + # Pass back the unparsed argument list + func_quote_for_eval ${1+"$@"} + libtool_validate_options_result=$func_quote_for_eval_result +} +func_add_hook func_validate_options libtool_validate_options + + +# Process options as early as possible so that --help and --version +# can return quickly. +func_options ${1+"$@"} +eval set dummy "$func_options_result"; shift + + + +## ----------- ## +## Main. ## +## ----------- ## + +magic='%%%MAGIC variable%%%' +magic_exe='%%%MAGIC EXE variable%%%' + +# Global variables. +extracted_archives= +extracted_serial=0 + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + +# func_generated_by_libtool +# True iff stdin has been generated by Libtool. This function is only +# a basic sanity check; it will hardly flush out determined imposters. +func_generated_by_libtool_p () +{ + $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 +} + +# func_lalib_p file +# True iff FILE is a libtool '.la' library or '.lo' object file. +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_lalib_p () +{ + test -f "$1" && + $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p +} + +# func_lalib_unsafe_p file +# True iff FILE is a libtool '.la' library or '.lo' object file. +# This function implements the same check as func_lalib_p without +# resorting to external programs. To this end, it redirects stdin and +# closes it afterwards, without saving the original file descriptor. +# As a safety measure, use it only where a negative result would be +# fatal anyway. Works if 'file' does not exist. +func_lalib_unsafe_p () +{ + lalib_p=no + if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then + for lalib_p_l in 1 2 3 4 + do + read lalib_p_line + case $lalib_p_line in + \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; + esac + done + exec 0<&5 5<&- + fi + test yes = "$lalib_p" +} + +# func_ltwrapper_script_p file +# True iff FILE is a libtool wrapper script +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_script_p () +{ + test -f "$1" && + $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p +} + +# func_ltwrapper_executable_p file +# True iff FILE is a libtool wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_executable_p () +{ + func_ltwrapper_exec_suffix= + case $1 in + *.exe) ;; + *) func_ltwrapper_exec_suffix=.exe ;; + esac + $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 +} + +# func_ltwrapper_scriptname file +# Assumes file is an ltwrapper_executable +# uses $file to determine the appropriate filename for a +# temporary ltwrapper_script. +func_ltwrapper_scriptname () +{ + func_dirname_and_basename "$1" "" "." + func_stripname '' '.exe' "$func_basename_result" + func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper +} + +# func_ltwrapper_p file +# True iff FILE is a libtool wrapper script or wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_p () +{ + func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" +} + + +# func_execute_cmds commands fail_cmd +# Execute tilde-delimited COMMANDS. +# If FAIL_CMD is given, eval that upon failure. +# FAIL_CMD may read-access the current command in variable CMD! +func_execute_cmds () +{ + $debug_cmd + + save_ifs=$IFS; IFS='~' + for cmd in $1; do + IFS=$sp$nl + eval cmd=\"$cmd\" + IFS=$save_ifs + func_show_eval "$cmd" "${2-:}" + done + IFS=$save_ifs +} + + +# func_source file +# Source FILE, adding directory component if necessary. +# Note that it is not necessary on cygwin/mingw to append a dot to +# FILE even if both FILE and FILE.exe exist: automatic-append-.exe +# behavior happens only for exec(3), not for open(2)! Also, sourcing +# 'FILE.' does not work on cygwin managed mounts. +func_source () +{ + $debug_cmd + + case $1 in + */* | *\\*) . "$1" ;; + *) . "./$1" ;; + esac +} + + +# func_resolve_sysroot PATH +# Replace a leading = in PATH with a sysroot. Store the result into +# func_resolve_sysroot_result +func_resolve_sysroot () +{ + func_resolve_sysroot_result=$1 + case $func_resolve_sysroot_result in + =*) + func_stripname '=' '' "$func_resolve_sysroot_result" + func_resolve_sysroot_result=$lt_sysroot$func_stripname_result + ;; + esac +} + +# func_replace_sysroot PATH +# If PATH begins with the sysroot, replace it with = and +# store the result into func_replace_sysroot_result. +func_replace_sysroot () +{ + case $lt_sysroot:$1 in + ?*:"$lt_sysroot"*) + func_stripname "$lt_sysroot" '' "$1" + func_replace_sysroot_result='='$func_stripname_result + ;; + *) + # Including no sysroot. + func_replace_sysroot_result=$1 + ;; + esac +} + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + $debug_cmd + + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case "$@ " in + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + func_echo "unable to infer tagged configuration" + func_fatal_error "specify a tag with '--tag'" +# else +# func_verbose "using $tagname tagged configuration" + fi + ;; + esac + fi +} + + + +# func_write_libtool_object output_name pic_name nonpic_name +# Create a libtool object file (analogous to a ".la" file), +# but don't create it if we're doing a dry run. +func_write_libtool_object () +{ + write_libobj=$1 + if test yes = "$build_libtool_libs"; then + write_lobj=\'$2\' + else + write_lobj=none + fi + + if test yes = "$build_old_libs"; then + write_oldobj=\'$3\' + else + write_oldobj=none + fi + + $opt_dry_run || { + cat >${write_libobj}T </dev/null` + if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then + func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | + $SED -e "$sed_naive_backslashify"` + else + func_convert_core_file_wine_to_w32_result= + fi + fi +} +# end: func_convert_core_file_wine_to_w32 + + +# func_convert_core_path_wine_to_w32 ARG +# Helper function used by path conversion functions when $build is *nix, and +# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly +# configured wine environment available, with the winepath program in $build's +# $PATH. Assumes ARG has no leading or trailing path separator characters. +# +# ARG is path to be converted from $build format to win32. +# Result is available in $func_convert_core_path_wine_to_w32_result. +# Unconvertible file (directory) names in ARG are skipped; if no directory names +# are convertible, then the result may be empty. +func_convert_core_path_wine_to_w32 () +{ + $debug_cmd + + # unfortunately, winepath doesn't convert paths, only file names + func_convert_core_path_wine_to_w32_result= + if test -n "$1"; then + oldIFS=$IFS + IFS=: + for func_convert_core_path_wine_to_w32_f in $1; do + IFS=$oldIFS + func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" + if test -n "$func_convert_core_file_wine_to_w32_result"; then + if test -z "$func_convert_core_path_wine_to_w32_result"; then + func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result + else + func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" + fi + fi + done + IFS=$oldIFS + fi +} +# end: func_convert_core_path_wine_to_w32 + + +# func_cygpath ARGS... +# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when +# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) +# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or +# (2), returns the Cygwin file name or path in func_cygpath_result (input +# file name or path is assumed to be in w32 format, as previously converted +# from $build's *nix or MSYS format). In case (3), returns the w32 file name +# or path in func_cygpath_result (input file name or path is assumed to be in +# Cygwin format). Returns an empty string on error. +# +# ARGS are passed to cygpath, with the last one being the file name or path to +# be converted. +# +# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH +# environment variable; do not put it in $PATH. +func_cygpath () +{ + $debug_cmd + + if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then + func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` + if test "$?" -ne 0; then + # on failure, ensure result is empty + func_cygpath_result= + fi + else + func_cygpath_result= + func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" + fi +} +#end: func_cygpath + + +# func_convert_core_msys_to_w32 ARG +# Convert file name or path ARG from MSYS format to w32 format. Return +# result in func_convert_core_msys_to_w32_result. +func_convert_core_msys_to_w32 () +{ + $debug_cmd + + # awkward: cmd appends spaces to result + func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | + $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` +} +#end: func_convert_core_msys_to_w32 + + +# func_convert_file_check ARG1 ARG2 +# Verify that ARG1 (a file name in $build format) was converted to $host +# format in ARG2. Otherwise, emit an error message, but continue (resetting +# func_to_host_file_result to ARG1). +func_convert_file_check () +{ + $debug_cmd + + if test -z "$2" && test -n "$1"; then + func_error "Could not determine host file name corresponding to" + func_error " '$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback: + func_to_host_file_result=$1 + fi +} +# end func_convert_file_check + + +# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH +# Verify that FROM_PATH (a path in $build format) was converted to $host +# format in TO_PATH. Otherwise, emit an error message, but continue, resetting +# func_to_host_file_result to a simplistic fallback value (see below). +func_convert_path_check () +{ + $debug_cmd + + if test -z "$4" && test -n "$3"; then + func_error "Could not determine the host path corresponding to" + func_error " '$3'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback. This is a deliberately simplistic "conversion" and + # should not be "improved". See libtool.info. + if test "x$1" != "x$2"; then + lt_replace_pathsep_chars="s|$1|$2|g" + func_to_host_path_result=`echo "$3" | + $SED -e "$lt_replace_pathsep_chars"` + else + func_to_host_path_result=$3 + fi + fi +} +# end func_convert_path_check + + +# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG +# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT +# and appending REPL if ORIG matches BACKPAT. +func_convert_path_front_back_pathsep () +{ + $debug_cmd + + case $4 in + $1 ) func_to_host_path_result=$3$func_to_host_path_result + ;; + esac + case $4 in + $2 ) func_append func_to_host_path_result "$3" + ;; + esac +} +# end func_convert_path_front_back_pathsep + + +################################################## +# $build to $host FILE NAME CONVERSION FUNCTIONS # +################################################## +# invoked via '$to_host_file_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# Result will be available in $func_to_host_file_result. + + +# func_to_host_file ARG +# Converts the file name ARG from $build format to $host format. Return result +# in func_to_host_file_result. +func_to_host_file () +{ + $debug_cmd + + $to_host_file_cmd "$1" +} +# end func_to_host_file + + +# func_to_tool_file ARG LAZY +# converts the file name ARG from $build format to toolchain format. Return +# result in func_to_tool_file_result. If the conversion in use is listed +# in (the comma separated) LAZY, no conversion takes place. +func_to_tool_file () +{ + $debug_cmd + + case ,$2, in + *,"$to_tool_file_cmd",*) + func_to_tool_file_result=$1 + ;; + *) + $to_tool_file_cmd "$1" + func_to_tool_file_result=$func_to_host_file_result + ;; + esac +} +# end func_to_tool_file + + +# func_convert_file_noop ARG +# Copy ARG to func_to_host_file_result. +func_convert_file_noop () +{ + func_to_host_file_result=$1 +} +# end func_convert_file_noop + + +# func_convert_file_msys_to_w32 ARG +# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_file_result. +func_convert_file_msys_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_to_host_file_result=$func_convert_core_msys_to_w32_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_w32 + + +# func_convert_file_cygwin_to_w32 ARG +# Convert file name ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_file_cygwin_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + # because $build is cygwin, we call "the" cygpath in $PATH; no need to use + # LT_CYGPATH in this case. + func_to_host_file_result=`cygpath -m "$1"` + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_cygwin_to_w32 + + +# func_convert_file_nix_to_w32 ARG +# Convert file name ARG from *nix to w32 format. Requires a wine environment +# and a working winepath. Returns result in func_to_host_file_result. +func_convert_file_nix_to_w32 () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_file_wine_to_w32 "$1" + func_to_host_file_result=$func_convert_core_file_wine_to_w32_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_w32 + + +# func_convert_file_msys_to_cygwin ARG +# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_file_msys_to_cygwin () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_cygpath -u "$func_convert_core_msys_to_w32_result" + func_to_host_file_result=$func_cygpath_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_cygwin + + +# func_convert_file_nix_to_cygwin ARG +# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed +# in a wine environment, working winepath, and LT_CYGPATH set. Returns result +# in func_to_host_file_result. +func_convert_file_nix_to_cygwin () +{ + $debug_cmd + + func_to_host_file_result=$1 + if test -n "$1"; then + # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. + func_convert_core_file_wine_to_w32 "$1" + func_cygpath -u "$func_convert_core_file_wine_to_w32_result" + func_to_host_file_result=$func_cygpath_result + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_cygwin + + +############################################# +# $build to $host PATH CONVERSION FUNCTIONS # +############################################# +# invoked via '$to_host_path_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# The result will be available in $func_to_host_path_result. +# +# Path separators are also converted from $build format to $host format. If +# ARG begins or ends with a path separator character, it is preserved (but +# converted to $host format) on output. +# +# All path conversion functions are named using the following convention: +# file name conversion function : func_convert_file_X_to_Y () +# path conversion function : func_convert_path_X_to_Y () +# where, for any given $build/$host combination the 'X_to_Y' value is the +# same. If conversion functions are added for new $build/$host combinations, +# the two new functions must follow this pattern, or func_init_to_host_path_cmd +# will break. + + +# func_init_to_host_path_cmd +# Ensures that function "pointer" variable $to_host_path_cmd is set to the +# appropriate value, based on the value of $to_host_file_cmd. +to_host_path_cmd= +func_init_to_host_path_cmd () +{ + $debug_cmd + + if test -z "$to_host_path_cmd"; then + func_stripname 'func_convert_file_' '' "$to_host_file_cmd" + to_host_path_cmd=func_convert_path_$func_stripname_result + fi +} + + +# func_to_host_path ARG +# Converts the path ARG from $build format to $host format. Return result +# in func_to_host_path_result. +func_to_host_path () +{ + $debug_cmd + + func_init_to_host_path_cmd + $to_host_path_cmd "$1" +} +# end func_to_host_path + + +# func_convert_path_noop ARG +# Copy ARG to func_to_host_path_result. +func_convert_path_noop () +{ + func_to_host_path_result=$1 +} +# end func_convert_path_noop + + +# func_convert_path_msys_to_w32 ARG +# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_path_result. +func_convert_path_msys_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # Remove leading and trailing path separator characters from ARG. MSYS + # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; + # and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result=$func_convert_core_msys_to_w32_result + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_msys_to_w32 + + +# func_convert_path_cygwin_to_w32 ARG +# Convert path ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_path_cygwin_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_cygwin_to_w32 + + +# func_convert_path_nix_to_w32 ARG +# Convert path ARG from *nix to w32 format. Requires a wine environment and +# a working winepath. Returns result in func_to_host_file_result. +func_convert_path_nix_to_w32 () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result=$func_convert_core_path_wine_to_w32_result + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_nix_to_w32 + + +# func_convert_path_msys_to_cygwin ARG +# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_path_msys_to_cygwin () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_msys_to_w32_result" + func_to_host_path_result=$func_cygpath_result + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_msys_to_cygwin + + +# func_convert_path_nix_to_cygwin ARG +# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a +# a wine environment, working winepath, and LT_CYGPATH set. Returns result in +# func_to_host_file_result. +func_convert_path_nix_to_cygwin () +{ + $debug_cmd + + func_to_host_path_result=$1 + if test -n "$1"; then + # Remove leading and trailing path separator characters from + # ARG. msys behavior is inconsistent here, cygpath turns them + # into '.;' and ';.', and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" + func_to_host_path_result=$func_cygpath_result + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_nix_to_cygwin + + +# func_dll_def_p FILE +# True iff FILE is a Windows DLL '.def' file. +# Keep in sync with _LT_DLL_DEF_P in libtool.m4 +func_dll_def_p () +{ + $debug_cmd + + func_dll_def_p_tmp=`$SED -n \ + -e 's/^[ ]*//' \ + -e '/^\(;.*\)*$/d' \ + -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ + -e q \ + "$1"` + test DEF = "$func_dll_def_p_tmp" +} + + +# func_mode_compile arg... +func_mode_compile () +{ + $debug_cmd + + # Get the compilation command and the source file. + base_compile= + srcfile=$nonopt # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + pie_flag= + + for arg + do + case $arg_mode in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg=$arg + arg_mode=normal + ;; + + target ) + libobj=$arg + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + test -n "$libobj" && \ + func_fatal_error "you cannot specify '-o' more than once" + arg_mode=target + continue + ;; + + -pie | -fpie | -fPIE) + func_append pie_flag " $arg" + continue + ;; + + -shared | -static | -prefer-pic | -prefer-non-pic) + func_append later " $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + lastarg= + save_ifs=$IFS; IFS=, + for arg in $args; do + IFS=$save_ifs + func_append_quoted lastarg "$arg" + done + IFS=$save_ifs + func_stripname ' ' '' "$lastarg" + lastarg=$func_stripname_result + + # Add the arguments to base_compile. + func_append base_compile " $lastarg" + continue + ;; + + *) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg=$srcfile + srcfile=$arg + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + func_append_quoted base_compile "$lastarg" + done # for arg + + case $arg_mode in + arg) + func_fatal_error "you must specify an argument for -Xcompile" + ;; + target) + func_fatal_error "you must specify a target with '-o'" + ;; + *) + # Get the name of the library object. + test -z "$libobj" && { + func_basename "$srcfile" + libobj=$func_basename_result + } + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + case $libobj in + *.[cCFSifmso] | \ + *.ada | *.adb | *.ads | *.asm | \ + *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ + *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) + func_xform "$libobj" + libobj=$func_xform_result + ;; + esac + + case $libobj in + *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; + *) + func_fatal_error "cannot determine name of library object from '$libobj'" + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -shared) + test yes = "$build_libtool_libs" \ + || func_fatal_configuration "cannot build a shared library" + build_old_libs=no + continue + ;; + + -static) + build_libtool_libs=no + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + func_quote_for_eval "$libobj" + test "X$libobj" != "X$func_quote_for_eval_result" \ + && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && func_warning "libobj name '$libobj' may not contain shell special characters." + func_dirname_and_basename "$obj" "/" "" + objname=$func_basename_result + xdir=$func_dirname_result + lobj=$xdir$objdir/$objname + + test -z "$base_compile" && \ + func_fatal_help "you must specify a compilation command" + + # Delete any leftover library objects. + if test yes = "$build_old_libs"; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2* | cegcc*) + pic_mode=default + ;; + esac + if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test no = "$compiler_c_o"; then + output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext + lockfile=$output_obj.lock + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test yes = "$need_locks"; then + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + elif test warn = "$need_locks"; then + if test -f "$lockfile"; then + $ECHO "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + func_append removelist " $output_obj" + $ECHO "$srcfile" > "$lockfile" + fi + + $opt_dry_run || $RM $removelist + func_append removelist " $lockfile" + trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 + + func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 + srcfile=$func_to_tool_file_result + func_quote_for_eval "$srcfile" + qsrcfile=$func_quote_for_eval_result + + # Only build a PIC object if we are building libtool libraries. + if test yes = "$build_libtool_libs"; then + # Without this assignment, base_compile gets emptied. + fbsd_hideous_sh_bug=$base_compile + + if test no != "$pic_mode"; then + command="$base_compile $qsrcfile $pic_flag" + else + # Don't build PIC code + command="$base_compile $qsrcfile" + fi + + func_mkdir_p "$xdir$objdir" + + if test -z "$output_obj"; then + # Place PIC objects in $objdir + func_append command " -o $lobj" + fi + + func_show_eval_locale "$command" \ + 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' + + if test warn = "$need_locks" && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + func_show_eval '$MV "$output_obj" "$lobj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + + # Allow error messages only from the first compilation. + if test yes = "$suppress_opt"; then + suppress_output=' >/dev/null 2>&1' + fi + fi + + # Only build a position-dependent object if we build old libraries. + if test yes = "$build_old_libs"; then + if test yes != "$pic_mode"; then + # Don't build PIC code + command="$base_compile $qsrcfile$pie_flag" + else + command="$base_compile $qsrcfile $pic_flag" + fi + if test yes = "$compiler_c_o"; then + func_append command " -o $obj" + fi + + # Suppress compiler output if we already did a PIC compilation. + func_append command "$suppress_output" + func_show_eval_locale "$command" \ + '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' + + if test warn = "$need_locks" && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support '-c' and '-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + func_show_eval '$MV "$output_obj" "$obj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + fi + + $opt_dry_run || { + func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" + + # Unlock the critical section if it was locked + if test no != "$need_locks"; then + removelist=$lockfile + $RM "$lockfile" + fi + } + + exit $EXIT_SUCCESS +} + +$opt_help || { + test compile = "$opt_mode" && func_mode_compile ${1+"$@"} +} + +func_mode_help () +{ + # We need to display help for each of the modes. + case $opt_mode in + "") + # Generic help is extracted from the usage comments + # at the start of this file. + func_help + ;; + + clean) + $ECHO \ +"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + + compile) + $ECHO \ +"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -no-suppress do not suppress compiler output for multiple passes + -prefer-pic try to build PIC objects only + -prefer-non-pic try to build non-PIC objects only + -shared do not build a '.o' file suitable for static linking + -static only build a '.o' file suitable for static linking + -Wc,FLAG pass FLAG directly to the compiler + +COMPILE-COMMAND is a command to be used in creating a 'standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix '.c' with the +library object suffix, '.lo'." + ;; + + execute) + $ECHO \ +"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to '-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + + finish) + $ECHO \ +"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the '--dry-run' option if you just want to see what would be executed." + ;; + + install) + $ECHO \ +"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the 'install' or 'cp' program. + +The following components of INSTALL-COMMAND are treated specially: + + -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + + link) + $ECHO \ +"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -bindir BINDIR specify path to binaries directory (for systems where + libraries must be found in the PATH setting at runtime) + -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE use a list of object files found in FILE to specify objects + -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -shared only do dynamic linking of libtool libraries + -shrext SUFFIX override the standard shared library file extension + -static do not do any dynamic linking of uninstalled libtool libraries + -static-libtool-libs + do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + -weak LIBNAME declare that the target provides the LIBNAME interface + -Wc,FLAG + -Xcompiler FLAG pass linker-specific FLAG directly to the compiler + -Wl,FLAG + -Xlinker FLAG pass linker-specific FLAG directly to the linker + -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) + +All other options (arguments beginning with '-') are ignored. + +Every other argument is treated as a filename. Files ending in '.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in '.la', then a libtool library is created, +only library objects ('.lo' files) may be specified, and '-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created +using 'ar' and 'ranlib', or on Windows using 'lib'. + +If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file +is created, otherwise an executable program is created." + ;; + + uninstall) + $ECHO \ +"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + + *) + func_fatal_help "invalid operation mode '$opt_mode'" + ;; + esac + + echo + $ECHO "Try '$progname --help' for more information about other modes." +} + +# Now that we've collected a possible --mode arg, show help if necessary +if $opt_help; then + if test : = "$opt_help"; then + func_mode_help + else + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + func_mode_help + done + } | $SED -n '1p; 2,$s/^Usage:/ or: /p' + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + echo + func_mode_help + done + } | + $SED '1d + /^When reporting/,/^Report/{ + H + d + } + $x + /information about other modes/d + /more detailed .*MODE/d + s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' + fi + exit $? +fi + + +# func_mode_execute arg... +func_mode_execute () +{ + $debug_cmd + + # The first argument is the command name. + cmd=$nonopt + test -z "$cmd" && \ + func_fatal_help "you must specify a COMMAND" + + # Handle -dlopen flags immediately. + for file in $opt_dlopen; do + test -f "$file" \ + || func_fatal_help "'$file' is not a file" + + dir= + case $file in + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "'$lib' is not a valid libtool archive" + + # Read the libtool library. + dlname= + library_names= + func_source "$file" + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && \ + func_warning "'$file' was not linked with '-export-dynamic'" + continue + fi + + func_dirname "$file" "" "." + dir=$func_dirname_result + + if test -f "$dir/$objdir/$dlname"; then + func_append dir "/$objdir" + else + if test ! -f "$dir/$dlname"; then + func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" + fi + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + func_dirname "$file" "" "." + dir=$func_dirname_result + ;; + + *) + func_warning "'-dlopen' is ignored for non-libtool libraries and objects" + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir=$absdir + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic=$magic + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -* | *.la | *.lo ) ;; + *) + # Do a test to see if this is really a libtool program. + if func_ltwrapper_script_p "$file"; then + func_source "$file" + # Transform arg to wrapped name. + file=$progdir/$program + elif func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + func_source "$func_ltwrapper_scriptname_result" + # Transform arg to wrapped name. + file=$progdir/$program + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + func_append_quoted args "$file" + done + + if $opt_dry_run; then + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" + echo "export $shlibpath_var" + fi + $ECHO "$cmd$args" + exit $EXIT_SUCCESS + else + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES + do + eval "if test \"\${save_$lt_var+set}\" = set; then + $lt_var=\$save_$lt_var; export $lt_var + else + $lt_unset $lt_var + fi" + done + + # Now prepare to actually exec the command. + exec_cmd=\$cmd$args + fi +} + +test execute = "$opt_mode" && func_mode_execute ${1+"$@"} + + +# func_mode_finish arg... +func_mode_finish () +{ + $debug_cmd + + libs= + libdirs= + admincmds= + + for opt in "$nonopt" ${1+"$@"} + do + if test -d "$opt"; then + func_append libdirs " $opt" + + elif test -f "$opt"; then + if func_lalib_unsafe_p "$opt"; then + func_append libs " $opt" + else + func_warning "'$opt' is not a valid libtool archive" + fi + + else + func_fatal_error "invalid argument '$opt'" + fi + done + + if test -n "$libs"; then + if test -n "$lt_sysroot"; then + sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` + sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" + else + sysroot_cmd= + fi + + # Remove sysroot references + if $opt_dry_run; then + for lib in $libs; do + echo "removing references to $lt_sysroot and '=' prefixes from $lib" + done + else + tmpdir=`func_mktempdir` + for lib in $libs; do + $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ + > $tmpdir/tmp-la + mv -f $tmpdir/tmp-la $lib + done + ${RM}r "$tmpdir" + fi + fi + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + func_execute_cmds "$finish_cmds" 'admincmds="$admincmds +'"$cmd"'"' + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $opt_dry_run || eval "$cmds" || func_append admincmds " + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + $opt_quiet && exit $EXIT_SUCCESS + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + echo "----------------------------------------------------------------------" + echo "Libraries have been installed in:" + for libdir in $libdirs; do + $ECHO " $libdir" + done + echo + echo "If you ever happen to want to link against installed libraries" + echo "in a given directory, LIBDIR, you must either use libtool, and" + echo "specify the full pathname of the library, or use the '-LLIBDIR'" + echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + echo " - add LIBDIR to the '$shlibpath_var' environment variable" + echo " during execution" + fi + if test -n "$runpath_var"; then + echo " - add LIBDIR to the '$runpath_var' environment variable" + echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $ECHO " - use the '$flag' linker flag" + fi + if test -n "$admincmds"; then + $ECHO " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" + fi + echo + + echo "See any operating system documentation about shared libraries for" + case $host in + solaris2.[6789]|solaris2.1[0-9]) + echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" + echo "pages." + ;; + *) + echo "more information, such as the ld(1) and ld.so(8) manual pages." + ;; + esac + echo "----------------------------------------------------------------------" + fi + exit $EXIT_SUCCESS +} + +test finish = "$opt_mode" && func_mode_finish ${1+"$@"} + + +# func_mode_install arg... +func_mode_install () +{ + $debug_cmd + + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || + # Allow the use of GNU shtool's install command. + case $nonopt in *shtool*) :;; *) false;; esac + then + # Aesthetically quote it. + func_quote_for_eval "$nonopt" + install_prog="$func_quote_for_eval_result " + arg=$1 + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + func_quote_for_eval "$arg" + func_append install_prog "$func_quote_for_eval_result" + install_shared_prog=$install_prog + case " $install_prog " in + *[\\\ /]cp\ *) install_cp=: ;; + *) install_cp=false ;; + esac + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=false + stripme= + no_mode=: + for arg + do + arg2= + if test -n "$dest"; then + func_append files " $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=: ;; + -f) + if $install_cp; then :; else + prev=$arg + fi + ;; + -g | -m | -o) + prev=$arg + ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + if test X-m = "X$prev" && test -n "$install_override_mode"; then + arg2=$install_override_mode + no_mode=false + fi + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + func_quote_for_eval "$arg" + func_append install_prog " $func_quote_for_eval_result" + if test -n "$arg2"; then + func_quote_for_eval "$arg2" + fi + func_append install_shared_prog " $func_quote_for_eval_result" + done + + test -z "$install_prog" && \ + func_fatal_help "you must specify an install program" + + test -n "$prev" && \ + func_fatal_help "the '$prev' option requires an argument" + + if test -n "$install_override_mode" && $no_mode; then + if $install_cp; then :; else + func_quote_for_eval "$install_override_mode" + func_append install_shared_prog " -m $func_quote_for_eval_result" + fi + fi + + if test -z "$files"; then + if test -z "$dest"; then + func_fatal_help "no file or destination specified" + else + func_fatal_help "you must specify a destination" + fi + fi + + # Strip any trailing slash from the destination. + func_stripname '' '/' "$dest" + dest=$func_stripname_result + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=: + if $isdir; then + destdir=$dest + destname= + else + func_dirname_and_basename "$dest" "" "." + destdir=$func_dirname_result + destname=$func_basename_result + + # Not a directory, so check to see that there is only one file specified. + set dummy $files; shift + test "$#" -gt 1 && \ + func_fatal_help "'$dest' is not a directory" + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + func_fatal_help "'$destdir' must be an absolute directory name" + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic=$magic + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + func_append staticlibs " $file" + ;; + + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "'$file' is not a valid libtool archive" + + library_names= + old_library= + relink_command= + func_source "$file" + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) func_append current_libdirs " $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) func_append future_libdirs " $libdir" ;; + esac + fi + + func_dirname "$file" "/" "" + dir=$func_dirname_result + func_append dir "$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + test "$inst_prefix_dir" = "$destdir" && \ + func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + fi + + func_warning "relinking '$file'" + func_show_eval "$relink_command" \ + 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' + fi + + # See the names of the shared library. + set dummy $library_names; shift + if test -n "$1"; then + realname=$1 + shift + + srcname=$realname + test -n "$relink_command" && srcname=${realname}T + + # Install the shared library and build the symlinks. + func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ + 'exit $?' + tstripme=$stripme + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + case $realname in + *.dll.a) + tstripme= + ;; + esac + ;; + os2*) + case $realname in + *_dll.a) + tstripme= + ;; + esac + ;; + esac + if test -n "$tstripme" && test -n "$striplib"; then + func_show_eval "$striplib $destdir/$realname" 'exit $?' + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try 'ln -sf' first, because the 'ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + test "$linkname" != "$realname" \ + && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" + done + fi + + # Do each command in the postinstall commands. + lib=$destdir/$realname + func_execute_cmds "$postinstall_cmds" 'exit $?' + fi + + # Install the pseudo-library for information purposes. + func_basename "$file" + name=$func_basename_result + instname=$dir/${name}i + func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' + + # Maybe install the static library, too. + test -n "$old_library" && func_append staticlibs " $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile=$destdir/$destname + else + func_basename "$file" + destfile=$func_basename_result + destfile=$destdir/$destfile + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + func_lo2o "$destfile" + staticdest=$func_lo2o_result + ;; + *.$objext) + staticdest=$destfile + destfile= + ;; + *) + func_fatal_help "cannot copy a libtool object to '$destfile'" + ;; + esac + + # Install the libtool object if requested. + test -n "$destfile" && \ + func_show_eval "$install_prog $file $destfile" 'exit $?' + + # Install the old object if enabled. + if test yes = "$build_old_libs"; then + # Deduce the name of the old-style object file. + func_lo2o "$file" + staticobj=$func_lo2o_result + func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile=$destdir/$destname + else + func_basename "$file" + destfile=$func_basename_result + destfile=$destdir/$destfile + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext= + case $file in + *.exe) + if test ! -f "$file"; then + func_stripname '' '.exe' "$file" + file=$func_stripname_result + stripped_ext=.exe + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin* | *mingw*) + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + wrapper=$func_ltwrapper_scriptname_result + else + func_stripname '' '.exe' "$file" + wrapper=$func_stripname_result + fi + ;; + *) + wrapper=$file + ;; + esac + if func_ltwrapper_script_p "$wrapper"; then + notinst_deplibs= + relink_command= + + func_source "$wrapper" + + # Check the variables that should have been set. + test -z "$generated_by_libtool_version" && \ + func_fatal_error "invalid libtool wrapper script '$wrapper'" + + finalize=: + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + func_source "$lib" + fi + libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` + if test -n "$libdir" && test ! -f "$libfile"; then + func_warning "'$lib' has not been installed in '$libdir'" + finalize=false + fi + done + + relink_command= + func_source "$wrapper" + + outputname= + if test no = "$fast_install" && test -n "$relink_command"; then + $opt_dry_run || { + if $finalize; then + tmpdir=`func_mktempdir` + func_basename "$file$stripped_ext" + file=$func_basename_result + outputname=$tmpdir/$file + # Replace the output file specification. + relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` + + $opt_quiet || { + func_quote_for_expand "$relink_command" + eval "func_echo $func_quote_for_expand_result" + } + if eval "$relink_command"; then : + else + func_error "error: relink '$file' with the above command before installing it" + $opt_dry_run || ${RM}r "$tmpdir" + continue + fi + file=$outputname + else + func_warning "cannot relink '$file'" + fi + } + else + # Install the binary that we compiled earlier. + file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + func_stripname '' '.exe' "$destfile" + destfile=$func_stripname_result + ;; + esac + ;; + esac + func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' + $opt_dry_run || if test -n "$outputname"; then + ${RM}r "$tmpdir" + fi + ;; + esac + done + + for file in $staticlibs; do + func_basename "$file" + name=$func_basename_result + + # Set up the ranlib parameters. + oldlib=$destdir/$name + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + + func_show_eval "$install_prog \$file \$oldlib" 'exit $?' + + if test -n "$stripme" && test -n "$old_striplib"; then + func_show_eval "$old_striplib $tool_oldlib" 'exit $?' + fi + + # Do each command in the postinstall commands. + func_execute_cmds "$old_postinstall_cmds" 'exit $?' + done + + test -n "$future_libdirs" && \ + func_warning "remember to run '$progname --finish$future_libdirs'" + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + $opt_dry_run && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi +} + +test install = "$opt_mode" && func_mode_install ${1+"$@"} + + +# func_generate_dlsyms outputname originator pic_p +# Extract symbols from dlprefiles and create ${outputname}S.o with +# a dlpreopen symbol table. +func_generate_dlsyms () +{ + $debug_cmd + + my_outputname=$1 + my_originator=$2 + my_pic_p=${3-false} + my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` + my_dlsyms= + + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + my_dlsyms=${my_outputname}S.c + else + func_error "not configured to extract global symbols from dlpreopened files" + fi + fi + + if test -n "$my_dlsyms"; then + case $my_dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist=$output_objdir/$my_outputname.nm + + func_show_eval "$RM $nlist ${nlist}S ${nlist}T" + + # Parse the name list into a source file. + func_verbose "creating $output_objdir/$my_dlsyms" + + $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ +/* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ +/* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +#if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) +#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" +#endif + +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) + +/* External symbol declarations for the compiler. */\ +" + + if test yes = "$dlself"; then + func_verbose "generating symbol list for '$output'" + + $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` + for progfile in $progfiles; do + func_to_tool_file "$progfile" func_convert_file_msys_to_w32 + func_verbose "extracting global C symbols from '$func_to_tool_file_result'" + $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $opt_dry_run || { + eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + if test -n "$export_symbols_regex"; then + $opt_dry_run || { + eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols=$output_objdir/$outputname.exp + $opt_dry_run || { + $RM $export_symbols + eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + } + else + $opt_dry_run || { + eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + } + fi + fi + + for dlprefile in $dlprefiles; do + func_verbose "extracting global C symbols from '$dlprefile'" + func_basename "$dlprefile" + name=$func_basename_result + case $host in + *cygwin* | *mingw* | *cegcc* ) + # if an import library, we need to obtain dlname + if func_win32_import_lib_p "$dlprefile"; then + func_tr_sh "$dlprefile" + eval "curr_lafile=\$libfile_$func_tr_sh_result" + dlprefile_dlbasename= + if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then + # Use subshell, to avoid clobbering current variable values + dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` + if test -n "$dlprefile_dlname"; then + func_basename "$dlprefile_dlname" + dlprefile_dlbasename=$func_basename_result + else + # no lafile. user explicitly requested -dlpreopen . + $sharedlib_from_linklib_cmd "$dlprefile" + dlprefile_dlbasename=$sharedlib_from_linklib_result + fi + fi + $opt_dry_run || { + if test -n "$dlprefile_dlbasename"; then + eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' + else + func_warning "Could not compute DLL name from $name" + eval '$ECHO ": $name " >> "$nlist"' + fi + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | + $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" + } + else # not an import lib + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + fi + ;; + *) + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + ;; + esac + done + + $opt_dry_run || { + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $MV "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if $GREP -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + $GREP -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' + else + echo '/* NONE */' >> "$output_objdir/$my_dlsyms" + fi + + func_show_eval '$RM "${nlist}I"' + if test -n "$global_symbol_to_import"; then + eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' + fi + + echo >> "$output_objdir/$my_dlsyms" "\ + +/* The mapping between symbol names and symbols. */ +typedef struct { + const char *name; + void *address; +} lt_dlsymlist; +extern LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[];\ +" + + if test -s "$nlist"I; then + echo >> "$output_objdir/$my_dlsyms" "\ +static void lt_syminit(void) +{ + LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; + for (; symbol->name; ++symbol) + {" + $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" + echo >> "$output_objdir/$my_dlsyms" "\ + } +}" + fi + echo >> "$output_objdir/$my_dlsyms" "\ +LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[] = +{ {\"$my_originator\", (void *) 0}," + + if test -s "$nlist"I; then + echo >> "$output_objdir/$my_dlsyms" "\ + {\"@INIT@\", (void *) <_syminit}," + fi + + case $need_lib_prefix in + no) + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + *) + eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + esac + echo >> "$output_objdir/$my_dlsyms" "\ + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_${my_prefix}_LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + } # !$opt_dry_run + + pic_flag_for_symtable= + case "$compile_command " in + *" -static "*) ;; + *) + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; + *-*-hpux*) + pic_flag_for_symtable=" $pic_flag" ;; + *) + $my_pic_p && pic_flag_for_symtable=" $pic_flag" + ;; + esac + ;; + esac + symtab_cflags= + for arg in $LTCFLAGS; do + case $arg in + -pie | -fpie | -fPIE) ;; + *) func_append symtab_cflags " $arg" ;; + esac + done + + # Now compile the dynamic symbol file. + func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' + + # Clean up the generated files. + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' + + # Transform the symbol file into the correct name. + symfileobj=$output_objdir/${my_outputname}S.$objext + case $host in + *cygwin* | *mingw* | *cegcc* ) + if test -f "$output_objdir/$my_outputname.def"; then + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + else + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + fi + ;; + *) + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + ;; + esac + ;; + *) + func_fatal_error "unknown suffix for '$my_dlsyms'" + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` + fi +} + +# func_cygming_gnu_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is a GNU/binutils-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_gnu_implib_p () +{ + $debug_cmd + + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` + test -n "$func_cygming_gnu_implib_tmp" +} + +# func_cygming_ms_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is an MS-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_ms_implib_p () +{ + $debug_cmd + + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` + test -n "$func_cygming_ms_implib_tmp" +} + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +# Despite the name, also deal with 64 bit binaries. +func_win32_libid () +{ + $debug_cmd + + win32_libid_type=unknown + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | + $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then + case $nm_interface in + "MS dumpbin") + if func_cygming_ms_implib_p "$1" || + func_cygming_gnu_implib_p "$1" + then + win32_nmres=import + else + win32_nmres= + fi + ;; + *) + func_to_tool_file "$1" func_convert_file_msys_to_w32 + win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | + $SED -n -e ' + 1,100{ + / I /{ + s|.*|import| + p + q + } + }'` + ;; + esac + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $ECHO "$win32_libid_type" +} + +# func_cygming_dll_for_implib ARG +# +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib () +{ + $debug_cmd + + sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` +} + +# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs +# +# The is the core of a fallback implementation of a +# platform-specific function to extract the name of the +# DLL associated with the specified import library LIBNAME. +# +# SECTION_NAME is either .idata$6 or .idata$7, depending +# on the platform and compiler that created the implib. +# +# Echos the name of the DLL associated with the +# specified import library. +func_cygming_dll_for_implib_fallback_core () +{ + $debug_cmd + + match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` + $OBJDUMP -s --section "$1" "$2" 2>/dev/null | + $SED '/^Contents of section '"$match_literal"':/{ + # Place marker at beginning of archive member dllname section + s/.*/====MARK====/ + p + d + } + # These lines can sometimes be longer than 43 characters, but + # are always uninteresting + /:[ ]*file format pe[i]\{,1\}-/d + /^In archive [^:]*:/d + # Ensure marker is printed + /^====MARK====/p + # Remove all lines with less than 43 characters + /^.\{43\}/!d + # From remaining lines, remove first 43 characters + s/^.\{43\}//' | + $SED -n ' + # Join marker and all lines until next marker into a single line + /^====MARK====/ b para + H + $ b para + b + :para + x + s/\n//g + # Remove the marker + s/^====MARK====// + # Remove trailing dots and whitespace + s/[\. \t]*$// + # Print + /./p' | + # we now have a list, one entry per line, of the stringified + # contents of the appropriate section of all members of the + # archive that possess that section. Heuristic: eliminate + # all those that have a first or second character that is + # a '.' (that is, objdump's representation of an unprintable + # character.) This should work for all archives with less than + # 0x302f exports -- but will fail for DLLs whose name actually + # begins with a literal '.' or a single character followed by + # a '.'. + # + # Of those that remain, print the first one. + $SED -e '/^\./d;/^.\./d;q' +} + +# func_cygming_dll_for_implib_fallback ARG +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# +# This fallback implementation is for use when $DLLTOOL +# does not support the --identify-strict option. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib_fallback () +{ + $debug_cmd + + if func_cygming_gnu_implib_p "$1"; then + # binutils import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` + elif func_cygming_ms_implib_p "$1"; then + # ms-generated import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` + else + # unknown + sharedlib_from_linklib_result= + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + $debug_cmd + + f_ex_an_ar_dir=$1; shift + f_ex_an_ar_oldlib=$1 + if test yes = "$lock_old_archive_extraction"; then + lockfile=$f_ex_an_ar_oldlib.lock + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + fi + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ + 'stat=$?; rm -f "$lockfile"; exit $stat' + if test yes = "$lock_old_archive_extraction"; then + $opt_dry_run || rm -f "$lockfile" + fi + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" + fi +} + + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + $debug_cmd + + my_gentop=$1; shift + my_oldlibs=${1+"$@"} + my_oldobjs= + my_xlib= + my_xabs= + my_xdir= + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + func_basename "$my_xlib" + my_xlib=$func_basename_result + my_xlib_u=$my_xlib + while :; do + case " $extracted_archives " in + *" $my_xlib_u "*) + func_arith $extracted_serial + 1 + extracted_serial=$func_arith_result + my_xlib_u=lt$extracted_serial-$my_xlib ;; + *) break ;; + esac + done + extracted_archives="$extracted_archives $my_xlib_u" + my_xdir=$my_gentop/$my_xlib_u + + func_mkdir_p "$my_xdir" + + case $host in + *-darwin*) + func_verbose "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + $opt_dry_run || { + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + func_basename "$darwin_archive" + darwin_base_archive=$func_basename_result + darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` + if test -n "$darwin_arches"; then + darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches; do + func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" + $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" + cd "unfat-$$/$darwin_base_archive-$darwin_arch" + func_extract_an_archive "`pwd`" "$darwin_base_archive" + cd "$darwin_curdir" + $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" + done # $darwin_arches + ## Okay now we've a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` + $LIPO -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + $RM -rf unfat-$$ + cd "$darwin_orig_dir" + else + cd $darwin_orig_dir + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + } # !$opt_dry_run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` + done + + func_extract_archives_result=$my_oldobjs +} + + +# func_emit_wrapper [arg=no] +# +# Emit a libtool wrapper script on stdout. +# Don't directly open a file because we may want to +# incorporate the script contents within a cygwin/mingw +# wrapper executable. Must ONLY be called from within +# func_mode_link because it depends on a number of variables +# set therein. +# +# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR +# variable will take. If 'yes', then the emitted script +# will assume that the directory where it is stored is +# the $objdir directory. This is a cygwin/mingw-specific +# behavior. +func_emit_wrapper () +{ + func_emit_wrapper_arg1=${1-no} + + $ECHO "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM (GNU $PACKAGE) $VERSION +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='$sed_quote_subst' + +# Be Bourne compatible +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variables: + generated_by_libtool_version='$macro_version' + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$ECHO are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + file=\"\$0\"" + + qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` + $ECHO "\ + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + ECHO=\"$qECHO\" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ that is used only on +# windows platforms, and (c) all begin with the string "--lt-" +# (application programs are unlikely to have options that match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's $0 value, followed by "$@". +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=\$0 + shift + for lt_opt + do + case \"\$lt_opt\" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` + test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. + lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` + cat \"\$lt_dump_D/\$lt_dump_F\" + exit 0 + ;; + --lt-*) + \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n \"\$lt_option_debug\"; then + echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" + lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2* | *-cegcc*) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $ECHO "\ + \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from \$@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case \" \$* \" in + *\\ --lt-*) + for lt_wr_arg + do + case \$lt_wr_arg in + --lt-*) ;; + *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; + esac + shift + done ;; + esac + func_exec_program_core \${1+\"\$@\"} +} + + # Parse options + func_parse_lt_options \"\$0\" \${1+\"\$@\"} + + # Find the directory that this script lives in. + thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 + if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then + # special case for '.' + if test \"\$thisdir\" = \".\"; then + thisdir=\`pwd\` + fi + # remove .libs from thisdir + case \"\$thisdir\" in + *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; + $objdir ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test yes = "$fast_install"; then + $ECHO "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $MKDIR \"\$progdir\" + else + $RM \"\$progdir/\$file\" + fi" + + $ECHO "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + \$ECHO \"\$relink_command_output\" >&2 + $RM \"\$progdir/\$file\" + exit 1 + fi + fi + + $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $RM \"\$progdir/\$program\"; + $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $RM \"\$progdir/\$file\" + fi" + else + $ECHO "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $ECHO "\ + + if test -f \"\$progdir/\$program\"; then" + + # fixup the dll searchpath if we need to. + # + # Fix the DLL searchpath if we need to. Do this before prepending + # to shlibpath, because on Windows, both are PATH and uninstalled + # libraries must come first. + if test -n "$dllsearchpath"; then + $ECHO "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + # Export our shlibpath_var if we have one. + if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $ECHO "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` + + export $shlibpath_var +" + fi + + $ECHO "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. + func_exec_program \${1+\"\$@\"} + fi + else + # The program doesn't exist. + \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 + \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 + \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 + exit 1 + fi +fi\ +" +} + + +# func_emit_cwrapperexe_src +# emit the source code for a wrapper executable on stdout +# Must ONLY be called from within func_mode_link because +# it depends on a number of variable set therein. +func_emit_cwrapperexe_src () +{ + cat < +#include +#ifdef _MSC_VER +# include +# include +# include +#else +# include +# include +# ifdef __CYGWIN__ +# include +# endif +#endif +#include +#include +#include +#include +#include +#include +#include +#include + +#define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) + +/* declarations of non-ANSI functions */ +#if defined __MINGW32__ +# ifdef __STRICT_ANSI__ +int _putenv (const char *); +# endif +#elif defined __CYGWIN__ +# ifdef __STRICT_ANSI__ +char *realpath (const char *, char *); +int putenv (char *); +int setenv (const char *, const char *, int); +# endif +/* #elif defined other_platform || defined ... */ +#endif + +/* portability defines, excluding path handling macros */ +#if defined _MSC_VER +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +# define S_IXUSR _S_IEXEC +#elif defined __MINGW32__ +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +#elif defined __CYGWIN__ +# define HAVE_SETENV +# define FOPEN_WB "wb" +/* #elif defined other platforms ... */ +#endif + +#if defined PATH_MAX +# define LT_PATHMAX PATH_MAX +#elif defined MAXPATHLEN +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef S_IXOTH +# define S_IXOTH 0 +#endif +#ifndef S_IXGRP +# define S_IXGRP 0 +#endif + +/* path handling portability macros */ +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ + defined __OS2__ +# define HAVE_DOS_BASED_FILE_SYSTEM +# define FOPEN_WB "wb" +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#ifndef FOPEN_WB +# define FOPEN_WB "w" +#endif +#ifndef _O_BINARY +# define _O_BINARY 0 +#endif + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free (stale); stale = 0; } \ +} while (0) + +#if defined LT_DEBUGWRAPPER +static int lt_debug = 1; +#else +static int lt_debug = 0; +#endif + +const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ + +void *xmalloc (size_t num); +char *xstrdup (const char *string); +const char *base_name (const char *name); +char *find_executable (const char *wrapper); +char *chase_symlinks (const char *pathspec); +int make_executable (const char *path); +int check_executable (const char *path); +char *strendzap (char *str, const char *pat); +void lt_debugprintf (const char *file, int line, const char *fmt, ...); +void lt_fatal (const char *file, int line, const char *message, ...); +static const char *nonnull (const char *s); +static const char *nonempty (const char *s); +void lt_setenv (const char *name, const char *value); +char *lt_extend_str (const char *orig_value, const char *add, int to_end); +void lt_update_exe_path (const char *name, const char *value); +void lt_update_lib_path (const char *name, const char *value); +char **prepare_spawn (char **argv); +void lt_dump_script (FILE *f); +EOF + + cat <= 0) + && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) + return 1; + else + return 0; +} + +int +make_executable (const char *path) +{ + int rval = 0; + struct stat st; + + lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", + nonempty (path)); + if ((!path) || (!*path)) + return 0; + + if (stat (path, &st) >= 0) + { + rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); + } + return rval; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise + Does not chase symlinks, even on platforms that support them. +*/ +char * +find_executable (const char *wrapper) +{ + int has_slash = 0; + const char *p; + const char *p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + size_t tmp_len; + char *concat_name; + + lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", + nonempty (wrapper)); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined HAVE_DOS_BASED_FILE_SYSTEM + if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } +#if defined HAVE_DOS_BASED_FILE_SYSTEM + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char *path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char *q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR (*q)) + break; + p_len = (size_t) (q - p); + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = + XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = + XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + return NULL; +} + +char * +chase_symlinks (const char *pathspec) +{ +#ifndef S_ISLNK + return xstrdup (pathspec); +#else + char buf[LT_PATHMAX]; + struct stat s; + char *tmp_pathspec = xstrdup (pathspec); + char *p; + int has_symlinks = 0; + while (strlen (tmp_pathspec) && !has_symlinks) + { + lt_debugprintf (__FILE__, __LINE__, + "checking path component for symlinks: %s\n", + tmp_pathspec); + if (lstat (tmp_pathspec, &s) == 0) + { + if (S_ISLNK (s.st_mode) != 0) + { + has_symlinks = 1; + break; + } + + /* search backwards for last DIR_SEPARATOR */ + p = tmp_pathspec + strlen (tmp_pathspec) - 1; + while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + p--; + if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + { + /* no more DIR_SEPARATORS left */ + break; + } + *p = '\0'; + } + else + { + lt_fatal (__FILE__, __LINE__, + "error accessing file \"%s\": %s", + tmp_pathspec, nonnull (strerror (errno))); + } + } + XFREE (tmp_pathspec); + + if (!has_symlinks) + { + return xstrdup (pathspec); + } + + tmp_pathspec = realpath (pathspec, buf); + if (tmp_pathspec == 0) + { + lt_fatal (__FILE__, __LINE__, + "could not follow symlinks for %s", pathspec); + } + return xstrdup (tmp_pathspec); +#endif +} + +char * +strendzap (char *str, const char *pat) +{ + size_t len, patlen; + + assert (str != NULL); + assert (pat != NULL); + + len = strlen (str); + patlen = strlen (pat); + + if (patlen <= len) + { + str += len - patlen; + if (STREQ (str, pat)) + *str = '\0'; + } + return str; +} + +void +lt_debugprintf (const char *file, int line, const char *fmt, ...) +{ + va_list args; + if (lt_debug) + { + (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); + va_start (args, fmt); + (void) vfprintf (stderr, fmt, args); + va_end (args); + } +} + +static void +lt_error_core (int exit_status, const char *file, + int line, const char *mode, + const char *message, va_list ap) +{ + fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *file, int line, const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); + va_end (ap); +} + +static const char * +nonnull (const char *s) +{ + return s ? s : "(null)"; +} + +static const char * +nonempty (const char *s) +{ + return (s && !*s) ? "(empty)" : nonnull (s); +} + +void +lt_setenv (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_setenv) setting '%s' to '%s'\n", + nonnull (name), nonnull (value)); + { +#ifdef HAVE_SETENV + /* always make a copy, for consistency with !HAVE_SETENV */ + char *str = xstrdup (value); + setenv (name, str, 1); +#else + size_t len = strlen (name) + 1 + strlen (value) + 1; + char *str = XMALLOC (char, len); + sprintf (str, "%s=%s", name, value); + if (putenv (str) != EXIT_SUCCESS) + { + XFREE (str); + } +#endif + } +} + +char * +lt_extend_str (const char *orig_value, const char *add, int to_end) +{ + char *new_value; + if (orig_value && *orig_value) + { + size_t orig_value_len = strlen (orig_value); + size_t add_len = strlen (add); + new_value = XMALLOC (char, add_len + orig_value_len + 1); + if (to_end) + { + strcpy (new_value, orig_value); + strcpy (new_value + orig_value_len, add); + } + else + { + strcpy (new_value, add); + strcpy (new_value + add_len, orig_value); + } + } + else + { + new_value = xstrdup (add); + } + return new_value; +} + +void +lt_update_exe_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + /* some systems can't cope with a ':'-terminated path #' */ + size_t len = strlen (new_value); + while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) + { + new_value[--len] = '\0'; + } + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +void +lt_update_lib_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +EOF + case $host_os in + mingw*) + cat <<"EOF" + +/* Prepares an argument vector before calling spawn(). + Note that spawn() does not by itself call the command interpreter + (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : + ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + GetVersionEx(&v); + v.dwPlatformId == VER_PLATFORM_WIN32_NT; + }) ? "cmd.exe" : "command.com"). + Instead it simply concatenates the arguments, separated by ' ', and calls + CreateProcess(). We must quote the arguments since Win32 CreateProcess() + interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a + special way: + - Space and tab are interpreted as delimiters. They are not treated as + delimiters if they are surrounded by double quotes: "...". + - Unescaped double quotes are removed from the input. Their only effect is + that within double quotes, space and tab are treated like normal + characters. + - Backslashes not followed by double quotes are not special. + - But 2*n+1 backslashes followed by a double quote become + n backslashes followed by a double quote (n >= 0): + \" -> " + \\\" -> \" + \\\\\" -> \\" + */ +#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +char ** +prepare_spawn (char **argv) +{ + size_t argc; + char **new_argv; + size_t i; + + /* Count number of arguments. */ + for (argc = 0; argv[argc] != NULL; argc++) + ; + + /* Allocate new argument vector. */ + new_argv = XMALLOC (char *, argc + 1); + + /* Put quoted arguments into the new argument vector. */ + for (i = 0; i < argc; i++) + { + const char *string = argv[i]; + + if (string[0] == '\0') + new_argv[i] = xstrdup ("\"\""); + else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) + { + int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); + size_t length; + unsigned int backslashes; + const char *s; + char *quoted_string; + char *p; + + length = 0; + backslashes = 0; + if (quote_around) + length++; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + length += backslashes + 1; + length++; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + length += backslashes + 1; + + quoted_string = XMALLOC (char, length + 1); + + p = quoted_string; + backslashes = 0; + if (quote_around) + *p++ = '"'; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + { + unsigned int j; + for (j = backslashes + 1; j > 0; j--) + *p++ = '\\'; + } + *p++ = c; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + { + unsigned int j; + for (j = backslashes; j > 0; j--) + *p++ = '\\'; + *p++ = '"'; + } + *p = '\0'; + + new_argv[i] = quoted_string; + } + else + new_argv[i] = (char *) string; + } + new_argv[argc] = NULL; + + return new_argv; +} +EOF + ;; + esac + + cat <<"EOF" +void lt_dump_script (FILE* f) +{ +EOF + func_emit_wrapper yes | + $SED -n -e ' +s/^\(.\{79\}\)\(..*\)/\1\ +\2/ +h +s/\([\\"]\)/\\\1/g +s/$/\\n/ +s/\([^\n]*\).*/ fputs ("\1", f);/p +g +D' + cat <<"EOF" +} +EOF +} +# end: func_emit_cwrapperexe_src + +# func_win32_import_lib_p ARG +# True if ARG is an import lib, as indicated by $file_magic_cmd +func_win32_import_lib_p () +{ + $debug_cmd + + case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in + *import*) : ;; + *) false ;; + esac +} + +# func_suncc_cstd_abi +# !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! +# Several compiler flags select an ABI that is incompatible with the +# Cstd library. Avoid specifying it if any are in CXXFLAGS. +func_suncc_cstd_abi () +{ + $debug_cmd + + case " $compile_command " in + *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) + suncc_use_cstd_abi=no + ;; + *) + suncc_use_cstd_abi=yes + ;; + esac +} + +# func_mode_link arg... +func_mode_link () +{ + $debug_cmd + + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + # It is impossible to link a dll without this setting, and + # we shouldn't force the makefile maintainer to figure out + # what system we are compiling for in order to pass an extra + # flag for every libtool invocation. + # allow_undefined=no + + # FIXME: Unfortunately, there are problems with the above when trying + # to make a dll that has undefined symbols, in which case not + # even a static library is built. For now, we need to specify + # -no-undefined on the libtool link line when we can be certain + # that all symbols are satisfied, otherwise we get a static library. + allow_undefined=yes + ;; + *) + allow_undefined=yes + ;; + esac + libtool_args=$nonopt + base_compile="$nonopt $@" + compile_command=$nonopt + finalize_command=$nonopt + + compile_rpath= + finalize_rpath= + compile_shlibpath= + finalize_shlibpath= + convenience= + old_convenience= + deplibs= + old_deplibs= + compiler_flags= + linker_flags= + dllsearchpath= + lib_search_path=`pwd` + inst_prefix_dir= + new_inherited_linker_flags= + + avoid_version=no + bindir= + dlfiles= + dlprefiles= + dlself=no + export_dynamic=no + export_symbols= + export_symbols_regex= + generated= + libobjs= + ltlibs= + module=no + no_install=no + objs= + os2dllname= + non_pic_objects= + precious_files_regex= + prefer_static_libs=no + preload=false + prev= + prevarg= + release= + rpath= + xrpath= + perm_rpath= + temp_rpath= + thread_safe=no + vinfo= + vinfo_number=no + weak_libs= + single_module=$wl-single_module + func_infer_tag $base_compile + + # We need to know -static, to get the right output filenames. + for arg + do + case $arg in + -shared) + test yes != "$build_libtool_libs" \ + && func_fatal_configuration "cannot build a shared library" + build_old_libs=no + break + ;; + -all-static | -static | -static-libtool-libs) + case $arg in + -all-static) + if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then + func_warning "complete static linking is impossible in this configuration" + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + -static) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + esac + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg=$1 + shift + func_quote_for_eval "$arg" + qarg=$func_quote_for_eval_unquoted_result + func_append libtool_args " $func_quote_for_eval_result" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + func_append compile_command " @OUTPUT@" + func_append finalize_command " @OUTPUT@" + ;; + esac + + case $prev in + bindir) + bindir=$arg + prev= + continue + ;; + dlfiles|dlprefiles) + $preload || { + # Add the symbol object into the linking commands. + func_append compile_command " @SYMFILE@" + func_append finalize_command " @SYMFILE@" + preload=: + } + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test no = "$dlself"; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test dlprefiles = "$prev"; then + dlself=yes + elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test dlfiles = "$prev"; then + func_append dlfiles " $arg" + else + func_append dlprefiles " $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols=$arg + test -f "$arg" \ + || func_fatal_error "symbol file '$arg' does not exist" + prev= + continue + ;; + expsyms_regex) + export_symbols_regex=$arg + prev= + continue + ;; + framework) + case $host in + *-*-darwin*) + case "$deplibs " in + *" $qarg.ltframework "*) ;; + *) func_append deplibs " $qarg.ltframework" # this is fixed later + ;; + esac + ;; + esac + prev= + continue + ;; + inst_prefix) + inst_prefix_dir=$arg + prev= + continue + ;; + mllvm) + # Clang does not use LLVM to link, so we can simply discard any + # '-mllvm $arg' options when doing the link step. + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat "$save_arg"` + do +# func_append moreargs " $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test none = "$pic_object" && + test none = "$non_pic_object"; then + func_fatal_error "cannot find name of object for '$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + if test none != "$pic_object"; then + # Prepend the subdirectory the object is found in. + pic_object=$xdir$pic_object + + if test dlfiles = "$prev"; then + if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test dlprefiles = "$prev"; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg=$pic_object + fi + + # Non-PIC object. + if test none != "$non_pic_object"; then + # Prepend the subdirectory the object is found in. + non_pic_object=$xdir$non_pic_object + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test none = "$pic_object"; then + arg=$non_pic_object + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object=$pic_object + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "'$arg' is not a valid libtool object" + fi + fi + done + else + func_fatal_error "link input file '$arg' does not exist" + fi + arg=$save_arg + prev= + continue + ;; + os2dllname) + os2dllname=$arg + prev= + continue + ;; + precious_regex) + precious_files_regex=$arg + prev= + continue + ;; + release) + release=-$arg + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + if test rpath = "$prev"; then + case "$rpath " in + *" $arg "*) ;; + *) func_append rpath " $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) func_append xrpath " $arg" ;; + esac + fi + prev= + continue + ;; + shrext) + shrext_cmds=$arg + prev= + continue + ;; + weak) + func_append weak_libs " $arg" + prev= + continue + ;; + xcclinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xcompiler) + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xlinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $wl$qarg" + prev= + func_append compile_command " $wl$qarg" + func_append finalize_command " $wl$qarg" + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg=$arg + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + # See comment for -static flag below, for more details. + func_append compile_command " $link_static_flag" + func_append finalize_command " $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + func_fatal_error "'-allow-undefined' must not be used because it is the default" + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -bindir) + prev=bindir + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + func_fatal_error "more than one -exported-symbols argument is not allowed" + fi + if test X-export-symbols = "X$arg"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework) + prev=framework + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + func_append compile_command " $arg" + func_append finalize_command " $arg" + ;; + esac + continue + ;; + + -L*) + func_stripname "-L" '' "$arg" + if test -z "$func_stripname_result"; then + if test "$#" -gt 0; then + func_fatal_error "require no space between '-L' and '$1'" + else + func_fatal_error "need path for '-L' option" + fi + fi + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + test -z "$absdir" && \ + func_fatal_error "cannot determine absolute directory name of '$dir'" + dir=$absdir + ;; + esac + case "$deplibs " in + *" -L$dir "* | *" $arg "*) + # Will only happen for absolute or sysroot arguments + ;; + *) + # Preserve sysroot, but never include relative directories + case $dir in + [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; + *) func_append deplibs " -L$dir" ;; + esac + func_append lib_search_path " $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + ::) dllsearchpath=$dir;; + *) func_append dllsearchpath ":$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test X-lc = "X$arg" || test X-lm = "X$arg"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test X-lc = "X$arg" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) + # Do not include libc due to us having libc/libc_r. + test X-lc = "X$arg" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + func_append deplibs " System.ltframework" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test X-lc = "X$arg" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test X-lc = "X$arg" && continue + ;; + esac + elif test X-lc_r = "X$arg"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + func_append deplibs " $arg" + continue + ;; + + -mllvm) + prev=mllvm + continue + ;; + + -module) + module=yes + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + # Darwin uses the -arch flag to determine output architecture. + -model|-arch|-isysroot|--sysroot) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case "$new_inherited_linker_flags " in + *" $arg "*) ;; + * ) func_append new_inherited_linker_flags " $arg" ;; + esac + continue + ;; + + -multi_module) + single_module=$wl-multi_module + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) + # The PATH hackery in wrapper scripts is required on Windows + # and Darwin in order for the loader to find any dlls it needs. + func_warning "'-no-install' is ignored for $host" + func_warning "assuming '-no-fast-install' instead" + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -os2dllname) + prev=os2dllname + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + func_stripname '-R' '' "$arg" + dir=$func_stripname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + =*) + func_stripname '=' '' "$dir" + dir=$lt_sysroot$func_stripname_result + ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) func_append xrpath " $dir" ;; + esac + continue + ;; + + -shared) + # The effects of -shared are defined in a previous loop. + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -static | -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -weak) + prev=weak + continue + ;; + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs=$IFS; IFS=, + for flag in $args; do + IFS=$save_ifs + func_quote_for_eval "$flag" + func_append arg " $func_quote_for_eval_result" + func_append compiler_flags " $func_quote_for_eval_result" + done + IFS=$save_ifs + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Wl,*) + func_stripname '-Wl,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs=$IFS; IFS=, + for flag in $args; do + IFS=$save_ifs + func_quote_for_eval "$flag" + func_append arg " $wl$func_quote_for_eval_result" + func_append compiler_flags " $wl$func_quote_for_eval_result" + func_append linker_flags " $func_quote_for_eval_result" + done + IFS=$save_ifs + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # -msg_* for osf cc + -msg_*) + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + ;; + + # Flags to be passed through unchanged, with rationale: + # -64, -mips[0-9] enable 64-bit mode for the SGI compiler + # -r[0-9][0-9]* specify processor for the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler + # +DA*, +DD* enable 64-bit mode for the HP compiler + # -q* compiler args for the IBM compiler + # -m*, -t[45]*, -txscale* architecture-specific flags for GCC + # -F/path path to uninstalled frameworks, gcc on darwin + # -p, -pg, --coverage, -fprofile-* profiling flags for GCC + # -fstack-protector* stack protector flags for GCC + # @file GCC response files + # -tp=* Portland pgcc target processor selection + # --sysroot=* for sysroot support + # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization + # -specs=* GCC specs files + # -stdlib=* select c++ std lib with clang + # -fsanitize=* Clang/GCC memory and address sanitizer + # -fuse-ld=* Linker select flags for GCC + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ + -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ + -specs=*|-fsanitize=*|-fuse-ld=*) + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + func_append compile_command " $arg" + func_append finalize_command " $arg" + func_append compiler_flags " $arg" + continue + ;; + + -Z*) + if test os2 = "`expr $host : '.*\(os2\)'`"; then + # OS/2 uses -Zxxx to specify OS/2-specific options + compiler_flags="$compiler_flags $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case $arg in + -Zlinker | -Zstack) + prev=xcompiler + ;; + esac + continue + else + # Otherwise treat like 'Some other compiler flag' below + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + fi + ;; + + # Some other compiler flag. + -* | +*) + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + ;; + + *.$objext) + # A standard object. + func_append objs " $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test none = "$pic_object" && + test none = "$non_pic_object"; then + func_fatal_error "cannot find name of object for '$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + test none = "$pic_object" || { + # Prepend the subdirectory the object is found in. + pic_object=$xdir$pic_object + + if test dlfiles = "$prev"; then + if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test dlprefiles = "$prev"; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg=$pic_object + } + + # Non-PIC object. + if test none != "$non_pic_object"; then + # Prepend the subdirectory the object is found in. + non_pic_object=$xdir$non_pic_object + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test none = "$pic_object"; then + arg=$non_pic_object + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object=$pic_object + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir=$func_dirname_result + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "'$arg' is not a valid libtool object" + fi + fi + ;; + + *.$libext) + # An archive. + func_append deplibs " $arg" + func_append old_deplibs " $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + func_resolve_sysroot "$arg" + if test dlfiles = "$prev"; then + # This library was specified with -dlopen. + func_append dlfiles " $func_resolve_sysroot_result" + prev= + elif test dlprefiles = "$prev"; then + # The library was specified with -dlpreopen. + func_append dlprefiles " $func_resolve_sysroot_result" + prev= + else + func_append deplibs " $func_resolve_sysroot_result" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + func_quote_for_eval "$arg" + arg=$func_quote_for_eval_result + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + done # argument parsing loop + + test -n "$prev" && \ + func_fatal_help "the '$prevarg' option requires an argument" + + if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + func_basename "$output" + outputname=$func_basename_result + libobjs_save=$libobjs + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + # Definition is injected by LT_CONFIG during libtool generation. + func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH" + + func_dirname "$output" "/" "" + output_objdir=$func_dirname_result$objdir + func_to_tool_file "$output_objdir/" + tool_output_objdir=$func_to_tool_file_result + # Create the object directory. + func_mkdir_p "$output_objdir" + + # Determine the type of output + case $output in + "") + func_fatal_help "you must specify an output file" + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if $opt_preserve_dup_deps; then + case "$libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append libs " $deplib" + done + + if test lib = "$linkmode"; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if $opt_duplicate_compiler_generated_deps; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; + esac + func_append pre_post_deps " $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + notinst_path= # paths that contain not-installed libtool libraries + + case $linkmode in + lib) + passes="conv dlpreopen link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + func_fatal_help "libraries can '-dlopen' only libtool libraries: $file" + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=false + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + + for pass in $passes; do + # The preopen pass in lib mode reverses $deplibs; put it back here + # so that -L comes before libs that need it for instance... + if test lib,link = "$linkmode,$pass"; then + ## FIXME: Find the place where the list is rebuilt in the wrong + ## order, and fix it there properly + tmp_deplibs= + for deplib in $deplibs; do + tmp_deplibs="$deplib $tmp_deplibs" + done + deplibs=$tmp_deplibs + fi + + if test lib,link = "$linkmode,$pass" || + test prog,scan = "$linkmode,$pass"; then + libs=$deplibs + deplibs= + fi + if test prog = "$linkmode"; then + case $pass in + dlopen) libs=$dlfiles ;; + dlpreopen) libs=$dlprefiles ;; + link) + libs="$deplibs %DEPLIBS%" + test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" + ;; + esac + fi + if test lib,dlpreopen = "$linkmode,$pass"; then + # Collect and forward deplibs of preopened libtool libs + for lib in $dlprefiles; do + # Ignore non-libtool-libs + dependency_libs= + func_resolve_sysroot "$lib" + case $lib in + *.la) func_source "$func_resolve_sysroot_result" ;; + esac + + # Collect preopened libtool deplibs, except any this library + # has declared as weak libs + for deplib in $dependency_libs; do + func_basename "$deplib" + deplib_base=$func_basename_result + case " $weak_libs " in + *" $deplib_base "*) ;; + *) func_append deplibs " $deplib" ;; + esac + done + done + libs=$dlprefiles + fi + if test dlopen = "$pass"; then + # Collect dlpreopened libraries + save_deplibs=$deplibs + deplibs= + fi + + for deplib in $libs; do + lib= + found=false + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + func_append compiler_flags " $deplib" + if test lib = "$linkmode"; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; + esac + fi + fi + continue + ;; + -l*) + if test lib != "$linkmode" && test prog != "$linkmode"; then + func_warning "'-l' is ignored for archives/objects" + continue + fi + func_stripname '-l' '' "$deplib" + name=$func_stripname_result + if test lib = "$linkmode"; then + searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" + else + searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" + fi + for searchdir in $searchdirs; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib=$searchdir/lib$name$search_ext + if test -f "$lib"; then + if test .la = "$search_ext"; then + found=: + else + found=false + fi + break 2 + fi + done + done + if $found; then + # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test yes = "$allow_libtool_libs_with_static_runtimes"; then + case " $predeps $postdeps " in + *" $deplib "*) + if func_lalib_p "$lib"; then + library_names= + old_library= + func_source "$lib" + for l in $old_library $library_names; do + ll=$l + done + if test "X$ll" = "X$old_library"; then # only static version available + found=false + func_dirname "$lib" "" "." + ladir=$func_dirname_result + lib=$ladir/$old_library + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + else + # deplib doesn't seem to be a libtool library + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + ;; # -l + *.ltframework) + if test prog,link = "$linkmode,$pass"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + if test lib = "$linkmode"; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; + esac + fi + fi + continue + ;; + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test conv = "$pass" && continue + newdependency_libs="$deplib $newdependency_libs" + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + prog) + if test conv = "$pass"; then + deplibs="$deplib $deplibs" + continue + fi + if test scan = "$pass"; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + *) + func_warning "'-L' is ignored for archives/objects" + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test link = "$pass"; then + func_stripname '-R' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) func_append xrpath " $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) + func_resolve_sysroot "$deplib" + lib=$func_resolve_sysroot_result + ;; + *.$libext) + if test conv = "$pass"; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + # Linking convenience modules into shared libraries is allowed, + # but linking other static libraries is non-portable. + case " $dlpreconveniencelibs " in + *" $deplib "*) ;; + *) + valid_a_lib=false + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=: + fi + ;; + pass_all) + valid_a_lib=: + ;; + esac + if $valid_a_lib; then + echo + $ECHO "*** Warning: Linking the shared library $output against the" + $ECHO "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + else + echo + $ECHO "*** Warning: Trying to link with static lib archive $deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because the file extensions .$libext of this argument makes me believe" + echo "*** that it is just a static archive that I should not use here." + fi + ;; + esac + continue + ;; + prog) + if test link != "$pass"; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test conv = "$pass"; then + deplibs="$deplib $deplibs" + elif test prog = "$linkmode"; then + if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + func_append newdlprefiles " $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + func_append newdlfiles " $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=: + continue + ;; + esac # case $deplib + + $found || test -f "$lib" \ + || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'" + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$lib" \ + || func_fatal_error "'$lib' is not a valid libtool archive" + + func_dirname "$lib" "" "." + ladir=$func_dirname_result + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + inherited_linker_flags= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + func_source "$lib" + + # Convert "-framework foo" to "foo.ltframework" + if test -n "$inherited_linker_flags"; then + tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` + for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do + case " $new_inherited_linker_flags " in + *" $tmp_inherited_linker_flag "*) ;; + *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; + esac + done + fi + dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + if test lib,link = "$linkmode,$pass" || + test prog,scan = "$linkmode,$pass" || + { test prog != "$linkmode" && test lib != "$linkmode"; }; then + test -n "$dlopen" && func_append dlfiles " $dlopen" + test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" + fi + + if test conv = "$pass"; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + func_fatal_error "cannot find name of link library for '$lib'" + fi + # It is a libtool convenience library, so add in its objects. + func_append convenience " $ladir/$objdir/$old_library" + func_append old_convenience " $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if $opt_preserve_dup_deps; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done + elif test prog != "$linkmode" && test lib != "$linkmode"; then + func_fatal_error "'$lib' is not a convenience library" + fi + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + if test -n "$old_library" && + { test yes = "$prefer_static_libs" || + test built,no = "$prefer_static_libs,$installed"; }; then + linklib=$old_library + else + for l in $old_library $library_names; do + linklib=$l + done + fi + if test -z "$linklib"; then + func_fatal_error "cannot find name of link library for '$lib'" + fi + + # This library was specified with -dlopen. + if test dlopen = "$pass"; then + test -z "$libdir" \ + && func_fatal_error "cannot -dlopen a convenience library: '$lib'" + if test -z "$dlname" || + test yes != "$dlopen_support" || + test no = "$build_libtool_libs" + then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + func_append dlprefiles " $lib $dependency_libs" + else + func_append newdlfiles " $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + func_warning "cannot determine absolute directory name of '$ladir'" + func_warning "passing it literally to the linker, although it might fail" + abs_ladir=$ladir + fi + ;; + esac + func_basename "$lib" + laname=$func_basename_result + + # Find the relevant object directory and library name. + if test yes = "$installed"; then + if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + func_warning "library '$lib' was moved." + dir=$ladir + absdir=$abs_ladir + libdir=$abs_ladir + else + dir=$lt_sysroot$libdir + absdir=$lt_sysroot$libdir + fi + test yes = "$hardcode_automatic" && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir=$ladir + absdir=$abs_ladir + # Remove this search path later + func_append notinst_path " $abs_ladir" + else + dir=$ladir/$objdir + absdir=$abs_ladir/$objdir + # Remove this search path later + func_append notinst_path " $abs_ladir" + fi + fi # $installed = yes + func_stripname 'lib' '.la' "$laname" + name=$func_stripname_result + + # This library was specified with -dlpreopen. + if test dlpreopen = "$pass"; then + if test -z "$libdir" && test prog = "$linkmode"; then + func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'" + fi + case $host in + # special handling for platforms with PE-DLLs. + *cygwin* | *mingw* | *cegcc* ) + # Linker will automatically link against shared library if both + # static and shared are present. Therefore, ensure we extract + # symbols from the import library if a shared library is present + # (otherwise, the dlopen module name will be incorrect). We do + # this by putting the import library name into $newdlprefiles. + # We recover the dlopen module name by 'saving' the la file + # name in a special purpose variable, and (later) extracting the + # dlname from the la file. + if test -n "$dlname"; then + func_tr_sh "$dir/$linklib" + eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" + func_append newdlprefiles " $dir/$linklib" + else + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + fi + ;; + * ) + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + func_append newdlprefiles " $dir/$dlname" + else + func_append newdlprefiles " $dir/$linklib" + fi + ;; + esac + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test lib = "$linkmode"; then + deplibs="$dir/$old_library $deplibs" + elif test prog,link = "$linkmode,$pass"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test prog = "$linkmode" && test link != "$pass"; then + func_append newlib_search_path " $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=false + if test no != "$link_all_deplibs" || test -z "$library_names" || + test no = "$build_libtool_libs"; then + linkalldeplibs=: + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + esac + # Need to link against all dependency_libs? + if $linkalldeplibs; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if $opt_preserve_dup_deps; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test prog,link = "$linkmode,$pass"; then + if test -n "$library_names" && + { { test no = "$prefer_static_libs" || + test built,yes = "$prefer_static_libs,$installed"; } || + test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then + # Make sure the rpath contains only unique directories. + case $temp_rpath: in + *"$absdir:"*) ;; + *) func_append temp_rpath "$absdir:" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) func_append compile_rpath " $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if $alldeplibs && + { test pass_all = "$deplibs_check_method" || + { test yes = "$build_libtool_libs" && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + use_static_libs=$prefer_static_libs + if test built = "$use_static_libs" && test yes = "$installed"; then + use_static_libs=no + fi + if test -n "$library_names" && + { test no = "$use_static_libs" || test -z "$old_library"; }; then + case $host in + *cygwin* | *mingw* | *cegcc* | *os2*) + # No point in relinking DLLs because paths are not encoded + func_append notinst_deplibs " $lib" + need_relink=no + ;; + *) + if test no = "$installed"; then + func_append notinst_deplibs " $lib" + need_relink=yes + fi + ;; + esac + # This is a shared library + + # Warn about portability, can't link against -module's on some + # systems (darwin). Don't bleat about dlopened modules though! + dlopenmodule= + for dlpremoduletest in $dlprefiles; do + if test "X$dlpremoduletest" = "X$lib"; then + dlopenmodule=$dlpremoduletest + break + fi + done + if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then + echo + if test prog = "$linkmode"; then + $ECHO "*** Warning: Linking the executable $output against the loadable module" + else + $ECHO "*** Warning: Linking the shared library $output against the loadable module" + fi + $ECHO "*** $linklib is not portable!" + fi + if test lib = "$linkmode" && + test yes = "$hardcode_into_libs"; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) func_append compile_rpath " $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + shift + realname=$1 + shift + libname=`eval "\\$ECHO \"$libname_spec\""` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname=$dlname + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw* | *cegcc* | *os2*) + func_arith $current - $age + major=$func_arith_result + versuffix=-$major + ;; + esac + eval soname=\"$soname_spec\" + else + soname=$realname + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot=$soname + func_basename "$soroot" + soname=$func_basename_result + func_stripname 'lib' '.dll' "$soname" + newlib=libimp-$func_stripname_result.a + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + func_verbose "extracting exported symbol list from '$soname'" + func_execute_cmds "$extract_expsyms_cmds" 'exit $?' + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + func_verbose "generating import library for '$soname'" + func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test prog = "$linkmode" || test relink != "$opt_mode"; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test no = "$hardcode_direct"; then + add=$dir/$linklib + case $host in + *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;; + *-*-sysv4*uw2*) add_dir=-L$dir ;; + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ + *-*-unixware7*) add_dir=-L$dir ;; + *-*-darwin* ) + # if the lib is a (non-dlopened) module then we cannot + # link against it, someone is ignoring the earlier warnings + if /usr/bin/file -L $add 2> /dev/null | + $GREP ": [^:]* bundle" >/dev/null; then + if test "X$dlopenmodule" != "X$lib"; then + $ECHO "*** Warning: lib $linklib is a module, not a shared library" + if test -z "$old_library"; then + echo + echo "*** And there doesn't seem to be a static archive available" + echo "*** The link will probably fail, sorry" + else + add=$dir/$old_library + fi + elif test -n "$old_library"; then + add=$dir/$old_library + fi + fi + esac + elif test no = "$hardcode_minus_L"; then + case $host in + *-*-sunos*) add_shlibpath=$dir ;; + esac + add_dir=-L$dir + add=-l$name + elif test no = "$hardcode_shlibpath_var"; then + add_shlibpath=$dir + add=-l$name + else + lib_linked=no + fi + ;; + relink) + if test yes = "$hardcode_direct" && + test no = "$hardcode_direct_absolute"; then + add=$dir/$linklib + elif test yes = "$hardcode_minus_L"; then + add_dir=-L$absdir + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + func_append add_dir " -L$inst_prefix_dir$libdir" + ;; + esac + fi + add=-l$name + elif test yes = "$hardcode_shlibpath_var"; then + add_shlibpath=$dir + add=-l$name + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test yes != "$lib_linked"; then + func_fatal_configuration "unsupported hardcode properties" + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) func_append compile_shlibpath "$add_shlibpath:" ;; + esac + fi + if test prog = "$linkmode"; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test yes != "$hardcode_direct" && + test yes != "$hardcode_minus_L" && + test yes = "$hardcode_shlibpath_var"; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) func_append finalize_shlibpath "$libdir:" ;; + esac + fi + fi + fi + + if test prog = "$linkmode" || test relink = "$opt_mode"; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test yes = "$hardcode_direct" && + test no = "$hardcode_direct_absolute"; then + add=$libdir/$linklib + elif test yes = "$hardcode_minus_L"; then + add_dir=-L$libdir + add=-l$name + elif test yes = "$hardcode_shlibpath_var"; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) func_append finalize_shlibpath "$libdir:" ;; + esac + add=-l$name + elif test yes = "$hardcode_automatic"; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib"; then + add=$inst_prefix_dir$libdir/$linklib + else + add=$libdir/$linklib + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir=-L$libdir + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + func_append add_dir " -L$inst_prefix_dir$libdir" + ;; + esac + fi + add=-l$name + fi + + if test prog = "$linkmode"; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test prog = "$linkmode"; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test unsupported != "$hardcode_direct"; then + test -n "$old_library" && linklib=$old_library + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test yes = "$build_libtool_libs"; then + # Not a shared library + if test pass_all != "$deplibs_check_method"; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + echo + $ECHO "*** Warning: This system cannot link to static lib archive $lib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have." + if test yes = "$module"; then + echo "*** But as you try to build a module library, libtool will still create " + echo "*** a static module, that should work as long as the dlopening application" + echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using 'nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** 'nm' from GNU binutils and a full rebuild may help." + fi + if test no = "$build_old_libs"; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test lib = "$linkmode"; then + if test -n "$dependency_libs" && + { test yes != "$hardcode_into_libs" || + test yes = "$build_old_libs" || + test yes = "$link_static"; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) func_stripname '-R' '' "$libdir" + temp_xrpath=$func_stripname_result + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) func_append xrpath " $temp_xrpath";; + esac;; + *) func_append temp_deplibs " $libdir";; + esac + done + dependency_libs=$temp_deplibs + fi + + func_append newlib_search_path " $absdir" + # Link against this library + test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result";; + *) func_resolve_sysroot "$deplib" ;; + esac + if $opt_preserve_dup_deps; then + case "$tmp_libs " in + *" $func_resolve_sysroot_result "*) + func_append specialdeplibs " $func_resolve_sysroot_result" ;; + esac + fi + func_append tmp_libs " $func_resolve_sysroot_result" + done + + if test no != "$link_all_deplibs"; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + path= + case $deplib in + -L*) path=$deplib ;; + *.la) + func_resolve_sysroot "$deplib" + deplib=$func_resolve_sysroot_result + func_dirname "$deplib" "" "." + dir=$func_dirname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + func_warning "cannot determine absolute directory name of '$dir'" + absdir=$dir + fi + ;; + esac + if $GREP "^installed=no" $deplib > /dev/null; then + case $host in + *-*-darwin*) + depdepl= + eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names"; then + for tmp in $deplibrary_names; do + depdepl=$tmp + done + if test -f "$absdir/$objdir/$depdepl"; then + depdepl=$absdir/$objdir/$depdepl + darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + if test -z "$darwin_install_name"; then + darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + fi + func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl" + func_append linker_flags " -dylib_file $darwin_install_name:$depdepl" + path= + fi + fi + ;; + *) + path=-L$absdir/$objdir + ;; + esac + else + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + test -z "$libdir" && \ + func_fatal_error "'$deplib' is not a valid libtool archive" + test "$absdir" != "$libdir" && \ + func_warning "'$deplib' seems to be moved" + + path=-L$absdir + fi + ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + if test link = "$pass"; then + if test prog = "$linkmode"; then + compile_deplibs="$new_inherited_linker_flags $compile_deplibs" + finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" + else + compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + fi + fi + dependency_libs=$newdependency_libs + if test dlpreopen = "$pass"; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test dlopen != "$pass"; then + test conv = "$pass" || { + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) func_append lib_search_path " $dir" ;; + esac + done + newlib_search_path= + } + + if test prog,link = "$linkmode,$pass"; then + vars="compile_deplibs finalize_deplibs" + else + vars=deplibs + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) func_append tmp_libs " $deplib" ;; + esac + ;; + *) func_append tmp_libs " $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + + # Add Sun CC postdeps if required: + test CXX = "$tagname" && { + case $host_os in + linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C++ 5.9 + func_suncc_cstd_abi + + if test no != "$suncc_use_cstd_abi"; then + func_append postdeps ' -library=Cstd -library=Crun' + fi + ;; + esac + ;; + + solaris*) + func_cc_basename "$CC" + case $func_cc_basename_result in + CC* | sunCC*) + func_suncc_cstd_abi + + if test no != "$suncc_use_cstd_abi"; then + func_append postdeps ' -library=Cstd -library=Crun' + fi + ;; + esac + ;; + esac + } + + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i= + ;; + esac + if test -n "$i"; then + func_append tmp_libs " $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test prog = "$linkmode"; then + dlfiles=$newdlfiles + fi + if test prog = "$linkmode" || test lib = "$linkmode"; then + dlprefiles=$newdlprefiles + fi + + case $linkmode in + oldlib) + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + func_warning "'-dlopen' is ignored for archives" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "'-l' and '-L' are ignored for archives" ;; + esac + + test -n "$rpath" && \ + func_warning "'-rpath' is ignored for archives" + + test -n "$xrpath" && \ + func_warning "'-R' is ignored for archives" + + test -n "$vinfo" && \ + func_warning "'-version-info/-version-number' is ignored for archives" + + test -n "$release" && \ + func_warning "'-release' is ignored for archives" + + test -n "$export_symbols$export_symbols_regex" && \ + func_warning "'-export-symbols' is ignored for archives" + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs=$output + func_append objs "$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form 'libNAME.la'. + case $outputname in + lib*) + func_stripname 'lib' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + test no = "$module" \ + && func_fatal_help "libtool library '$output' must begin with 'lib'" + + if test no != "$need_lib_prefix"; then + # Add the "lib" prefix for modules if required + func_stripname '' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + func_stripname '' '.la' "$outputname" + libname=$func_stripname_result + fi + ;; + esac + + if test -n "$objs"; then + if test pass_all != "$deplibs_check_method"; then + func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs" + else + echo + $ECHO "*** Warning: Linking the shared library $output against the non-libtool" + $ECHO "*** objects $objs is not portable!" + func_append libobjs " $objs" + fi + fi + + test no = "$dlself" \ + || func_warning "'-dlopen self' is ignored for libtool libraries" + + set dummy $rpath + shift + test 1 -lt "$#" \ + && func_warning "ignoring multiple '-rpath's for a libtool library" + + install_libdir=$1 + + oldlibs= + if test -z "$rpath"; then + if test yes = "$build_libtool_libs"; then + # Building a libtool convenience library. + # Some compilers have problems with a '.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + test -n "$vinfo" && \ + func_warning "'-version-info/-version-number' is ignored for convenience libraries" + + test -n "$release" && \ + func_warning "'-release' is ignored for convenience libraries" + else + + # Parse the version information argument. + save_ifs=$IFS; IFS=: + set dummy $vinfo 0 0 0 + shift + IFS=$save_ifs + + test -n "$7" && \ + func_fatal_help "too many parameters to '-version-info'" + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major=$1 + number_minor=$2 + number_revision=$3 + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # that has an extra 1 added just for fun + # + case $version_type in + # correct linux to gnu/linux during the next big refactor + darwin|freebsd-elf|linux|osf|windows|none) + func_arith $number_major + $number_minor + current=$func_arith_result + age=$number_minor + revision=$number_revision + ;; + freebsd-aout|qnx|sunos) + current=$number_major + revision=$number_minor + age=0 + ;; + irix|nonstopux) + func_arith $number_major + $number_minor + current=$func_arith_result + age=$number_minor + revision=$number_minor + lt_irix_increment=no + ;; + *) + func_fatal_configuration "$modename: unknown library version type '$version_type'" + ;; + esac + ;; + no) + current=$1 + revision=$2 + age=$3 + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "CURRENT '$current' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "REVISION '$revision' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "AGE '$age' must be a nonnegative integer" + func_fatal_error "'$vinfo' is not valid version information" + ;; + esac + + if test "$age" -gt "$current"; then + func_error "AGE '$age' is greater than the current interface number '$current'" + func_fatal_error "'$vinfo' is not valid version information" + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + func_arith $current - $age + major=.$func_arith_result + versuffix=$major.$age.$revision + # Darwin ld doesn't like 0 for these options... + func_arith $current + 1 + minor_current=$func_arith_result + xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + # On Darwin other compilers + case $CC in + nagfor*) + verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" + ;; + *) + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + esac + ;; + + freebsd-aout) + major=.$current + versuffix=.$current.$revision + ;; + + freebsd-elf) + func_arith $current - $age + major=.$func_arith_result + versuffix=$major.$age.$revision + ;; + + irix | nonstopux) + if test no = "$lt_irix_increment"; then + func_arith $current - $age + else + func_arith $current - $age + 1 + fi + major=$func_arith_result + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring=$verstring_prefix$major.$revision + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test 0 -ne "$loop"; do + func_arith $revision - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring=$verstring_prefix$major.$iface:$verstring + done + + # Before this point, $major must not contain '.'. + major=.$major + versuffix=$major.$revision + ;; + + linux) # correct to gnu/linux during the next big refactor + func_arith $current - $age + major=.$func_arith_result + versuffix=$major.$age.$revision + ;; + + osf) + func_arith $current - $age + major=.$func_arith_result + versuffix=.$current.$age.$revision + verstring=$current.$age.$revision + + # Add in all the interfaces that we are compatible with. + loop=$age + while test 0 -ne "$loop"; do + func_arith $current - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring=$verstring:$iface.0 + done + + # Make executables depend on our current version. + func_append verstring ":$current.0" + ;; + + qnx) + major=.$current + versuffix=.$current + ;; + + sco) + major=.$current + versuffix=.$current + ;; + + sunos) + major=.$current + versuffix=.$current.$revision + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 file systems. + func_arith $current - $age + major=$func_arith_result + versuffix=-$major + ;; + + *) + func_fatal_configuration "unknown library version type '$version_type'" + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring=0.0 + ;; + esac + if test no = "$need_version"; then + versuffix= + else + versuffix=.0.0 + fi + fi + + # Remove version info from name if versioning should be avoided + if test yes,no = "$avoid_version,$need_version"; then + major= + versuffix= + verstring= + fi + + # Check to see if the archive will have undefined symbols. + if test yes = "$allow_undefined"; then + if test unsupported = "$allow_undefined_flag"; then + if test yes = "$build_old_libs"; then + func_warning "undefined symbols not allowed in $host shared libraries; building static only" + build_libtool_libs=no + else + func_fatal_error "can't build $host shared library unless -no-undefined is specified" + fi + fi + else + # Don't allow undefined symbols. + allow_undefined_flag=$no_undefined_flag + fi + + fi + + func_generate_dlsyms "$libname" "$libname" : + func_append libobjs " $symfileobj" + test " " = "$libobjs" && libobjs= + + if test relink != "$opt_mode"; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$ECHO "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext | *.gcno) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*) + if test -n "$precious_files_regex"; then + if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + func_append removelist " $p" + ;; + *) ;; + esac + done + test -n "$removelist" && \ + func_show_eval "${RM}r \$removelist" + fi + + # Now set the variables for building old libraries. + if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then + func_append oldlibs " $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + #for path in $notinst_path; do + # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` + # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` + # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` + #done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + func_replace_sysroot "$libdir" + func_append temp_xrpath " -R$func_replace_sysroot_result" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + done + if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles=$dlfiles + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) func_append dlfiles " $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles=$dlprefiles + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) func_append dlprefiles " $lib" ;; + esac + done + + if test yes = "$build_libtool_libs"; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + func_append deplibs " System.ltframework" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test yes = "$build_libtool_need_lc"; then + func_append deplibs " -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release= + versuffix= + major= + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $opt_dry_run || $RM conftest.c + cat > conftest.c </dev/null` + $nocaseglob + else + potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` + fi + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null | + $GREP " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib=$potent_lib + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | $SED 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;; + *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | + $SED -e 10q | + $EGREP "$file_magic_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" + a_deplib= + break 2 + fi + done + done + fi + if test -n "$a_deplib"; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib"; then + $ECHO "*** with $libname but no candidates were found. (...for file magic test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a file magic. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + func_append newdeplibs " $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + for a_deplib in $deplibs; do + case $a_deplib in + -l*) + func_stripname -l '' "$a_deplib" + name=$func_stripname_result + if test yes = "$allow_libtool_libs_with_static_runtimes"; then + case " $predeps $postdeps " in + *" $a_deplib "*) + func_append newdeplibs " $a_deplib" + a_deplib= + ;; + esac + fi + if test -n "$a_deplib"; then + libname=`eval "\\$ECHO \"$libname_spec\""` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib=$potent_lib # see symlink-check above in file_magic test + if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ + $EGREP "$match_pattern_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" + a_deplib= + break 2 + fi + done + done + fi + if test -n "$a_deplib"; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib"; then + $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a regex pattern. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + func_append newdeplibs " $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs= + tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` + if test yes = "$allow_libtool_libs_with_static_runtimes"; then + for i in $predeps $postdeps; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"` + done + fi + case $tmp_deplibs in + *[!\ \ ]*) + echo + if test none = "$deplibs_check_method"; then + echo "*** Warning: inter-library dependencies are not supported in this platform." + else + echo "*** Warning: inter-library dependencies are not known to be supported." + fi + echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + ;; + esac + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library with the System framework + newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + if test yes = "$droppeddeps"; then + if test yes = "$module"; then + echo + echo "*** Warning: libtool could not satisfy all declared inter-library" + $ECHO "*** dependencies of module $libname. Therefore, libtool will create" + echo "*** a static module, that should work as long as the dlopening" + echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using 'nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** 'nm' from GNU binutils and a full rebuild may help." + fi + if test no = "$build_old_libs"; then + oldlibs=$output_objdir/$libname.$libext + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + echo "*** The inter-library dependencies that have been dropped here will be" + echo "*** automatically added whenever a program is linked with this library" + echo "*** or is declared to -dlopen it." + + if test no = "$allow_undefined"; then + echo + echo "*** Since this library must not contain undefined symbols," + echo "*** because either the platform does not support them or" + echo "*** it was explicitly requested with -no-undefined," + echo "*** libtool will only create a static version of it." + if test no = "$build_old_libs"; then + oldlibs=$output_objdir/$libname.$libext + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + case $host in + *-*-darwin*) + newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $deplibs " in + *" -L$path/$objdir "*) + func_append new_libs " -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) func_append new_libs " $deplib" ;; + esac + ;; + *) func_append new_libs " $deplib" ;; + esac + done + deplibs=$new_libs + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test yes = "$build_libtool_libs"; then + # Remove $wl instances when linking with ld. + # FIXME: should test the right _cmds variable. + case $archive_cmds in + *\$LD\ *) wl= ;; + esac + if test yes = "$hardcode_into_libs"; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath=$finalize_rpath + test relink = "$opt_mode" || rpath=$compile_rpath$rpath + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + func_replace_sysroot "$libdir" + libdir=$func_replace_sysroot_result + if test -z "$hardcode_libdirs"; then + hardcode_libdirs=$libdir + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append dep_rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) func_append perm_rpath " $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir=$hardcode_libdirs + eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + func_append rpath "$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath=$finalize_shlibpath + test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + shift + realname=$1 + shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname=$realname + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib=$output_objdir/$realname + linknames= + for link + do + func_append linknames " $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` + test "X$libobjs" = "X " && libobjs= + + delfiles= + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" + export_symbols=$output_objdir/$libname.uexp + func_append delfiles " $export_symbols" + fi + + orig_export_symbols= + case $host_os in + cygwin* | mingw* | cegcc*) + if test -n "$export_symbols" && test -z "$export_symbols_regex"; then + # exporting using user supplied symfile + func_dll_def_p "$export_symbols" || { + # and it's NOT already a .def file. Must figure out + # which of the given symbols are data symbols and tag + # them as such. So, trigger use of export_symbols_cmds. + # export_symbols gets reassigned inside the "prepare + # the list of exported symbols" if statement, so the + # include_expsyms logic still works. + orig_export_symbols=$export_symbols + export_symbols= + always_export_symbols=yes + } + fi + ;; + esac + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then + func_verbose "generating symbol list for '$libname.la'" + export_symbols=$output_objdir/$libname.exp + $opt_dry_run || $RM $export_symbols + cmds=$export_symbols_cmds + save_ifs=$IFS; IFS='~' + for cmd1 in $cmds; do + IFS=$save_ifs + # Take the normal branch if the nm_file_list_spec branch + # doesn't work or if tool conversion is not needed. + case $nm_file_list_spec~$to_tool_file_cmd in + *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) + try_normal_branch=yes + eval cmd=\"$cmd1\" + func_len " $cmd" + len=$func_len_result + ;; + *) + try_normal_branch=no + ;; + esac + if test yes = "$try_normal_branch" \ + && { test "$len" -lt "$max_cmd_len" \ + || test "$max_cmd_len" -le -1; } + then + func_show_eval "$cmd" 'exit $?' + skipped_export=false + elif test -n "$nm_file_list_spec"; then + func_basename "$output" + output_la=$func_basename_result + save_libobjs=$libobjs + save_output=$output + output=$output_objdir/$output_la.nm + func_to_tool_file "$output" + libobjs=$nm_file_list_spec$func_to_tool_file_result + func_append delfiles " $output" + func_verbose "creating $NM input file list: $output" + for obj in $save_libobjs; do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > "$output" + eval cmd=\"$cmd1\" + func_show_eval "$cmd" 'exit $?' + output=$save_output + libobjs=$save_libobjs + skipped_export=false + else + # The command line is too long to execute in one step. + func_verbose "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS=$save_ifs + if test -n "$export_symbols_regex" && test : != "$skipped_export"; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols=$export_symbols + test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test : != "$skipped_export" && test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for '$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands, which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + func_append tmp_deplibs " $test_deplib" + ;; + esac + done + deplibs=$tmp_deplibs + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec" && + test yes = "$compiler_needs_object" && + test -z "$libobjs"; then + # extract the archives, so we have objects to list. + # TODO: could optimize this to just extract one archive. + whole_archive_flag_spec= + fi + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + else + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $convenience + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + fi + + if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + func_append linker_flags " $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test relink = "$opt_mode"; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test yes = "$module" && test -n "$module_cmds"; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test : != "$skipped_export" && + func_len " $test_cmds" && + len=$func_len_result && + test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise + # or, if using GNU ld and skipped_export is not :, use a linker + # script. + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + func_basename "$output" + output_la=$func_basename_result + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + last_robj= + k=1 + + if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then + output=$output_objdir/$output_la.lnkscript + func_verbose "creating GNU ld script: $output" + echo 'INPUT (' > $output + for obj in $save_libobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + echo ')' >> $output + func_append delfiles " $output" + func_to_tool_file "$output" + output=$func_to_tool_file_result + elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then + output=$output_objdir/$output_la.lnk + func_verbose "creating linker input file list: $output" + : > $output + set x $save_libobjs + shift + firstobj= + if test yes = "$compiler_needs_object"; then + firstobj="$1 " + shift + fi + for obj + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + func_append delfiles " $output" + func_to_tool_file "$output" + output=$firstobj\"$file_list_spec$func_to_tool_file_result\" + else + if test -n "$save_libobjs"; then + func_verbose "creating reloadable object files..." + output=$output_objdir/$output_la-$k.$objext + eval test_cmds=\"$reload_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + if test -z "$objlist" || + test "$len" -lt "$max_cmd_len"; then + func_append objlist " $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test 1 -eq "$k"; then + # The first file doesn't have a previous command to add. + reload_objs=$objlist + eval concat_cmds=\"$reload_cmds\" + else + # All subsequent reloadable object files will link in + # the last one created. + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" + fi + last_robj=$output_objdir/$output_la-$k.$objext + func_arith $k + 1 + k=$func_arith_result + output=$output_objdir/$output_la-$k.$objext + objlist=" $obj" + func_len " $last_robj" + func_arith $len0 + $func_len_result + len=$func_arith_result + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\$concat_cmds$reload_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + fi + func_append delfiles " $output" + + else + output= + fi + + ${skipped_export-false} && { + func_verbose "generating symbol list for '$libname.la'" + export_symbols=$output_objdir/$libname.exp + $opt_dry_run || $RM $export_symbols + libobjs=$output + # Append the command to create the export file. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + fi + } + + test -n "$save_libobjs" && + func_verbose "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs=$IFS; IFS='~' + for cmd in $concat_cmds; do + IFS=$save_ifs + $opt_quiet || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test relink = "$opt_mode"; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS=$save_ifs + + if test -n "$export_symbols_regex" && ${skipped_export-false}; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + + ${skipped_export-false} && { + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols=$export_symbols + test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for '$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands, which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + } + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test yes = "$module" && test -n "$module_cmds"; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + fi + + if test -n "$delfiles"; then + # Append the command to remove temporary files to $cmds. + eval cmds=\"\$cmds~\$RM $delfiles\" + fi + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + + save_ifs=$IFS; IFS='~' + for cmd in $cmds; do + IFS=$sp$nl + eval cmd=\"$cmd\" + IFS=$save_ifs + $opt_quiet || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test relink = "$opt_mode"; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS=$save_ifs + + # Restore the uninstalled library and exit + if test relink = "$opt_mode"; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + func_show_eval '${RM}r "$gentop"' + fi + fi + + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test yes = "$module" || test yes = "$export_dynamic"; then + # On all known operating systems, these are identical. + dlname=$soname + fi + fi + ;; + + obj) + if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then + func_warning "'-dlopen' is ignored for objects" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "'-l' and '-L' are ignored for objects" ;; + esac + + test -n "$rpath" && \ + func_warning "'-rpath' is ignored for objects" + + test -n "$xrpath" && \ + func_warning "'-R' is ignored for objects" + + test -n "$vinfo" && \ + func_warning "'-version-info' is ignored for objects" + + test -n "$release" && \ + func_warning "'-release' is ignored for objects" + + case $output in + *.lo) + test -n "$objs$old_deplibs" && \ + func_fatal_error "cannot build library object '$output' from non-libtool objects" + + libobj=$output + func_lo2o "$libobj" + obj=$func_lo2o_result + ;; + *) + libobj= + obj=$output + ;; + esac + + # Delete the old objects. + $opt_dry_run || $RM $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # if reload_cmds runs $LD directly, get rid of -Wl from + # whole_archive_flag_spec and hope we can get by with turning comma + # into space. + case $reload_cmds in + *\$LD[\ \$]*) wl= ;; + esac + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" + test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` + reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags + else + gentop=$output_objdir/${obj}x + func_append generated " $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # If we're not building shared, we need to use non_pic_objs + test yes = "$build_libtool_libs" || libobjs=$non_pic_objects + + # Create the old-style object. + reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs + + output=$obj + func_execute_cmds "$reload_cmds" 'exit $?' + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + fi + + test yes = "$build_libtool_libs" || { + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + } + + if test -n "$pic_flag" || test default != "$pic_mode"; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output=$libobj + func_execute_cmds "$reload_cmds" 'exit $?' + fi + + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) func_stripname '' '.exe' "$output" + output=$func_stripname_result.exe;; + esac + test -n "$vinfo" && \ + func_warning "'-version-info' is ignored for programs" + + test -n "$release" && \ + func_warning "'-release' is ignored for programs" + + $preload \ + && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \ + && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support." + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + case $host in + *-*-darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + # But is supposedly fixed on 10.4 or later (yay!). + if test CXX = "$tagname"; then + case ${MACOSX_DEPLOYMENT_TARGET-10.0} in + 10.[0123]) + func_append compile_command " $wl-bind_at_load" + func_append finalize_command " $wl-bind_at_load" + ;; + esac + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $compile_deplibs " in + *" -L$path/$objdir "*) + func_append new_libs " -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $compile_deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) func_append new_libs " $deplib" ;; + esac + ;; + *) func_append new_libs " $deplib" ;; + esac + done + compile_deplibs=$new_libs + + + func_append compile_command " $compile_deplibs" + func_append finalize_command " $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs=$libdir + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) func_append perm_rpath " $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + ::) dllsearchpath=$libdir;; + *) func_append dllsearchpath ":$libdir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir=$hardcode_libdirs + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath=$rpath + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs=$libdir + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) func_append finalize_perm_rpath " $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir=$hardcode_libdirs + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath=$rpath + + if test -n "$libobjs" && test yes = "$build_old_libs"; then + # Transform all the library objects into standard objects. + compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + fi + + func_generate_dlsyms "$outputname" "@PROGRAM@" false + + # template prelinking step + if test -n "$prelink_cmds"; then + func_execute_cmds "$prelink_cmds" 'exit $?' + fi + + wrappers_required=: + case $host in + *cegcc* | *mingw32ce*) + # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. + wrappers_required=false + ;; + *cygwin* | *mingw* ) + test yes = "$build_libtool_libs" || wrappers_required=false + ;; + *) + if test no = "$need_relink" || test yes != "$build_libtool_libs"; then + wrappers_required=false + fi + ;; + esac + $wrappers_required || { + # Replace the output file specification. + compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + link_command=$compile_command$compile_rpath + + # We have no uninstalled library dependencies, so finalize right now. + exit_status=0 + func_show_eval "$link_command" 'exit_status=$?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Delete the generated files. + if test -f "$output_objdir/${outputname}S.$objext"; then + func_show_eval '$RM "$output_objdir/${outputname}S.$objext"' + fi + + exit $exit_status + } + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + func_append rpath "$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + func_append rpath "$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test yes = "$no_install"; then + # We don't need to create a wrapper script. + link_command=$compile_var$compile_command$compile_rpath + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $opt_dry_run || $RM $output + # Link the executable and exit + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + exit $EXIT_SUCCESS + fi + + case $hardcode_action,$fast_install in + relink,*) + # Fast installation is not supported + link_command=$compile_var$compile_command$compile_rpath + relink_command=$finalize_var$finalize_command$finalize_rpath + + func_warning "this platform does not like uninstalled shared libraries" + func_warning "'$output' will be relinked during installation" + ;; + *,yes) + link_command=$finalize_var$compile_command$finalize_rpath + relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` + ;; + *,no) + link_command=$compile_var$compile_command$compile_rpath + relink_command=$finalize_var$finalize_command$finalize_rpath + ;; + *,needless) + link_command=$finalize_var$compile_command$finalize_rpath + relink_command= + ;; + esac + + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname + + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output_objdir/$outputname" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Now create the wrapper script. + func_verbose "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + fi + + # Only actually do things if not in dry run mode. + $opt_dry_run || { + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) func_stripname '' '.exe' "$output" + output=$func_stripname_result ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + func_stripname '' '.exe' "$outputname" + outputname=$func_stripname_result ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + func_dirname_and_basename "$output" "" "." + output_name=$func_basename_result + output_path=$func_dirname_result + cwrappersource=$output_path/$objdir/lt-$output_name.c + cwrapper=$output_path/$output_name.exe + $RM $cwrappersource $cwrapper + trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + func_emit_cwrapperexe_src > $cwrappersource + + # The wrapper executable is built using the $host compiler, + # because it contains $host paths and files. If cross- + # compiling, it, like the target executable, must be + # executed on the $host or under an emulation environment. + $opt_dry_run || { + $LTCC $LTCFLAGS -o $cwrapper $cwrappersource + $STRIP $cwrapper + } + + # Now, create the wrapper script for func_source use: + func_ltwrapper_scriptname $cwrapper + $RM $func_ltwrapper_scriptname_result + trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 + $opt_dry_run || { + # note: this script will not be executed, so do not chmod. + if test "x$build" = "x$host"; then + $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result + else + func_emit_wrapper no > $func_ltwrapper_scriptname_result + fi + } + ;; + * ) + $RM $output + trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 + + func_emit_wrapper no > $output + chmod +x $output + ;; + esac + } + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + case $build_libtool_libs in + convenience) + oldobjs="$libobjs_save $symfileobj" + addlibs=$convenience + build_libtool_libs=no + ;; + module) + oldobjs=$libobjs_save + addlibs=$old_convenience + build_libtool_libs=no + ;; + *) + oldobjs="$old_deplibs $non_pic_objects" + $preload && test -f "$symfileobj" \ + && func_append oldobjs " $symfileobj" + addlibs=$old_convenience + ;; + esac + + if test -n "$addlibs"; then + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $addlibs + func_append oldobjs " $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then + cmds=$old_archive_from_new_cmds + else + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append oldobjs " $func_extract_archives_result" + fi + + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + func_basename "$obj" + $ECHO "$func_basename_result" + done | sort | sort -uc >/dev/null 2>&1); then + : + else + echo "copying selected object files to avoid basename conflicts..." + gentop=$output_objdir/${outputname}x + func_append generated " $gentop" + func_mkdir_p "$gentop" + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + func_basename "$obj" + objbase=$func_basename_result + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + func_arith $counter + 1 + counter=$func_arith_result + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + func_append oldobjs " $gentop/$newobj" + ;; + *) func_append oldobjs " $obj" ;; + esac + done + fi + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + eval cmds=\"$old_archive_cmds\" + + func_len " $cmds" + len=$func_len_result + if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + elif test -n "$archiver_list_spec"; then + func_verbose "using command file archive linking..." + for obj in $oldobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > $output_objdir/$libname.libcmd + func_to_tool_file "$output_objdir/$libname.libcmd" + oldobjs=" $archiver_list_spec$func_to_tool_file_result" + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + func_verbose "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + oldobjs= + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + eval test_cmds=\"$old_archive_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + for obj in $save_oldobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + func_append objlist " $obj" + if test "$len" -lt "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj"; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$old_archive_cmds\" + objlist= + len=$len0 + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test -z "$oldobjs"; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + func_execute_cmds "$cmds" 'exit $?' + done + + test -n "$generated" && \ + func_show_eval "${RM}r$generated" + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test yes = "$build_old_libs" && old_library=$libname.$libext + func_verbose "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + if test yes = "$hardcode_automatic"; then + relink_command= + fi + + # Only create the output if not a dry run. + $opt_dry_run || { + for installed in no yes; do + if test yes = "$installed"; then + if test -z "$install_libdir"; then + break + fi + output=$output_objdir/${outputname}i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + func_basename "$deplib" + name=$func_basename_result + func_resolve_sysroot "$deplib" + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` + test -z "$libdir" && \ + func_fatal_error "'$deplib' is not a valid libtool archive" + func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" + ;; + -L*) + func_stripname -L '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -L$func_replace_sysroot_result" + ;; + -R*) + func_stripname -R '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -R$func_replace_sysroot_result" + ;; + *) func_append newdependency_libs " $deplib" ;; + esac + done + dependency_libs=$newdependency_libs + newdlfiles= + + for lib in $dlfiles; do + case $lib in + *.la) + func_basename "$lib" + name=$func_basename_result + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "'$lib' is not a valid libtool archive" + func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" + ;; + *) func_append newdlfiles " $lib" ;; + esac + done + dlfiles=$newdlfiles + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + *.la) + # Only pass preopened files to the pseudo-archive (for + # eventual linking with the app. that links it) if we + # didn't already link the preopened objects directly into + # the library: + func_basename "$lib" + name=$func_basename_result + eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "'$lib' is not a valid libtool archive" + func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" + ;; + esac + done + dlprefiles=$newdlprefiles + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; + *) abs=`pwd`"/$lib" ;; + esac + func_append newdlfiles " $abs" + done + dlfiles=$newdlfiles + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; + *) abs=`pwd`"/$lib" ;; + esac + func_append newdlprefiles " $abs" + done + dlprefiles=$newdlprefiles + fi + $RM $output + # place dlname in correct position for cygwin + # In fact, it would be nice if we could use this code for all target + # systems that can't hard-code library paths into their executables + # and that have no shared library path variable independent of PATH, + # but it turns out we can't easily determine that from inspecting + # libtool variables, so we have to hard-code the OSs to which it + # applies here; at the moment, that means platforms that use the PE + # object format with DLL files. See the long comment at the top of + # tests/bindir.at for full details. + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) + # If a -bindir argument was supplied, place the dll there. + if test -n "$bindir"; then + func_relative_path "$install_libdir" "$bindir" + tdlname=$func_relative_path_result/$dlname + else + # Otherwise fall back on heuristic. + tdlname=../bin/$dlname + fi + ;; + esac + $ECHO > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM (GNU $PACKAGE) $VERSION +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Linker flags that cannot go in dependency_libs. +inherited_linker_flags='$new_inherited_linker_flags' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Names of additional weak libraries provided by this library +weak_library_names='$weak_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test no,yes = "$installed,$need_relink"; then + $ECHO >> $output "\ +relink_command=\"$relink_command\"" + fi + done + } + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' + ;; + esac + exit $EXIT_SUCCESS +} + +if test link = "$opt_mode" || test relink = "$opt_mode"; then + func_mode_link ${1+"$@"} +fi + + +# func_mode_uninstall arg... +func_mode_uninstall () +{ + $debug_cmd + + RM=$nonopt + files= + rmforce=false + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic=$magic + + for arg + do + case $arg in + -f) func_append RM " $arg"; rmforce=: ;; + -*) func_append RM " $arg" ;; + *) func_append files " $arg" ;; + esac + done + + test -z "$RM" && \ + func_fatal_help "you must specify an RM program" + + rmdirs= + + for file in $files; do + func_dirname "$file" "" "." + dir=$func_dirname_result + if test . = "$dir"; then + odir=$objdir + else + odir=$dir/$objdir + fi + func_basename "$file" + name=$func_basename_result + test uninstall = "$opt_mode" && odir=$dir + + # Remember odir for removal later, being careful to avoid duplicates + if test clean = "$opt_mode"; then + case " $rmdirs " in + *" $odir "*) ;; + *) func_append rmdirs " $odir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if { test -L "$file"; } >/dev/null 2>&1 || + { test -h "$file"; } >/dev/null 2>&1 || + test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif $rmforce; then + continue + fi + + rmfiles=$file + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if func_lalib_p "$file"; then + func_source $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + func_append rmfiles " $odir/$n" + done + test -n "$old_library" && func_append rmfiles " $odir/$old_library" + + case $opt_mode in + clean) + case " $library_names " in + *" $dlname "*) ;; + *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; + esac + test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" + ;; + uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1' + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1' + fi + # FIXME: should reinstall the best remaining shared library. + ;; + esac + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if func_lalib_p "$file"; then + + # Read the .lo file + func_source $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" && test none != "$pic_object"; then + func_append rmfiles " $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" && test none != "$non_pic_object"; then + func_append rmfiles " $dir/$non_pic_object" + fi + fi + ;; + + *) + if test clean = "$opt_mode"; then + noexename=$name + case $file in + *.exe) + func_stripname '' '.exe' "$file" + file=$func_stripname_result + func_stripname '' '.exe' "$name" + noexename=$func_stripname_result + # $file with .exe has already been added to rmfiles, + # add $file without .exe + func_append rmfiles " $file" + ;; + esac + # Do a test to see if this is a libtool program. + if func_ltwrapper_p "$file"; then + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + relink_command= + func_source $func_ltwrapper_scriptname_result + func_append rmfiles " $func_ltwrapper_scriptname_result" + else + relink_command= + func_source $dir/$noexename + fi + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + func_append rmfiles " $odir/$name $odir/${name}S.$objext" + if test yes = "$fast_install" && test -n "$relink_command"; then + func_append rmfiles " $odir/lt-$name" + fi + if test "X$noexename" != "X$name"; then + func_append rmfiles " $odir/lt-$noexename.c" + fi + fi + fi + ;; + esac + func_show_eval "$RM $rmfiles" 'exit_status=1' + done + + # Try to remove the $objdir's in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + func_show_eval "rmdir $dir >/dev/null 2>&1" + fi + done + + exit $exit_status +} + +if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then + func_mode_uninstall ${1+"$@"} +fi + +test -z "$opt_mode" && { + help=$generic_help + func_fatal_help "you must specify a MODE" +} + +test -z "$exec_cmd" && \ + func_fatal_help "invalid operation mode '$opt_mode'" + +if test -n "$exec_cmd"; then + eval exec "$exec_cmd" + exit $EXIT_FAILURE +fi + +exit $exit_status + + +# The TAGs below are defined such that we never get into a situation +# where we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +build_libtool_libs=no +build_old_libs=yes +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: + +# ### BEGIN LIBTOOL TAG CONFIG: CXX + +# The linker used to build libraries. +LD="/usr/bin/ld -m elf_x86_64" + +# How to create reloadable object files. +reload_flag=" -r" +reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs" + +# Commands used to build an old-style archive. +old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$tool_oldlib" + +# A language specific compiler. +CC="g++" + +# Is the compiler the GNU compiler? +with_gcc=yes + +# Compiler flag to turn off builtin functions. +no_builtin_flag=" -fno-builtin" + +# Additional compiler flags for building library objects. +pic_flag=" -fPIC -DPIC" + +# How to pass a linker flag through the compiler. +wl="-Wl," + +# Compiler flag to prevent dynamic linking. +link_static_flag="-static" + +# Does compiler simultaneously support -c and -o options? +compiler_c_o="yes" + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=no + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=no + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec="\$wl--export-dynamic" + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec="\$wl--whole-archive\$convenience \$wl--no-whole-archive" + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object="no" + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds="" + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds="" + +# Commands used to build a shared archive. +archive_cmds="\$CC \$pic_flag -shared -nostdlib \$predep_objects \$libobjs \$deplibs \$postdep_objects \$compiler_flags \$wl-soname \$wl\$soname -o \$lib" +archive_expsym_cmds="\$CC \$pic_flag -shared -nostdlib \$predep_objects \$libobjs \$deplibs \$postdep_objects \$compiler_flags \$wl-soname \$wl\$soname \$wl-retain-symbols-file \$wl\$export_symbols -o \$lib" + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds="" +module_expsym_cmds="" + +# Whether we are building with GNU ld or not. +with_gnu_ld="yes" + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag="" + +# Flag that enforces no undefined symbols. +no_undefined_flag="" + +# Flag to hardcode $libdir into a binary during linking. +# This must work even if $libdir does not exist +hardcode_libdir_flag_spec="\$wl-rpath \$wl\$libdir" + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator="" + +# Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=no + +# Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting $shlibpath_var if the +# library is relocated. +hardcode_direct_absolute=no + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=no + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=unsupported + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=no + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=no + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=no + +# Set to "yes" if exported symbols are required. +always_export_symbols=no + +# The commands to list exported symbols. +export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols" + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*" + +# Symbols that must always be exported. +include_expsyms="" + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds="" + +# Commands necessary for finishing linking programs. +postlink_cmds="" + +# Specify filename containing input files. +file_list_spec="" + +# How to hardcode a shared library path into an executable. +hardcode_action=immediate + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs="/usr/lib/gcc/x86_64-linux-gnu/8 /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu /usr/lib/gcc/x86_64-linux-gnu/8/../../../../lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /usr/lib/gcc/x86_64-linux-gnu/8/../../.." + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects="/usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/8/crtbeginS.o" +postdep_objects="/usr/lib/gcc/x86_64-linux-gnu/8/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/crtn.o" +predeps="" +postdeps="-lstdc++ -lm -lgcc_s -lc -lgcc_s" + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path="-L/usr/lib/gcc/x86_64-linux-gnu/8 -L/usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/8/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/8/../../.." + +# ### END LIBTOOL TAG CONFIG: CXX diff --git a/thirdparty/protobuf-2.6.1/gtest/m4/acx_pthread.m4 b/thirdparty/protobuf-2.6.1/gtest/m4/acx_pthread.m4 new file mode 100644 index 00000000..2cf20de1 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/m4/acx_pthread.m4 @@ -0,0 +1,363 @@ +# This was retrieved from +# http://svn.0pointer.de/viewvc/trunk/common/acx_pthread.m4?revision=1277&root=avahi +# See also (perhaps for new versions?) +# http://svn.0pointer.de/viewvc/trunk/common/acx_pthread.m4?root=avahi +# +# We've rewritten the inconsistency check code (from avahi), to work +# more broadly. In particular, it no longer assumes ld accepts -zdefs. +# This caused a restructing of the code, but the functionality has only +# changed a little. + +dnl @synopsis ACX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) +dnl +dnl @summary figure out how to build C programs using POSIX threads +dnl +dnl This macro figures out how to build C programs using POSIX threads. +dnl It sets the PTHREAD_LIBS output variable to the threads library and +dnl linker flags, and the PTHREAD_CFLAGS output variable to any special +dnl C compiler flags that are needed. (The user can also force certain +dnl compiler flags/libs to be tested by setting these environment +dnl variables.) +dnl +dnl Also sets PTHREAD_CC to any special C compiler that is needed for +dnl multi-threaded programs (defaults to the value of CC otherwise). +dnl (This is necessary on AIX to use the special cc_r compiler alias.) +dnl +dnl NOTE: You are assumed to not only compile your program with these +dnl flags, but also link it with them as well. e.g. you should link +dnl with $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS +dnl $LIBS +dnl +dnl If you are only building threads programs, you may wish to use +dnl these variables in your default LIBS, CFLAGS, and CC: +dnl +dnl LIBS="$PTHREAD_LIBS $LIBS" +dnl CFLAGS="$CFLAGS $PTHREAD_CFLAGS" +dnl CC="$PTHREAD_CC" +dnl +dnl In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute +dnl constant has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to +dnl that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX). +dnl +dnl ACTION-IF-FOUND is a list of shell commands to run if a threads +dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands to +dnl run it if it is not found. If ACTION-IF-FOUND is not specified, the +dnl default action will define HAVE_PTHREAD. +dnl +dnl Please let the authors know if this macro fails on any platform, or +dnl if you have any other suggestions or comments. This macro was based +dnl on work by SGJ on autoconf scripts for FFTW (www.fftw.org) (with +dnl help from M. Frigo), as well as ac_pthread and hb_pthread macros +dnl posted by Alejandro Forero Cuervo to the autoconf macro repository. +dnl We are also grateful for the helpful feedback of numerous users. +dnl +dnl @category InstalledPackages +dnl @author Steven G. Johnson +dnl @version 2006-05-29 +dnl @license GPLWithACException +dnl +dnl Checks for GCC shared/pthread inconsistency based on work by +dnl Marcin Owsiany + + +AC_DEFUN([ACX_PTHREAD], [ +AC_REQUIRE([AC_CANONICAL_HOST]) +AC_LANG_SAVE +AC_LANG_C +acx_pthread_ok=no + +# We used to check for pthread.h first, but this fails if pthread.h +# requires special compiler flags (e.g. on True64 or Sequent). +# It gets checked for in the link test anyway. + +# First of all, check if the user has set any of the PTHREAD_LIBS, +# etcetera environment variables, and if threads linking works using +# them: +if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + save_LIBS="$LIBS" + LIBS="$PTHREAD_LIBS $LIBS" + AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS]) + AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes) + AC_MSG_RESULT($acx_pthread_ok) + if test x"$acx_pthread_ok" = xno; then + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" + fi + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" +fi + +# We must check for the threads library under a number of different +# names; the ordering is very important because some systems +# (e.g. DEC) have both -lpthread and -lpthreads, where one of the +# libraries is broken (non-POSIX). + +# Create a list of thread flags to try. Items starting with a "-" are +# C compiler flags, and other items are library names, except for "none" +# which indicates that we try without any flags at all, and "pthread-config" +# which is a program returning the flags for the Pth emulation library. + +acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" + +# The ordering *is* (sometimes) important. Some notes on the +# individual items follow: + +# pthreads: AIX (must check this before -lpthread) +# none: in case threads are in libc; should be tried before -Kthread and +# other compiler flags to prevent continual compiler warnings +# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) +# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) +# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) +# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) +# -pthreads: Solaris/gcc +# -mthreads: Mingw32/gcc, Lynx/gcc +# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it +# doesn't hurt to check since this sometimes defines pthreads too; +# also defines -D_REENTRANT) +# ... -mt is also the pthreads flag for HP/aCC +# pthread: Linux, etcetera +# --thread-safe: KAI C++ +# pthread-config: use pthread-config program (for GNU Pth library) + +case "${host_cpu}-${host_os}" in + *solaris*) + + # On Solaris (at least, for some versions), libc contains stubbed + # (non-functional) versions of the pthreads routines, so link-based + # tests will erroneously succeed. (We need to link with -pthreads/-mt/ + # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather + # a function called by this macro, so we could check for that, but + # who knows whether they'll stub that too in a future libc.) So, + # we'll just look for -pthreads and -lpthread first: + + acx_pthread_flags="-pthreads pthread -mt -pthread $acx_pthread_flags" + ;; +esac + +if test x"$acx_pthread_ok" = xno; then +for flag in $acx_pthread_flags; do + + case $flag in + none) + AC_MSG_CHECKING([whether pthreads work without any flags]) + ;; + + -*) + AC_MSG_CHECKING([whether pthreads work with $flag]) + PTHREAD_CFLAGS="$flag" + ;; + + pthread-config) + AC_CHECK_PROG(acx_pthread_config, pthread-config, yes, no) + if test x"$acx_pthread_config" = xno; then continue; fi + PTHREAD_CFLAGS="`pthread-config --cflags`" + PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" + ;; + + *) + AC_MSG_CHECKING([for the pthreads library -l$flag]) + PTHREAD_LIBS="-l$flag" + ;; + esac + + save_LIBS="$LIBS" + save_CFLAGS="$CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + + # Check for various functions. We must include pthread.h, + # since some functions may be macros. (On the Sequent, we + # need a special flag -Kthread to make this header compile.) + # We check for pthread_join because it is in -lpthread on IRIX + # while pthread_create is in libc. We check for pthread_attr_init + # due to DEC craziness with -lpthreads. We check for + # pthread_cleanup_push because it is one of the few pthread + # functions on Solaris that doesn't have a non-functional libc stub. + # We try pthread_create on general principles. + AC_TRY_LINK([#include ], + [pthread_t th; pthread_join(th, 0); + pthread_attr_init(0); pthread_cleanup_push(0, 0); + pthread_create(0,0,0,0); pthread_cleanup_pop(0); ], + [acx_pthread_ok=yes]) + + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + + AC_MSG_RESULT($acx_pthread_ok) + if test "x$acx_pthread_ok" = xyes; then + break; + fi + + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" +done +fi + +# Various other checks: +if test "x$acx_pthread_ok" = xyes; then + save_LIBS="$LIBS" + LIBS="$PTHREAD_LIBS $LIBS" + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + + # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. + AC_MSG_CHECKING([for joinable pthread attribute]) + attr_name=unknown + for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do + AC_TRY_LINK([#include ], [int attr=$attr; return attr;], + [attr_name=$attr; break]) + done + AC_MSG_RESULT($attr_name) + if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then + AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name, + [Define to necessary symbol if this constant + uses a non-standard name on your system.]) + fi + + AC_MSG_CHECKING([if more special flags are required for pthreads]) + flag=no + case "${host_cpu}-${host_os}" in + *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";; + *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; + esac + AC_MSG_RESULT(${flag}) + if test "x$flag" != xno; then + PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" + fi + + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + # More AIX lossage: must compile with xlc_r or cc_r + if test x"$GCC" != xyes; then + AC_CHECK_PROGS(PTHREAD_CC, xlc_r cc_r, ${CC}) + else + PTHREAD_CC=$CC + fi + + # The next part tries to detect GCC inconsistency with -shared on some + # architectures and systems. The problem is that in certain + # configurations, when -shared is specified, GCC "forgets" to + # internally use various flags which are still necessary. + + # + # Prepare the flags + # + save_CFLAGS="$CFLAGS" + save_LIBS="$LIBS" + save_CC="$CC" + + # Try with the flags determined by the earlier checks. + # + # -Wl,-z,defs forces link-time symbol resolution, so that the + # linking checks with -shared actually have any value + # + # FIXME: -fPIC is required for -shared on many architectures, + # so we specify it here, but the right way would probably be to + # properly detect whether it is actually required. + CFLAGS="-shared -fPIC -Wl,-z,defs $CFLAGS $PTHREAD_CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + CC="$PTHREAD_CC" + + # In order not to create several levels of indentation, we test + # the value of "$done" until we find the cure or run out of ideas. + done="no" + + # First, make sure the CFLAGS we added are actually accepted by our + # compiler. If not (and OS X's ld, for instance, does not accept -z), + # then we can't do this test. + if test x"$done" = xno; then + AC_MSG_CHECKING([whether to check for GCC pthread/shared inconsistencies]) + AC_TRY_LINK(,, , [done=yes]) + + if test "x$done" = xyes ; then + AC_MSG_RESULT([no]) + else + AC_MSG_RESULT([yes]) + fi + fi + + if test x"$done" = xno; then + AC_MSG_CHECKING([whether -pthread is sufficient with -shared]) + AC_TRY_LINK([#include ], + [pthread_t th; pthread_join(th, 0); + pthread_attr_init(0); pthread_cleanup_push(0, 0); + pthread_create(0,0,0,0); pthread_cleanup_pop(0); ], + [done=yes]) + + if test "x$done" = xyes; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + fi + + # + # Linux gcc on some architectures such as mips/mipsel forgets + # about -lpthread + # + if test x"$done" = xno; then + AC_MSG_CHECKING([whether -lpthread fixes that]) + LIBS="-lpthread $PTHREAD_LIBS $save_LIBS" + AC_TRY_LINK([#include ], + [pthread_t th; pthread_join(th, 0); + pthread_attr_init(0); pthread_cleanup_push(0, 0); + pthread_create(0,0,0,0); pthread_cleanup_pop(0); ], + [done=yes]) + + if test "x$done" = xyes; then + AC_MSG_RESULT([yes]) + PTHREAD_LIBS="-lpthread $PTHREAD_LIBS" + else + AC_MSG_RESULT([no]) + fi + fi + # + # FreeBSD 4.10 gcc forgets to use -lc_r instead of -lc + # + if test x"$done" = xno; then + AC_MSG_CHECKING([whether -lc_r fixes that]) + LIBS="-lc_r $PTHREAD_LIBS $save_LIBS" + AC_TRY_LINK([#include ], + [pthread_t th; pthread_join(th, 0); + pthread_attr_init(0); pthread_cleanup_push(0, 0); + pthread_create(0,0,0,0); pthread_cleanup_pop(0); ], + [done=yes]) + + if test "x$done" = xyes; then + AC_MSG_RESULT([yes]) + PTHREAD_LIBS="-lc_r $PTHREAD_LIBS" + else + AC_MSG_RESULT([no]) + fi + fi + if test x"$done" = xno; then + # OK, we have run out of ideas + AC_MSG_WARN([Impossible to determine how to use pthreads with shared libraries]) + + # so it's not safe to assume that we may use pthreads + acx_pthread_ok=no + fi + + CFLAGS="$save_CFLAGS" + LIBS="$save_LIBS" + CC="$save_CC" +else + PTHREAD_CC="$CC" +fi + +AC_SUBST(PTHREAD_LIBS) +AC_SUBST(PTHREAD_CFLAGS) +AC_SUBST(PTHREAD_CC) + +# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: +if test x"$acx_pthread_ok" = xyes; then + ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1]) + : +else + acx_pthread_ok=no + $2 +fi +AC_LANG_RESTORE +])dnl ACX_PTHREAD diff --git a/thirdparty/protobuf-2.6.1/gtest/m4/gtest.m4 b/thirdparty/protobuf-2.6.1/gtest/m4/gtest.m4 new file mode 100644 index 00000000..6598ba75 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/m4/gtest.m4 @@ -0,0 +1,74 @@ +dnl GTEST_LIB_CHECK([minimum version [, +dnl action if found [,action if not found]]]) +dnl +dnl Check for the presence of the Google Test library, optionally at a minimum +dnl version, and indicate a viable version with the HAVE_GTEST flag. It defines +dnl standard variables for substitution including GTEST_CPPFLAGS, +dnl GTEST_CXXFLAGS, GTEST_LDFLAGS, and GTEST_LIBS. It also defines +dnl GTEST_VERSION as the version of Google Test found. Finally, it provides +dnl optional custom action slots in the event GTEST is found or not. +AC_DEFUN([GTEST_LIB_CHECK], +[ +dnl Provide a flag to enable or disable Google Test usage. +AC_ARG_ENABLE([gtest], + [AS_HELP_STRING([--enable-gtest], + [Enable tests using the Google C++ Testing Framework. + (Default is enabled.)])], + [], + [enable_gtest=]) +AC_ARG_VAR([GTEST_CONFIG], + [The exact path of Google Test's 'gtest-config' script.]) +AC_ARG_VAR([GTEST_CPPFLAGS], + [C-like preprocessor flags for Google Test.]) +AC_ARG_VAR([GTEST_CXXFLAGS], + [C++ compile flags for Google Test.]) +AC_ARG_VAR([GTEST_LDFLAGS], + [Linker path and option flags for Google Test.]) +AC_ARG_VAR([GTEST_LIBS], + [Library linking flags for Google Test.]) +AC_ARG_VAR([GTEST_VERSION], + [The version of Google Test available.]) +HAVE_GTEST="no" +AS_IF([test "x${enable_gtest}" != "xno"], + [AC_MSG_CHECKING([for 'gtest-config']) + AS_IF([test "x${enable_gtest}" != "xyes"], + [AS_IF([test -x "${enable_gtest}/scripts/gtest-config"], + [GTEST_CONFIG="${enable_gtest}/scripts/gtest-config"], + [GTEST_CONFIG="${enable_gtest}/bin/gtest-config"]) + AS_IF([test -x "${GTEST_CONFIG}"], [], + [AC_MSG_RESULT([no]) + AC_MSG_ERROR([dnl +Unable to locate either a built or installed Google Test. +The specific location '${enable_gtest}' was provided for a built or installed +Google Test, but no 'gtest-config' script could be found at this location.]) + ])], + [AC_PATH_PROG([GTEST_CONFIG], [gtest-config])]) + AS_IF([test -x "${GTEST_CONFIG}"], + [AC_MSG_RESULT([${GTEST_CONFIG}]) + m4_ifval([$1], + [_gtest_min_version="--min-version=$1" + AC_MSG_CHECKING([for Google Test at least version >= $1])], + [_gtest_min_version="--min-version=0" + AC_MSG_CHECKING([for Google Test])]) + AS_IF([${GTEST_CONFIG} ${_gtest_min_version}], + [AC_MSG_RESULT([yes]) + HAVE_GTEST='yes'], + [AC_MSG_RESULT([no])])], + [AC_MSG_RESULT([no])]) + AS_IF([test "x${HAVE_GTEST}" = "xyes"], + [GTEST_CPPFLAGS=`${GTEST_CONFIG} --cppflags` + GTEST_CXXFLAGS=`${GTEST_CONFIG} --cxxflags` + GTEST_LDFLAGS=`${GTEST_CONFIG} --ldflags` + GTEST_LIBS=`${GTEST_CONFIG} --libs` + GTEST_VERSION=`${GTEST_CONFIG} --version` + AC_DEFINE([HAVE_GTEST],[1],[Defined when Google Test is available.])], + [AS_IF([test "x${enable_gtest}" = "xyes"], + [AC_MSG_ERROR([dnl +Google Test was enabled, but no viable version could be found.]) + ])])]) +AC_SUBST([HAVE_GTEST]) +AM_CONDITIONAL([HAVE_GTEST],[test "x$HAVE_GTEST" = "xyes"]) +AS_IF([test "x$HAVE_GTEST" = "xyes"], + [m4_ifval([$2], [$2])], + [m4_ifval([$3], [$3])]) +]) diff --git a/thirdparty/protobuf-2.6.1/gtest/m4/libtool.m4 b/thirdparty/protobuf-2.6.1/gtest/m4/libtool.m4 new file mode 100644 index 00000000..c81e6692 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/m4/libtool.m4 @@ -0,0 +1,8388 @@ +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- +# +# Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +m4_define([_LT_COPYING], [dnl +# Copyright (C) 2014 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +]) + +# serial 58 LT_INIT + + +# LT_PREREQ(VERSION) +# ------------------ +# Complain and exit if this libtool version is less that VERSION. +m4_defun([LT_PREREQ], +[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, + [m4_default([$3], + [m4_fatal([Libtool version $1 or higher is required], + 63)])], + [$2])]) + + +# _LT_CHECK_BUILDDIR +# ------------------ +# Complain if the absolute build directory name contains unusual characters +m4_defun([_LT_CHECK_BUILDDIR], +[case `pwd` in + *\ * | *\ *) + AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; +esac +]) + + +# LT_INIT([OPTIONS]) +# ------------------ +AC_DEFUN([LT_INIT], +[AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK +AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +AC_BEFORE([$0], [LT_LANG])dnl +AC_BEFORE([$0], [LT_OUTPUT])dnl +AC_BEFORE([$0], [LTDL_INIT])dnl +m4_require([_LT_CHECK_BUILDDIR])dnl + +dnl Autoconf doesn't catch unexpanded LT_ macros by default: +m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl +m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl +dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 +dnl unless we require an AC_DEFUNed macro: +AC_REQUIRE([LTOPTIONS_VERSION])dnl +AC_REQUIRE([LTSUGAR_VERSION])dnl +AC_REQUIRE([LTVERSION_VERSION])dnl +AC_REQUIRE([LTOBSOLETE_VERSION])dnl +m4_require([_LT_PROG_LTMAIN])dnl + +_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) + +dnl Parse OPTIONS +_LT_SET_OPTIONS([$0], [$1]) + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS=$ltmain + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +_LT_SETUP + +# Only expand once: +m4_define([LT_INIT]) +])# LT_INIT + +# Old names: +AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) +AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PROG_LIBTOOL], []) +dnl AC_DEFUN([AM_PROG_LIBTOOL], []) + + +# _LT_PREPARE_CC_BASENAME +# ----------------------- +m4_defun([_LT_PREPARE_CC_BASENAME], [ +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in @S|@*""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} +])# _LT_PREPARE_CC_BASENAME + + +# _LT_CC_BASENAME(CC) +# ------------------- +# It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME, +# but that macro is also expanded into generated libtool script, which +# arranges for $SED and $ECHO to be set by different means. +m4_defun([_LT_CC_BASENAME], +[m4_require([_LT_PREPARE_CC_BASENAME])dnl +AC_REQUIRE([_LT_DECL_SED])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl +func_cc_basename $1 +cc_basename=$func_cc_basename_result +]) + + +# _LT_FILEUTILS_DEFAULTS +# ---------------------- +# It is okay to use these file commands and assume they have been set +# sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'. +m4_defun([_LT_FILEUTILS_DEFAULTS], +[: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} +])# _LT_FILEUTILS_DEFAULTS + + +# _LT_SETUP +# --------- +m4_defun([_LT_SETUP], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl + +_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl +dnl +_LT_DECL([], [host_alias], [0], [The host system])dnl +_LT_DECL([], [host], [0])dnl +_LT_DECL([], [host_os], [0])dnl +dnl +_LT_DECL([], [build_alias], [0], [The build system])dnl +_LT_DECL([], [build], [0])dnl +_LT_DECL([], [build_os], [0])dnl +dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +dnl +AC_REQUIRE([AC_PROG_LN_S])dnl +test -z "$LN_S" && LN_S="ln -s" +_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl +dnl +AC_REQUIRE([LT_CMD_MAX_LEN])dnl +_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl +_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl +dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl +m4_require([_LT_CMD_RELOAD])dnl +m4_require([_LT_CHECK_MAGIC_METHOD])dnl +m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl +m4_require([_LT_CMD_OLD_ARCHIVE])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_WITH_SYSROOT])dnl +m4_require([_LT_CMD_TRUNCATE])dnl + +_LT_CONFIG_LIBTOOL_INIT([ +# See if we are running on zsh, and set the options that allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi +]) +if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + +_LT_CHECK_OBJDIR + +m4_require([_LT_TAG_COMPILER])dnl + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a '.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld=$lt_cv_prog_gnu_ld + +old_CC=$CC +old_CFLAGS=$CFLAGS + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + _LT_PATH_MAGIC + fi + ;; +esac + +# Use C for the default configuration in the libtool script +LT_SUPPORTED_TAG([CC]) +_LT_LANG_C_CONFIG +_LT_LANG_DEFAULT_CONFIG +_LT_CONFIG_COMMANDS +])# _LT_SETUP + + +# _LT_PREPARE_SED_QUOTE_VARS +# -------------------------- +# Define a few sed substitution that help us do robust quoting. +m4_defun([_LT_PREPARE_SED_QUOTE_VARS], +[# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([["`\\]]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' +]) + +# _LT_PROG_LTMAIN +# --------------- +# Note that this code is called both from 'configure', and 'config.status' +# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, +# 'config.status' has no value for ac_aux_dir unless we are using Automake, +# so we pass a copy along to make sure it has a sensible value anyway. +m4_defun([_LT_PROG_LTMAIN], +[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl +_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) +ltmain=$ac_aux_dir/ltmain.sh +])# _LT_PROG_LTMAIN + + +## ------------------------------------- ## +## Accumulate code for creating libtool. ## +## ------------------------------------- ## + +# So that we can recreate a full libtool script including additional +# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS +# in macros and then make a single call at the end using the 'libtool' +# label. + + +# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) +# ---------------------------------------- +# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL_INIT], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_INIT], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_INIT]) + + +# _LT_CONFIG_LIBTOOL([COMMANDS]) +# ------------------------------ +# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) + + +# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) +# ----------------------------------------------------- +m4_defun([_LT_CONFIG_SAVE_COMMANDS], +[_LT_CONFIG_LIBTOOL([$1]) +_LT_CONFIG_LIBTOOL_INIT([$2]) +]) + + +# _LT_FORMAT_COMMENT([COMMENT]) +# ----------------------------- +# Add leading comment marks to the start of each line, and a trailing +# full-stop to the whole comment if one is not present already. +m4_define([_LT_FORMAT_COMMENT], +[m4_ifval([$1], [ +m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], + [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) +)]) + + + +## ------------------------ ## +## FIXME: Eliminate VARNAME ## +## ------------------------ ## + + +# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) +# ------------------------------------------------------------------- +# CONFIGNAME is the name given to the value in the libtool script. +# VARNAME is the (base) name used in the configure script. +# VALUE may be 0, 1 or 2 for a computed quote escaped value based on +# VARNAME. Any other value will be used directly. +m4_define([_LT_DECL], +[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], + [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], + [m4_ifval([$1], [$1], [$2])]) + lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) + m4_ifval([$4], + [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) + lt_dict_add_subkey([lt_decl_dict], [$2], + [tagged?], [m4_ifval([$5], [yes], [no])])]) +]) + + +# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) +# -------------------------------------------------------- +m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) + + +# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_tag_varnames], +[_lt_decl_filter([tagged?], [yes], $@)]) + + +# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) +# --------------------------------------------------------- +m4_define([_lt_decl_filter], +[m4_case([$#], + [0], [m4_fatal([$0: too few arguments: $#])], + [1], [m4_fatal([$0: too few arguments: $#: $1])], + [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], + [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], + [lt_dict_filter([lt_decl_dict], $@)])[]dnl +]) + + +# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) +# -------------------------------------------------- +m4_define([lt_decl_quote_varnames], +[_lt_decl_filter([value], [1], $@)]) + + +# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_dquote_varnames], +[_lt_decl_filter([value], [2], $@)]) + + +# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_varnames_tagged], +[m4_assert([$# <= 2])dnl +_$0(m4_quote(m4_default([$1], [[, ]])), + m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), + m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) +m4_define([_lt_decl_varnames_tagged], +[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) + + +# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_all_varnames], +[_$0(m4_quote(m4_default([$1], [[, ]])), + m4_if([$2], [], + m4_quote(lt_decl_varnames), + m4_quote(m4_shift($@))))[]dnl +]) +m4_define([_lt_decl_all_varnames], +[lt_join($@, lt_decl_varnames_tagged([$1], + lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl +]) + + +# _LT_CONFIG_STATUS_DECLARE([VARNAME]) +# ------------------------------------ +# Quote a variable value, and forward it to 'config.status' so that its +# declaration there will have the same value as in 'configure'. VARNAME +# must have a single quote delimited value for this to work. +m4_define([_LT_CONFIG_STATUS_DECLARE], +[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) + + +# _LT_CONFIG_STATUS_DECLARATIONS +# ------------------------------ +# We delimit libtool config variables with single quotes, so when +# we write them to config.status, we have to be sure to quote all +# embedded single quotes properly. In configure, this macro expands +# each variable declared with _LT_DECL (and _LT_TAGDECL) into: +# +# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' +m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], +[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), + [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAGS +# ---------------- +# Output comment and list of tags supported by the script +m4_defun([_LT_LIBTOOL_TAGS], +[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl +available_tags='_LT_TAGS'dnl +]) + + +# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) +# ----------------------------------- +# Extract the dictionary values for VARNAME (optionally with TAG) and +# expand to a commented shell variable setting: +# +# # Some comment about what VAR is for. +# visible_name=$lt_internal_name +m4_define([_LT_LIBTOOL_DECLARE], +[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], + [description])))[]dnl +m4_pushdef([_libtool_name], + m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl +m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), + [0], [_libtool_name=[$]$1], + [1], [_libtool_name=$lt_[]$1], + [2], [_libtool_name=$lt_[]$1], + [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl +m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl +]) + + +# _LT_LIBTOOL_CONFIG_VARS +# ----------------------- +# Produce commented declarations of non-tagged libtool config variables +# suitable for insertion in the LIBTOOL CONFIG section of the 'libtool' +# script. Tagged libtool config variables (even for the LIBTOOL CONFIG +# section) are produced by _LT_LIBTOOL_TAG_VARS. +m4_defun([_LT_LIBTOOL_CONFIG_VARS], +[m4_foreach([_lt_var], + m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAG_VARS(TAG) +# ------------------------- +m4_define([_LT_LIBTOOL_TAG_VARS], +[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) + + +# _LT_TAGVAR(VARNAME, [TAGNAME]) +# ------------------------------ +m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) + + +# _LT_CONFIG_COMMANDS +# ------------------- +# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of +# variables for single and double quote escaping we saved from calls +# to _LT_DECL, we can put quote escaped variables declarations +# into 'config.status', and then the shell code to quote escape them in +# for loops in 'config.status'. Finally, any additional code accumulated +# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. +m4_defun([_LT_CONFIG_COMMANDS], +[AC_PROVIDE_IFELSE([LT_OUTPUT], + dnl If the libtool generation code has been placed in $CONFIG_LT, + dnl instead of duplicating it all over again into config.status, + dnl then we will have config.status run $CONFIG_LT later, so it + dnl needs to know what name is stored there: + [AC_CONFIG_COMMANDS([libtool], + [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], + dnl If the libtool generation code is destined for config.status, + dnl expand the accumulated commands and init code now: + [AC_CONFIG_COMMANDS([libtool], + [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) +])#_LT_CONFIG_COMMANDS + + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], +[ + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +_LT_CONFIG_STATUS_DECLARATIONS +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$[]1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_quote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_dquote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +_LT_OUTPUT_LIBTOOL_INIT +]) + +# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) +# ------------------------------------ +# Generate a child script FILE with all initialization necessary to +# reuse the environment learned by the parent script, and make the +# file executable. If COMMENT is supplied, it is inserted after the +# '#!' sequence but before initialization text begins. After this +# macro, additional text can be appended to FILE to form the body of +# the child script. The macro ends with non-zero status if the +# file could not be fully written (such as if the disk is full). +m4_ifdef([AS_INIT_GENERATED], +[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], +[m4_defun([_LT_GENERATED_FILE_INIT], +[m4_require([AS_PREPARE])]dnl +[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl +[lt_write_fail=0 +cat >$1 <<_ASEOF || lt_write_fail=1 +#! $SHELL +# Generated by $as_me. +$2 +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$1 <<\_ASEOF || lt_write_fail=1 +AS_SHELL_SANITIZE +_AS_PREPARE +exec AS_MESSAGE_FD>&1 +_ASEOF +test 0 = "$lt_write_fail" && chmod +x $1[]dnl +m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT + +# LT_OUTPUT +# --------- +# This macro allows early generation of the libtool script (before +# AC_OUTPUT is called), incase it is used in configure for compilation +# tests. +AC_DEFUN([LT_OUTPUT], +[: ${CONFIG_LT=./config.lt} +AC_MSG_NOTICE([creating $CONFIG_LT]) +_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], +[# Run this file to recreate a libtool stub with the current configuration.]) + +cat >>"$CONFIG_LT" <<\_LTEOF +lt_cl_silent=false +exec AS_MESSAGE_LOG_FD>>config.log +{ + echo + AS_BOX([Running $as_me.]) +} >&AS_MESSAGE_LOG_FD + +lt_cl_help="\ +'$as_me' creates a local libtool stub from the current configuration, +for use in further configure time tests before the real libtool is +generated. + +Usage: $[0] [[OPTIONS]] + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + +Report bugs to ." + +lt_cl_version="\ +m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl +m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) +configured by $[0], generated by m4_PACKAGE_STRING. + +Copyright (C) 2011 Free Software Foundation, Inc. +This config.lt script is free software; the Free Software Foundation +gives unlimited permision to copy, distribute and modify it." + +while test 0 != $[#] +do + case $[1] in + --version | --v* | -V ) + echo "$lt_cl_version"; exit 0 ;; + --help | --h* | -h ) + echo "$lt_cl_help"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --quiet | --q* | --silent | --s* | -q ) + lt_cl_silent=: ;; + + -*) AC_MSG_ERROR([unrecognized option: $[1] +Try '$[0] --help' for more information.]) ;; + + *) AC_MSG_ERROR([unrecognized argument: $[1] +Try '$[0] --help' for more information.]) ;; + esac + shift +done + +if $lt_cl_silent; then + exec AS_MESSAGE_FD>/dev/null +fi +_LTEOF + +cat >>"$CONFIG_LT" <<_LTEOF +_LT_OUTPUT_LIBTOOL_COMMANDS_INIT +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +AC_MSG_NOTICE([creating $ofile]) +_LT_OUTPUT_LIBTOOL_COMMANDS +AS_EXIT(0) +_LTEOF +chmod +x "$CONFIG_LT" + +# configure is writing to config.log, but config.lt does its own redirection, +# appending to config.log, which fails on DOS, as config.log is still kept +# open by configure. Here we exec the FD to /dev/null, effectively closing +# config.log, so it can be properly (re)opened and appended to by config.lt. +lt_cl_success=: +test yes = "$silent" && + lt_config_lt_args="$lt_config_lt_args --quiet" +exec AS_MESSAGE_LOG_FD>/dev/null +$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false +exec AS_MESSAGE_LOG_FD>>config.log +$lt_cl_success || AS_EXIT(1) +])# LT_OUTPUT + + +# _LT_CONFIG(TAG) +# --------------- +# If TAG is the built-in tag, create an initial libtool script with a +# default configuration from the untagged config vars. Otherwise add code +# to config.status for appending the configuration named by TAG from the +# matching tagged config vars. +m4_defun([_LT_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_CONFIG_SAVE_COMMANDS([ + m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl + m4_if(_LT_TAG, [C], [ + # See if we are running on zsh, and set the options that allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST + fi + + cfgfile=${ofile}T + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL +# Generated automatically by $as_me ($PACKAGE) $VERSION +# NOTE: Changes made to this file will be lost: look at ltmain.sh. + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + +_LT_COPYING +_LT_LIBTOOL_TAGS + +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + +# ### BEGIN LIBTOOL CONFIG +_LT_LIBTOOL_CONFIG_VARS +_LT_LIBTOOL_TAG_VARS +# ### END LIBTOOL CONFIG + +_LT_EOF + + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +_LT_PREPARE_MUNGE_PATH_LIST +_LT_PREPARE_CC_BASENAME + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + _LT_PROG_LTMAIN + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +], +[cat <<_LT_EOF >> "$ofile" + +dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded +dnl in a comment (ie after a #). +# ### BEGIN LIBTOOL TAG CONFIG: $1 +_LT_LIBTOOL_TAG_VARS(_LT_TAG) +# ### END LIBTOOL TAG CONFIG: $1 +_LT_EOF +])dnl /m4_if +], +[m4_if([$1], [], [ + PACKAGE='$PACKAGE' + VERSION='$VERSION' + RM='$RM' + ofile='$ofile'], []) +])dnl /_LT_CONFIG_SAVE_COMMANDS +])# _LT_CONFIG + + +# LT_SUPPORTED_TAG(TAG) +# --------------------- +# Trace this macro to discover what tags are supported by the libtool +# --tag option, using: +# autoconf --trace 'LT_SUPPORTED_TAG:$1' +AC_DEFUN([LT_SUPPORTED_TAG], []) + + +# C support is built-in for now +m4_define([_LT_LANG_C_enabled], []) +m4_define([_LT_TAGS], []) + + +# LT_LANG(LANG) +# ------------- +# Enable libtool support for the given language if not already enabled. +AC_DEFUN([LT_LANG], +[AC_BEFORE([$0], [LT_OUTPUT])dnl +m4_case([$1], + [C], [_LT_LANG(C)], + [C++], [_LT_LANG(CXX)], + [Go], [_LT_LANG(GO)], + [Java], [_LT_LANG(GCJ)], + [Fortran 77], [_LT_LANG(F77)], + [Fortran], [_LT_LANG(FC)], + [Windows Resource], [_LT_LANG(RC)], + [m4_ifdef([_LT_LANG_]$1[_CONFIG], + [_LT_LANG($1)], + [m4_fatal([$0: unsupported language: "$1"])])])dnl +])# LT_LANG + + +# _LT_LANG(LANGNAME) +# ------------------ +m4_defun([_LT_LANG], +[m4_ifdef([_LT_LANG_]$1[_enabled], [], + [LT_SUPPORTED_TAG([$1])dnl + m4_append([_LT_TAGS], [$1 ])dnl + m4_define([_LT_LANG_]$1[_enabled], [])dnl + _LT_LANG_$1_CONFIG($1)])dnl +])# _LT_LANG + + +m4_ifndef([AC_PROG_GO], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_GO. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ +m4_defun([AC_PROG_GO], +[AC_LANG_PUSH(Go)dnl +AC_ARG_VAR([GOC], [Go compiler command])dnl +AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl +_AC_ARG_VAR_LDFLAGS()dnl +AC_CHECK_TOOL(GOC, gccgo) +if test -z "$GOC"; then + if test -n "$ac_tool_prefix"; then + AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) + fi +fi +if test -z "$GOC"; then + AC_CHECK_PROG(GOC, gccgo, gccgo, false) +fi +])#m4_defun +])#m4_ifndef + + +# _LT_LANG_DEFAULT_CONFIG +# ----------------------- +m4_defun([_LT_LANG_DEFAULT_CONFIG], +[AC_PROVIDE_IFELSE([AC_PROG_CXX], + [LT_LANG(CXX)], + [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) + +AC_PROVIDE_IFELSE([AC_PROG_F77], + [LT_LANG(F77)], + [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) + +AC_PROVIDE_IFELSE([AC_PROG_FC], + [LT_LANG(FC)], + [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) + +dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal +dnl pulling things in needlessly. +AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([LT_PROG_GCJ], + [LT_LANG(GCJ)], + [m4_ifdef([AC_PROG_GCJ], + [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([A][M_PROG_GCJ], + [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([LT_PROG_GCJ], + [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) + +AC_PROVIDE_IFELSE([AC_PROG_GO], + [LT_LANG(GO)], + [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) + +AC_PROVIDE_IFELSE([LT_PROG_RC], + [LT_LANG(RC)], + [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) +])# _LT_LANG_DEFAULT_CONFIG + +# Obsolete macros: +AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) +AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) +AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) +AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) +AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_CXX], []) +dnl AC_DEFUN([AC_LIBTOOL_F77], []) +dnl AC_DEFUN([AC_LIBTOOL_FC], []) +dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) +dnl AC_DEFUN([AC_LIBTOOL_RC], []) + + +# _LT_TAG_COMPILER +# ---------------- +m4_defun([_LT_TAG_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl +_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl +_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl +_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_TAG_COMPILER + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +m4_defun([_LT_COMPILER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +m4_defun([_LT_LINKER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* +])# _LT_LINKER_BOILERPLATE + +# _LT_REQUIRED_DARWIN_CHECKS +# ------------------------- +m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ + case $host_os in + rhapsody* | darwin*) + AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) + AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) + AC_CHECK_TOOL([LIPO], [lipo], [:]) + AC_CHECK_TOOL([OTOOL], [otool], [:]) + AC_CHECK_TOOL([OTOOL64], [otool64], [:]) + _LT_DECL([], [DSYMUTIL], [1], + [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) + _LT_DECL([], [NMEDIT], [1], + [Tool to change global to local symbols on Mac OS X]) + _LT_DECL([], [LIPO], [1], + [Tool to manipulate fat objects and archives on Mac OS X]) + _LT_DECL([], [OTOOL], [1], + [ldd/readelf like tool for Mach-O binaries on Mac OS X]) + _LT_DECL([], [OTOOL64], [1], + [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) + + AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], + [lt_cv_apple_cc_single_mod=no + if test -z "$LT_MULTI_MODULE"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test 0 = "$_lt_result"; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi]) + + AC_CACHE_CHECK([for -exported_symbols_list linker flag], + [lt_cv_ld_exported_symbols_list], + [lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [lt_cv_ld_exported_symbols_list=yes], + [lt_cv_ld_exported_symbols_list=no]) + LDFLAGS=$save_LDFLAGS + ]) + + AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], + [lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD + echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD + $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD + echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD + $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + ]) + case $host_os in + rhapsody* | darwin1.[[012]]) + _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + 10.[[012]][[,.]]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test yes = "$lt_cv_apple_cc_single_mod"; then + _lt_dar_single_mod='$single_module' + fi + if test yes = "$lt_cv_ld_exported_symbols_list"; then + _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' + fi + if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac +]) + + +# _LT_DARWIN_LINKER_FEATURES([TAG]) +# --------------------------------- +# Checks for linker and compiler features on darwin +m4_defun([_LT_DARWIN_LINKER_FEATURES], +[ + m4_require([_LT_REQUIRED_DARWIN_CHECKS]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_automatic, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + if test yes = "$lt_cv_ld_force_load"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], + [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='' + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined + case $cc_basename in + ifort*|nagfor*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test yes = "$_lt_dar_can_shared"; then + output_verbose_link_cmd=func_echo_all + _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + m4_if([$1], [CXX], +[ if test yes != "$lt_cv_apple_cc_single_mod"; then + _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" + fi +],[]) + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi +]) + +# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) +# ---------------------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +# Store the results from the different compilers for each TAGNAME. +# Allow to override them for all tags through lt_cv_aix_libpath. +m4_defun([_LT_SYS_MODULE_PATH_AIX], +[m4_require([_LT_DECL_SED])dnl +if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], + [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ + lt_aix_libpath_sed='[ + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }]' + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi],[]) + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib + fi + ]) + aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) +fi +])# _LT_SYS_MODULE_PATH_AIX + + +# _LT_SHELL_INIT(ARG) +# ------------------- +m4_define([_LT_SHELL_INIT], +[m4_divert_text([M4SH-INIT], [$1 +])])# _LT_SHELL_INIT + + + +# _LT_PROG_ECHO_BACKSLASH +# ----------------------- +# Find how we can fake an echo command that does not interpret backslash. +# In particular, with Autoconf 2.60 or later we add some code to the start +# of the generated configure script that will find a shell with a builtin +# printf (that we can use as an echo command). +m4_defun([_LT_PROG_ECHO_BACKSLASH], +[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +AC_MSG_CHECKING([how to print strings]) +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$[]1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + +case $ECHO in + printf*) AC_MSG_RESULT([printf]) ;; + print*) AC_MSG_RESULT([print -r]) ;; + *) AC_MSG_RESULT([cat]) ;; +esac + +m4_ifdef([_AS_DETECT_SUGGESTED], +[_AS_DETECT_SUGGESTED([ + test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test "X`printf %s $ECHO`" = "X$ECHO" \ + || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) + +_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) +_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) +])# _LT_PROG_ECHO_BACKSLASH + + +# _LT_WITH_SYSROOT +# ---------------- +AC_DEFUN([_LT_WITH_SYSROOT], +[AC_MSG_CHECKING([for sysroot]) +AC_ARG_WITH([sysroot], +[AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], + [Search for dependent libraries within DIR (or the compiler's sysroot + if not specified).])], +[], [with_sysroot=no]) + +dnl lt_sysroot will always be passed unquoted. We quote it here +dnl in case the user passed a directory name. +lt_sysroot= +case $with_sysroot in #( + yes) + if test yes = "$GCC"; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + AC_MSG_RESULT([$with_sysroot]) + AC_MSG_ERROR([The sysroot must be an absolute path.]) + ;; +esac + + AC_MSG_RESULT([${lt_sysroot:-no}]) +_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl +[dependent libraries, and where our libraries should be installed.])]) + +# _LT_ENABLE_LOCK +# --------------- +m4_defun([_LT_ENABLE_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AS_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test no = "$enable_libtool_lock" || enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out what ABI is being produced by ac_compile, and set mode + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE=32 + ;; + *ELF-64*) + HPUX_IA64_MODE=64 + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test yes = "$lt_cv_prog_gnu_ld"; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +mips64*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + emul=elf + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + emul="${emul}32" + ;; + *64-bit*) + emul="${emul}64" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *MSB*) + emul="${emul}btsmip" + ;; + *LSB*) + emul="${emul}ltsmip" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *N32*) + emul="${emul}n32" + ;; + esac + LD="${LD-ld} -m $emul" + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. Note that the listed cases only cover the + # situations where additional linker options are needed (such as when + # doing 32-bit compilation for a host where ld defaults to 64-bit, or + # vice versa); the common cases where no linker options are needed do + # not appear in the list. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + case `/usr/bin/file conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac + ;; + powerpc64le-*linux*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + powerpcle-*linux*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test yes != "$lt_cv_cc_needs_belf"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS=$SAVE_CFLAGS + fi + ;; +*-*solaris*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*|x86_64-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD=${LD-ld}_sol2 + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks=$enable_libtool_lock +])# _LT_ENABLE_LOCK + + +# _LT_PROG_AR +# ----------- +m4_defun([_LT_PROG_AR], +[AC_CHECK_TOOLS(AR, [ar], false) +: ${AR=ar} +: ${AR_FLAGS=cru} +_LT_DECL([], [AR], [1], [The archiver]) +_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) + +AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], + [lt_cv_ar_at_file=no + AC_COMPILE_IFELSE([AC_LANG_PROGRAM], + [echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([lt_ar_try]) + if test 0 -eq "$ac_status"; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + AC_TRY_EVAL([lt_ar_try]) + if test 0 -ne "$ac_status"; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + ]) + ]) + +if test no = "$lt_cv_ar_at_file"; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi +_LT_DECL([], [archiver_list_spec], [1], + [How to feed a file listing to the archiver]) +])# _LT_PROG_AR + + +# _LT_CMD_OLD_ARCHIVE +# ------------------- +m4_defun([_LT_CMD_OLD_ARCHIVE], +[_LT_PROG_AR + +AC_CHECK_TOOL(STRIP, strip, :) +test -z "$STRIP" && STRIP=: +_LT_DECL([], [STRIP], [1], [A symbol stripping program]) + +AC_CHECK_TOOL(RANLIB, ranlib, :) +test -z "$RANLIB" && RANLIB=: +_LT_DECL([], [RANLIB], [1], + [Commands used to install an old-style archive]) + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + bitrig* | openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac +_LT_DECL([], [old_postinstall_cmds], [2]) +_LT_DECL([], [old_postuninstall_cmds], [2]) +_LT_TAGDECL([], [old_archive_cmds], [2], + [Commands used to build an old-style archive]) +_LT_DECL([], [lock_old_archive_extraction], [0], + [Whether to use a lock for old archive extraction]) +])# _LT_CMD_OLD_ARCHIVE + + +# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([_LT_COMPILER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $RM conftest* +]) + +if test yes = "[$]$2"; then + m4_if([$5], , :, [$5]) +else + m4_if([$6], , :, [$6]) +fi +])# _LT_COMPILER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) + + +# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------- +# Check whether the given linker option works +AC_DEFUN([_LT_LINKER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $3" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS +]) + +if test yes = "[$]$2"; then + m4_if([$4], , :, [$4]) +else + m4_if([$5], , :, [$5]) +fi +])# _LT_LINKER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) + + +# LT_CMD_MAX_LEN +#--------------- +AC_DEFUN([LT_CMD_MAX_LEN], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring=ABCD + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test X`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test 17 != "$i" # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac +]) +if test -n "$lt_cv_sys_max_cmd_len"; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +max_cmd_len=$lt_cv_sys_max_cmd_len +_LT_DECL([], [max_cmd_len], [0], + [What is the maximum length of a command?]) +])# LT_CMD_MAX_LEN + +# Old name: +AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) + + +# _LT_HEADER_DLFCN +# ---------------- +m4_defun([_LT_HEADER_DLFCN], +[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl +])# _LT_HEADER_DLFCN + + +# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ---------------------------------------------------------------- +m4_defun([_LT_TRY_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test yes = "$cross_compiling"; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +[#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +}] +_LT_EOF + if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_dlunknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_TRY_DLOPEN_SELF + + +# LT_SYS_DLOPEN_SELF +# ------------------ +AC_DEFUN([LT_SYS_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test yes != "$enable_dlopen"; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen=load_add_on + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen=LoadLibrary + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[ + lt_cv_dlopen=dyld + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + tpf*) + # Don't try to run any link tests for TPF. We know it's impossible + # because TPF is a cross-compiler, and we know how we open DSOs. + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + lt_cv_dlopen_self=no + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen=shl_load], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen=dlopen], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test no = "$lt_cv_dlopen"; then + enable_dlopen=no + else + enable_dlopen=yes + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS=$CPPFLAGS + test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS=$LDFLAGS + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS=$LIBS + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test yes = "$lt_cv_dlopen_self"; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS=$save_CPPFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +_LT_DECL([dlopen_support], [enable_dlopen], [0], + [Whether dlopen is supported]) +_LT_DECL([dlopen_self], [enable_dlopen_self], [0], + [Whether dlopen of programs is supported]) +_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], + [Whether dlopen of statically linked programs is supported]) +])# LT_SYS_DLOPEN_SELF + +# Old name: +AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) + + +# _LT_COMPILER_C_O([TAGNAME]) +# --------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler. +# This macro does not hard code the compiler like AC_PROG_CC_C_O. +m4_defun([_LT_COMPILER_C_O], +[m4_require([_LT_DECL_SED])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* +]) +_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], + [Does compiler simultaneously support -c and -o options?]) +])# _LT_COMPILER_C_O + + +# _LT_COMPILER_FILE_LOCKS([TAGNAME]) +# ---------------------------------- +# Check to see if we can do hard links to lock some files if needed +m4_defun([_LT_COMPILER_FILE_LOCKS], +[m4_require([_LT_ENABLE_LOCK])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_COMPILER_C_O([$1]) + +hard_links=nottested +if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test no = "$hard_links"; then + AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) +])# _LT_COMPILER_FILE_LOCKS + + +# _LT_CHECK_OBJDIR +# ---------------- +m4_defun([_LT_CHECK_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +_LT_DECL([], [objdir], [0], + [The name of the directory that contains temporary libtool files])dnl +m4_pattern_allow([LT_OBJDIR])dnl +AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/", + [Define to the sub-directory where libtool stores uninstalled libraries.]) +])# _LT_CHECK_OBJDIR + + +# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) +# -------------------------------------- +# Check hardcoding attributes. +m4_defun([_LT_LINKER_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || + test -n "$_LT_TAGVAR(runpath_var, $1)" || + test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then + + # We can hardcode non-existent directories. + if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" && + test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then + # Linking always hardcodes the temporary library directory. + _LT_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) + +if test relink = "$_LT_TAGVAR(hardcode_action, $1)" || + test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then + # Fast installation is not supported + enable_fast_install=no +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then + # Fast installation is not necessary + enable_fast_install=needless +fi +_LT_TAGDECL([], [hardcode_action], [0], + [How to hardcode a shared library path into an executable]) +])# _LT_LINKER_HARDCODE_LIBPATH + + +# _LT_CMD_STRIPLIB +# ---------------- +m4_defun([_LT_CMD_STRIPLIB], +[m4_require([_LT_DECL_EGREP]) +striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP"; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) +_LT_DECL([], [striplib], [1]) +])# _LT_CMD_STRIPLIB + + +# _LT_PREPARE_MUNGE_PATH_LIST +# --------------------------- +# Make sure func_munge_path_list() is defined correctly. +m4_defun([_LT_PREPARE_MUNGE_PATH_LIST], +[[# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x@S|@2 in + x) + ;; + *:) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" + ;; + x:*) + eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" + ;; + *) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + esac +} +]])# _LT_PREPARE_PATH_LIST + + +# _LT_SYS_DYNAMIC_LINKER([TAG]) +# ----------------------------- +# PORTME Fill in your ld.so characteristics +m4_defun([_LT_SYS_DYNAMIC_LINKER], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_OBJDUMP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl +AC_MSG_CHECKING([dynamic linker characteristics]) +m4_if([$1], + [], [ +if test yes = "$GCC"; then + case $host_os in + darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; + *) lt_awk_arg='/^libraries:/' ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; + *) lt_sed_strip_eq='s|=/|/|g' ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary... + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + # ...but if some path component already ends with the multilib dir we assume + # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). + case "$lt_multi_os_dir; $lt_search_path_spec " in + "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) + lt_multi_os_dir= + ;; + esac + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" + elif test -n "$lt_multi_os_dir"; then + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS = " "; FS = "/|\n";} { + lt_foo = ""; + lt_count = 0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo = "/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[[lt_foo]]++; } + if (lt_freq[[lt_foo]] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=.so +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +AC_ARG_VAR([LT_SYS_LIBRARY_PATH], +[User-defined run-time library search path.]) + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='$libname$release$shared_ext$major' + ;; + +aix[[4-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test ia64 = "$host_cpu"; then + # AIX 5 supports IA64 + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a[(]lib.so.V[)]' + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='$libname$shared_ext' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec=$LIB + if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[23]].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 + fi + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[[3-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test yes = "$lt_cv_prog_gnu_ld"; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], + [lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ + LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], + [lt_cv_shlibpath_overrides_runpath=yes])]) + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + ]) + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd* | bitrig*) + version_type=sunos + sys_lib_dlsearch_path_spec=/usr/lib + need_lib_prefix=no + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no + else + need_version=yes + fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +os2*) + libname_spec='$name' + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test yes = "$with_gnu_ld"; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec; then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=sco + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test yes = "$with_gnu_ld"; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test no = "$dynamic_linker" && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test yes = "$GCC"; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +fi + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +fi + +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + +_LT_DECL([], [variables_saved_for_relink], [1], + [Variables whose values should be saved in libtool wrapper scripts and + restored at link time]) +_LT_DECL([], [need_lib_prefix], [0], + [Do we need the "lib" prefix for modules?]) +_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) +_LT_DECL([], [version_type], [0], [Library versioning type]) +_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) +_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) +_LT_DECL([], [shlibpath_overrides_runpath], [0], + [Is shlibpath searched before the hard-coded library search path?]) +_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) +_LT_DECL([], [library_names_spec], [1], + [[List of archive names. First name is the real one, the rest are links. + The last name is the one that the linker finds with -lNAME]]) +_LT_DECL([], [soname_spec], [1], + [[The coded name of the library, if different from the real name]]) +_LT_DECL([], [install_override_mode], [1], + [Permission mode override for installation of shared libraries]) +_LT_DECL([], [postinstall_cmds], [2], + [Command to use after installation of a shared archive]) +_LT_DECL([], [postuninstall_cmds], [2], + [Command to use after uninstallation of a shared archive]) +_LT_DECL([], [finish_cmds], [2], + [Commands used to finish a libtool library installation in a directory]) +_LT_DECL([], [finish_eval], [1], + [[As "finish_cmds", except a single script fragment to be evaled but + not shown]]) +_LT_DECL([], [hardcode_into_libs], [0], + [Whether we should hardcode library paths into libraries]) +_LT_DECL([], [sys_lib_search_path_spec], [2], + [Compile-time system search path for libraries]) +_LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2], + [Detected run-time system search path for libraries]) +_LT_DECL([], [configure_time_lt_sys_library_path], [2], + [Explicit LT_SYS_LIBRARY_PATH set during ./configure time]) +])# _LT_SYS_DYNAMIC_LINKER + + +# _LT_PATH_TOOL_PREFIX(TOOL) +# -------------------------- +# find a file program that can recognize shared library +AC_DEFUN([_LT_PATH_TOOL_PREFIX], +[m4_require([_LT_DECL_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="m4_if([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$1"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac]) +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +_LT_DECL([], [MAGIC_CMD], [0], + [Used to examine libraries when file_magic_cmd begins with "file"])dnl +])# _LT_PATH_TOOL_PREFIX + +# Old name: +AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) + + +# _LT_PATH_MAGIC +# -------------- +# find a file program that can recognize a shared library +m4_defun([_LT_PATH_MAGIC], +[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# _LT_PATH_MAGIC + + +# LT_PATH_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([LT_PATH_LD], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PROG_ECHO_BACKSLASH])dnl + +AC_ARG_WITH([gnu-ld], + [AS_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test no = "$withval" || with_gnu_ld=yes], + [with_gnu_ld=no])dnl + +ac_prog=ld +if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return, which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD=$ac_prog + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test yes = "$with_gnu_ld"; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD=$ac_dir/$ac_prog + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 conftest.i +cat conftest.i conftest.i >conftest2.i +: ${lt_DD:=$DD} +AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd], +[if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: +fi]) +rm -f conftest.i conftest2.i conftest.out]) +])# _LT_PATH_DD + + +# _LT_CMD_TRUNCATE +# ---------------- +# find command to truncate a binary pipe +m4_defun([_LT_CMD_TRUNCATE], +[m4_require([_LT_PATH_DD]) +AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin], +[printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +lt_cv_truncate_bin= +if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" +fi +rm -f conftest.i conftest2.i conftest.out +test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"]) +_LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1], + [Command to truncate a binary pipe]) +])# _LT_CMD_TRUNCATE + + +# _LT_CHECK_MAGIC_METHOD +# ---------------------- +# how to check for library dependencies +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_MAGIC_METHOD], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +AC_CACHE_CHECK([how to recognize dependent libraries], +lt_cv_deplibs_check_method, +[lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# 'unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# that responds to the $file_magic_cmd with a given extended regex. +# If you have 'file' or equivalent on your system and you're not sure +# whether 'pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[[4-9]]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[[45]]*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[[3-9]]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd* | bitrig*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +os2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +_LT_DECL([], [deplibs_check_method], [1], + [Method to check whether dependent libraries are shared objects]) +_LT_DECL([], [file_magic_cmd], [1], + [Command to use when deplibs_check_method = "file_magic"]) +_LT_DECL([], [file_magic_glob], [1], + [How to find potential files when deplibs_check_method = "file_magic"]) +_LT_DECL([], [want_nocaseglob], [1], + [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) +])# _LT_CHECK_MAGIC_METHOD + + +# LT_PATH_NM +# ---------- +# find the pathname to a BSD- or MS-compatible name lister +AC_DEFUN([LT_PATH_NM], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM=$NM +else + lt_nm_to_check=${ac_tool_prefix}nm + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/$lt_tmp_nm + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the 'sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty + case $build_os in + mingw*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac + case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break 2 + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break 2 + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS=$lt_save_ifs + done + : ${lt_cv_path_NM=no} +fi]) +if test no != "$lt_cv_path_NM"; then + NM=$lt_cv_path_NM +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols -headers" + ;; + *) + DUMPBIN=: + ;; + esac + fi + AC_SUBST([DUMPBIN]) + if test : != "$DUMPBIN"; then + NM=$DUMPBIN + fi +fi +test -z "$NM" && NM=nm +AC_SUBST([NM]) +_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl + +AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], + [lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) + cat conftest.out >&AS_MESSAGE_LOG_FD + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest*]) +])# LT_PATH_NM + +# Old names: +AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) +AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_PROG_NM], []) +dnl AC_DEFUN([AC_PROG_NM], []) + +# _LT_CHECK_SHAREDLIB_FROM_LINKLIB +# -------------------------------- +# how to determine the name of the shared library +# associated with a specific link library. +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +m4_require([_LT_DECL_DLLTOOL]) +AC_CACHE_CHECK([how to associate runtime and link libraries], +lt_cv_sharedlib_from_linklib_cmd, +[lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh; + # decide which one to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd=$ECHO + ;; +esac +]) +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + +_LT_DECL([], [sharedlib_from_linklib_cmd], [1], + [Command to associate shared and link libraries]) +])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB + + +# _LT_PATH_MANIFEST_TOOL +# ---------------------- +# locate the manifest tool +m4_defun([_LT_PATH_MANIFEST_TOOL], +[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], + [lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&AS_MESSAGE_LOG_FD + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest*]) +if test yes != "$lt_cv_path_mainfest_tool"; then + MANIFEST_TOOL=: +fi +_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl +])# _LT_PATH_MANIFEST_TOOL + + +# _LT_DLL_DEF_P([FILE]) +# --------------------- +# True iff FILE is a Windows DLL '.def' file. +# Keep in sync with func_dll_def_p in the libtool script +AC_DEFUN([_LT_DLL_DEF_P], +[dnl + test DEF = "`$SED -n dnl + -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace + -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments + -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl + -e q dnl Only consider the first "real" line + $1`" dnl +])# _LT_DLL_DEF_P + + +# LT_LIB_M +# -------- +# check for math library +AC_DEFUN([LT_LIB_M], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM=-lm) + ;; +esac +AC_SUBST([LIBM]) +])# LT_LIB_M + +# Old name: +AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_CHECK_LIBM], []) + + +# _LT_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------- +m4_defun([_LT_COMPILER_NO_RTTI], +[m4_require([_LT_TAG_COMPILER])dnl + +_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test yes = "$GCC"; then + case $cc_basename in + nvcc*) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; + *) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; + esac + + _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], + [Compiler flag to turn off builtin functions]) +])# _LT_COMPILER_NO_RTTI + + +# _LT_CMD_GLOBAL_SYMBOLS +# ---------------------- +m4_defun([_LT_CMD_GLOBAL_SYMBOLS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([LT_PATH_NM])dnl +AC_REQUIRE([LT_PATH_LD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_TAG_COMPILER])dnl + +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) + if test ia64 = "$host_cpu"; then + symcode='[[ABCDEGRST]]' + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris*) + symcode='[[BDRT]]' + ;; +sco3.2v5*) + symcode='[[DT]]' + ;; +sysv4.2uw2*) + symcode='[[DT]]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Gets list of data symbols to import. + lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" + # Adjust the below global symbol transforms to fixup imported variables. + lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" + lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" + lt_c_name_lib_hook="\ + -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ + -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" +else + # Disable hooks by default. + lt_cv_sys_global_symbol_to_import= + lt_cdecl_hook= + lt_c_name_hook= + lt_c_name_lib_hook= +fi + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n"\ +$lt_cdecl_hook\ +" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ +$lt_c_name_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" + +# Transform an extracted symbol line into symbol name with lib prefix and +# symbol address. +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ +$lt_c_name_lib_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function, + # D for any global variable and I for any imported variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK ['"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ +" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ +" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ +" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ +" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx]" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if AC_TRY_EVAL(ac_compile); then + # Now try to grab the symbols. + nlist=conftest.nm + $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&AS_MESSAGE_LOG_FD + if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&AS_MESSAGE_LOG_FD && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT@&t@_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT@&t@_DLSYM_CONST +#else +# define LT@&t@_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT@&t@_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[[]] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS=conftstm.$ac_objext + CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test yes = "$pipe_works"; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + +_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], + [Take the output of nm and produce a listing of raw symbols and C names]) +_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], + [Transform the output of nm in a proper C declaration]) +_LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1], + [Transform the output of nm into a list of symbols to manually relocate]) +_LT_DECL([global_symbol_to_c_name_address], + [lt_cv_sys_global_symbol_to_c_name_address], [1], + [Transform the output of nm in a C name address pair]) +_LT_DECL([global_symbol_to_c_name_address_lib_prefix], + [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], + [Transform the output of nm in a C name address pair when lib prefix is needed]) +_LT_DECL([nm_interface], [lt_cv_nm_interface], [1], + [The name lister interface]) +_LT_DECL([], [nm_file_list_spec], [1], + [Specify filename containing input files for $NM]) +]) # _LT_CMD_GLOBAL_SYMBOLS + + +# _LT_COMPILER_PIC([TAGNAME]) +# --------------------------- +m4_defun([_LT_COMPILER_PIC], +[m4_require([_LT_TAG_COMPILER])dnl +_LT_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_TAGVAR(lt_prog_compiler_static, $1)= + +m4_if([$1], [CXX], [ + # C++ specific cases for pic, static, wl, etc. + if test yes = "$GXX"; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix[[4-9]]*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + if test ia64 != "$host_cpu"; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64, which still supported -KPIC. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test yes = "$GCC"; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' + if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + case $cc_basename in + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac + ;; + + hpux9* | hpux10* | hpux11*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + # old Intel for x86_64, which still supported -KPIC. + ecc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' + _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' + ;; + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + ccc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='' + ;; + *Sun\ F* | *Sun*Fortran*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + *Intel*\ [[CF]]*Compiler*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + *Portland\ Group*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + rdos*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + solaris*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + unicos*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" + ;; +esac + +AC_CACHE_CHECK([for $compiler option to produce PIC], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) +_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], + [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], + [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], + [Additional compiler flags for building library objects]) + +_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], + [How to pass a linker flag through the compiler]) +# +# Check to make sure the static flag actually works. +# +wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" +_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], + _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), + $lt_tmp_static_flag, + [], + [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) +_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], + [Compiler flag to prevent dynamic linking]) +])# _LT_COMPILER_PIC + + +# _LT_LINKER_SHLIBS([TAGNAME]) +# ---------------------------- +# See if the linker supports building shared libraries. +m4_defun([_LT_LINKER_SHLIBS], +[AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +m4_if([$1], [CXX], [ + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + case $host_os in + aix[[4-9]]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in + cl*) + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + ;; + esac + ;; + linux* | k*bsd*-gnu | gnu*) + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac +], [ + runpath_var= + _LT_TAGVAR(allow_undefined_flag, $1)= + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(archive_cmds, $1)= + _LT_TAGVAR(archive_expsym_cmds, $1)= + _LT_TAGVAR(compiler_needs_object, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(hardcode_automatic, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_separator, $1)= + _LT_TAGVAR(hardcode_minus_L, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_TAGVAR(inherit_rpath, $1)=no + _LT_TAGVAR(link_all_deplibs, $1)=unknown + _LT_TAGVAR(module_cmds, $1)= + _LT_TAGVAR(module_expsym_cmds, $1)= + _LT_TAGVAR(old_archive_from_new_cmds, $1)= + _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_TAGVAR(thread_safe_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ' (' and ')$', so one must not match beginning or + # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', + # as well as any symbol that contains 'd'. + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. +dnl Note also adjust exclude_expsyms for C++ above. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test yes != "$GCC"; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd* | bitrig*) + with_gnu_ld=no + ;; + linux* | k*bsd*-gnu | gnu*) + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; + esac + + _LT_TAGVAR(ld_shlibs, $1)=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test yes = "$with_gnu_ld"; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; + *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test yes = "$lt_use_gnu_ld_interface"; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='$wl' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[[3-9]]*) + # On AIX/PPC, the GNU linker is very broken + if test ia64 != "$host_cpu"; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test linux-dietlibc = "$host_os"; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test no = "$tmp_diet" + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + _LT_TAGVAR(whole_archive_flag_spec, $1)= + tmp_sharedflag='--shared' ;; + nagfor*) # NAGFOR 5.3 + tmp_sharedflag='-Wl,-shared' ;; + xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + tcc*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' + ;; + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + sunos4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then + runpath_var= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix[[4-9]]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then + aix_use_runtimelinking=yes + break + fi + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # traditional, no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + ;; + esac + + if test yes = "$GCC"; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag="$shared_flag "'$wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + bsdi[[45]]*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + esac + ;; + + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + ;; + + hpux10*) + if test yes,no = "$GCC,$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + fi + ;; + + hpux11*) + if test yes,no = "$GCC,$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + m4_if($1, [], [ + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + _LT_LINKER_OPTION([if $CC understands -b], + _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], + [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) + ;; + esac + fi + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], + [lt_cv_irix_exported_symbol], + [save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" + AC_LINK_IFELSE( + [AC_LANG_SOURCE( + [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], + [C++], [[int foo (void) { return 0; }]], + [Fortran 77], [[ + subroutine foo + end]], + [Fortran], [[ + subroutine foo + end]])])], + [lt_cv_irix_exported_symbol=yes], + [lt_cv_irix_exported_symbol=no]) + LDFLAGS=$save_LDFLAGS]) + if test yes = "$lt_cv_irix_exported_symbol"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' + fi + _LT_TAGVAR(link_all_deplibs, $1)=no + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + linux*) + case $cc_basename in + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + _LT_TAGVAR(ld_shlibs, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *nto* | *qnx*) + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + fi + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + osf3*) + if test yes = "$GCC"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test yes = "$GCC"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + solaris*) + _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' + if test yes = "$GCC"; then + wlarc='$wl' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='$wl' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. GCC discards it without '$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test yes = "$GCC"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + fi + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test sequent = "$host_vendor"; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + if test sni = "$host_vendor"; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym' + ;; + esac + fi + fi +]) +AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) +test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no + +_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld + +_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl +_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl +_LT_DECL([], [extract_expsyms_cmds], [2], + [The commands to extract the exported symbol list from a shared archive]) + +# +# Do we need to explicitly link libc? +# +case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test yes,yes = "$GCC,$enable_shared"; then + case $_LT_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_CACHE_CHECK([whether -lc should be explicitly linked in], + [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), + [$RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) + _LT_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) + then + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no + else + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + ]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) + ;; + esac + fi + ;; +esac + +_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], + [Whether or not to add -lc for building shared libraries]) +_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], + [enable_shared_with_static_runtimes], [0], + [Whether or not to disallow shared libs when runtime libs are static]) +_LT_TAGDECL([], [export_dynamic_flag_spec], [1], + [Compiler flag to allow reflexive dlopens]) +_LT_TAGDECL([], [whole_archive_flag_spec], [1], + [Compiler flag to generate shared objects directly from archives]) +_LT_TAGDECL([], [compiler_needs_object], [1], + [Whether the compiler copes with passing no objects directly]) +_LT_TAGDECL([], [old_archive_from_new_cmds], [2], + [Create an old-style archive from a shared archive]) +_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], + [Create a temporary old-style archive to link instead of a shared archive]) +_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) +_LT_TAGDECL([], [archive_expsym_cmds], [2]) +_LT_TAGDECL([], [module_cmds], [2], + [Commands used to build a loadable module if different from building + a shared archive.]) +_LT_TAGDECL([], [module_expsym_cmds], [2]) +_LT_TAGDECL([], [with_gnu_ld], [1], + [Whether we are building with GNU ld or not]) +_LT_TAGDECL([], [allow_undefined_flag], [1], + [Flag that allows shared libraries with undefined symbols to be built]) +_LT_TAGDECL([], [no_undefined_flag], [1], + [Flag that enforces no undefined symbols]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], + [Flag to hardcode $libdir into a binary during linking. + This must work even if $libdir does not exist]) +_LT_TAGDECL([], [hardcode_libdir_separator], [1], + [Whether we need a single "-rpath" flag with a separated argument]) +_LT_TAGDECL([], [hardcode_direct], [0], + [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes + DIR into the resulting binary]) +_LT_TAGDECL([], [hardcode_direct_absolute], [0], + [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes + DIR into the resulting binary and the resulting library dependency is + "absolute", i.e impossible to change by setting $shlibpath_var if the + library is relocated]) +_LT_TAGDECL([], [hardcode_minus_L], [0], + [Set to "yes" if using the -LDIR flag during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_shlibpath_var], [0], + [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_automatic], [0], + [Set to "yes" if building a shared library automatically hardcodes DIR + into the library and all subsequent libraries and executables linked + against it]) +_LT_TAGDECL([], [inherit_rpath], [0], + [Set to yes if linker adds runtime paths of dependent libraries + to runtime path list]) +_LT_TAGDECL([], [link_all_deplibs], [0], + [Whether libtool must link a program against all its dependency libraries]) +_LT_TAGDECL([], [always_export_symbols], [0], + [Set to "yes" if exported symbols are required]) +_LT_TAGDECL([], [export_symbols_cmds], [2], + [The commands to list exported symbols]) +_LT_TAGDECL([], [exclude_expsyms], [1], + [Symbols that should not be listed in the preloaded symbols]) +_LT_TAGDECL([], [include_expsyms], [1], + [Symbols that must always be exported]) +_LT_TAGDECL([], [prelink_cmds], [2], + [Commands necessary for linking programs (against libraries) with templates]) +_LT_TAGDECL([], [postlink_cmds], [2], + [Commands necessary for finishing linking programs]) +_LT_TAGDECL([], [file_list_spec], [1], + [Specify filename containing input files]) +dnl FIXME: Not yet implemented +dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], +dnl [Compiler flag to generate thread safe objects]) +])# _LT_LINKER_SHLIBS + + +# _LT_LANG_C_CONFIG([TAG]) +# ------------------------ +# Ensure that the configuration variables for a C compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_C_CONFIG], +[m4_require([_LT_DECL_EGREP])dnl +lt_save_CC=$CC +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + +_LT_TAG_COMPILER +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + LT_SYS_DLOPEN_SELF + _LT_CMD_STRIPLIB + + # Report what library types will actually be built + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[[4-9]]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_CONFIG($1) +fi +AC_LANG_POP +CC=$lt_save_CC +])# _LT_LANG_C_CONFIG + + +# _LT_LANG_CXX_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a C++ compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_CXX_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +if test -n "$CXX" && ( test no != "$CXX" && + ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || + (test g++ != "$CXX"))); then + AC_PROG_CXXCPP +else + _lt_caught_CXX_error=yes +fi + +AC_LANG_PUSH(C++) +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(compiler_needs_object, $1)=no +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_caught_CXX_error"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test yes = "$GXX"; then + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + else + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + fi + + if test yes = "$GXX"; then + # Set up default GNU C++ configuration + + LT_PATH_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test yes = "$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='$wl' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) + _LT_TAGVAR(ld_shlibs, $1)=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aix[[4-9]]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + ;; + esac + + if test yes = "$GXX"; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag=$shared_flag' $wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + # The "-G" linker flag allows undefined symbols. + _LT_TAGVAR(no_undefined_flag, $1)='-bernotok' + # Determine the default libpath from the value encoded in an empty + # executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared + # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + freebsd2.*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + freebsd-elf*) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + hpux9*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' + fi + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) + _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 6 and above use weak symbols + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; + xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + fi + output_verbose_link_cmd=func_echo_all + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + case $host in + osf3*) + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + ;; + *) + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ + $RM $lib.exp' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes,no = "$GXX,$with_gnu_ld"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + case $host in + osf3*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' + + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test yes,no = "$GXX,$with_gnu_ld"; then + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' + else + # g++ 2.7 appears to require '-G' NOT '-shared' on this + # platform. + _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' + fi + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ + '"$_LT_TAGVAR(old_archive_cmds, $1)" + _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ + '"$_LT_TAGVAR(reload_cmds, $1)" + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) + test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no + + _LT_TAGVAR(GCC, $1)=$GXX + _LT_TAGVAR(LD, $1)=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test yes != "$_lt_caught_CXX_error" + +AC_LANG_POP +])# _LT_LANG_CXX_CONFIG + + +# _LT_FUNC_STRIPNAME_CNF +# ---------------------- +# func_stripname_cnf prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# +# This function is identical to the (non-XSI) version of func_stripname, +# except this one can be used by m4 code that may be executed by configure, +# rather than the libtool script. +m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl +AC_REQUIRE([_LT_DECL_SED]) +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) +func_stripname_cnf () +{ + case @S|@2 in + .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; + *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; + esac +} # func_stripname_cnf +])# _LT_FUNC_STRIPNAME_CNF + + +# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) +# --------------------------------- +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +m4_defun([_LT_SYS_HIDDEN_LIBDEPS], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl +# Dependencies to place before and after the object being linked: +_LT_TAGVAR(predep_objects, $1)= +_LT_TAGVAR(postdep_objects, $1)= +_LT_TAGVAR(predeps, $1)= +_LT_TAGVAR(postdeps, $1)= +_LT_TAGVAR(compiler_lib_search_path, $1)= + +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF +int a; +void foo (void) { a = 0; } +_LT_EOF +], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF +], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer*4 a + a=0 + return + end +_LT_EOF +], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer a + a=0 + return + end +_LT_EOF +], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF +public class foo { + private int a; + public void bar (void) { + a = 0; + } +}; +_LT_EOF +], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF +package foo +func foo() { +} +_LT_EOF +]) + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; +esac + +dnl Parse the compiler output and extract the necessary +dnl objects, libraries and library flags. +if AC_TRY_EVAL(ac_compile); then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case $prev$p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test x-L = "$p" || + test x-R = "$p"; then + prev=$p + continue + fi + + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac + if test no = "$pre_test_object_deps_done"; then + case $prev in + -L | -R) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then + _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p + else + _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$_LT_TAGVAR(postdeps, $1)"; then + _LT_TAGVAR(postdeps, $1)=$prev$p + else + _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p" + fi + fi + prev= + ;; + + *.lto.$objext) ;; # Ignore GCC LTO objects + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test no = "$pre_test_object_deps_done"; then + if test -z "$_LT_TAGVAR(predep_objects, $1)"; then + _LT_TAGVAR(predep_objects, $1)=$p + else + _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" + fi + else + if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then + _LT_TAGVAR(postdep_objects, $1)=$p + else + _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling $1 test program" +fi + +$RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS + +# PORTME: override above test on systems where it is broken +m4_if([$1], [CXX], +[case $host_os in +interix[[3-9]]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + _LT_TAGVAR(predep_objects,$1)= + _LT_TAGVAR(postdep_objects,$1)= + _LT_TAGVAR(postdeps,$1)= + ;; +esac +]) + +case " $_LT_TAGVAR(postdeps, $1) " in +*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; +esac + _LT_TAGVAR(compiler_lib_search_dirs, $1)= +if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then + _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'` +fi +_LT_TAGDECL([], [compiler_lib_search_dirs], [1], + [The directories searched by this compiler when creating a shared library]) +_LT_TAGDECL([], [predep_objects], [1], + [Dependencies to place before and after the objects being linked to + create a shared library]) +_LT_TAGDECL([], [postdep_objects], [1]) +_LT_TAGDECL([], [predeps], [1]) +_LT_TAGDECL([], [postdeps], [1]) +_LT_TAGDECL([], [compiler_lib_search_path], [1], + [The library search path used internally by the compiler when linking + a shared library]) +])# _LT_SYS_HIDDEN_LIBDEPS + + +# _LT_LANG_F77_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a Fortran 77 compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_F77_CONFIG], +[AC_LANG_PUSH(Fortran 77) +if test -z "$F77" || test no = "$F77"; then + _lt_disable_F77=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the F77 compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_disable_F77"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${F77-"f77"} + CFLAGS=$FFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + GCC=$G77 + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)=$G77 + _LT_TAGVAR(LD, $1)=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test yes != "$_lt_disable_F77" + +AC_LANG_POP +])# _LT_LANG_F77_CONFIG + + +# _LT_LANG_FC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for a Fortran compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_FC_CONFIG], +[AC_LANG_PUSH(Fortran) + +if test -z "$FC" || test no = "$FC"; then + _lt_disable_FC=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for fc test sources. +ac_ext=${ac_fc_srcext-f} + +# Object file extension for compiled fc test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the FC compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_disable_FC"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${FC-"f95"} + CFLAGS=$FCFLAGS + compiler=$CC + GCC=$ac_cv_fc_compiler_gnu + + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu + _LT_TAGVAR(LD, $1)=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test yes != "$_lt_disable_FC" + +AC_LANG_POP +])# _LT_LANG_FC_CONFIG + + +# _LT_LANG_GCJ_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Java Compiler compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_GCJ_CONFIG], +[AC_REQUIRE([LT_PROG_GCJ])dnl +AC_LANG_SAVE + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GCJ-"gcj"} +CFLAGS=$GCJFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)=$LD +_LT_CC_BASENAME([$compiler]) + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GCJ_CONFIG + + +# _LT_LANG_GO_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Go compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_GO_CONFIG], +[AC_REQUIRE([LT_PROG_GO])dnl +AC_LANG_SAVE + +# Source file extension for Go test sources. +ac_ext=go + +# Object file extension for compiled Go test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="package main; func main() { }" + +# Code to be used in simple link tests +lt_simple_link_test_code='package main; func main() { }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GOC-"gccgo"} +CFLAGS=$GOFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)=$LD +_LT_CC_BASENAME([$compiler]) + +# Go did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GO_CONFIG + + +# _LT_LANG_RC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for the Windows resource compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_RC_CONFIG], +[AC_REQUIRE([LT_PROG_RC])dnl +AC_LANG_SAVE + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code=$lt_simple_compile_test_code + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC= +CC=${RC-"windres"} +CFLAGS= +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) +_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + +if test -n "$compiler"; then + : + _LT_CONFIG($1) +fi + +GCC=$lt_save_GCC +AC_LANG_RESTORE +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_RC_CONFIG + + +# LT_PROG_GCJ +# ----------- +AC_DEFUN([LT_PROG_GCJ], +[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], + [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], + [AC_CHECK_TOOL(GCJ, gcj,) + test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS)])])[]dnl +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_GCJ], []) + + +# LT_PROG_GO +# ---------- +AC_DEFUN([LT_PROG_GO], +[AC_CHECK_TOOL(GOC, gccgo,) +]) + + +# LT_PROG_RC +# ---------- +AC_DEFUN([LT_PROG_RC], +[AC_CHECK_TOOL(RC, windres,) +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_RC], []) + + +# _LT_DECL_EGREP +# -------------- +# If we don't have a new enough Autoconf to choose the best grep +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_EGREP], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_REQUIRE([AC_PROG_FGREP])dnl +test -z "$GREP" && GREP=grep +_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) +_LT_DECL([], [EGREP], [1], [An ERE matcher]) +_LT_DECL([], [FGREP], [1], [A literal string matcher]) +dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too +AC_SUBST([GREP]) +]) + + +# _LT_DECL_OBJDUMP +# -------------- +# If we don't have a new enough Autoconf to choose the best objdump +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_OBJDUMP], +[AC_CHECK_TOOL(OBJDUMP, objdump, false) +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) +AC_SUBST([OBJDUMP]) +]) + +# _LT_DECL_DLLTOOL +# ---------------- +# Ensure DLLTOOL variable is set. +m4_defun([_LT_DECL_DLLTOOL], +[AC_CHECK_TOOL(DLLTOOL, dlltool, false) +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) +AC_SUBST([DLLTOOL]) +]) + +# _LT_DECL_SED +# ------------ +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +m4_defun([_LT_DECL_SED], +[AC_PROG_SED +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" +_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) +_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], + [Sed that helps us avoid accidentally triggering echo(1) options like -n]) +])# _LT_DECL_SED + +m4_ifndef([AC_PROG_SED], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ + +m4_defun([AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +IFS=$as_save_IFS +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f "$lt_ac_sed" && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test 10 -lt "$lt_ac_count" && break + lt_ac_count=`expr $lt_ac_count + 1` + if test "$lt_ac_count" -gt "$lt_ac_max"; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_SUBST([SED]) +AC_MSG_RESULT([$SED]) +])#AC_PROG_SED +])#m4_ifndef + +# Old name: +AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_SED], []) + + +# _LT_CHECK_SHELL_FEATURES +# ------------------------ +# Find out whether the shell is Bourne or XSI compatible, +# or has some other useful features. +m4_defun([_LT_CHECK_SHELL_FEATURES], +[if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi +_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac +_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl +_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl +])# _LT_CHECK_SHELL_FEATURES + + +# _LT_PATH_CONVERSION_FUNCTIONS +# ----------------------------- +# Determine what file name conversion functions should be used by +# func_to_host_file (and, implicitly, by func_to_host_path). These are needed +# for certain cross-compile configurations and native mingw. +m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_MSG_CHECKING([how to convert $build file names to $host format]) +AC_CACHE_VAL(lt_cv_to_host_file_cmd, +[case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac +]) +to_host_file_cmd=$lt_cv_to_host_file_cmd +AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) +_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], + [0], [convert $build file names to $host format])dnl + +AC_MSG_CHECKING([how to convert $build file names to toolchain format]) +AC_CACHE_VAL(lt_cv_to_tool_file_cmd, +[#assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac +]) +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) +_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], + [0], [convert $build files to toolchain format])dnl +])# _LT_PATH_CONVERSION_FUNCTIONS diff --git a/thirdparty/protobuf-2.6.1/gtest/m4/ltoptions.m4 b/thirdparty/protobuf-2.6.1/gtest/m4/ltoptions.m4 new file mode 100644 index 00000000..94b08297 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/m4/ltoptions.m4 @@ -0,0 +1,437 @@ +# Helper functions for option handling. -*- Autoconf -*- +# +# Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software +# Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 8 ltoptions.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) + + +# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) +# ------------------------------------------ +m4_define([_LT_MANGLE_OPTION], +[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) + + +# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) +# --------------------------------------- +# Set option OPTION-NAME for macro MACRO-NAME, and if there is a +# matching handler defined, dispatch to it. Other OPTION-NAMEs are +# saved as a flag. +m4_define([_LT_SET_OPTION], +[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl +m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), + _LT_MANGLE_DEFUN([$1], [$2]), + [m4_warning([Unknown $1 option '$2'])])[]dnl +]) + + +# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) +# ------------------------------------------------------------ +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +m4_define([_LT_IF_OPTION], +[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) + + +# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) +# ------------------------------------------------------- +# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME +# are set. +m4_define([_LT_UNLESS_OPTIONS], +[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), + [m4_define([$0_found])])])[]dnl +m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 +])[]dnl +]) + + +# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) +# ---------------------------------------- +# OPTION-LIST is a space-separated list of Libtool options associated +# with MACRO-NAME. If any OPTION has a matching handler declared with +# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about +# the unknown option and exit. +m4_defun([_LT_SET_OPTIONS], +[# Set options +m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [_LT_SET_OPTION([$1], _LT_Option)]) + +m4_if([$1],[LT_INIT],[ + dnl + dnl Simply set some default values (i.e off) if boolean options were not + dnl specified: + _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no + ]) + _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no + ]) + dnl + dnl If no reference was made to various pairs of opposing options, then + dnl we run the default mode handler for the pair. For example, if neither + dnl 'shared' nor 'disable-shared' was passed, we enable building of shared + dnl archives by default: + _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) + _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], + [_LT_ENABLE_FAST_INSTALL]) + _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], + [_LT_WITH_AIX_SONAME([aix])]) + ]) +])# _LT_SET_OPTIONS + + +## --------------------------------- ## +## Macros to handle LT_INIT options. ## +## --------------------------------- ## + +# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) +# ----------------------------------------- +m4_define([_LT_MANGLE_DEFUN], +[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) + + +# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) +# ----------------------------------------------- +m4_define([LT_OPTION_DEFINE], +[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl +])# LT_OPTION_DEFINE + + +# dlopen +# ------ +LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes +]) + +AU_DEFUN([AC_LIBTOOL_DLOPEN], +[_LT_SET_OPTION([LT_INIT], [dlopen]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'dlopen' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) + + +# win32-dll +# --------- +# Declare package support for building win32 dll's. +LT_OPTION_DEFINE([LT_INIT], [win32-dll], +[enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; +esac + +test -z "$AS" && AS=as +_LT_DECL([], [AS], [1], [Assembler program])dnl + +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl + +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl +])# win32-dll + +AU_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +_LT_SET_OPTION([LT_INIT], [win32-dll]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'win32-dll' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) + + +# _LT_ENABLE_SHARED([DEFAULT]) +# ---------------------------- +# implement the --enable-shared flag, and supports the 'shared' and +# 'disable-shared' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +m4_define([_LT_ENABLE_SHARED], +[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([shared], + [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) + + _LT_DECL([build_libtool_libs], [enable_shared], [0], + [Whether or not to build shared libraries]) +])# _LT_ENABLE_SHARED + +LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) +]) + +AC_DEFUN([AC_DISABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], [disable-shared]) +]) + +AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_SHARED], []) +dnl AC_DEFUN([AM_DISABLE_SHARED], []) + + + +# _LT_ENABLE_STATIC([DEFAULT]) +# ---------------------------- +# implement the --enable-static flag, and support the 'static' and +# 'disable-static' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +m4_define([_LT_ENABLE_STATIC], +[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([static], + [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [enable_static=]_LT_ENABLE_STATIC_DEFAULT) + + _LT_DECL([build_old_libs], [enable_static], [0], + [Whether or not to build static libraries]) +])# _LT_ENABLE_STATIC + +LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) +]) + +AC_DEFUN([AC_DISABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], [disable-static]) +]) + +AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_STATIC], []) +dnl AC_DEFUN([AM_DISABLE_STATIC], []) + + + +# _LT_ENABLE_FAST_INSTALL([DEFAULT]) +# ---------------------------------- +# implement the --enable-fast-install flag, and support the 'fast-install' +# and 'disable-fast-install' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +m4_define([_LT_ENABLE_FAST_INSTALL], +[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([fast-install], + [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) + +_LT_DECL([fast_install], [enable_fast_install], [0], + [Whether or not to optimize for fast installation])dnl +])# _LT_ENABLE_FAST_INSTALL + +LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) + +# Old names: +AU_DEFUN([AC_ENABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the 'fast-install' option into LT_INIT's first parameter.]) +]) + +AU_DEFUN([AC_DISABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the 'disable-fast-install' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) +dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) + + +# _LT_WITH_AIX_SONAME([DEFAULT]) +# ---------------------------------- +# implement the --with-aix-soname flag, and support the `aix-soname=aix' +# and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT +# is either `aix', `both' or `svr4'. If omitted, it defaults to `aix'. +m4_define([_LT_WITH_AIX_SONAME], +[m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl +shared_archive_member_spec= +case $host,$enable_shared in +power*-*-aix[[5-9]]*,yes) + AC_MSG_CHECKING([which variant of shared library versioning to provide]) + AC_ARG_WITH([aix-soname], + [AS_HELP_STRING([--with-aix-soname=aix|svr4|both], + [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])], + [case $withval in + aix|svr4|both) + ;; + *) + AC_MSG_ERROR([Unknown argument to --with-aix-soname]) + ;; + esac + lt_cv_with_aix_soname=$with_aix_soname], + [AC_CACHE_VAL([lt_cv_with_aix_soname], + [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT) + with_aix_soname=$lt_cv_with_aix_soname]) + AC_MSG_RESULT([$with_aix_soname]) + if test aix != "$with_aix_soname"; then + # For the AIX way of multilib, we name the shared archive member + # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', + # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. + # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, + # the AIX toolchain works better with OBJECT_MODE set (default 32). + if test 64 = "${OBJECT_MODE-32}"; then + shared_archive_member_spec=shr_64 + else + shared_archive_member_spec=shr + fi + fi + ;; +*) + with_aix_soname=aix + ;; +esac + +_LT_DECL([], [shared_archive_member_spec], [0], + [Shared archive member basename, for filename based shared library versioning on AIX])dnl +])# _LT_WITH_AIX_SONAME + +LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])]) +LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])]) +LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])]) + + +# _LT_WITH_PIC([MODE]) +# -------------------- +# implement the --with-pic flag, and support the 'pic-only' and 'no-pic' +# LT_INIT options. +# MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'. +m4_define([_LT_WITH_PIC], +[AC_ARG_WITH([pic], + [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for lt_pkg in $withval; do + IFS=$lt_save_ifs + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [pic_mode=m4_default([$1], [default])]) + +_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl +])# _LT_WITH_PIC + +LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) + +# Old name: +AU_DEFUN([AC_LIBTOOL_PICMODE], +[_LT_SET_OPTION([LT_INIT], [pic-only]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'pic-only' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) + +## ----------------- ## +## LTDL_INIT Options ## +## ----------------- ## + +m4_define([_LTDL_MODE], []) +LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], + [m4_define([_LTDL_MODE], [nonrecursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [recursive], + [m4_define([_LTDL_MODE], [recursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [subproject], + [m4_define([_LTDL_MODE], [subproject])]) + +m4_define([_LTDL_TYPE], []) +LT_OPTION_DEFINE([LTDL_INIT], [installable], + [m4_define([_LTDL_TYPE], [installable])]) +LT_OPTION_DEFINE([LTDL_INIT], [convenience], + [m4_define([_LTDL_TYPE], [convenience])]) diff --git a/thirdparty/protobuf-2.6.1/gtest/m4/ltsugar.m4 b/thirdparty/protobuf-2.6.1/gtest/m4/ltsugar.m4 new file mode 100644 index 00000000..48bc9344 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/m4/ltsugar.m4 @@ -0,0 +1,124 @@ +# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- +# +# Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software +# Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 6 ltsugar.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) + + +# lt_join(SEP, ARG1, [ARG2...]) +# ----------------------------- +# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their +# associated separator. +# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier +# versions in m4sugar had bugs. +m4_define([lt_join], +[m4_if([$#], [1], [], + [$#], [2], [[$2]], + [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) +m4_define([_lt_join], +[m4_if([$#$2], [2], [], + [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) + + +# lt_car(LIST) +# lt_cdr(LIST) +# ------------ +# Manipulate m4 lists. +# These macros are necessary as long as will still need to support +# Autoconf-2.59, which quotes differently. +m4_define([lt_car], [[$1]]) +m4_define([lt_cdr], +[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], + [$#], 1, [], + [m4_dquote(m4_shift($@))])]) +m4_define([lt_unquote], $1) + + +# lt_append(MACRO-NAME, STRING, [SEPARATOR]) +# ------------------------------------------ +# Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'. +# Note that neither SEPARATOR nor STRING are expanded; they are appended +# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). +# No SEPARATOR is output if MACRO-NAME was previously undefined (different +# than defined and empty). +# +# This macro is needed until we can rely on Autoconf 2.62, since earlier +# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. +m4_define([lt_append], +[m4_define([$1], + m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) + + + +# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) +# ---------------------------------------------------------- +# Produce a SEP delimited list of all paired combinations of elements of +# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list +# has the form PREFIXmINFIXSUFFIXn. +# Needed until we can rely on m4_combine added in Autoconf 2.62. +m4_define([lt_combine], +[m4_if(m4_eval([$# > 3]), [1], + [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl +[[m4_foreach([_Lt_prefix], [$2], + [m4_foreach([_Lt_suffix], + ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, + [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) + + +# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) +# ----------------------------------------------------------------------- +# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited +# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. +m4_define([lt_if_append_uniq], +[m4_ifdef([$1], + [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], + [lt_append([$1], [$2], [$3])$4], + [$5])], + [lt_append([$1], [$2], [$3])$4])]) + + +# lt_dict_add(DICT, KEY, VALUE) +# ----------------------------- +m4_define([lt_dict_add], +[m4_define([$1($2)], [$3])]) + + +# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) +# -------------------------------------------- +m4_define([lt_dict_add_subkey], +[m4_define([$1($2:$3)], [$4])]) + + +# lt_dict_fetch(DICT, KEY, [SUBKEY]) +# ---------------------------------- +m4_define([lt_dict_fetch], +[m4_ifval([$3], + m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), + m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) + + +# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) +# ----------------------------------------------------------------- +m4_define([lt_if_dict_fetch], +[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], + [$5], + [$6])]) + + +# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) +# -------------------------------------------------------------- +m4_define([lt_dict_filter], +[m4_if([$5], [], [], + [lt_join(m4_quote(m4_default([$4], [[, ]])), + lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), + [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl +]) diff --git a/thirdparty/protobuf-2.6.1/gtest/m4/ltversion.m4 b/thirdparty/protobuf-2.6.1/gtest/m4/ltversion.m4 new file mode 100644 index 00000000..fa04b52a --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/m4/ltversion.m4 @@ -0,0 +1,23 @@ +# ltversion.m4 -- version numbers -*- Autoconf -*- +# +# Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# @configure_input@ + +# serial 4179 ltversion.m4 +# This file is part of GNU Libtool + +m4_define([LT_PACKAGE_VERSION], [2.4.6]) +m4_define([LT_PACKAGE_REVISION], [2.4.6]) + +AC_DEFUN([LTVERSION_VERSION], +[macro_version='2.4.6' +macro_revision='2.4.6' +_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) +_LT_DECL(, macro_revision, 0) +]) diff --git a/thirdparty/protobuf-2.6.1/gtest/m4/lt~obsolete.m4 b/thirdparty/protobuf-2.6.1/gtest/m4/lt~obsolete.m4 new file mode 100644 index 00000000..c6b26f88 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/m4/lt~obsolete.m4 @@ -0,0 +1,99 @@ +# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- +# +# Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software +# Foundation, Inc. +# Written by Scott James Remnant, 2004. +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 5 lt~obsolete.m4 + +# These exist entirely to fool aclocal when bootstrapping libtool. +# +# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN), +# which have later been changed to m4_define as they aren't part of the +# exported API, or moved to Autoconf or Automake where they belong. +# +# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN +# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us +# using a macro with the same name in our local m4/libtool.m4 it'll +# pull the old libtool.m4 in (it doesn't see our shiny new m4_define +# and doesn't know about Autoconf macros at all.) +# +# So we provide this file, which has a silly filename so it's always +# included after everything else. This provides aclocal with the +# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything +# because those macros already exist, or will be overwritten later. +# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. +# +# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. +# Yes, that means every name once taken will need to remain here until +# we give up compatibility with versions before 1.7, at which point +# we need to keep only those names which we still refer to. + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) + +m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) +m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) +m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) +m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) +m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) +m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) +m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) +m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) +m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) +m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) +m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) +m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) +m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) +m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) +m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) +m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) +m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) +m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) +m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) +m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) +m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) +m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) +m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) +m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) +m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) +m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) +m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) +m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) +m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) +m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) +m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) +m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) +m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) +m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) +m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) +m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) +m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) +m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) +m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) +m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) +m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) +m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) +m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) +m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) +m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) +m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) +m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) +m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) +m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) +m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) diff --git a/thirdparty/protobuf-2.6.1/gtest/make/Makefile b/thirdparty/protobuf-2.6.1/gtest/make/Makefile new file mode 100644 index 00000000..5b27b6a2 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/make/Makefile @@ -0,0 +1,80 @@ +# A sample Makefile for building Google Test and using it in user +# tests. Please tweak it to suit your environment and project. You +# may want to move it to your project's root directory. +# +# SYNOPSIS: +# +# make [all] - makes everything. +# make TARGET - makes the given target. +# make clean - removes all files generated by make. + +# Please tweak the following variable definitions as needed by your +# project, except GTEST_HEADERS, which you can use in your own targets +# but shouldn't modify. + +# Points to the root of Google Test, relative to where this file is. +# Remember to tweak this if you move this file. +GTEST_DIR = .. + +# Where to find user code. +USER_DIR = ../samples + +# Flags passed to the preprocessor. +CPPFLAGS += -I$(GTEST_DIR)/include + +# Flags passed to the C++ compiler. +CXXFLAGS += -g -Wall -Wextra + +# All tests produced by this Makefile. Remember to add new tests you +# created to the list. +TESTS = sample1_unittest + +# All Google Test headers. Usually you shouldn't change this +# definition. +GTEST_HEADERS = $(GTEST_DIR)/include/gtest/*.h \ + $(GTEST_DIR)/include/gtest/internal/*.h + +# House-keeping build targets. + +all : $(TESTS) + +clean : + rm -f $(TESTS) gtest.a gtest_main.a *.o + +# Builds gtest.a and gtest_main.a. + +# Usually you shouldn't tweak such internal variables, indicated by a +# trailing _. +GTEST_SRCS_ = $(GTEST_DIR)/src/*.cc $(GTEST_DIR)/src/*.h $(GTEST_HEADERS) + +# For simplicity and to avoid depending on Google Test's +# implementation details, the dependencies specified below are +# conservative and not optimized. This is fine as Google Test +# compiles fast and for ordinary users its source rarely changes. +gtest-all.o : $(GTEST_SRCS_) + $(CXX) $(CPPFLAGS) -I$(GTEST_DIR) $(CXXFLAGS) -c \ + $(GTEST_DIR)/src/gtest-all.cc + +gtest_main.o : $(GTEST_SRCS_) + $(CXX) $(CPPFLAGS) -I$(GTEST_DIR) $(CXXFLAGS) -c \ + $(GTEST_DIR)/src/gtest_main.cc + +gtest.a : gtest-all.o + $(AR) $(ARFLAGS) $@ $^ + +gtest_main.a : gtest-all.o gtest_main.o + $(AR) $(ARFLAGS) $@ $^ + +# Builds a sample test. A test should link with either gtest.a or +# gtest_main.a, depending on whether it defines its own main() +# function. + +sample1.o : $(USER_DIR)/sample1.cc $(USER_DIR)/sample1.h $(GTEST_HEADERS) + $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/sample1.cc + +sample1_unittest.o : $(USER_DIR)/sample1_unittest.cc \ + $(USER_DIR)/sample1.h $(GTEST_HEADERS) + $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(USER_DIR)/sample1_unittest.cc + +sample1_unittest : sample1.o sample1_unittest.o gtest_main.a + $(CXX) $(CPPFLAGS) $(CXXFLAGS) -lpthread $^ -o $@ diff --git a/thirdparty/protobuf-2.6.1/gtest/msvc/gtest-md.sln b/thirdparty/protobuf-2.6.1/gtest/msvc/gtest-md.sln new file mode 100644 index 00000000..f7908da1 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/msvc/gtest-md.sln @@ -0,0 +1,45 @@ +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtest-md", "gtest-md.vcproj", "{C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtest_main-md", "gtest_main-md.vcproj", "{3AF54C8A-10BF-4332-9147-F68ED9862033}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtest_prod_test-md", "gtest_prod_test-md.vcproj", "{24848551-EF4F-47E8-9A9D-EA4D49BC3ECB}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtest_unittest-md", "gtest_unittest-md.vcproj", "{4D9FDFB5-986A-4139-823C-F4EE0ED481A2}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + Debug = Debug + Release = Release + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}.Debug.ActiveCfg = Debug|Win32 + {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}.Debug.Build.0 = Debug|Win32 + {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}.Release.ActiveCfg = Release|Win32 + {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}.Release.Build.0 = Release|Win32 + {3AF54C8A-10BF-4332-9147-F68ED9862033}.Debug.ActiveCfg = Debug|Win32 + {3AF54C8A-10BF-4332-9147-F68ED9862033}.Debug.Build.0 = Debug|Win32 + {3AF54C8A-10BF-4332-9147-F68ED9862033}.Release.ActiveCfg = Release|Win32 + {3AF54C8A-10BF-4332-9147-F68ED9862033}.Release.Build.0 = Release|Win32 + {24848551-EF4F-47E8-9A9D-EA4D49BC3ECB}.Debug.ActiveCfg = Debug|Win32 + {24848551-EF4F-47E8-9A9D-EA4D49BC3ECB}.Debug.Build.0 = Debug|Win32 + {24848551-EF4F-47E8-9A9D-EA4D49BC3ECB}.Release.ActiveCfg = Release|Win32 + {24848551-EF4F-47E8-9A9D-EA4D49BC3ECB}.Release.Build.0 = Release|Win32 + {4D9FDFB5-986A-4139-823C-F4EE0ED481A2}.Debug.ActiveCfg = Debug|Win32 + {4D9FDFB5-986A-4139-823C-F4EE0ED481A2}.Debug.Build.0 = Debug|Win32 + {4D9FDFB5-986A-4139-823C-F4EE0ED481A2}.Release.ActiveCfg = Release|Win32 + {4D9FDFB5-986A-4139-823C-F4EE0ED481A2}.Release.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/thirdparty/protobuf-2.6.1/gtest/msvc/gtest-md.vcproj b/thirdparty/protobuf-2.6.1/gtest/msvc/gtest-md.vcproj new file mode 100644 index 00000000..464d36e7 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/msvc/gtest-md.vcproj @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/thirdparty/protobuf-2.6.1/gtest/msvc/gtest.sln b/thirdparty/protobuf-2.6.1/gtest/msvc/gtest.sln new file mode 100644 index 00000000..ef4b057f --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/msvc/gtest.sln @@ -0,0 +1,45 @@ +Microsoft Visual Studio Solution File, Format Version 8.00 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtest", "gtest.vcproj", "{C8F6C172-56F2-4E76-B5FA-C3B423B31BE7}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtest_main", "gtest_main.vcproj", "{3AF54C8A-10BF-4332-9147-F68ED9862032}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtest_unittest", "gtest_unittest.vcproj", "{4D9FDFB5-986A-4139-823C-F4EE0ED481A1}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtest_prod_test", "gtest_prod_test.vcproj", "{24848551-EF4F-47E8-9A9D-EA4D49BC3ECA}" + ProjectSection(ProjectDependencies) = postProject + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfiguration) = preSolution + Debug = Debug + Release = Release + EndGlobalSection + GlobalSection(ProjectConfiguration) = postSolution + {C8F6C172-56F2-4E76-B5FA-C3B423B31BE7}.Debug.ActiveCfg = Debug|Win32 + {C8F6C172-56F2-4E76-B5FA-C3B423B31BE7}.Debug.Build.0 = Debug|Win32 + {C8F6C172-56F2-4E76-B5FA-C3B423B31BE7}.Release.ActiveCfg = Release|Win32 + {C8F6C172-56F2-4E76-B5FA-C3B423B31BE7}.Release.Build.0 = Release|Win32 + {3AF54C8A-10BF-4332-9147-F68ED9862032}.Debug.ActiveCfg = Debug|Win32 + {3AF54C8A-10BF-4332-9147-F68ED9862032}.Debug.Build.0 = Debug|Win32 + {3AF54C8A-10BF-4332-9147-F68ED9862032}.Release.ActiveCfg = Release|Win32 + {3AF54C8A-10BF-4332-9147-F68ED9862032}.Release.Build.0 = Release|Win32 + {4D9FDFB5-986A-4139-823C-F4EE0ED481A1}.Debug.ActiveCfg = Debug|Win32 + {4D9FDFB5-986A-4139-823C-F4EE0ED481A1}.Debug.Build.0 = Debug|Win32 + {4D9FDFB5-986A-4139-823C-F4EE0ED481A1}.Release.ActiveCfg = Release|Win32 + {4D9FDFB5-986A-4139-823C-F4EE0ED481A1}.Release.Build.0 = Release|Win32 + {24848551-EF4F-47E8-9A9D-EA4D49BC3ECA}.Debug.ActiveCfg = Debug|Win32 + {24848551-EF4F-47E8-9A9D-EA4D49BC3ECA}.Debug.Build.0 = Debug|Win32 + {24848551-EF4F-47E8-9A9D-EA4D49BC3ECA}.Release.ActiveCfg = Release|Win32 + {24848551-EF4F-47E8-9A9D-EA4D49BC3ECA}.Release.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + EndGlobalSection + GlobalSection(ExtensibilityAddIns) = postSolution + EndGlobalSection +EndGlobal diff --git a/thirdparty/protobuf-2.6.1/gtest/msvc/gtest.vcproj b/thirdparty/protobuf-2.6.1/gtest/msvc/gtest.vcproj new file mode 100644 index 00000000..04ad10ae --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/msvc/gtest.vcproj @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/thirdparty/protobuf-2.6.1/gtest/msvc/gtest_main-md.vcproj b/thirdparty/protobuf-2.6.1/gtest/msvc/gtest_main-md.vcproj new file mode 100644 index 00000000..5142f68a --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/msvc/gtest_main-md.vcproj @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/thirdparty/protobuf-2.6.1/gtest/msvc/gtest_main.vcproj b/thirdparty/protobuf-2.6.1/gtest/msvc/gtest_main.vcproj new file mode 100644 index 00000000..bdc49dd7 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/msvc/gtest_main.vcproj @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/thirdparty/protobuf-2.6.1/gtest/msvc/gtest_prod_test-md.vcproj b/thirdparty/protobuf-2.6.1/gtest/msvc/gtest_prod_test-md.vcproj new file mode 100644 index 00000000..f4080b48 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/msvc/gtest_prod_test-md.vcproj @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/thirdparty/protobuf-2.6.1/gtest/msvc/gtest_prod_test.vcproj b/thirdparty/protobuf-2.6.1/gtest/msvc/gtest_prod_test.vcproj new file mode 100644 index 00000000..43bdb359 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/msvc/gtest_prod_test.vcproj @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/thirdparty/protobuf-2.6.1/gtest/msvc/gtest_unittest-md.vcproj b/thirdparty/protobuf-2.6.1/gtest/msvc/gtest_unittest-md.vcproj new file mode 100644 index 00000000..1bc9e4f3 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/msvc/gtest_unittest-md.vcproj @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/thirdparty/protobuf-2.6.1/gtest/msvc/gtest_unittest.vcproj b/thirdparty/protobuf-2.6.1/gtest/msvc/gtest_unittest.vcproj new file mode 100644 index 00000000..9a2fad25 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/msvc/gtest_unittest.vcproj @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/thirdparty/protobuf-2.6.1/gtest/samples/.deps/sample1.Plo b/thirdparty/protobuf-2.6.1/gtest/samples/.deps/sample1.Plo new file mode 100644 index 00000000..9ce06a81 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/samples/.deps/sample1.Plo @@ -0,0 +1 @@ +# dummy diff --git a/thirdparty/protobuf-2.6.1/gtest/samples/.deps/sample10_unittest.Po b/thirdparty/protobuf-2.6.1/gtest/samples/.deps/sample10_unittest.Po new file mode 100644 index 00000000..9ce06a81 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/samples/.deps/sample10_unittest.Po @@ -0,0 +1 @@ +# dummy diff --git a/thirdparty/protobuf-2.6.1/gtest/samples/.deps/sample1_unittest.Po b/thirdparty/protobuf-2.6.1/gtest/samples/.deps/sample1_unittest.Po new file mode 100644 index 00000000..9ce06a81 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/samples/.deps/sample1_unittest.Po @@ -0,0 +1 @@ +# dummy diff --git a/thirdparty/protobuf-2.6.1/gtest/samples/.deps/sample2.Plo b/thirdparty/protobuf-2.6.1/gtest/samples/.deps/sample2.Plo new file mode 100644 index 00000000..9ce06a81 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/samples/.deps/sample2.Plo @@ -0,0 +1 @@ +# dummy diff --git a/thirdparty/protobuf-2.6.1/gtest/samples/.deps/sample4.Plo b/thirdparty/protobuf-2.6.1/gtest/samples/.deps/sample4.Plo new file mode 100644 index 00000000..9ce06a81 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/samples/.deps/sample4.Plo @@ -0,0 +1 @@ +# dummy diff --git a/thirdparty/protobuf-2.6.1/gtest/samples/.deps/test_fused_gtest_test-sample1.Po b/thirdparty/protobuf-2.6.1/gtest/samples/.deps/test_fused_gtest_test-sample1.Po new file mode 100644 index 00000000..9ce06a81 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/samples/.deps/test_fused_gtest_test-sample1.Po @@ -0,0 +1 @@ +# dummy diff --git a/thirdparty/protobuf-2.6.1/gtest/samples/.deps/test_fused_gtest_test-sample1_unittest.Po b/thirdparty/protobuf-2.6.1/gtest/samples/.deps/test_fused_gtest_test-sample1_unittest.Po new file mode 100644 index 00000000..9ce06a81 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/samples/.deps/test_fused_gtest_test-sample1_unittest.Po @@ -0,0 +1 @@ +# dummy diff --git a/thirdparty/protobuf-2.6.1/gtest/samples/prime_tables.h b/thirdparty/protobuf-2.6.1/gtest/samples/prime_tables.h new file mode 100644 index 00000000..92ce16a0 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/samples/prime_tables.h @@ -0,0 +1,123 @@ +// Copyright 2008 Google Inc. +// All Rights Reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) +// Author: vladl@google.com (Vlad Losev) + +// This provides interface PrimeTable that determines whether a number is a +// prime and determines a next prime number. This interface is used +// in Google Test samples demonstrating use of parameterized tests. + +#ifndef GTEST_SAMPLES_PRIME_TABLES_H_ +#define GTEST_SAMPLES_PRIME_TABLES_H_ + +#include + +// The prime table interface. +class PrimeTable { + public: + virtual ~PrimeTable() {} + + // Returns true iff n is a prime number. + virtual bool IsPrime(int n) const = 0; + + // Returns the smallest prime number greater than p; or returns -1 + // if the next prime is beyond the capacity of the table. + virtual int GetNextPrime(int p) const = 0; +}; + +// Implementation #1 calculates the primes on-the-fly. +class OnTheFlyPrimeTable : public PrimeTable { + public: + virtual bool IsPrime(int n) const { + if (n <= 1) return false; + + for (int i = 2; i*i <= n; i++) { + // n is divisible by an integer other than 1 and itself. + if ((n % i) == 0) return false; + } + + return true; + } + + virtual int GetNextPrime(int p) const { + for (int n = p + 1; n > 0; n++) { + if (IsPrime(n)) return n; + } + + return -1; + } +}; + +// Implementation #2 pre-calculates the primes and stores the result +// in an array. +class PreCalculatedPrimeTable : public PrimeTable { + public: + // 'max' specifies the maximum number the prime table holds. + explicit PreCalculatedPrimeTable(int max) + : is_prime_size_(max + 1), is_prime_(new bool[max + 1]) { + CalculatePrimesUpTo(max); + } + virtual ~PreCalculatedPrimeTable() { delete[] is_prime_; } + + virtual bool IsPrime(int n) const { + return 0 <= n && n < is_prime_size_ && is_prime_[n]; + } + + virtual int GetNextPrime(int p) const { + for (int n = p + 1; n < is_prime_size_; n++) { + if (is_prime_[n]) return n; + } + + return -1; + } + + private: + void CalculatePrimesUpTo(int max) { + ::std::fill(is_prime_, is_prime_ + is_prime_size_, true); + is_prime_[0] = is_prime_[1] = false; + + for (int i = 2; i <= max; i++) { + if (!is_prime_[i]) continue; + + // Marks all multiples of i (except i itself) as non-prime. + for (int j = 2*i; j <= max; j += i) { + is_prime_[j] = false; + } + } + } + + const int is_prime_size_; + bool* const is_prime_; + + // Disables compiler warning "assignment operator could not be generated." + void operator=(const PreCalculatedPrimeTable& rhs); +}; + +#endif // GTEST_SAMPLES_PRIME_TABLES_H_ diff --git a/thirdparty/protobuf-2.6.1/gtest/samples/sample1.cc b/thirdparty/protobuf-2.6.1/gtest/samples/sample1.cc new file mode 100644 index 00000000..f171e260 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/samples/sample1.cc @@ -0,0 +1,68 @@ +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// A sample program demonstrating using Google C++ testing framework. +// +// Author: wan@google.com (Zhanyong Wan) + +#include "sample1.h" + +// Returns n! (the factorial of n). For negative n, n! is defined to be 1. +int Factorial(int n) { + int result = 1; + for (int i = 1; i <= n; i++) { + result *= i; + } + + return result; +} + +// Returns true iff n is a prime number. +bool IsPrime(int n) { + // Trivial case 1: small numbers + if (n <= 1) return false; + + // Trivial case 2: even numbers + if (n % 2 == 0) return n == 2; + + // Now, we have that n is odd and n >= 3. + + // Try to divide n by every odd number i, starting from 3 + for (int i = 3; ; i += 2) { + // We only have to try i up to the squre root of n + if (i > n/i) break; + + // Now, we have i <= n/i < n. + // If n is divisible by i, n is not prime. + if (n % i == 0) return false; + } + + // n has no integer factor in the range (1, n), and thus is prime. + return true; +} diff --git a/thirdparty/protobuf-2.6.1/gtest/samples/sample1.h b/thirdparty/protobuf-2.6.1/gtest/samples/sample1.h new file mode 100644 index 00000000..3dfeb98c --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/samples/sample1.h @@ -0,0 +1,43 @@ +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// A sample program demonstrating using Google C++ testing framework. +// +// Author: wan@google.com (Zhanyong Wan) + +#ifndef GTEST_SAMPLES_SAMPLE1_H_ +#define GTEST_SAMPLES_SAMPLE1_H_ + +// Returns n! (the factorial of n). For negative n, n! is defined to be 1. +int Factorial(int n); + +// Returns true iff n is a prime number. +bool IsPrime(int n); + +#endif // GTEST_SAMPLES_SAMPLE1_H_ diff --git a/thirdparty/protobuf-2.6.1/gtest/samples/sample10_unittest.cc b/thirdparty/protobuf-2.6.1/gtest/samples/sample10_unittest.cc new file mode 100644 index 00000000..0051cd5d --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/samples/sample10_unittest.cc @@ -0,0 +1,144 @@ +// Copyright 2009 Google Inc. All Rights Reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: vladl@google.com (Vlad Losev) + +// This sample shows how to use Google Test listener API to implement +// a primitive leak checker. + +#include +#include + +#include "gtest/gtest.h" + +using ::testing::EmptyTestEventListener; +using ::testing::InitGoogleTest; +using ::testing::Test; +using ::testing::TestCase; +using ::testing::TestEventListeners; +using ::testing::TestInfo; +using ::testing::TestPartResult; +using ::testing::UnitTest; + +namespace { + +// We will track memory used by this class. +class Water { + public: + // Normal Water declarations go here. + + // operator new and operator delete help us control water allocation. + void* operator new(size_t allocation_size) { + allocated_++; + return malloc(allocation_size); + } + + void operator delete(void* block, size_t /* allocation_size */) { + allocated_--; + free(block); + } + + static int allocated() { return allocated_; } + + private: + static int allocated_; +}; + +int Water::allocated_ = 0; + +// This event listener monitors how many Water objects are created and +// destroyed by each test, and reports a failure if a test leaks some Water +// objects. It does this by comparing the number of live Water objects at +// the beginning of a test and at the end of a test. +class LeakChecker : public EmptyTestEventListener { + private: + // Called before a test starts. + virtual void OnTestStart(const TestInfo& /* test_info */) { + initially_allocated_ = Water::allocated(); + } + + // Called after a test ends. + virtual void OnTestEnd(const TestInfo& /* test_info */) { + int difference = Water::allocated() - initially_allocated_; + + // You can generate a failure in any event handler except + // OnTestPartResult. Just use an appropriate Google Test assertion to do + // it. + EXPECT_LE(difference, 0) << "Leaked " << difference << " unit(s) of Water!"; + } + + int initially_allocated_; +}; + +TEST(ListenersTest, DoesNotLeak) { + Water* water = new Water; + delete water; +} + +// This should fail when the --check_for_leaks command line flag is +// specified. +TEST(ListenersTest, LeaksWater) { + Water* water = new Water; + EXPECT_TRUE(water != NULL); +} + +} // namespace + +int main(int argc, char **argv) { + InitGoogleTest(&argc, argv); + + bool check_for_leaks = false; + if (argc > 1 && strcmp(argv[1], "--check_for_leaks") == 0 ) + check_for_leaks = true; + else + printf("%s\n", "Run this program with --check_for_leaks to enable " + "custom leak checking in the tests."); + + // If we are given the --check_for_leaks command line flag, installs the + // leak checker. + if (check_for_leaks) { + TestEventListeners& listeners = UnitTest::GetInstance()->listeners(); + + // Adds the leak checker to the end of the test event listener list, + // after the default text output printer and the default XML report + // generator. + // + // The order is important - it ensures that failures generated in the + // leak checker's OnTestEnd() method are processed by the text and XML + // printers *before* their OnTestEnd() methods are called, such that + // they are attributed to the right test. Remember that a listener + // receives an OnXyzStart event *after* listeners preceding it in the + // list received that event, and receives an OnXyzEnd event *before* + // listeners preceding it. + // + // We don't need to worry about deleting the new listener later, as + // Google Test will do it. + listeners.Append(new LeakChecker); + } + return RUN_ALL_TESTS(); +} diff --git a/thirdparty/protobuf-2.6.1/gtest/samples/sample1_unittest.cc b/thirdparty/protobuf-2.6.1/gtest/samples/sample1_unittest.cc new file mode 100644 index 00000000..aefc4f1d --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/samples/sample1_unittest.cc @@ -0,0 +1,153 @@ +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// A sample program demonstrating using Google C++ testing framework. +// +// Author: wan@google.com (Zhanyong Wan) + + +// This sample shows how to write a simple unit test for a function, +// using Google C++ testing framework. +// +// Writing a unit test using Google C++ testing framework is easy as 1-2-3: + + +// Step 1. Include necessary header files such that the stuff your +// test logic needs is declared. +// +// Don't forget gtest.h, which declares the testing framework. + +#include +#include "sample1.h" +#include "gtest/gtest.h" + + +// Step 2. Use the TEST macro to define your tests. +// +// TEST has two parameters: the test case name and the test name. +// After using the macro, you should define your test logic between a +// pair of braces. You can use a bunch of macros to indicate the +// success or failure of a test. EXPECT_TRUE and EXPECT_EQ are +// examples of such macros. For a complete list, see gtest.h. +// +// +// +// In Google Test, tests are grouped into test cases. This is how we +// keep test code organized. You should put logically related tests +// into the same test case. +// +// The test case name and the test name should both be valid C++ +// identifiers. And you should not use underscore (_) in the names. +// +// Google Test guarantees that each test you define is run exactly +// once, but it makes no guarantee on the order the tests are +// executed. Therefore, you should write your tests in such a way +// that their results don't depend on their order. +// +// + + +// Tests Factorial(). + +// Tests factorial of negative numbers. +TEST(FactorialTest, Negative) { + // This test is named "Negative", and belongs to the "FactorialTest" + // test case. + EXPECT_EQ(1, Factorial(-5)); + EXPECT_EQ(1, Factorial(-1)); + EXPECT_GT(Factorial(-10), 0); + + // + // + // EXPECT_EQ(expected, actual) is the same as + // + // EXPECT_TRUE((expected) == (actual)) + // + // except that it will print both the expected value and the actual + // value when the assertion fails. This is very helpful for + // debugging. Therefore in this case EXPECT_EQ is preferred. + // + // On the other hand, EXPECT_TRUE accepts any Boolean expression, + // and is thus more general. + // + // +} + +// Tests factorial of 0. +TEST(FactorialTest, Zero) { + EXPECT_EQ(1, Factorial(0)); +} + +// Tests factorial of positive numbers. +TEST(FactorialTest, Positive) { + EXPECT_EQ(1, Factorial(1)); + EXPECT_EQ(2, Factorial(2)); + EXPECT_EQ(6, Factorial(3)); + EXPECT_EQ(40320, Factorial(8)); +} + + +// Tests IsPrime() + +// Tests negative input. +TEST(IsPrimeTest, Negative) { + // This test belongs to the IsPrimeTest test case. + + EXPECT_FALSE(IsPrime(-1)); + EXPECT_FALSE(IsPrime(-2)); + EXPECT_FALSE(IsPrime(INT_MIN)); +} + +// Tests some trivial cases. +TEST(IsPrimeTest, Trivial) { + EXPECT_FALSE(IsPrime(0)); + EXPECT_FALSE(IsPrime(1)); + EXPECT_TRUE(IsPrime(2)); + EXPECT_TRUE(IsPrime(3)); +} + +// Tests positive input. +TEST(IsPrimeTest, Positive) { + EXPECT_FALSE(IsPrime(4)); + EXPECT_TRUE(IsPrime(5)); + EXPECT_FALSE(IsPrime(6)); + EXPECT_TRUE(IsPrime(23)); +} + +// Step 3. Call RUN_ALL_TESTS() in main(). +// +// We do this by linking in src/gtest_main.cc file, which consists of +// a main() function which calls RUN_ALL_TESTS() for us. +// +// This runs all the tests you've defined, prints the result, and +// returns 0 if successful, or 1 otherwise. +// +// Did you notice that we didn't register the tests? The +// RUN_ALL_TESTS() macro magically knows about all the tests we +// defined. Isn't this convenient? diff --git a/thirdparty/protobuf-2.6.1/gtest/samples/sample2.cc b/thirdparty/protobuf-2.6.1/gtest/samples/sample2.cc new file mode 100644 index 00000000..5f763b9b --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/samples/sample2.cc @@ -0,0 +1,56 @@ +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// A sample program demonstrating using Google C++ testing framework. +// +// Author: wan@google.com (Zhanyong Wan) + +#include "sample2.h" + +#include + +// Clones a 0-terminated C string, allocating memory using new. +const char* MyString::CloneCString(const char* a_c_string) { + if (a_c_string == NULL) return NULL; + + const size_t len = strlen(a_c_string); + char* const clone = new char[ len + 1 ]; + memcpy(clone, a_c_string, len + 1); + + return clone; +} + +// Sets the 0-terminated C string this MyString object +// represents. +void MyString::Set(const char* a_c_string) { + // Makes sure this works when c_string == c_string_ + const char* const temp = MyString::CloneCString(a_c_string); + delete[] c_string_; + c_string_ = temp; +} diff --git a/thirdparty/protobuf-2.6.1/gtest/samples/sample2.h b/thirdparty/protobuf-2.6.1/gtest/samples/sample2.h new file mode 100644 index 00000000..cb485c70 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/samples/sample2.h @@ -0,0 +1,85 @@ +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// A sample program demonstrating using Google C++ testing framework. +// +// Author: wan@google.com (Zhanyong Wan) + +#ifndef GTEST_SAMPLES_SAMPLE2_H_ +#define GTEST_SAMPLES_SAMPLE2_H_ + +#include + + +// A simple string class. +class MyString { + private: + const char* c_string_; + const MyString& operator=(const MyString& rhs); + + public: + // Clones a 0-terminated C string, allocating memory using new. + static const char* CloneCString(const char* a_c_string); + + //////////////////////////////////////////////////////////// + // + // C'tors + + // The default c'tor constructs a NULL string. + MyString() : c_string_(NULL) {} + + // Constructs a MyString by cloning a 0-terminated C string. + explicit MyString(const char* a_c_string) : c_string_(NULL) { + Set(a_c_string); + } + + // Copy c'tor + MyString(const MyString& string) : c_string_(NULL) { + Set(string.c_string_); + } + + //////////////////////////////////////////////////////////// + // + // D'tor. MyString is intended to be a final class, so the d'tor + // doesn't need to be virtual. + ~MyString() { delete[] c_string_; } + + // Gets the 0-terminated C string this MyString object represents. + const char* c_string() const { return c_string_; } + + size_t Length() const { + return c_string_ == NULL ? 0 : strlen(c_string_); + } + + // Sets the 0-terminated C string this MyString object represents. + void Set(const char* c_string); +}; + + +#endif // GTEST_SAMPLES_SAMPLE2_H_ diff --git a/thirdparty/protobuf-2.6.1/gtest/samples/sample2_unittest.cc b/thirdparty/protobuf-2.6.1/gtest/samples/sample2_unittest.cc new file mode 100644 index 00000000..4fa19b71 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/samples/sample2_unittest.cc @@ -0,0 +1,109 @@ +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// A sample program demonstrating using Google C++ testing framework. +// +// Author: wan@google.com (Zhanyong Wan) + + +// This sample shows how to write a more complex unit test for a class +// that has multiple member functions. +// +// Usually, it's a good idea to have one test for each method in your +// class. You don't have to do that exactly, but it helps to keep +// your tests organized. You may also throw in additional tests as +// needed. + +#include "sample2.h" +#include "gtest/gtest.h" + +// In this example, we test the MyString class (a simple string). + +// Tests the default c'tor. +TEST(MyString, DefaultConstructor) { + const MyString s; + + // Asserts that s.c_string() returns NULL. + // + // + // + // If we write NULL instead of + // + // static_cast(NULL) + // + // in this assertion, it will generate a warning on gcc 3.4. The + // reason is that EXPECT_EQ needs to know the types of its + // arguments in order to print them when it fails. Since NULL is + // #defined as 0, the compiler will use the formatter function for + // int to print it. However, gcc thinks that NULL should be used as + // a pointer, not an int, and therefore complains. + // + // The root of the problem is C++'s lack of distinction between the + // integer number 0 and the null pointer constant. Unfortunately, + // we have to live with this fact. + // + // + EXPECT_STREQ(NULL, s.c_string()); + + EXPECT_EQ(0u, s.Length()); +} + +const char kHelloString[] = "Hello, world!"; + +// Tests the c'tor that accepts a C string. +TEST(MyString, ConstructorFromCString) { + const MyString s(kHelloString); + EXPECT_EQ(0, strcmp(s.c_string(), kHelloString)); + EXPECT_EQ(sizeof(kHelloString)/sizeof(kHelloString[0]) - 1, + s.Length()); +} + +// Tests the copy c'tor. +TEST(MyString, CopyConstructor) { + const MyString s1(kHelloString); + const MyString s2 = s1; + EXPECT_EQ(0, strcmp(s2.c_string(), kHelloString)); +} + +// Tests the Set method. +TEST(MyString, Set) { + MyString s; + + s.Set(kHelloString); + EXPECT_EQ(0, strcmp(s.c_string(), kHelloString)); + + // Set should work when the input pointer is the same as the one + // already in the MyString object. + s.Set(s.c_string()); + EXPECT_EQ(0, strcmp(s.c_string(), kHelloString)); + + // Can we set the MyString to NULL? + s.Set(NULL); + EXPECT_STREQ(NULL, s.c_string()); +} diff --git a/thirdparty/protobuf-2.6.1/gtest/samples/sample3-inl.h b/thirdparty/protobuf-2.6.1/gtest/samples/sample3-inl.h new file mode 100644 index 00000000..7e3084d6 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/samples/sample3-inl.h @@ -0,0 +1,172 @@ +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// A sample program demonstrating using Google C++ testing framework. +// +// Author: wan@google.com (Zhanyong Wan) + +#ifndef GTEST_SAMPLES_SAMPLE3_INL_H_ +#define GTEST_SAMPLES_SAMPLE3_INL_H_ + +#include + + +// Queue is a simple queue implemented as a singled-linked list. +// +// The element type must support copy constructor. +template // E is the element type +class Queue; + +// QueueNode is a node in a Queue, which consists of an element of +// type E and a pointer to the next node. +template // E is the element type +class QueueNode { + friend class Queue; + + public: + // Gets the element in this node. + const E& element() const { return element_; } + + // Gets the next node in the queue. + QueueNode* next() { return next_; } + const QueueNode* next() const { return next_; } + + private: + // Creates a node with a given element value. The next pointer is + // set to NULL. + explicit QueueNode(const E& an_element) : element_(an_element), next_(NULL) {} + + // We disable the default assignment operator and copy c'tor. + const QueueNode& operator = (const QueueNode&); + QueueNode(const QueueNode&); + + E element_; + QueueNode* next_; +}; + +template // E is the element type. +class Queue { + public: + // Creates an empty queue. + Queue() : head_(NULL), last_(NULL), size_(0) {} + + // D'tor. Clears the queue. + ~Queue() { Clear(); } + + // Clears the queue. + void Clear() { + if (size_ > 0) { + // 1. Deletes every node. + QueueNode* node = head_; + QueueNode* next = node->next(); + for (; ;) { + delete node; + node = next; + if (node == NULL) break; + next = node->next(); + } + + // 2. Resets the member variables. + head_ = last_ = NULL; + size_ = 0; + } + } + + // Gets the number of elements. + size_t Size() const { return size_; } + + // Gets the first element of the queue, or NULL if the queue is empty. + QueueNode* Head() { return head_; } + const QueueNode* Head() const { return head_; } + + // Gets the last element of the queue, or NULL if the queue is empty. + QueueNode* Last() { return last_; } + const QueueNode* Last() const { return last_; } + + // Adds an element to the end of the queue. A copy of the element is + // created using the copy constructor, and then stored in the queue. + // Changes made to the element in the queue doesn't affect the source + // object, and vice versa. + void Enqueue(const E& element) { + QueueNode* new_node = new QueueNode(element); + + if (size_ == 0) { + head_ = last_ = new_node; + size_ = 1; + } else { + last_->next_ = new_node; + last_ = new_node; + size_++; + } + } + + // Removes the head of the queue and returns it. Returns NULL if + // the queue is empty. + E* Dequeue() { + if (size_ == 0) { + return NULL; + } + + const QueueNode* const old_head = head_; + head_ = head_->next_; + size_--; + if (size_ == 0) { + last_ = NULL; + } + + E* element = new E(old_head->element()); + delete old_head; + + return element; + } + + // Applies a function/functor on each element of the queue, and + // returns the result in a new queue. The original queue is not + // affected. + template + Queue* Map(F function) const { + Queue* new_queue = new Queue(); + for (const QueueNode* node = head_; node != NULL; node = node->next_) { + new_queue->Enqueue(function(node->element())); + } + + return new_queue; + } + + private: + QueueNode* head_; // The first node of the queue. + QueueNode* last_; // The last node of the queue. + size_t size_; // The number of elements in the queue. + + // We disallow copying a queue. + Queue(const Queue&); + const Queue& operator = (const Queue&); +}; + +#endif // GTEST_SAMPLES_SAMPLE3_INL_H_ diff --git a/thirdparty/protobuf-2.6.1/gtest/samples/sample3_unittest.cc b/thirdparty/protobuf-2.6.1/gtest/samples/sample3_unittest.cc new file mode 100644 index 00000000..bf3877d0 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/samples/sample3_unittest.cc @@ -0,0 +1,151 @@ +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// A sample program demonstrating using Google C++ testing framework. +// +// Author: wan@google.com (Zhanyong Wan) + + +// In this example, we use a more advanced feature of Google Test called +// test fixture. +// +// A test fixture is a place to hold objects and functions shared by +// all tests in a test case. Using a test fixture avoids duplicating +// the test code necessary to initialize and cleanup those common +// objects for each test. It is also useful for defining sub-routines +// that your tests need to invoke a lot. +// +// +// +// The tests share the test fixture in the sense of code sharing, not +// data sharing. Each test is given its own fresh copy of the +// fixture. You cannot expect the data modified by one test to be +// passed on to another test, which is a bad idea. +// +// The reason for this design is that tests should be independent and +// repeatable. In particular, a test should not fail as the result of +// another test's failure. If one test depends on info produced by +// another test, then the two tests should really be one big test. +// +// The macros for indicating the success/failure of a test +// (EXPECT_TRUE, FAIL, etc) need to know what the current test is +// (when Google Test prints the test result, it tells you which test +// each failure belongs to). Technically, these macros invoke a +// member function of the Test class. Therefore, you cannot use them +// in a global function. That's why you should put test sub-routines +// in a test fixture. +// +// + +#include "sample3-inl.h" +#include "gtest/gtest.h" + +// To use a test fixture, derive a class from testing::Test. +class QueueTest : public testing::Test { + protected: // You should make the members protected s.t. they can be + // accessed from sub-classes. + + // virtual void SetUp() will be called before each test is run. You + // should define it if you need to initialize the varaibles. + // Otherwise, this can be skipped. + virtual void SetUp() { + q1_.Enqueue(1); + q2_.Enqueue(2); + q2_.Enqueue(3); + } + + // virtual void TearDown() will be called after each test is run. + // You should define it if there is cleanup work to do. Otherwise, + // you don't have to provide it. + // + // virtual void TearDown() { + // } + + // A helper function that some test uses. + static int Double(int n) { + return 2*n; + } + + // A helper function for testing Queue::Map(). + void MapTester(const Queue * q) { + // Creates a new queue, where each element is twice as big as the + // corresponding one in q. + const Queue * const new_q = q->Map(Double); + + // Verifies that the new queue has the same size as q. + ASSERT_EQ(q->Size(), new_q->Size()); + + // Verifies the relationship between the elements of the two queues. + for ( const QueueNode * n1 = q->Head(), * n2 = new_q->Head(); + n1 != NULL; n1 = n1->next(), n2 = n2->next() ) { + EXPECT_EQ(2 * n1->element(), n2->element()); + } + + delete new_q; + } + + // Declares the variables your tests want to use. + Queue q0_; + Queue q1_; + Queue q2_; +}; + +// When you have a test fixture, you define a test using TEST_F +// instead of TEST. + +// Tests the default c'tor. +TEST_F(QueueTest, DefaultConstructor) { + // You can access data in the test fixture here. + EXPECT_EQ(0u, q0_.Size()); +} + +// Tests Dequeue(). +TEST_F(QueueTest, Dequeue) { + int * n = q0_.Dequeue(); + EXPECT_TRUE(n == NULL); + + n = q1_.Dequeue(); + ASSERT_TRUE(n != NULL); + EXPECT_EQ(1, *n); + EXPECT_EQ(0u, q1_.Size()); + delete n; + + n = q2_.Dequeue(); + ASSERT_TRUE(n != NULL); + EXPECT_EQ(2, *n); + EXPECT_EQ(1u, q2_.Size()); + delete n; +} + +// Tests the Queue::Map() function. +TEST_F(QueueTest, Map) { + MapTester(&q0_); + MapTester(&q1_); + MapTester(&q2_); +} diff --git a/thirdparty/protobuf-2.6.1/gtest/samples/sample4.cc b/thirdparty/protobuf-2.6.1/gtest/samples/sample4.cc new file mode 100644 index 00000000..ae44bda6 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/samples/sample4.cc @@ -0,0 +1,46 @@ +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// A sample program demonstrating using Google C++ testing framework. +// +// Author: wan@google.com (Zhanyong Wan) + +#include + +#include "sample4.h" + +// Returns the current counter value, and increments it. +int Counter::Increment() { + return counter_++; +} + +// Prints the current counter value to STDOUT. +void Counter::Print() const { + printf("%d", counter_); +} diff --git a/thirdparty/protobuf-2.6.1/gtest/samples/sample4.h b/thirdparty/protobuf-2.6.1/gtest/samples/sample4.h new file mode 100644 index 00000000..cd60f0dd --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/samples/sample4.h @@ -0,0 +1,53 @@ +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// A sample program demonstrating using Google C++ testing framework. +// +// Author: wan@google.com (Zhanyong Wan) + +#ifndef GTEST_SAMPLES_SAMPLE4_H_ +#define GTEST_SAMPLES_SAMPLE4_H_ + +// A simple monotonic counter. +class Counter { + private: + int counter_; + + public: + // Creates a counter that starts at 0. + Counter() : counter_(0) {} + + // Returns the current counter value, and increments it. + int Increment(); + + // Prints the current counter value to STDOUT. + void Print() const; +}; + +#endif // GTEST_SAMPLES_SAMPLE4_H_ diff --git a/thirdparty/protobuf-2.6.1/gtest/samples/sample4_unittest.cc b/thirdparty/protobuf-2.6.1/gtest/samples/sample4_unittest.cc new file mode 100644 index 00000000..fa5afc7d --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/samples/sample4_unittest.cc @@ -0,0 +1,45 @@ +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +#include "gtest/gtest.h" +#include "sample4.h" + +// Tests the Increment() method. +TEST(Counter, Increment) { + Counter c; + + // EXPECT_EQ() evaluates its arguments exactly once, so they + // can have side effects. + + EXPECT_EQ(0, c.Increment()); + EXPECT_EQ(1, c.Increment()); + EXPECT_EQ(2, c.Increment()); +} diff --git a/thirdparty/protobuf-2.6.1/gtest/samples/sample5_unittest.cc b/thirdparty/protobuf-2.6.1/gtest/samples/sample5_unittest.cc new file mode 100644 index 00000000..43d8e577 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/samples/sample5_unittest.cc @@ -0,0 +1,199 @@ +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +// This sample teaches how to reuse a test fixture in multiple test +// cases by deriving sub-fixtures from it. +// +// When you define a test fixture, you specify the name of the test +// case that will use this fixture. Therefore, a test fixture can +// be used by only one test case. +// +// Sometimes, more than one test cases may want to use the same or +// slightly different test fixtures. For example, you may want to +// make sure that all tests for a GUI library don't leak important +// system resources like fonts and brushes. In Google Test, you do +// this by putting the shared logic in a super (as in "super class") +// test fixture, and then have each test case use a fixture derived +// from this super fixture. + +#include +#include +#include "sample3-inl.h" +#include "gtest/gtest.h" +#include "sample1.h" + +// In this sample, we want to ensure that every test finishes within +// ~5 seconds. If a test takes longer to run, we consider it a +// failure. +// +// We put the code for timing a test in a test fixture called +// "QuickTest". QuickTest is intended to be the super fixture that +// other fixtures derive from, therefore there is no test case with +// the name "QuickTest". This is OK. +// +// Later, we will derive multiple test fixtures from QuickTest. +class QuickTest : public testing::Test { + protected: + // Remember that SetUp() is run immediately before a test starts. + // This is a good place to record the start time. + virtual void SetUp() { + start_time_ = time(NULL); + } + + // TearDown() is invoked immediately after a test finishes. Here we + // check if the test was too slow. + virtual void TearDown() { + // Gets the time when the test finishes + const time_t end_time = time(NULL); + + // Asserts that the test took no more than ~5 seconds. Did you + // know that you can use assertions in SetUp() and TearDown() as + // well? + EXPECT_TRUE(end_time - start_time_ <= 5) << "The test took too long."; + } + + // The UTC time (in seconds) when the test starts + time_t start_time_; +}; + + +// We derive a fixture named IntegerFunctionTest from the QuickTest +// fixture. All tests using this fixture will be automatically +// required to be quick. +class IntegerFunctionTest : public QuickTest { + // We don't need any more logic than already in the QuickTest fixture. + // Therefore the body is empty. +}; + + +// Now we can write tests in the IntegerFunctionTest test case. + +// Tests Factorial() +TEST_F(IntegerFunctionTest, Factorial) { + // Tests factorial of negative numbers. + EXPECT_EQ(1, Factorial(-5)); + EXPECT_EQ(1, Factorial(-1)); + EXPECT_GT(Factorial(-10), 0); + + // Tests factorial of 0. + EXPECT_EQ(1, Factorial(0)); + + // Tests factorial of positive numbers. + EXPECT_EQ(1, Factorial(1)); + EXPECT_EQ(2, Factorial(2)); + EXPECT_EQ(6, Factorial(3)); + EXPECT_EQ(40320, Factorial(8)); +} + + +// Tests IsPrime() +TEST_F(IntegerFunctionTest, IsPrime) { + // Tests negative input. + EXPECT_FALSE(IsPrime(-1)); + EXPECT_FALSE(IsPrime(-2)); + EXPECT_FALSE(IsPrime(INT_MIN)); + + // Tests some trivial cases. + EXPECT_FALSE(IsPrime(0)); + EXPECT_FALSE(IsPrime(1)); + EXPECT_TRUE(IsPrime(2)); + EXPECT_TRUE(IsPrime(3)); + + // Tests positive input. + EXPECT_FALSE(IsPrime(4)); + EXPECT_TRUE(IsPrime(5)); + EXPECT_FALSE(IsPrime(6)); + EXPECT_TRUE(IsPrime(23)); +} + + +// The next test case (named "QueueTest") also needs to be quick, so +// we derive another fixture from QuickTest. +// +// The QueueTest test fixture has some logic and shared objects in +// addition to what's in QuickTest already. We define the additional +// stuff inside the body of the test fixture, as usual. +class QueueTest : public QuickTest { + protected: + virtual void SetUp() { + // First, we need to set up the super fixture (QuickTest). + QuickTest::SetUp(); + + // Second, some additional setup for this fixture. + q1_.Enqueue(1); + q2_.Enqueue(2); + q2_.Enqueue(3); + } + + // By default, TearDown() inherits the behavior of + // QuickTest::TearDown(). As we have no additional cleaning work + // for QueueTest, we omit it here. + // + // virtual void TearDown() { + // QuickTest::TearDown(); + // } + + Queue q0_; + Queue q1_; + Queue q2_; +}; + + +// Now, let's write tests using the QueueTest fixture. + +// Tests the default constructor. +TEST_F(QueueTest, DefaultConstructor) { + EXPECT_EQ(0u, q0_.Size()); +} + +// Tests Dequeue(). +TEST_F(QueueTest, Dequeue) { + int* n = q0_.Dequeue(); + EXPECT_TRUE(n == NULL); + + n = q1_.Dequeue(); + EXPECT_TRUE(n != NULL); + EXPECT_EQ(1, *n); + EXPECT_EQ(0u, q1_.Size()); + delete n; + + n = q2_.Dequeue(); + EXPECT_TRUE(n != NULL); + EXPECT_EQ(2, *n); + EXPECT_EQ(1u, q2_.Size()); + delete n; +} + +// If necessary, you can derive further test fixtures from a derived +// fixture itself. For example, you can derive another fixture from +// QueueTest. Google Test imposes no limit on how deep the hierarchy +// can be. In practice, however, you probably don't want it to be too +// deep as to be confusing. diff --git a/thirdparty/protobuf-2.6.1/gtest/samples/sample6_unittest.cc b/thirdparty/protobuf-2.6.1/gtest/samples/sample6_unittest.cc new file mode 100644 index 00000000..8f2036a5 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/samples/sample6_unittest.cc @@ -0,0 +1,224 @@ +// Copyright 2008 Google Inc. +// All Rights Reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +// This sample shows how to test common properties of multiple +// implementations of the same interface (aka interface tests). + +// The interface and its implementations are in this header. +#include "prime_tables.h" + +#include "gtest/gtest.h" + +// First, we define some factory functions for creating instances of +// the implementations. You may be able to skip this step if all your +// implementations can be constructed the same way. + +template +PrimeTable* CreatePrimeTable(); + +template <> +PrimeTable* CreatePrimeTable() { + return new OnTheFlyPrimeTable; +} + +template <> +PrimeTable* CreatePrimeTable() { + return new PreCalculatedPrimeTable(10000); +} + +// Then we define a test fixture class template. +template +class PrimeTableTest : public testing::Test { + protected: + // The ctor calls the factory function to create a prime table + // implemented by T. + PrimeTableTest() : table_(CreatePrimeTable()) {} + + virtual ~PrimeTableTest() { delete table_; } + + // Note that we test an implementation via the base interface + // instead of the actual implementation class. This is important + // for keeping the tests close to the real world scenario, where the + // implementation is invoked via the base interface. It avoids + // got-yas where the implementation class has a method that shadows + // a method with the same name (but slightly different argument + // types) in the base interface, for example. + PrimeTable* const table_; +}; + +#if GTEST_HAS_TYPED_TEST + +using testing::Types; + +// Google Test offers two ways for reusing tests for different types. +// The first is called "typed tests". You should use it if you +// already know *all* the types you are gonna exercise when you write +// the tests. + +// To write a typed test case, first use +// +// TYPED_TEST_CASE(TestCaseName, TypeList); +// +// to declare it and specify the type parameters. As with TEST_F, +// TestCaseName must match the test fixture name. + +// The list of types we want to test. +typedef Types Implementations; + +TYPED_TEST_CASE(PrimeTableTest, Implementations); + +// Then use TYPED_TEST(TestCaseName, TestName) to define a typed test, +// similar to TEST_F. +TYPED_TEST(PrimeTableTest, ReturnsFalseForNonPrimes) { + // Inside the test body, you can refer to the type parameter by + // TypeParam, and refer to the fixture class by TestFixture. We + // don't need them in this example. + + // Since we are in the template world, C++ requires explicitly + // writing 'this->' when referring to members of the fixture class. + // This is something you have to learn to live with. + EXPECT_FALSE(this->table_->IsPrime(-5)); + EXPECT_FALSE(this->table_->IsPrime(0)); + EXPECT_FALSE(this->table_->IsPrime(1)); + EXPECT_FALSE(this->table_->IsPrime(4)); + EXPECT_FALSE(this->table_->IsPrime(6)); + EXPECT_FALSE(this->table_->IsPrime(100)); +} + +TYPED_TEST(PrimeTableTest, ReturnsTrueForPrimes) { + EXPECT_TRUE(this->table_->IsPrime(2)); + EXPECT_TRUE(this->table_->IsPrime(3)); + EXPECT_TRUE(this->table_->IsPrime(5)); + EXPECT_TRUE(this->table_->IsPrime(7)); + EXPECT_TRUE(this->table_->IsPrime(11)); + EXPECT_TRUE(this->table_->IsPrime(131)); +} + +TYPED_TEST(PrimeTableTest, CanGetNextPrime) { + EXPECT_EQ(2, this->table_->GetNextPrime(0)); + EXPECT_EQ(3, this->table_->GetNextPrime(2)); + EXPECT_EQ(5, this->table_->GetNextPrime(3)); + EXPECT_EQ(7, this->table_->GetNextPrime(5)); + EXPECT_EQ(11, this->table_->GetNextPrime(7)); + EXPECT_EQ(131, this->table_->GetNextPrime(128)); +} + +// That's it! Google Test will repeat each TYPED_TEST for each type +// in the type list specified in TYPED_TEST_CASE. Sit back and be +// happy that you don't have to define them multiple times. + +#endif // GTEST_HAS_TYPED_TEST + +#if GTEST_HAS_TYPED_TEST_P + +using testing::Types; + +// Sometimes, however, you don't yet know all the types that you want +// to test when you write the tests. For example, if you are the +// author of an interface and expect other people to implement it, you +// might want to write a set of tests to make sure each implementation +// conforms to some basic requirements, but you don't know what +// implementations will be written in the future. +// +// How can you write the tests without committing to the type +// parameters? That's what "type-parameterized tests" can do for you. +// It is a bit more involved than typed tests, but in return you get a +// test pattern that can be reused in many contexts, which is a big +// win. Here's how you do it: + +// First, define a test fixture class template. Here we just reuse +// the PrimeTableTest fixture defined earlier: + +template +class PrimeTableTest2 : public PrimeTableTest { +}; + +// Then, declare the test case. The argument is the name of the test +// fixture, and also the name of the test case (as usual). The _P +// suffix is for "parameterized" or "pattern". +TYPED_TEST_CASE_P(PrimeTableTest2); + +// Next, use TYPED_TEST_P(TestCaseName, TestName) to define a test, +// similar to what you do with TEST_F. +TYPED_TEST_P(PrimeTableTest2, ReturnsFalseForNonPrimes) { + EXPECT_FALSE(this->table_->IsPrime(-5)); + EXPECT_FALSE(this->table_->IsPrime(0)); + EXPECT_FALSE(this->table_->IsPrime(1)); + EXPECT_FALSE(this->table_->IsPrime(4)); + EXPECT_FALSE(this->table_->IsPrime(6)); + EXPECT_FALSE(this->table_->IsPrime(100)); +} + +TYPED_TEST_P(PrimeTableTest2, ReturnsTrueForPrimes) { + EXPECT_TRUE(this->table_->IsPrime(2)); + EXPECT_TRUE(this->table_->IsPrime(3)); + EXPECT_TRUE(this->table_->IsPrime(5)); + EXPECT_TRUE(this->table_->IsPrime(7)); + EXPECT_TRUE(this->table_->IsPrime(11)); + EXPECT_TRUE(this->table_->IsPrime(131)); +} + +TYPED_TEST_P(PrimeTableTest2, CanGetNextPrime) { + EXPECT_EQ(2, this->table_->GetNextPrime(0)); + EXPECT_EQ(3, this->table_->GetNextPrime(2)); + EXPECT_EQ(5, this->table_->GetNextPrime(3)); + EXPECT_EQ(7, this->table_->GetNextPrime(5)); + EXPECT_EQ(11, this->table_->GetNextPrime(7)); + EXPECT_EQ(131, this->table_->GetNextPrime(128)); +} + +// Type-parameterized tests involve one extra step: you have to +// enumerate the tests you defined: +REGISTER_TYPED_TEST_CASE_P( + PrimeTableTest2, // The first argument is the test case name. + // The rest of the arguments are the test names. + ReturnsFalseForNonPrimes, ReturnsTrueForPrimes, CanGetNextPrime); + +// At this point the test pattern is done. However, you don't have +// any real test yet as you haven't said which types you want to run +// the tests with. + +// To turn the abstract test pattern into real tests, you instantiate +// it with a list of types. Usually the test pattern will be defined +// in a .h file, and anyone can #include and instantiate it. You can +// even instantiate it more than once in the same program. To tell +// different instances apart, you give each of them a name, which will +// become part of the test case name and can be used in test filters. + +// The list of types we want to test. Note that it doesn't have to be +// defined at the time we write the TYPED_TEST_P()s. +typedef Types + PrimeTableImplementations; +INSTANTIATE_TYPED_TEST_CASE_P(OnTheFlyAndPreCalculated, // Instance name + PrimeTableTest2, // Test case name + PrimeTableImplementations); // Type list + +#endif // GTEST_HAS_TYPED_TEST_P diff --git a/thirdparty/protobuf-2.6.1/gtest/samples/sample7_unittest.cc b/thirdparty/protobuf-2.6.1/gtest/samples/sample7_unittest.cc new file mode 100644 index 00000000..1b651a21 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/samples/sample7_unittest.cc @@ -0,0 +1,130 @@ +// Copyright 2008 Google Inc. +// All Rights Reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: vladl@google.com (Vlad Losev) + +// This sample shows how to test common properties of multiple +// implementations of an interface (aka interface tests) using +// value-parameterized tests. Each test in the test case has +// a parameter that is an interface pointer to an implementation +// tested. + +// The interface and its implementations are in this header. +#include "prime_tables.h" + +#include "gtest/gtest.h" + +#if GTEST_HAS_PARAM_TEST + +using ::testing::TestWithParam; +using ::testing::Values; + +// As a general rule, to prevent a test from affecting the tests that come +// after it, you should create and destroy the tested objects for each test +// instead of reusing them. In this sample we will define a simple factory +// function for PrimeTable objects. We will instantiate objects in test's +// SetUp() method and delete them in TearDown() method. +typedef PrimeTable* CreatePrimeTableFunc(); + +PrimeTable* CreateOnTheFlyPrimeTable() { + return new OnTheFlyPrimeTable(); +} + +template +PrimeTable* CreatePreCalculatedPrimeTable() { + return new PreCalculatedPrimeTable(max_precalculated); +} + +// Inside the test body, fixture constructor, SetUp(), and TearDown() you +// can refer to the test parameter by GetParam(). In this case, the test +// parameter is a factory function which we call in fixture's SetUp() to +// create and store an instance of PrimeTable. +class PrimeTableTest : public TestWithParam { + public: + virtual ~PrimeTableTest() { delete table_; } + virtual void SetUp() { table_ = (*GetParam())(); } + virtual void TearDown() { + delete table_; + table_ = NULL; + } + + protected: + PrimeTable* table_; +}; + +TEST_P(PrimeTableTest, ReturnsFalseForNonPrimes) { + EXPECT_FALSE(table_->IsPrime(-5)); + EXPECT_FALSE(table_->IsPrime(0)); + EXPECT_FALSE(table_->IsPrime(1)); + EXPECT_FALSE(table_->IsPrime(4)); + EXPECT_FALSE(table_->IsPrime(6)); + EXPECT_FALSE(table_->IsPrime(100)); +} + +TEST_P(PrimeTableTest, ReturnsTrueForPrimes) { + EXPECT_TRUE(table_->IsPrime(2)); + EXPECT_TRUE(table_->IsPrime(3)); + EXPECT_TRUE(table_->IsPrime(5)); + EXPECT_TRUE(table_->IsPrime(7)); + EXPECT_TRUE(table_->IsPrime(11)); + EXPECT_TRUE(table_->IsPrime(131)); +} + +TEST_P(PrimeTableTest, CanGetNextPrime) { + EXPECT_EQ(2, table_->GetNextPrime(0)); + EXPECT_EQ(3, table_->GetNextPrime(2)); + EXPECT_EQ(5, table_->GetNextPrime(3)); + EXPECT_EQ(7, table_->GetNextPrime(5)); + EXPECT_EQ(11, table_->GetNextPrime(7)); + EXPECT_EQ(131, table_->GetNextPrime(128)); +} + +// In order to run value-parameterized tests, you need to instantiate them, +// or bind them to a list of values which will be used as test parameters. +// You can instantiate them in a different translation module, or even +// instantiate them several times. +// +// Here, we instantiate our tests with a list of two PrimeTable object +// factory functions: +INSTANTIATE_TEST_CASE_P( + OnTheFlyAndPreCalculated, + PrimeTableTest, + Values(&CreateOnTheFlyPrimeTable, &CreatePreCalculatedPrimeTable<1000>)); + +#else + +// Google Test may not support value-parameterized tests with some +// compilers. If we use conditional compilation to compile out all +// code referring to the gtest_main library, MSVC linker will not link +// that library at all and consequently complain about missing entry +// point defined in that library (fatal error LNK1561: entry point +// must be defined). This dummy test keeps gtest_main linked in. +TEST(DummyTest, ValueParameterizedTestsAreNotSupportedOnThisPlatform) {} + +#endif // GTEST_HAS_PARAM_TEST diff --git a/thirdparty/protobuf-2.6.1/gtest/samples/sample8_unittest.cc b/thirdparty/protobuf-2.6.1/gtest/samples/sample8_unittest.cc new file mode 100644 index 00000000..5ad2e2c9 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/samples/sample8_unittest.cc @@ -0,0 +1,173 @@ +// Copyright 2008 Google Inc. +// All Rights Reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: vladl@google.com (Vlad Losev) + +// This sample shows how to test code relying on some global flag variables. +// Combine() helps with generating all possible combinations of such flags, +// and each test is given one combination as a parameter. + +// Use class definitions to test from this header. +#include "prime_tables.h" + +#include "gtest/gtest.h" + +#if GTEST_HAS_COMBINE + +// Suppose we want to introduce a new, improved implementation of PrimeTable +// which combines speed of PrecalcPrimeTable and versatility of +// OnTheFlyPrimeTable (see prime_tables.h). Inside it instantiates both +// PrecalcPrimeTable and OnTheFlyPrimeTable and uses the one that is more +// appropriate under the circumstances. But in low memory conditions, it can be +// told to instantiate without PrecalcPrimeTable instance at all and use only +// OnTheFlyPrimeTable. +class HybridPrimeTable : public PrimeTable { + public: + HybridPrimeTable(bool force_on_the_fly, int max_precalculated) + : on_the_fly_impl_(new OnTheFlyPrimeTable), + precalc_impl_(force_on_the_fly ? NULL : + new PreCalculatedPrimeTable(max_precalculated)), + max_precalculated_(max_precalculated) {} + virtual ~HybridPrimeTable() { + delete on_the_fly_impl_; + delete precalc_impl_; + } + + virtual bool IsPrime(int n) const { + if (precalc_impl_ != NULL && n < max_precalculated_) + return precalc_impl_->IsPrime(n); + else + return on_the_fly_impl_->IsPrime(n); + } + + virtual int GetNextPrime(int p) const { + int next_prime = -1; + if (precalc_impl_ != NULL && p < max_precalculated_) + next_prime = precalc_impl_->GetNextPrime(p); + + return next_prime != -1 ? next_prime : on_the_fly_impl_->GetNextPrime(p); + } + + private: + OnTheFlyPrimeTable* on_the_fly_impl_; + PreCalculatedPrimeTable* precalc_impl_; + int max_precalculated_; +}; + +using ::testing::TestWithParam; +using ::testing::Bool; +using ::testing::Values; +using ::testing::Combine; + +// To test all code paths for HybridPrimeTable we must test it with numbers +// both within and outside PreCalculatedPrimeTable's capacity and also with +// PreCalculatedPrimeTable disabled. We do this by defining fixture which will +// accept different combinations of parameters for instantiating a +// HybridPrimeTable instance. +class PrimeTableTest : public TestWithParam< ::std::tr1::tuple > { + protected: + virtual void SetUp() { + // This can be written as + // + // bool force_on_the_fly; + // int max_precalculated; + // tie(force_on_the_fly, max_precalculated) = GetParam(); + // + // once the Google C++ Style Guide allows use of ::std::tr1::tie. + // + bool force_on_the_fly = ::std::tr1::get<0>(GetParam()); + int max_precalculated = ::std::tr1::get<1>(GetParam()); + table_ = new HybridPrimeTable(force_on_the_fly, max_precalculated); + } + virtual void TearDown() { + delete table_; + table_ = NULL; + } + HybridPrimeTable* table_; +}; + +TEST_P(PrimeTableTest, ReturnsFalseForNonPrimes) { + // Inside the test body, you can refer to the test parameter by GetParam(). + // In this case, the test parameter is a PrimeTable interface pointer which + // we can use directly. + // Please note that you can also save it in the fixture's SetUp() method + // or constructor and use saved copy in the tests. + + EXPECT_FALSE(table_->IsPrime(-5)); + EXPECT_FALSE(table_->IsPrime(0)); + EXPECT_FALSE(table_->IsPrime(1)); + EXPECT_FALSE(table_->IsPrime(4)); + EXPECT_FALSE(table_->IsPrime(6)); + EXPECT_FALSE(table_->IsPrime(100)); +} + +TEST_P(PrimeTableTest, ReturnsTrueForPrimes) { + EXPECT_TRUE(table_->IsPrime(2)); + EXPECT_TRUE(table_->IsPrime(3)); + EXPECT_TRUE(table_->IsPrime(5)); + EXPECT_TRUE(table_->IsPrime(7)); + EXPECT_TRUE(table_->IsPrime(11)); + EXPECT_TRUE(table_->IsPrime(131)); +} + +TEST_P(PrimeTableTest, CanGetNextPrime) { + EXPECT_EQ(2, table_->GetNextPrime(0)); + EXPECT_EQ(3, table_->GetNextPrime(2)); + EXPECT_EQ(5, table_->GetNextPrime(3)); + EXPECT_EQ(7, table_->GetNextPrime(5)); + EXPECT_EQ(11, table_->GetNextPrime(7)); + EXPECT_EQ(131, table_->GetNextPrime(128)); +} + +// In order to run value-parameterized tests, you need to instantiate them, +// or bind them to a list of values which will be used as test parameters. +// You can instantiate them in a different translation module, or even +// instantiate them several times. +// +// Here, we instantiate our tests with a list of parameters. We must combine +// all variations of the boolean flag suppressing PrecalcPrimeTable and some +// meaningful values for tests. We choose a small value (1), and a value that +// will put some of the tested numbers beyond the capability of the +// PrecalcPrimeTable instance and some inside it (10). Combine will produce all +// possible combinations. +INSTANTIATE_TEST_CASE_P(MeaningfulTestParameters, + PrimeTableTest, + Combine(Bool(), Values(1, 10))); + +#else + +// Google Test may not support Combine() with some compilers. If we +// use conditional compilation to compile out all code referring to +// the gtest_main library, MSVC linker will not link that library at +// all and consequently complain about missing entry point defined in +// that library (fatal error LNK1561: entry point must be +// defined). This dummy test keeps gtest_main linked in. +TEST(DummyTest, CombineIsNotSupportedOnThisPlatform) {} + +#endif // GTEST_HAS_COMBINE diff --git a/thirdparty/protobuf-2.6.1/gtest/samples/sample9_unittest.cc b/thirdparty/protobuf-2.6.1/gtest/samples/sample9_unittest.cc new file mode 100644 index 00000000..b2e2079b --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/samples/sample9_unittest.cc @@ -0,0 +1,160 @@ +// Copyright 2009 Google Inc. All Rights Reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: vladl@google.com (Vlad Losev) + +// This sample shows how to use Google Test listener API to implement +// an alternative console output and how to use the UnitTest reflection API +// to enumerate test cases and tests and to inspect their results. + +#include + +#include "gtest/gtest.h" + +using ::testing::EmptyTestEventListener; +using ::testing::InitGoogleTest; +using ::testing::Test; +using ::testing::TestCase; +using ::testing::TestEventListeners; +using ::testing::TestInfo; +using ::testing::TestPartResult; +using ::testing::UnitTest; + +namespace { + +// Provides alternative output mode which produces minimal amount of +// information about tests. +class TersePrinter : public EmptyTestEventListener { + private: + // Called before any test activity starts. + virtual void OnTestProgramStart(const UnitTest& /* unit_test */) {} + + // Called after all test activities have ended. + virtual void OnTestProgramEnd(const UnitTest& unit_test) { + fprintf(stdout, "TEST %s\n", unit_test.Passed() ? "PASSED" : "FAILED"); + fflush(stdout); + } + + // Called before a test starts. + virtual void OnTestStart(const TestInfo& test_info) { + fprintf(stdout, + "*** Test %s.%s starting.\n", + test_info.test_case_name(), + test_info.name()); + fflush(stdout); + } + + // Called after a failed assertion or a SUCCEED() invocation. + virtual void OnTestPartResult(const TestPartResult& test_part_result) { + fprintf(stdout, + "%s in %s:%d\n%s\n", + test_part_result.failed() ? "*** Failure" : "Success", + test_part_result.file_name(), + test_part_result.line_number(), + test_part_result.summary()); + fflush(stdout); + } + + // Called after a test ends. + virtual void OnTestEnd(const TestInfo& test_info) { + fprintf(stdout, + "*** Test %s.%s ending.\n", + test_info.test_case_name(), + test_info.name()); + fflush(stdout); + } +}; // class TersePrinter + +TEST(CustomOutputTest, PrintsMessage) { + printf("Printing something from the test body...\n"); +} + +TEST(CustomOutputTest, Succeeds) { + SUCCEED() << "SUCCEED() has been invoked from here"; +} + +TEST(CustomOutputTest, Fails) { + EXPECT_EQ(1, 2) + << "This test fails in order to demonstrate alternative failure messages"; +} + +} // namespace + +int main(int argc, char **argv) { + InitGoogleTest(&argc, argv); + + bool terse_output = false; + if (argc > 1 && strcmp(argv[1], "--terse_output") == 0 ) + terse_output = true; + else + printf("%s\n", "Run this program with --terse_output to change the way " + "it prints its output."); + + UnitTest& unit_test = *UnitTest::GetInstance(); + + // If we are given the --terse_output command line flag, suppresses the + // standard output and attaches own result printer. + if (terse_output) { + TestEventListeners& listeners = unit_test.listeners(); + + // Removes the default console output listener from the list so it will + // not receive events from Google Test and won't print any output. Since + // this operation transfers ownership of the listener to the caller we + // have to delete it as well. + delete listeners.Release(listeners.default_result_printer()); + + // Adds the custom output listener to the list. It will now receive + // events from Google Test and print the alternative output. We don't + // have to worry about deleting it since Google Test assumes ownership + // over it after adding it to the list. + listeners.Append(new TersePrinter); + } + int ret_val = RUN_ALL_TESTS(); + + // This is an example of using the UnitTest reflection API to inspect test + // results. Here we discount failures from the tests we expected to fail. + int unexpectedly_failed_tests = 0; + for (int i = 0; i < unit_test.total_test_case_count(); ++i) { + const TestCase& test_case = *unit_test.GetTestCase(i); + for (int j = 0; j < test_case.total_test_count(); ++j) { + const TestInfo& test_info = *test_case.GetTestInfo(j); + // Counts failed tests that were not meant to fail (those without + // 'Fails' in the name). + if (test_info.result()->Failed() && + strcmp(test_info.name(), "Fails") != 0) { + unexpectedly_failed_tests++; + } + } + } + + // Test that were meant to fail should not affect the test program outcome. + if (unexpectedly_failed_tests == 0) + ret_val = 0; + + return ret_val; +} diff --git a/thirdparty/protobuf-2.6.1/gtest/scripts/fuse_gtest_files.py b/thirdparty/protobuf-2.6.1/gtest/scripts/fuse_gtest_files.py new file mode 100644 index 00000000..57ef72f0 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/scripts/fuse_gtest_files.py @@ -0,0 +1,250 @@ +#!/usr/bin/env python +# +# Copyright 2009, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""fuse_gtest_files.py v0.2.0 +Fuses Google Test source code into a .h file and a .cc file. + +SYNOPSIS + fuse_gtest_files.py [GTEST_ROOT_DIR] OUTPUT_DIR + + Scans GTEST_ROOT_DIR for Google Test source code, and generates + two files: OUTPUT_DIR/gtest/gtest.h and OUTPUT_DIR/gtest/gtest-all.cc. + Then you can build your tests by adding OUTPUT_DIR to the include + search path and linking with OUTPUT_DIR/gtest/gtest-all.cc. These + two files contain everything you need to use Google Test. Hence + you can "install" Google Test by copying them to wherever you want. + + GTEST_ROOT_DIR can be omitted and defaults to the parent + directory of the directory holding this script. + +EXAMPLES + ./fuse_gtest_files.py fused_gtest + ./fuse_gtest_files.py path/to/unpacked/gtest fused_gtest + +This tool is experimental. In particular, it assumes that there is no +conditional inclusion of Google Test headers. Please report any +problems to googletestframework@googlegroups.com. You can read +http://code.google.com/p/googletest/wiki/GoogleTestAdvancedGuide for +more information. +""" + +__author__ = 'wan@google.com (Zhanyong Wan)' + +import os +import re +import sets +import sys + +# We assume that this file is in the scripts/ directory in the Google +# Test root directory. +DEFAULT_GTEST_ROOT_DIR = os.path.join(os.path.dirname(__file__), '..') + +# Regex for matching '#include "gtest/..."'. +INCLUDE_GTEST_FILE_REGEX = re.compile(r'^\s*#\s*include\s*"(gtest/.+)"') + +# Regex for matching '#include "src/..."'. +INCLUDE_SRC_FILE_REGEX = re.compile(r'^\s*#\s*include\s*"(src/.+)"') + +# Where to find the source seed files. +GTEST_H_SEED = 'include/gtest/gtest.h' +GTEST_SPI_H_SEED = 'include/gtest/gtest-spi.h' +GTEST_ALL_CC_SEED = 'src/gtest-all.cc' + +# Where to put the generated files. +GTEST_H_OUTPUT = 'gtest/gtest.h' +GTEST_ALL_CC_OUTPUT = 'gtest/gtest-all.cc' + + +def VerifyFileExists(directory, relative_path): + """Verifies that the given file exists; aborts on failure. + + relative_path is the file path relative to the given directory. + """ + + if not os.path.isfile(os.path.join(directory, relative_path)): + print 'ERROR: Cannot find %s in directory %s.' % (relative_path, + directory) + print ('Please either specify a valid project root directory ' + 'or omit it on the command line.') + sys.exit(1) + + +def ValidateGTestRootDir(gtest_root): + """Makes sure gtest_root points to a valid gtest root directory. + + The function aborts the program on failure. + """ + + VerifyFileExists(gtest_root, GTEST_H_SEED) + VerifyFileExists(gtest_root, GTEST_ALL_CC_SEED) + + +def VerifyOutputFile(output_dir, relative_path): + """Verifies that the given output file path is valid. + + relative_path is relative to the output_dir directory. + """ + + # Makes sure the output file either doesn't exist or can be overwritten. + output_file = os.path.join(output_dir, relative_path) + if os.path.exists(output_file): + # TODO(wan@google.com): The following user-interaction doesn't + # work with automated processes. We should provide a way for the + # Makefile to force overwriting the files. + print ('%s already exists in directory %s - overwrite it? (y/N) ' % + (relative_path, output_dir)) + answer = sys.stdin.readline().strip() + if answer not in ['y', 'Y']: + print 'ABORTED.' + sys.exit(1) + + # Makes sure the directory holding the output file exists; creates + # it and all its ancestors if necessary. + parent_directory = os.path.dirname(output_file) + if not os.path.isdir(parent_directory): + os.makedirs(parent_directory) + + +def ValidateOutputDir(output_dir): + """Makes sure output_dir points to a valid output directory. + + The function aborts the program on failure. + """ + + VerifyOutputFile(output_dir, GTEST_H_OUTPUT) + VerifyOutputFile(output_dir, GTEST_ALL_CC_OUTPUT) + + +def FuseGTestH(gtest_root, output_dir): + """Scans folder gtest_root to generate gtest/gtest.h in output_dir.""" + + output_file = file(os.path.join(output_dir, GTEST_H_OUTPUT), 'w') + processed_files = sets.Set() # Holds all gtest headers we've processed. + + def ProcessFile(gtest_header_path): + """Processes the given gtest header file.""" + + # We don't process the same header twice. + if gtest_header_path in processed_files: + return + + processed_files.add(gtest_header_path) + + # Reads each line in the given gtest header. + for line in file(os.path.join(gtest_root, gtest_header_path), 'r'): + m = INCLUDE_GTEST_FILE_REGEX.match(line) + if m: + # It's '#include "gtest/..."' - let's process it recursively. + ProcessFile('include/' + m.group(1)) + else: + # Otherwise we copy the line unchanged to the output file. + output_file.write(line) + + ProcessFile(GTEST_H_SEED) + output_file.close() + + +def FuseGTestAllCcToFile(gtest_root, output_file): + """Scans folder gtest_root to generate gtest/gtest-all.cc in output_file.""" + + processed_files = sets.Set() + + def ProcessFile(gtest_source_file): + """Processes the given gtest source file.""" + + # We don't process the same #included file twice. + if gtest_source_file in processed_files: + return + + processed_files.add(gtest_source_file) + + # Reads each line in the given gtest source file. + for line in file(os.path.join(gtest_root, gtest_source_file), 'r'): + m = INCLUDE_GTEST_FILE_REGEX.match(line) + if m: + if 'include/' + m.group(1) == GTEST_SPI_H_SEED: + # It's '#include "gtest/gtest-spi.h"'. This file is not + # #included by "gtest/gtest.h", so we need to process it. + ProcessFile(GTEST_SPI_H_SEED) + else: + # It's '#include "gtest/foo.h"' where foo is not gtest-spi. + # We treat it as '#include "gtest/gtest.h"', as all other + # gtest headers are being fused into gtest.h and cannot be + # #included directly. + + # There is no need to #include "gtest/gtest.h" more than once. + if not GTEST_H_SEED in processed_files: + processed_files.add(GTEST_H_SEED) + output_file.write('#include "%s"\n' % (GTEST_H_OUTPUT,)) + else: + m = INCLUDE_SRC_FILE_REGEX.match(line) + if m: + # It's '#include "src/foo"' - let's process it recursively. + ProcessFile(m.group(1)) + else: + output_file.write(line) + + ProcessFile(GTEST_ALL_CC_SEED) + + +def FuseGTestAllCc(gtest_root, output_dir): + """Scans folder gtest_root to generate gtest/gtest-all.cc in output_dir.""" + + output_file = file(os.path.join(output_dir, GTEST_ALL_CC_OUTPUT), 'w') + FuseGTestAllCcToFile(gtest_root, output_file) + output_file.close() + + +def FuseGTest(gtest_root, output_dir): + """Fuses gtest.h and gtest-all.cc.""" + + ValidateGTestRootDir(gtest_root) + ValidateOutputDir(output_dir) + + FuseGTestH(gtest_root, output_dir) + FuseGTestAllCc(gtest_root, output_dir) + + +def main(): + argc = len(sys.argv) + if argc == 2: + # fuse_gtest_files.py OUTPUT_DIR + FuseGTest(DEFAULT_GTEST_ROOT_DIR, sys.argv[1]) + elif argc == 3: + # fuse_gtest_files.py GTEST_ROOT_DIR OUTPUT_DIR + FuseGTest(sys.argv[1], sys.argv[2]) + else: + print __doc__ + sys.exit(1) + + +if __name__ == '__main__': + main() diff --git a/thirdparty/protobuf-2.6.1/gtest/scripts/gen_gtest_pred_impl.py b/thirdparty/protobuf-2.6.1/gtest/scripts/gen_gtest_pred_impl.py new file mode 100644 index 00000000..3e7ab042 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/scripts/gen_gtest_pred_impl.py @@ -0,0 +1,730 @@ +#!/usr/bin/env python +# +# Copyright 2006, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""gen_gtest_pred_impl.py v0.1 + +Generates the implementation of Google Test predicate assertions and +accompanying tests. + +Usage: + + gen_gtest_pred_impl.py MAX_ARITY + +where MAX_ARITY is a positive integer. + +The command generates the implementation of up-to MAX_ARITY-ary +predicate assertions, and writes it to file gtest_pred_impl.h in the +directory where the script is. It also generates the accompanying +unit test in file gtest_pred_impl_unittest.cc. +""" + +__author__ = 'wan@google.com (Zhanyong Wan)' + +import os +import sys +import time + +# Where this script is. +SCRIPT_DIR = os.path.dirname(sys.argv[0]) + +# Where to store the generated header. +HEADER = os.path.join(SCRIPT_DIR, '../include/gtest/gtest_pred_impl.h') + +# Where to store the generated unit test. +UNIT_TEST = os.path.join(SCRIPT_DIR, '../test/gtest_pred_impl_unittest.cc') + + +def HeaderPreamble(n): + """Returns the preamble for the header file. + + Args: + n: the maximum arity of the predicate macros to be generated. + """ + + # A map that defines the values used in the preamble template. + DEFS = { + 'today' : time.strftime('%m/%d/%Y'), + 'year' : time.strftime('%Y'), + 'command' : '%s %s' % (os.path.basename(sys.argv[0]), n), + 'n' : n + } + + return ( +"""// Copyright 2006, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// This file is AUTOMATICALLY GENERATED on %(today)s by command +// '%(command)s'. DO NOT EDIT BY HAND! +// +// Implements a family of generic predicate assertion macros. + +#ifndef GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_ +#define GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_ + +// Makes sure this header is not included before gtest.h. +#ifndef GTEST_INCLUDE_GTEST_GTEST_H_ +# error Do not include gtest_pred_impl.h directly. Include gtest.h instead. +#endif // GTEST_INCLUDE_GTEST_GTEST_H_ + +// This header implements a family of generic predicate assertion +// macros: +// +// ASSERT_PRED_FORMAT1(pred_format, v1) +// ASSERT_PRED_FORMAT2(pred_format, v1, v2) +// ... +// +// where pred_format is a function or functor that takes n (in the +// case of ASSERT_PRED_FORMATn) values and their source expression +// text, and returns a testing::AssertionResult. See the definition +// of ASSERT_EQ in gtest.h for an example. +// +// If you don't care about formatting, you can use the more +// restrictive version: +// +// ASSERT_PRED1(pred, v1) +// ASSERT_PRED2(pred, v1, v2) +// ... +// +// where pred is an n-ary function or functor that returns bool, +// and the values v1, v2, ..., must support the << operator for +// streaming to std::ostream. +// +// We also define the EXPECT_* variations. +// +// For now we only support predicates whose arity is at most %(n)s. +// Please email googletestframework@googlegroups.com if you need +// support for higher arities. + +// GTEST_ASSERT_ is the basic statement to which all of the assertions +// in this file reduce. Don't use this in your code. + +#define GTEST_ASSERT_(expression, on_failure) \\ + GTEST_AMBIGUOUS_ELSE_BLOCKER_ \\ + if (const ::testing::AssertionResult gtest_ar = (expression)) \\ + ; \\ + else \\ + on_failure(gtest_ar.failure_message()) +""" % DEFS) + + +def Arity(n): + """Returns the English name of the given arity.""" + + if n < 0: + return None + elif n <= 3: + return ['nullary', 'unary', 'binary', 'ternary'][n] + else: + return '%s-ary' % n + + +def Title(word): + """Returns the given word in title case. The difference between + this and string's title() method is that Title('4-ary') is '4-ary' + while '4-ary'.title() is '4-Ary'.""" + + return word[0].upper() + word[1:] + + +def OneTo(n): + """Returns the list [1, 2, 3, ..., n].""" + + return range(1, n + 1) + + +def Iter(n, format, sep=''): + """Given a positive integer n, a format string that contains 0 or + more '%s' format specs, and optionally a separator string, returns + the join of n strings, each formatted with the format string on an + iterator ranged from 1 to n. + + Example: + + Iter(3, 'v%s', sep=', ') returns 'v1, v2, v3'. + """ + + # How many '%s' specs are in format? + spec_count = len(format.split('%s')) - 1 + return sep.join([format % (spec_count * (i,)) for i in OneTo(n)]) + + +def ImplementationForArity(n): + """Returns the implementation of n-ary predicate assertions.""" + + # A map the defines the values used in the implementation template. + DEFS = { + 'n' : str(n), + 'vs' : Iter(n, 'v%s', sep=', '), + 'vts' : Iter(n, '#v%s', sep=', '), + 'arity' : Arity(n), + 'Arity' : Title(Arity(n)) + } + + impl = """ + +// Helper function for implementing {EXPECT|ASSERT}_PRED%(n)s. Don't use +// this in your code. +template +AssertionResult AssertPred%(n)sHelper(const char* pred_text""" % DEFS + + impl += Iter(n, """, + const char* e%s""") + + impl += """, + Pred pred""" + + impl += Iter(n, """, + const T%s& v%s""") + + impl += """) { + if (pred(%(vs)s)) return AssertionSuccess(); + +""" % DEFS + + impl += ' return AssertionFailure() << pred_text << "("' + + impl += Iter(n, """ + << e%s""", sep=' << ", "') + + impl += ' << ") evaluates to false, where"' + + impl += Iter(n, """ + << "\\n" << e%s << " evaluates to " << v%s""") + + impl += """; +} + +// Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT%(n)s. +// Don't use this in your code. +#define GTEST_PRED_FORMAT%(n)s_(pred_format, %(vs)s, on_failure)\\ + GTEST_ASSERT_(pred_format(%(vts)s, %(vs)s), \\ + on_failure) + +// Internal macro for implementing {EXPECT|ASSERT}_PRED%(n)s. Don't use +// this in your code. +#define GTEST_PRED%(n)s_(pred, %(vs)s, on_failure)\\ + GTEST_ASSERT_(::testing::AssertPred%(n)sHelper(#pred""" % DEFS + + impl += Iter(n, """, \\ + #v%s""") + + impl += """, \\ + pred""" + + impl += Iter(n, """, \\ + v%s""") + + impl += """), on_failure) + +// %(Arity)s predicate assertion macros. +#define EXPECT_PRED_FORMAT%(n)s(pred_format, %(vs)s) \\ + GTEST_PRED_FORMAT%(n)s_(pred_format, %(vs)s, GTEST_NONFATAL_FAILURE_) +#define EXPECT_PRED%(n)s(pred, %(vs)s) \\ + GTEST_PRED%(n)s_(pred, %(vs)s, GTEST_NONFATAL_FAILURE_) +#define ASSERT_PRED_FORMAT%(n)s(pred_format, %(vs)s) \\ + GTEST_PRED_FORMAT%(n)s_(pred_format, %(vs)s, GTEST_FATAL_FAILURE_) +#define ASSERT_PRED%(n)s(pred, %(vs)s) \\ + GTEST_PRED%(n)s_(pred, %(vs)s, GTEST_FATAL_FAILURE_) + +""" % DEFS + + return impl + + +def HeaderPostamble(): + """Returns the postamble for the header file.""" + + return """ + +#endif // GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_ +""" + + +def GenerateFile(path, content): + """Given a file path and a content string, overwrites it with the + given content.""" + + print 'Updating file %s . . .' % path + + f = file(path, 'w+') + print >>f, content, + f.close() + + print 'File %s has been updated.' % path + + +def GenerateHeader(n): + """Given the maximum arity n, updates the header file that implements + the predicate assertions.""" + + GenerateFile(HEADER, + HeaderPreamble(n) + + ''.join([ImplementationForArity(i) for i in OneTo(n)]) + + HeaderPostamble()) + + +def UnitTestPreamble(): + """Returns the preamble for the unit test file.""" + + # A map that defines the values used in the preamble template. + DEFS = { + 'today' : time.strftime('%m/%d/%Y'), + 'year' : time.strftime('%Y'), + 'command' : '%s %s' % (os.path.basename(sys.argv[0]), sys.argv[1]), + } + + return ( +"""// Copyright 2006, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// This file is AUTOMATICALLY GENERATED on %(today)s by command +// '%(command)s'. DO NOT EDIT BY HAND! + +// Regression test for gtest_pred_impl.h +// +// This file is generated by a script and quite long. If you intend to +// learn how Google Test works by reading its unit tests, read +// gtest_unittest.cc instead. +// +// This is intended as a regression test for the Google Test predicate +// assertions. We compile it as part of the gtest_unittest target +// only to keep the implementation tidy and compact, as it is quite +// involved to set up the stage for testing Google Test using Google +// Test itself. +// +// Currently, gtest_unittest takes ~11 seconds to run in the testing +// daemon. In the future, if it grows too large and needs much more +// time to finish, we should consider separating this file into a +// stand-alone regression test. + +#include + +#include "gtest/gtest.h" +#include "gtest/gtest-spi.h" + +// A user-defined data type. +struct Bool { + explicit Bool(int val) : value(val != 0) {} + + bool operator>(int n) const { return value > Bool(n).value; } + + Bool operator+(const Bool& rhs) const { return Bool(value + rhs.value); } + + bool operator==(const Bool& rhs) const { return value == rhs.value; } + + bool value; +}; + +// Enables Bool to be used in assertions. +std::ostream& operator<<(std::ostream& os, const Bool& x) { + return os << (x.value ? "true" : "false"); +} + +""" % DEFS) + + +def TestsForArity(n): + """Returns the tests for n-ary predicate assertions.""" + + # A map that defines the values used in the template for the tests. + DEFS = { + 'n' : n, + 'es' : Iter(n, 'e%s', sep=', '), + 'vs' : Iter(n, 'v%s', sep=', '), + 'vts' : Iter(n, '#v%s', sep=', '), + 'tvs' : Iter(n, 'T%s v%s', sep=', '), + 'int_vs' : Iter(n, 'int v%s', sep=', '), + 'Bool_vs' : Iter(n, 'Bool v%s', sep=', '), + 'types' : Iter(n, 'typename T%s', sep=', '), + 'v_sum' : Iter(n, 'v%s', sep=' + '), + 'arity' : Arity(n), + 'Arity' : Title(Arity(n)), + } + + tests = ( +"""// Sample functions/functors for testing %(arity)s predicate assertions. + +// A %(arity)s predicate function. +template <%(types)s> +bool PredFunction%(n)s(%(tvs)s) { + return %(v_sum)s > 0; +} + +// The following two functions are needed to circumvent a bug in +// gcc 2.95.3, which sometimes has problem with the above template +// function. +bool PredFunction%(n)sInt(%(int_vs)s) { + return %(v_sum)s > 0; +} +bool PredFunction%(n)sBool(%(Bool_vs)s) { + return %(v_sum)s > 0; +} +""" % DEFS) + + tests += """ +// A %(arity)s predicate functor. +struct PredFunctor%(n)s { + template <%(types)s> + bool operator()(""" % DEFS + + tests += Iter(n, 'const T%s& v%s', sep=""", + """) + + tests += """) { + return %(v_sum)s > 0; + } +}; +""" % DEFS + + tests += """ +// A %(arity)s predicate-formatter function. +template <%(types)s> +testing::AssertionResult PredFormatFunction%(n)s(""" % DEFS + + tests += Iter(n, 'const char* e%s', sep=""", + """) + + tests += Iter(n, """, + const T%s& v%s""") + + tests += """) { + if (PredFunction%(n)s(%(vs)s)) + return testing::AssertionSuccess(); + + return testing::AssertionFailure() + << """ % DEFS + + tests += Iter(n, 'e%s', sep=' << " + " << ') + + tests += """ + << " is expected to be positive, but evaluates to " + << %(v_sum)s << "."; +} +""" % DEFS + + tests += """ +// A %(arity)s predicate-formatter functor. +struct PredFormatFunctor%(n)s { + template <%(types)s> + testing::AssertionResult operator()(""" % DEFS + + tests += Iter(n, 'const char* e%s', sep=""", + """) + + tests += Iter(n, """, + const T%s& v%s""") + + tests += """) const { + return PredFormatFunction%(n)s(%(es)s, %(vs)s); + } +}; +""" % DEFS + + tests += """ +// Tests for {EXPECT|ASSERT}_PRED_FORMAT%(n)s. + +class Predicate%(n)sTest : public testing::Test { + protected: + virtual void SetUp() { + expected_to_finish_ = true; + finished_ = false;""" % DEFS + + tests += """ + """ + Iter(n, 'n%s_ = ') + """0; + } +""" + + tests += """ + virtual void TearDown() { + // Verifies that each of the predicate's arguments was evaluated + // exactly once.""" + + tests += ''.join([""" + EXPECT_EQ(1, n%s_) << + "The predicate assertion didn't evaluate argument %s " + "exactly once.";""" % (i, i + 1) for i in OneTo(n)]) + + tests += """ + + // Verifies that the control flow in the test function is expected. + if (expected_to_finish_ && !finished_) { + FAIL() << "The predicate assertion unexpactedly aborted the test."; + } else if (!expected_to_finish_ && finished_) { + FAIL() << "The failed predicate assertion didn't abort the test " + "as expected."; + } + } + + // true iff the test function is expected to run to finish. + static bool expected_to_finish_; + + // true iff the test function did run to finish. + static bool finished_; +""" % DEFS + + tests += Iter(n, """ + static int n%s_;""") + + tests += """ +}; + +bool Predicate%(n)sTest::expected_to_finish_; +bool Predicate%(n)sTest::finished_; +""" % DEFS + + tests += Iter(n, """int Predicate%%(n)sTest::n%s_; +""") % DEFS + + tests += """ +typedef Predicate%(n)sTest EXPECT_PRED_FORMAT%(n)sTest; +typedef Predicate%(n)sTest ASSERT_PRED_FORMAT%(n)sTest; +typedef Predicate%(n)sTest EXPECT_PRED%(n)sTest; +typedef Predicate%(n)sTest ASSERT_PRED%(n)sTest; +""" % DEFS + + def GenTest(use_format, use_assert, expect_failure, + use_functor, use_user_type): + """Returns the test for a predicate assertion macro. + + Args: + use_format: true iff the assertion is a *_PRED_FORMAT*. + use_assert: true iff the assertion is a ASSERT_*. + expect_failure: true iff the assertion is expected to fail. + use_functor: true iff the first argument of the assertion is + a functor (as opposed to a function) + use_user_type: true iff the predicate functor/function takes + argument(s) of a user-defined type. + + Example: + + GenTest(1, 0, 0, 1, 0) returns a test that tests the behavior + of a successful EXPECT_PRED_FORMATn() that takes a functor + whose arguments have built-in types.""" + + if use_assert: + assrt = 'ASSERT' # 'assert' is reserved, so we cannot use + # that identifier here. + else: + assrt = 'EXPECT' + + assertion = assrt + '_PRED' + + if use_format: + pred_format = 'PredFormat' + assertion += '_FORMAT' + else: + pred_format = 'Pred' + + assertion += '%(n)s' % DEFS + + if use_functor: + pred_format_type = 'functor' + pred_format += 'Functor%(n)s()' + else: + pred_format_type = 'function' + pred_format += 'Function%(n)s' + if not use_format: + if use_user_type: + pred_format += 'Bool' + else: + pred_format += 'Int' + + test_name = pred_format_type.title() + + if use_user_type: + arg_type = 'user-defined type (Bool)' + test_name += 'OnUserType' + if expect_failure: + arg = 'Bool(n%s_++)' + else: + arg = 'Bool(++n%s_)' + else: + arg_type = 'built-in type (int)' + test_name += 'OnBuiltInType' + if expect_failure: + arg = 'n%s_++' + else: + arg = '++n%s_' + + if expect_failure: + successful_or_failed = 'failed' + expected_or_not = 'expected.' + test_name += 'Failure' + else: + successful_or_failed = 'successful' + expected_or_not = 'UNEXPECTED!' + test_name += 'Success' + + # A map that defines the values used in the test template. + defs = DEFS.copy() + defs.update({ + 'assert' : assrt, + 'assertion' : assertion, + 'test_name' : test_name, + 'pf_type' : pred_format_type, + 'pf' : pred_format, + 'arg_type' : arg_type, + 'arg' : arg, + 'successful' : successful_or_failed, + 'expected' : expected_or_not, + }) + + test = """ +// Tests a %(successful)s %(assertion)s where the +// predicate-formatter is a %(pf_type)s on a %(arg_type)s. +TEST_F(%(assertion)sTest, %(test_name)s) {""" % defs + + indent = (len(assertion) + 3)*' ' + extra_indent = '' + + if expect_failure: + extra_indent = ' ' + if use_assert: + test += """ + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT""" + else: + test += """ + EXPECT_NONFATAL_FAILURE({ // NOLINT""" + + test += '\n' + extra_indent + """ %(assertion)s(%(pf)s""" % defs + + test = test % defs + test += Iter(n, ',\n' + indent + extra_indent + '%(arg)s' % defs) + test += ');\n' + extra_indent + ' finished_ = true;\n' + + if expect_failure: + test += ' }, "");\n' + + test += '}\n' + return test + + # Generates tests for all 2**6 = 64 combinations. + tests += ''.join([GenTest(use_format, use_assert, expect_failure, + use_functor, use_user_type) + for use_format in [0, 1] + for use_assert in [0, 1] + for expect_failure in [0, 1] + for use_functor in [0, 1] + for use_user_type in [0, 1] + ]) + + return tests + + +def UnitTestPostamble(): + """Returns the postamble for the tests.""" + + return '' + + +def GenerateUnitTest(n): + """Returns the tests for up-to n-ary predicate assertions.""" + + GenerateFile(UNIT_TEST, + UnitTestPreamble() + + ''.join([TestsForArity(i) for i in OneTo(n)]) + + UnitTestPostamble()) + + +def _Main(): + """The entry point of the script. Generates the header file and its + unit test.""" + + if len(sys.argv) != 2: + print __doc__ + print 'Author: ' + __author__ + sys.exit(1) + + n = int(sys.argv[1]) + GenerateHeader(n) + GenerateUnitTest(n) + + +if __name__ == '__main__': + _Main() diff --git a/thirdparty/protobuf-2.6.1/gtest/scripts/gtest-config b/thirdparty/protobuf-2.6.1/gtest/scripts/gtest-config new file mode 100755 index 00000000..29ccf815 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/scripts/gtest-config @@ -0,0 +1,274 @@ +#!/bin/sh + +# These variables are automatically filled in by the configure script. +name="gtest" +version="1.6.0" + +show_usage() +{ + echo "Usage: gtest-config [OPTIONS...]" +} + +show_help() +{ + show_usage + cat <<\EOF + +The `gtest-config' script provides access to the necessary compile and linking +flags to connect with Google C++ Testing Framework, both in a build prior to +installation, and on the system proper after installation. The installation +overrides may be issued in combination with any other queries, but will only +affect installation queries if called on a built but not installed gtest. The +installation queries may not be issued with any other types of queries, and +only one installation query may be made at a time. The version queries and +compiler flag queries may be combined as desired but not mixed. Different +version queries are always combined with logical "and" semantics, and only the +last of any particular query is used while all previous ones ignored. All +versions must be specified as a sequence of numbers separated by periods. +Compiler flag queries output the union of the sets of flags when combined. + + Examples: + gtest-config --min-version=1.0 || echo "Insufficient Google Test version." + + g++ $(gtest-config --cppflags --cxxflags) -o foo.o -c foo.cpp + g++ $(gtest-config --ldflags --libs) -o foo foo.o + + # When using a built but not installed Google Test: + g++ $(../../my_gtest_build/scripts/gtest-config ...) ... + + # When using an installed Google Test, but with installation overrides: + export GTEST_PREFIX="/opt" + g++ $(gtest-config --libdir="/opt/lib64" ...) ... + + Help: + --usage brief usage information + --help display this help message + + Installation Overrides: + --prefix=

      overrides the installation prefix + --exec-prefix= overrides the executable installation prefix + --libdir= overrides the library installation prefix + --includedir= overrides the header file installation prefix + + Installation Queries: + --prefix installation prefix + --exec-prefix executable installation prefix + --libdir library installation directory + --includedir header file installation directory + --version the version of the Google Test installation + + Version Queries: + --min-version=VERSION return 0 if the version is at least VERSION + --exact-version=VERSION return 0 if the version is exactly VERSION + --max-version=VERSION return 0 if the version is at most VERSION + + Compilation Flag Queries: + --cppflags compile flags specific to the C-like preprocessors + --cxxflags compile flags appropriate for C++ programs + --ldflags linker flags + --libs libraries for linking + +EOF +} + +# This function bounds our version with a min and a max. It uses some clever +# POSIX-compliant variable expansion to portably do all the work in the shell +# and avoid any dependency on a particular "sed" or "awk" implementation. +# Notable is that it will only ever compare the first 3 components of versions. +# Further components will be cleanly stripped off. All versions must be +# unadorned, so "v1.0" will *not* work. The minimum version must be in $1, and +# the max in $2. TODO(chandlerc@google.com): If this ever breaks, we should +# investigate expanding this via autom4te from AS_VERSION_COMPARE rather than +# continuing to maintain our own shell version. +check_versions() +{ + major_version=${version%%.*} + minor_version="0" + point_version="0" + if test "${version#*.}" != "${version}"; then + minor_version=${version#*.} + minor_version=${minor_version%%.*} + fi + if test "${version#*.*.}" != "${version}"; then + point_version=${version#*.*.} + point_version=${point_version%%.*} + fi + + min_version="$1" + min_major_version=${min_version%%.*} + min_minor_version="0" + min_point_version="0" + if test "${min_version#*.}" != "${min_version}"; then + min_minor_version=${min_version#*.} + min_minor_version=${min_minor_version%%.*} + fi + if test "${min_version#*.*.}" != "${min_version}"; then + min_point_version=${min_version#*.*.} + min_point_version=${min_point_version%%.*} + fi + + max_version="$2" + max_major_version=${max_version%%.*} + max_minor_version="0" + max_point_version="0" + if test "${max_version#*.}" != "${max_version}"; then + max_minor_version=${max_version#*.} + max_minor_version=${max_minor_version%%.*} + fi + if test "${max_version#*.*.}" != "${max_version}"; then + max_point_version=${max_version#*.*.} + max_point_version=${max_point_version%%.*} + fi + + test $(($major_version)) -lt $(($min_major_version)) && exit 1 + if test $(($major_version)) -eq $(($min_major_version)); then + test $(($minor_version)) -lt $(($min_minor_version)) && exit 1 + if test $(($minor_version)) -eq $(($min_minor_version)); then + test $(($point_version)) -lt $(($min_point_version)) && exit 1 + fi + fi + + test $(($major_version)) -gt $(($max_major_version)) && exit 1 + if test $(($major_version)) -eq $(($max_major_version)); then + test $(($minor_version)) -gt $(($max_minor_version)) && exit 1 + if test $(($minor_version)) -eq $(($max_minor_version)); then + test $(($point_version)) -gt $(($max_point_version)) && exit 1 + fi + fi + + exit 0 +} + +# Show the usage line when no arguments are specified. +if test $# -eq 0; then + show_usage + exit 1 +fi + +while test $# -gt 0; do + case $1 in + --usage) show_usage; exit 0;; + --help) show_help; exit 0;; + + # Installation overrides + --prefix=*) GTEST_PREFIX=${1#--prefix=};; + --exec-prefix=*) GTEST_EXEC_PREFIX=${1#--exec-prefix=};; + --libdir=*) GTEST_LIBDIR=${1#--libdir=};; + --includedir=*) GTEST_INCLUDEDIR=${1#--includedir=};; + + # Installation queries + --prefix|--exec-prefix|--libdir|--includedir|--version) + if test -n "${do_query}"; then + show_usage + exit 1 + fi + do_query=${1#--} + ;; + + # Version checking + --min-version=*) + do_check_versions=yes + min_version=${1#--min-version=} + ;; + --max-version=*) + do_check_versions=yes + max_version=${1#--max-version=} + ;; + --exact-version=*) + do_check_versions=yes + exact_version=${1#--exact-version=} + ;; + + # Compiler flag output + --cppflags) echo_cppflags=yes;; + --cxxflags) echo_cxxflags=yes;; + --ldflags) echo_ldflags=yes;; + --libs) echo_libs=yes;; + + # Everything else is an error + *) show_usage; exit 1;; + esac + shift +done + +# These have defaults filled in by the configure script but can also be +# overridden by environment variables or command line parameters. +prefix="${GTEST_PREFIX:-/usr/local}" +exec_prefix="${GTEST_EXEC_PREFIX:-${prefix}}" +libdir="${GTEST_LIBDIR:-${exec_prefix}/lib}" +includedir="${GTEST_INCLUDEDIR:-${prefix}/include}" + +# We try and detect if our binary is not located at its installed location. If +# it's not, we provide variables pointing to the source and build tree rather +# than to the install tree. This allows building against a just-built gtest +# rather than an installed gtest. +bindir="${exec_prefix}/bin" +this_relative_bindir=`dirname $0` +this_bindir=`cd ${this_relative_bindir}; pwd -P` +if test "${this_bindir}" = "${this_bindir%${bindir}}"; then + # The path to the script doesn't end in the bindir sequence from Autoconf, + # assume that we are in a build tree. + build_dir=`dirname ${this_bindir}` + src_dir=`cd ${this_bindir}/..; pwd -P` + + # TODO(chandlerc@google.com): This is a dangerous dependency on libtool, we + # should work to remove it, and/or remove libtool altogether, replacing it + # with direct references to the library and a link path. + gtest_libs="${build_dir}/lib/libgtest.la -pthread " + gtest_ldflags="" + + # We provide hooks to include from either the source or build dir, where the + # build dir is always preferred. This will potentially allow us to write + # build rules for generated headers and have them automatically be preferred + # over provided versions. + gtest_cppflags="-I${build_dir}/include -I${src_dir}/include" + gtest_cxxflags="-pthread" +else + # We're using an installed gtest, although it may be staged under some + # prefix. Assume (as our own libraries do) that we can resolve the prefix, + # and are present in the dynamic link paths. + gtest_ldflags="-L${libdir}" + gtest_libs="-l${name} -pthread " + gtest_cppflags="-I${includedir}" + gtest_cxxflags="-pthread" +fi + +# Do an installation query if requested. +if test -n "$do_query"; then + case $do_query in + prefix) echo $prefix; exit 0;; + exec-prefix) echo $exec_prefix; exit 0;; + libdir) echo $libdir; exit 0;; + includedir) echo $includedir; exit 0;; + version) echo $version; exit 0;; + *) show_usage; exit 1;; + esac +fi + +# Do a version check if requested. +if test "$do_check_versions" = "yes"; then + # Make sure we didn't receive a bad combination of parameters. + test "$echo_cppflags" = "yes" && show_usage && exit 1 + test "$echo_cxxflags" = "yes" && show_usage && exit 1 + test "$echo_ldflags" = "yes" && show_usage && exit 1 + test "$echo_libs" = "yes" && show_usage && exit 1 + + if test "$exact_version" != ""; then + check_versions $exact_version $exact_version + # unreachable + else + check_versions ${min_version:-0.0.0} ${max_version:-9999.9999.9999} + # unreachable + fi +fi + +# Do the output in the correct order so that these can be used in-line of +# a compiler invocation. +output="" +test "$echo_cppflags" = "yes" && output="$output $gtest_cppflags" +test "$echo_cxxflags" = "yes" && output="$output $gtest_cxxflags" +test "$echo_ldflags" = "yes" && output="$output $gtest_ldflags" +test "$echo_libs" = "yes" && output="$output $gtest_libs" +echo $output + +exit 0 diff --git a/thirdparty/protobuf-2.6.1/gtest/scripts/gtest-config.in b/thirdparty/protobuf-2.6.1/gtest/scripts/gtest-config.in new file mode 100644 index 00000000..9c726385 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/scripts/gtest-config.in @@ -0,0 +1,274 @@ +#!/bin/sh + +# These variables are automatically filled in by the configure script. +name="@PACKAGE_TARNAME@" +version="@PACKAGE_VERSION@" + +show_usage() +{ + echo "Usage: gtest-config [OPTIONS...]" +} + +show_help() +{ + show_usage + cat <<\EOF + +The `gtest-config' script provides access to the necessary compile and linking +flags to connect with Google C++ Testing Framework, both in a build prior to +installation, and on the system proper after installation. The installation +overrides may be issued in combination with any other queries, but will only +affect installation queries if called on a built but not installed gtest. The +installation queries may not be issued with any other types of queries, and +only one installation query may be made at a time. The version queries and +compiler flag queries may be combined as desired but not mixed. Different +version queries are always combined with logical "and" semantics, and only the +last of any particular query is used while all previous ones ignored. All +versions must be specified as a sequence of numbers separated by periods. +Compiler flag queries output the union of the sets of flags when combined. + + Examples: + gtest-config --min-version=1.0 || echo "Insufficient Google Test version." + + g++ $(gtest-config --cppflags --cxxflags) -o foo.o -c foo.cpp + g++ $(gtest-config --ldflags --libs) -o foo foo.o + + # When using a built but not installed Google Test: + g++ $(../../my_gtest_build/scripts/gtest-config ...) ... + + # When using an installed Google Test, but with installation overrides: + export GTEST_PREFIX="/opt" + g++ $(gtest-config --libdir="/opt/lib64" ...) ... + + Help: + --usage brief usage information + --help display this help message + + Installation Overrides: + --prefix= overrides the installation prefix + --exec-prefix= overrides the executable installation prefix + --libdir= overrides the library installation prefix + --includedir= overrides the header file installation prefix + + Installation Queries: + --prefix installation prefix + --exec-prefix executable installation prefix + --libdir library installation directory + --includedir header file installation directory + --version the version of the Google Test installation + + Version Queries: + --min-version=VERSION return 0 if the version is at least VERSION + --exact-version=VERSION return 0 if the version is exactly VERSION + --max-version=VERSION return 0 if the version is at most VERSION + + Compilation Flag Queries: + --cppflags compile flags specific to the C-like preprocessors + --cxxflags compile flags appropriate for C++ programs + --ldflags linker flags + --libs libraries for linking + +EOF +} + +# This function bounds our version with a min and a max. It uses some clever +# POSIX-compliant variable expansion to portably do all the work in the shell +# and avoid any dependency on a particular "sed" or "awk" implementation. +# Notable is that it will only ever compare the first 3 components of versions. +# Further components will be cleanly stripped off. All versions must be +# unadorned, so "v1.0" will *not* work. The minimum version must be in $1, and +# the max in $2. TODO(chandlerc@google.com): If this ever breaks, we should +# investigate expanding this via autom4te from AS_VERSION_COMPARE rather than +# continuing to maintain our own shell version. +check_versions() +{ + major_version=${version%%.*} + minor_version="0" + point_version="0" + if test "${version#*.}" != "${version}"; then + minor_version=${version#*.} + minor_version=${minor_version%%.*} + fi + if test "${version#*.*.}" != "${version}"; then + point_version=${version#*.*.} + point_version=${point_version%%.*} + fi + + min_version="$1" + min_major_version=${min_version%%.*} + min_minor_version="0" + min_point_version="0" + if test "${min_version#*.}" != "${min_version}"; then + min_minor_version=${min_version#*.} + min_minor_version=${min_minor_version%%.*} + fi + if test "${min_version#*.*.}" != "${min_version}"; then + min_point_version=${min_version#*.*.} + min_point_version=${min_point_version%%.*} + fi + + max_version="$2" + max_major_version=${max_version%%.*} + max_minor_version="0" + max_point_version="0" + if test "${max_version#*.}" != "${max_version}"; then + max_minor_version=${max_version#*.} + max_minor_version=${max_minor_version%%.*} + fi + if test "${max_version#*.*.}" != "${max_version}"; then + max_point_version=${max_version#*.*.} + max_point_version=${max_point_version%%.*} + fi + + test $(($major_version)) -lt $(($min_major_version)) && exit 1 + if test $(($major_version)) -eq $(($min_major_version)); then + test $(($minor_version)) -lt $(($min_minor_version)) && exit 1 + if test $(($minor_version)) -eq $(($min_minor_version)); then + test $(($point_version)) -lt $(($min_point_version)) && exit 1 + fi + fi + + test $(($major_version)) -gt $(($max_major_version)) && exit 1 + if test $(($major_version)) -eq $(($max_major_version)); then + test $(($minor_version)) -gt $(($max_minor_version)) && exit 1 + if test $(($minor_version)) -eq $(($max_minor_version)); then + test $(($point_version)) -gt $(($max_point_version)) && exit 1 + fi + fi + + exit 0 +} + +# Show the usage line when no arguments are specified. +if test $# -eq 0; then + show_usage + exit 1 +fi + +while test $# -gt 0; do + case $1 in + --usage) show_usage; exit 0;; + --help) show_help; exit 0;; + + # Installation overrides + --prefix=*) GTEST_PREFIX=${1#--prefix=};; + --exec-prefix=*) GTEST_EXEC_PREFIX=${1#--exec-prefix=};; + --libdir=*) GTEST_LIBDIR=${1#--libdir=};; + --includedir=*) GTEST_INCLUDEDIR=${1#--includedir=};; + + # Installation queries + --prefix|--exec-prefix|--libdir|--includedir|--version) + if test -n "${do_query}"; then + show_usage + exit 1 + fi + do_query=${1#--} + ;; + + # Version checking + --min-version=*) + do_check_versions=yes + min_version=${1#--min-version=} + ;; + --max-version=*) + do_check_versions=yes + max_version=${1#--max-version=} + ;; + --exact-version=*) + do_check_versions=yes + exact_version=${1#--exact-version=} + ;; + + # Compiler flag output + --cppflags) echo_cppflags=yes;; + --cxxflags) echo_cxxflags=yes;; + --ldflags) echo_ldflags=yes;; + --libs) echo_libs=yes;; + + # Everything else is an error + *) show_usage; exit 1;; + esac + shift +done + +# These have defaults filled in by the configure script but can also be +# overridden by environment variables or command line parameters. +prefix="${GTEST_PREFIX:-@prefix@}" +exec_prefix="${GTEST_EXEC_PREFIX:-@exec_prefix@}" +libdir="${GTEST_LIBDIR:-@libdir@}" +includedir="${GTEST_INCLUDEDIR:-@includedir@}" + +# We try and detect if our binary is not located at its installed location. If +# it's not, we provide variables pointing to the source and build tree rather +# than to the install tree. This allows building against a just-built gtest +# rather than an installed gtest. +bindir="@bindir@" +this_relative_bindir=`dirname $0` +this_bindir=`cd ${this_relative_bindir}; pwd -P` +if test "${this_bindir}" = "${this_bindir%${bindir}}"; then + # The path to the script doesn't end in the bindir sequence from Autoconf, + # assume that we are in a build tree. + build_dir=`dirname ${this_bindir}` + src_dir=`cd ${this_bindir}/@top_srcdir@; pwd -P` + + # TODO(chandlerc@google.com): This is a dangerous dependency on libtool, we + # should work to remove it, and/or remove libtool altogether, replacing it + # with direct references to the library and a link path. + gtest_libs="${build_dir}/lib/libgtest.la @PTHREAD_CFLAGS@ @PTHREAD_LIBS@" + gtest_ldflags="" + + # We provide hooks to include from either the source or build dir, where the + # build dir is always preferred. This will potentially allow us to write + # build rules for generated headers and have them automatically be preferred + # over provided versions. + gtest_cppflags="-I${build_dir}/include -I${src_dir}/include" + gtest_cxxflags="@PTHREAD_CFLAGS@" +else + # We're using an installed gtest, although it may be staged under some + # prefix. Assume (as our own libraries do) that we can resolve the prefix, + # and are present in the dynamic link paths. + gtest_ldflags="-L${libdir}" + gtest_libs="-l${name} @PTHREAD_CFLAGS@ @PTHREAD_LIBS@" + gtest_cppflags="-I${includedir}" + gtest_cxxflags="@PTHREAD_CFLAGS@" +fi + +# Do an installation query if requested. +if test -n "$do_query"; then + case $do_query in + prefix) echo $prefix; exit 0;; + exec-prefix) echo $exec_prefix; exit 0;; + libdir) echo $libdir; exit 0;; + includedir) echo $includedir; exit 0;; + version) echo $version; exit 0;; + *) show_usage; exit 1;; + esac +fi + +# Do a version check if requested. +if test "$do_check_versions" = "yes"; then + # Make sure we didn't receive a bad combination of parameters. + test "$echo_cppflags" = "yes" && show_usage && exit 1 + test "$echo_cxxflags" = "yes" && show_usage && exit 1 + test "$echo_ldflags" = "yes" && show_usage && exit 1 + test "$echo_libs" = "yes" && show_usage && exit 1 + + if test "$exact_version" != ""; then + check_versions $exact_version $exact_version + # unreachable + else + check_versions ${min_version:-0.0.0} ${max_version:-9999.9999.9999} + # unreachable + fi +fi + +# Do the output in the correct order so that these can be used in-line of +# a compiler invocation. +output="" +test "$echo_cppflags" = "yes" && output="$output $gtest_cppflags" +test "$echo_cxxflags" = "yes" && output="$output $gtest_cxxflags" +test "$echo_ldflags" = "yes" && output="$output $gtest_ldflags" +test "$echo_libs" = "yes" && output="$output $gtest_libs" +echo $output + +exit 0 diff --git a/thirdparty/protobuf-2.6.1/gtest/scripts/pump.py b/thirdparty/protobuf-2.6.1/gtest/scripts/pump.py new file mode 100644 index 00000000..5efb653c --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/scripts/pump.py @@ -0,0 +1,855 @@ +#!/usr/bin/env python +# +# Copyright 2008, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""pump v0.2.0 - Pretty Useful for Meta Programming. + +A tool for preprocessor meta programming. Useful for generating +repetitive boilerplate code. Especially useful for writing C++ +classes, functions, macros, and templates that need to work with +various number of arguments. + +USAGE: + pump.py SOURCE_FILE + +EXAMPLES: + pump.py foo.cc.pump + Converts foo.cc.pump to foo.cc. + +GRAMMAR: + CODE ::= ATOMIC_CODE* + ATOMIC_CODE ::= $var ID = EXPRESSION + | $var ID = [[ CODE ]] + | $range ID EXPRESSION..EXPRESSION + | $for ID SEPARATOR [[ CODE ]] + | $($) + | $ID + | $(EXPRESSION) + | $if EXPRESSION [[ CODE ]] ELSE_BRANCH + | [[ CODE ]] + | RAW_CODE + SEPARATOR ::= RAW_CODE | EMPTY + ELSE_BRANCH ::= $else [[ CODE ]] + | $elif EXPRESSION [[ CODE ]] ELSE_BRANCH + | EMPTY + EXPRESSION has Python syntax. +""" + +__author__ = 'wan@google.com (Zhanyong Wan)' + +import os +import re +import sys + + +TOKEN_TABLE = [ + (re.compile(r'\$var\s+'), '$var'), + (re.compile(r'\$elif\s+'), '$elif'), + (re.compile(r'\$else\s+'), '$else'), + (re.compile(r'\$for\s+'), '$for'), + (re.compile(r'\$if\s+'), '$if'), + (re.compile(r'\$range\s+'), '$range'), + (re.compile(r'\$[_A-Za-z]\w*'), '$id'), + (re.compile(r'\$\(\$\)'), '$($)'), + (re.compile(r'\$'), '$'), + (re.compile(r'\[\[\n?'), '[['), + (re.compile(r'\]\]\n?'), ']]'), + ] + + +class Cursor: + """Represents a position (line and column) in a text file.""" + + def __init__(self, line=-1, column=-1): + self.line = line + self.column = column + + def __eq__(self, rhs): + return self.line == rhs.line and self.column == rhs.column + + def __ne__(self, rhs): + return not self == rhs + + def __lt__(self, rhs): + return self.line < rhs.line or ( + self.line == rhs.line and self.column < rhs.column) + + def __le__(self, rhs): + return self < rhs or self == rhs + + def __gt__(self, rhs): + return rhs < self + + def __ge__(self, rhs): + return rhs <= self + + def __str__(self): + if self == Eof(): + return 'EOF' + else: + return '%s(%s)' % (self.line + 1, self.column) + + def __add__(self, offset): + return Cursor(self.line, self.column + offset) + + def __sub__(self, offset): + return Cursor(self.line, self.column - offset) + + def Clone(self): + """Returns a copy of self.""" + + return Cursor(self.line, self.column) + + +# Special cursor to indicate the end-of-file. +def Eof(): + """Returns the special cursor to denote the end-of-file.""" + return Cursor(-1, -1) + + +class Token: + """Represents a token in a Pump source file.""" + + def __init__(self, start=None, end=None, value=None, token_type=None): + if start is None: + self.start = Eof() + else: + self.start = start + if end is None: + self.end = Eof() + else: + self.end = end + self.value = value + self.token_type = token_type + + def __str__(self): + return 'Token @%s: \'%s\' type=%s' % ( + self.start, self.value, self.token_type) + + def Clone(self): + """Returns a copy of self.""" + + return Token(self.start.Clone(), self.end.Clone(), self.value, + self.token_type) + + +def StartsWith(lines, pos, string): + """Returns True iff the given position in lines starts with 'string'.""" + + return lines[pos.line][pos.column:].startswith(string) + + +def FindFirstInLine(line, token_table): + best_match_start = -1 + for (regex, token_type) in token_table: + m = regex.search(line) + if m: + # We found regex in lines + if best_match_start < 0 or m.start() < best_match_start: + best_match_start = m.start() + best_match_length = m.end() - m.start() + best_match_token_type = token_type + + if best_match_start < 0: + return None + + return (best_match_start, best_match_length, best_match_token_type) + + +def FindFirst(lines, token_table, cursor): + """Finds the first occurrence of any string in strings in lines.""" + + start = cursor.Clone() + cur_line_number = cursor.line + for line in lines[start.line:]: + if cur_line_number == start.line: + line = line[start.column:] + m = FindFirstInLine(line, token_table) + if m: + # We found a regex in line. + (start_column, length, token_type) = m + if cur_line_number == start.line: + start_column += start.column + found_start = Cursor(cur_line_number, start_column) + found_end = found_start + length + return MakeToken(lines, found_start, found_end, token_type) + cur_line_number += 1 + # We failed to find str in lines + return None + + +def SubString(lines, start, end): + """Returns a substring in lines.""" + + if end == Eof(): + end = Cursor(len(lines) - 1, len(lines[-1])) + + if start >= end: + return '' + + if start.line == end.line: + return lines[start.line][start.column:end.column] + + result_lines = ([lines[start.line][start.column:]] + + lines[start.line + 1:end.line] + + [lines[end.line][:end.column]]) + return ''.join(result_lines) + + +def StripMetaComments(str): + """Strip meta comments from each line in the given string.""" + + # First, completely remove lines containing nothing but a meta + # comment, including the trailing \n. + str = re.sub(r'^\s*\$\$.*\n', '', str) + + # Then, remove meta comments from contentful lines. + return re.sub(r'\s*\$\$.*', '', str) + + +def MakeToken(lines, start, end, token_type): + """Creates a new instance of Token.""" + + return Token(start, end, SubString(lines, start, end), token_type) + + +def ParseToken(lines, pos, regex, token_type): + line = lines[pos.line][pos.column:] + m = regex.search(line) + if m and not m.start(): + return MakeToken(lines, pos, pos + m.end(), token_type) + else: + print 'ERROR: %s expected at %s.' % (token_type, pos) + sys.exit(1) + + +ID_REGEX = re.compile(r'[_A-Za-z]\w*') +EQ_REGEX = re.compile(r'=') +REST_OF_LINE_REGEX = re.compile(r'.*?(?=$|\$\$)') +OPTIONAL_WHITE_SPACES_REGEX = re.compile(r'\s*') +WHITE_SPACE_REGEX = re.compile(r'\s') +DOT_DOT_REGEX = re.compile(r'\.\.') + + +def Skip(lines, pos, regex): + line = lines[pos.line][pos.column:] + m = re.search(regex, line) + if m and not m.start(): + return pos + m.end() + else: + return pos + + +def SkipUntil(lines, pos, regex, token_type): + line = lines[pos.line][pos.column:] + m = re.search(regex, line) + if m: + return pos + m.start() + else: + print ('ERROR: %s expected on line %s after column %s.' % + (token_type, pos.line + 1, pos.column)) + sys.exit(1) + + +def ParseExpTokenInParens(lines, pos): + def ParseInParens(pos): + pos = Skip(lines, pos, OPTIONAL_WHITE_SPACES_REGEX) + pos = Skip(lines, pos, r'\(') + pos = Parse(pos) + pos = Skip(lines, pos, r'\)') + return pos + + def Parse(pos): + pos = SkipUntil(lines, pos, r'\(|\)', ')') + if SubString(lines, pos, pos + 1) == '(': + pos = Parse(pos + 1) + pos = Skip(lines, pos, r'\)') + return Parse(pos) + else: + return pos + + start = pos.Clone() + pos = ParseInParens(pos) + return MakeToken(lines, start, pos, 'exp') + + +def RStripNewLineFromToken(token): + if token.value.endswith('\n'): + return Token(token.start, token.end, token.value[:-1], token.token_type) + else: + return token + + +def TokenizeLines(lines, pos): + while True: + found = FindFirst(lines, TOKEN_TABLE, pos) + if not found: + yield MakeToken(lines, pos, Eof(), 'code') + return + + if found.start == pos: + prev_token = None + prev_token_rstripped = None + else: + prev_token = MakeToken(lines, pos, found.start, 'code') + prev_token_rstripped = RStripNewLineFromToken(prev_token) + + if found.token_type == '$var': + if prev_token_rstripped: + yield prev_token_rstripped + yield found + id_token = ParseToken(lines, found.end, ID_REGEX, 'id') + yield id_token + pos = Skip(lines, id_token.end, OPTIONAL_WHITE_SPACES_REGEX) + + eq_token = ParseToken(lines, pos, EQ_REGEX, '=') + yield eq_token + pos = Skip(lines, eq_token.end, r'\s*') + + if SubString(lines, pos, pos + 2) != '[[': + exp_token = ParseToken(lines, pos, REST_OF_LINE_REGEX, 'exp') + yield exp_token + pos = Cursor(exp_token.end.line + 1, 0) + elif found.token_type == '$for': + if prev_token_rstripped: + yield prev_token_rstripped + yield found + id_token = ParseToken(lines, found.end, ID_REGEX, 'id') + yield id_token + pos = Skip(lines, id_token.end, WHITE_SPACE_REGEX) + elif found.token_type == '$range': + if prev_token_rstripped: + yield prev_token_rstripped + yield found + id_token = ParseToken(lines, found.end, ID_REGEX, 'id') + yield id_token + pos = Skip(lines, id_token.end, OPTIONAL_WHITE_SPACES_REGEX) + + dots_pos = SkipUntil(lines, pos, DOT_DOT_REGEX, '..') + yield MakeToken(lines, pos, dots_pos, 'exp') + yield MakeToken(lines, dots_pos, dots_pos + 2, '..') + pos = dots_pos + 2 + new_pos = Cursor(pos.line + 1, 0) + yield MakeToken(lines, pos, new_pos, 'exp') + pos = new_pos + elif found.token_type == '$': + if prev_token: + yield prev_token + yield found + exp_token = ParseExpTokenInParens(lines, found.end) + yield exp_token + pos = exp_token.end + elif (found.token_type == ']]' or found.token_type == '$if' or + found.token_type == '$elif' or found.token_type == '$else'): + if prev_token_rstripped: + yield prev_token_rstripped + yield found + pos = found.end + else: + if prev_token: + yield prev_token + yield found + pos = found.end + + +def Tokenize(s): + """A generator that yields the tokens in the given string.""" + if s != '': + lines = s.splitlines(True) + for token in TokenizeLines(lines, Cursor(0, 0)): + yield token + + +class CodeNode: + def __init__(self, atomic_code_list=None): + self.atomic_code = atomic_code_list + + +class VarNode: + def __init__(self, identifier=None, atomic_code=None): + self.identifier = identifier + self.atomic_code = atomic_code + + +class RangeNode: + def __init__(self, identifier=None, exp1=None, exp2=None): + self.identifier = identifier + self.exp1 = exp1 + self.exp2 = exp2 + + +class ForNode: + def __init__(self, identifier=None, sep=None, code=None): + self.identifier = identifier + self.sep = sep + self.code = code + + +class ElseNode: + def __init__(self, else_branch=None): + self.else_branch = else_branch + + +class IfNode: + def __init__(self, exp=None, then_branch=None, else_branch=None): + self.exp = exp + self.then_branch = then_branch + self.else_branch = else_branch + + +class RawCodeNode: + def __init__(self, token=None): + self.raw_code = token + + +class LiteralDollarNode: + def __init__(self, token): + self.token = token + + +class ExpNode: + def __init__(self, token, python_exp): + self.token = token + self.python_exp = python_exp + + +def PopFront(a_list): + head = a_list[0] + a_list[:1] = [] + return head + + +def PushFront(a_list, elem): + a_list[:0] = [elem] + + +def PopToken(a_list, token_type=None): + token = PopFront(a_list) + if token_type is not None and token.token_type != token_type: + print 'ERROR: %s expected at %s' % (token_type, token.start) + print 'ERROR: %s found instead' % (token,) + sys.exit(1) + + return token + + +def PeekToken(a_list): + if not a_list: + return None + + return a_list[0] + + +def ParseExpNode(token): + python_exp = re.sub(r'([_A-Za-z]\w*)', r'self.GetValue("\1")', token.value) + return ExpNode(token, python_exp) + + +def ParseElseNode(tokens): + def Pop(token_type=None): + return PopToken(tokens, token_type) + + next = PeekToken(tokens) + if not next: + return None + if next.token_type == '$else': + Pop('$else') + Pop('[[') + code_node = ParseCodeNode(tokens) + Pop(']]') + return code_node + elif next.token_type == '$elif': + Pop('$elif') + exp = Pop('code') + Pop('[[') + code_node = ParseCodeNode(tokens) + Pop(']]') + inner_else_node = ParseElseNode(tokens) + return CodeNode([IfNode(ParseExpNode(exp), code_node, inner_else_node)]) + elif not next.value.strip(): + Pop('code') + return ParseElseNode(tokens) + else: + return None + + +def ParseAtomicCodeNode(tokens): + def Pop(token_type=None): + return PopToken(tokens, token_type) + + head = PopFront(tokens) + t = head.token_type + if t == 'code': + return RawCodeNode(head) + elif t == '$var': + id_token = Pop('id') + Pop('=') + next = PeekToken(tokens) + if next.token_type == 'exp': + exp_token = Pop() + return VarNode(id_token, ParseExpNode(exp_token)) + Pop('[[') + code_node = ParseCodeNode(tokens) + Pop(']]') + return VarNode(id_token, code_node) + elif t == '$for': + id_token = Pop('id') + next_token = PeekToken(tokens) + if next_token.token_type == 'code': + sep_token = next_token + Pop('code') + else: + sep_token = None + Pop('[[') + code_node = ParseCodeNode(tokens) + Pop(']]') + return ForNode(id_token, sep_token, code_node) + elif t == '$if': + exp_token = Pop('code') + Pop('[[') + code_node = ParseCodeNode(tokens) + Pop(']]') + else_node = ParseElseNode(tokens) + return IfNode(ParseExpNode(exp_token), code_node, else_node) + elif t == '$range': + id_token = Pop('id') + exp1_token = Pop('exp') + Pop('..') + exp2_token = Pop('exp') + return RangeNode(id_token, ParseExpNode(exp1_token), + ParseExpNode(exp2_token)) + elif t == '$id': + return ParseExpNode(Token(head.start + 1, head.end, head.value[1:], 'id')) + elif t == '$($)': + return LiteralDollarNode(head) + elif t == '$': + exp_token = Pop('exp') + return ParseExpNode(exp_token) + elif t == '[[': + code_node = ParseCodeNode(tokens) + Pop(']]') + return code_node + else: + PushFront(tokens, head) + return None + + +def ParseCodeNode(tokens): + atomic_code_list = [] + while True: + if not tokens: + break + atomic_code_node = ParseAtomicCodeNode(tokens) + if atomic_code_node: + atomic_code_list.append(atomic_code_node) + else: + break + return CodeNode(atomic_code_list) + + +def ParseToAST(pump_src_text): + """Convert the given Pump source text into an AST.""" + tokens = list(Tokenize(pump_src_text)) + code_node = ParseCodeNode(tokens) + return code_node + + +class Env: + def __init__(self): + self.variables = [] + self.ranges = [] + + def Clone(self): + clone = Env() + clone.variables = self.variables[:] + clone.ranges = self.ranges[:] + return clone + + def PushVariable(self, var, value): + # If value looks like an int, store it as an int. + try: + int_value = int(value) + if ('%s' % int_value) == value: + value = int_value + except Exception: + pass + self.variables[:0] = [(var, value)] + + def PopVariable(self): + self.variables[:1] = [] + + def PushRange(self, var, lower, upper): + self.ranges[:0] = [(var, lower, upper)] + + def PopRange(self): + self.ranges[:1] = [] + + def GetValue(self, identifier): + for (var, value) in self.variables: + if identifier == var: + return value + + print 'ERROR: meta variable %s is undefined.' % (identifier,) + sys.exit(1) + + def EvalExp(self, exp): + try: + result = eval(exp.python_exp) + except Exception, e: + print 'ERROR: caught exception %s: %s' % (e.__class__.__name__, e) + print ('ERROR: failed to evaluate meta expression %s at %s' % + (exp.python_exp, exp.token.start)) + sys.exit(1) + return result + + def GetRange(self, identifier): + for (var, lower, upper) in self.ranges: + if identifier == var: + return (lower, upper) + + print 'ERROR: range %s is undefined.' % (identifier,) + sys.exit(1) + + +class Output: + def __init__(self): + self.string = '' + + def GetLastLine(self): + index = self.string.rfind('\n') + if index < 0: + return '' + + return self.string[index + 1:] + + def Append(self, s): + self.string += s + + +def RunAtomicCode(env, node, output): + if isinstance(node, VarNode): + identifier = node.identifier.value.strip() + result = Output() + RunAtomicCode(env.Clone(), node.atomic_code, result) + value = result.string + env.PushVariable(identifier, value) + elif isinstance(node, RangeNode): + identifier = node.identifier.value.strip() + lower = int(env.EvalExp(node.exp1)) + upper = int(env.EvalExp(node.exp2)) + env.PushRange(identifier, lower, upper) + elif isinstance(node, ForNode): + identifier = node.identifier.value.strip() + if node.sep is None: + sep = '' + else: + sep = node.sep.value + (lower, upper) = env.GetRange(identifier) + for i in range(lower, upper + 1): + new_env = env.Clone() + new_env.PushVariable(identifier, i) + RunCode(new_env, node.code, output) + if i != upper: + output.Append(sep) + elif isinstance(node, RawCodeNode): + output.Append(node.raw_code.value) + elif isinstance(node, IfNode): + cond = env.EvalExp(node.exp) + if cond: + RunCode(env.Clone(), node.then_branch, output) + elif node.else_branch is not None: + RunCode(env.Clone(), node.else_branch, output) + elif isinstance(node, ExpNode): + value = env.EvalExp(node) + output.Append('%s' % (value,)) + elif isinstance(node, LiteralDollarNode): + output.Append('$') + elif isinstance(node, CodeNode): + RunCode(env.Clone(), node, output) + else: + print 'BAD' + print node + sys.exit(1) + + +def RunCode(env, code_node, output): + for atomic_code in code_node.atomic_code: + RunAtomicCode(env, atomic_code, output) + + +def IsSingleLineComment(cur_line): + return '//' in cur_line + + +def IsInPreprocessorDirective(prev_lines, cur_line): + if cur_line.lstrip().startswith('#'): + return True + return prev_lines and prev_lines[-1].endswith('\\') + + +def WrapComment(line, output): + loc = line.find('//') + before_comment = line[:loc].rstrip() + if before_comment == '': + indent = loc + else: + output.append(before_comment) + indent = len(before_comment) - len(before_comment.lstrip()) + prefix = indent*' ' + '// ' + max_len = 80 - len(prefix) + comment = line[loc + 2:].strip() + segs = [seg for seg in re.split(r'(\w+\W*)', comment) if seg != ''] + cur_line = '' + for seg in segs: + if len((cur_line + seg).rstrip()) < max_len: + cur_line += seg + else: + if cur_line.strip() != '': + output.append(prefix + cur_line.rstrip()) + cur_line = seg.lstrip() + if cur_line.strip() != '': + output.append(prefix + cur_line.strip()) + + +def WrapCode(line, line_concat, output): + indent = len(line) - len(line.lstrip()) + prefix = indent*' ' # Prefix of the current line + max_len = 80 - indent - len(line_concat) # Maximum length of the current line + new_prefix = prefix + 4*' ' # Prefix of a continuation line + new_max_len = max_len - 4 # Maximum length of a continuation line + # Prefers to wrap a line after a ',' or ';'. + segs = [seg for seg in re.split(r'([^,;]+[,;]?)', line.strip()) if seg != ''] + cur_line = '' # The current line without leading spaces. + for seg in segs: + # If the line is still too long, wrap at a space. + while cur_line == '' and len(seg.strip()) > max_len: + seg = seg.lstrip() + split_at = seg.rfind(' ', 0, max_len) + output.append(prefix + seg[:split_at].strip() + line_concat) + seg = seg[split_at + 1:] + prefix = new_prefix + max_len = new_max_len + + if len((cur_line + seg).rstrip()) < max_len: + cur_line = (cur_line + seg).lstrip() + else: + output.append(prefix + cur_line.rstrip() + line_concat) + prefix = new_prefix + max_len = new_max_len + cur_line = seg.lstrip() + if cur_line.strip() != '': + output.append(prefix + cur_line.strip()) + + +def WrapPreprocessorDirective(line, output): + WrapCode(line, ' \\', output) + + +def WrapPlainCode(line, output): + WrapCode(line, '', output) + + +def IsMultiLineIWYUPragma(line): + return re.search(r'/\* IWYU pragma: ', line) + + +def IsHeaderGuardIncludeOrOneLineIWYUPragma(line): + return (re.match(r'^#(ifndef|define|endif\s*//)\s*[\w_]+\s*$', line) or + re.match(r'^#include\s', line) or + # Don't break IWYU pragmas, either; that causes iwyu.py problems. + re.search(r'// IWYU pragma: ', line)) + + +def WrapLongLine(line, output): + line = line.rstrip() + if len(line) <= 80: + output.append(line) + elif IsSingleLineComment(line): + if IsHeaderGuardIncludeOrOneLineIWYUPragma(line): + # The style guide made an exception to allow long header guard lines, + # includes and IWYU pragmas. + output.append(line) + else: + WrapComment(line, output) + elif IsInPreprocessorDirective(output, line): + if IsHeaderGuardIncludeOrOneLineIWYUPragma(line): + # The style guide made an exception to allow long header guard lines, + # includes and IWYU pragmas. + output.append(line) + else: + WrapPreprocessorDirective(line, output) + elif IsMultiLineIWYUPragma(line): + output.append(line) + else: + WrapPlainCode(line, output) + + +def BeautifyCode(string): + lines = string.splitlines() + output = [] + for line in lines: + WrapLongLine(line, output) + output2 = [line.rstrip() for line in output] + return '\n'.join(output2) + '\n' + + +def ConvertFromPumpSource(src_text): + """Return the text generated from the given Pump source text.""" + ast = ParseToAST(StripMetaComments(src_text)) + output = Output() + RunCode(Env(), ast, output) + return BeautifyCode(output.string) + + +def main(argv): + if len(argv) == 1: + print __doc__ + sys.exit(1) + + file_path = argv[-1] + output_str = ConvertFromPumpSource(file(file_path, 'r').read()) + if file_path.endswith('.pump'): + output_file_path = file_path[:-5] + else: + output_file_path = '-' + if output_file_path == '-': + print output_str, + else: + output_file = file(output_file_path, 'w') + output_file.write('// This file was GENERATED by command:\n') + output_file.write('// %s %s\n' % + (os.path.basename(__file__), os.path.basename(file_path))) + output_file.write('// DO NOT EDIT BY HAND!!!\n\n') + output_file.write(output_str) + output_file.close() + + +if __name__ == '__main__': + main(sys.argv) diff --git a/thirdparty/protobuf-2.6.1/gtest/scripts/test/Makefile b/thirdparty/protobuf-2.6.1/gtest/scripts/test/Makefile new file mode 100644 index 00000000..cdff5846 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/scripts/test/Makefile @@ -0,0 +1,59 @@ +# A Makefile for fusing Google Test and building a sample test against it. +# +# SYNOPSIS: +# +# make [all] - makes everything. +# make TARGET - makes the given target. +# make check - makes everything and runs the built sample test. +# make clean - removes all files generated by make. + +# Points to the root of fused Google Test, relative to where this file is. +FUSED_GTEST_DIR = output + +# Paths to the fused gtest files. +FUSED_GTEST_H = $(FUSED_GTEST_DIR)/gtest/gtest.h +FUSED_GTEST_ALL_CC = $(FUSED_GTEST_DIR)/gtest/gtest-all.cc + +# Where to find the sample test. +SAMPLE_DIR = ../../samples + +# Where to find gtest_main.cc. +GTEST_MAIN_CC = ../../src/gtest_main.cc + +# Flags passed to the preprocessor. +# We have no idea here whether pthreads is available in the system, so +# disable its use. +CPPFLAGS += -I$(FUSED_GTEST_DIR) -DGTEST_HAS_PTHREAD=0 + +# Flags passed to the C++ compiler. +CXXFLAGS += -g + +all : sample1_unittest + +check : all + ./sample1_unittest + +clean : + rm -rf $(FUSED_GTEST_DIR) sample1_unittest *.o + +$(FUSED_GTEST_H) : + ../fuse_gtest_files.py $(FUSED_GTEST_DIR) + +$(FUSED_GTEST_ALL_CC) : + ../fuse_gtest_files.py $(FUSED_GTEST_DIR) + +gtest-all.o : $(FUSED_GTEST_H) $(FUSED_GTEST_ALL_CC) + $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(FUSED_GTEST_DIR)/gtest/gtest-all.cc + +gtest_main.o : $(FUSED_GTEST_H) $(GTEST_MAIN_CC) + $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(GTEST_MAIN_CC) + +sample1.o : $(SAMPLE_DIR)/sample1.cc $(SAMPLE_DIR)/sample1.h + $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(SAMPLE_DIR)/sample1.cc + +sample1_unittest.o : $(SAMPLE_DIR)/sample1_unittest.cc \ + $(SAMPLE_DIR)/sample1.h $(FUSED_GTEST_H) + $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $(SAMPLE_DIR)/sample1_unittest.cc + +sample1_unittest : sample1.o sample1_unittest.o gtest-all.o gtest_main.o + $(CXX) $(CPPFLAGS) $(CXXFLAGS) $^ -o $@ diff --git a/thirdparty/protobuf-2.6.1/gtest/src/.deps/.dirstamp b/thirdparty/protobuf-2.6.1/gtest/src/.deps/.dirstamp new file mode 100644 index 00000000..e69de29b diff --git a/thirdparty/protobuf-2.6.1/gtest/src/.deps/gtest-all.Plo b/thirdparty/protobuf-2.6.1/gtest/src/.deps/gtest-all.Plo new file mode 100644 index 00000000..9298c984 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/src/.deps/gtest-all.Plo @@ -0,0 +1,877 @@ +src/gtest-all.lo: src/gtest-all.cc /usr/include/stdc-predef.h \ + include/gtest/gtest.h /usr/include/c++/8/limits \ + /usr/include/x86_64-linux-gnu/c++/8/bits/c++config.h \ + /usr/include/x86_64-linux-gnu/c++/8/bits/os_defines.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/include/x86_64-linux-gnu/c++/8/bits/cpu_defines.h \ + /usr/include/c++/8/ostream /usr/include/c++/8/ios \ + /usr/include/c++/8/iosfwd /usr/include/c++/8/bits/stringfwd.h \ + /usr/include/c++/8/bits/memoryfwd.h /usr/include/c++/8/bits/postypes.h \ + /usr/include/c++/8/cwchar /usr/include/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/lib/gcc/x86_64-linux-gnu/8/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/8/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/types/wint_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/c++/8/exception /usr/include/c++/8/bits/exception.h \ + /usr/include/c++/8/bits/exception_ptr.h \ + /usr/include/c++/8/bits/exception_defines.h \ + /usr/include/c++/8/bits/cxxabi_init_exception.h \ + /usr/include/c++/8/typeinfo /usr/include/c++/8/bits/hash_bytes.h \ + /usr/include/c++/8/new /usr/include/c++/8/bits/nested_exception.h \ + /usr/include/c++/8/bits/move.h /usr/include/c++/8/bits/concept_check.h \ + /usr/include/c++/8/type_traits /usr/include/c++/8/bits/char_traits.h \ + /usr/include/c++/8/bits/stl_algobase.h \ + /usr/include/c++/8/bits/functexcept.h \ + /usr/include/c++/8/bits/cpp_type_traits.h \ + /usr/include/c++/8/ext/type_traits.h \ + /usr/include/c++/8/ext/numeric_traits.h \ + /usr/include/c++/8/bits/stl_pair.h \ + /usr/include/c++/8/bits/stl_iterator_base_types.h \ + /usr/include/c++/8/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/8/debug/assertions.h \ + /usr/include/c++/8/bits/stl_iterator.h \ + /usr/include/c++/8/bits/ptr_traits.h /usr/include/c++/8/debug/debug.h \ + /usr/include/c++/8/bits/predefined_ops.h /usr/include/c++/8/cstdint \ + /usr/lib/gcc/x86_64-linux-gnu/8/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \ + /usr/include/c++/8/bits/localefwd.h \ + /usr/include/x86_64-linux-gnu/c++/8/bits/c++locale.h \ + /usr/include/c++/8/clocale /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/8/cctype \ + /usr/include/ctype.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/c++/8/bits/ios_base.h /usr/include/c++/8/ext/atomicity.h \ + /usr/include/x86_64-linux-gnu/c++/8/bits/gthr.h \ + /usr/include/x86_64-linux-gnu/c++/8/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/sched.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sched_param.h \ + /usr/include/x86_64-linux-gnu/bits/cpu-set.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/timex.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/setjmp.h \ + /usr/include/x86_64-linux-gnu/c++/8/bits/atomic_word.h \ + /usr/include/c++/8/bits/locale_classes.h /usr/include/c++/8/string \ + /usr/include/c++/8/bits/allocator.h \ + /usr/include/x86_64-linux-gnu/c++/8/bits/c++allocator.h \ + /usr/include/c++/8/ext/new_allocator.h \ + /usr/include/c++/8/bits/ostream_insert.h \ + /usr/include/c++/8/bits/cxxabi_forced.h \ + /usr/include/c++/8/bits/stl_function.h \ + /usr/include/c++/8/backward/binders.h \ + /usr/include/c++/8/bits/range_access.h \ + /usr/include/c++/8/initializer_list \ + /usr/include/c++/8/bits/basic_string.h \ + /usr/include/c++/8/ext/alloc_traits.h \ + /usr/include/c++/8/bits/alloc_traits.h \ + /usr/include/c++/8/ext/string_conversions.h /usr/include/c++/8/cstdlib \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/alloca.h /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/c++/8/bits/std_abs.h /usr/include/c++/8/cstdio \ + /usr/include/stdio.h /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h \ + /usr/include/c++/8/cerrno /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/bits/types/error_t.h \ + /usr/include/c++/8/bits/functional_hash.h \ + /usr/include/c++/8/bits/basic_string.tcc \ + /usr/include/c++/8/bits/locale_classes.tcc \ + /usr/include/c++/8/system_error \ + /usr/include/x86_64-linux-gnu/c++/8/bits/error_constants.h \ + /usr/include/c++/8/stdexcept /usr/include/c++/8/streambuf \ + /usr/include/c++/8/bits/streambuf.tcc \ + /usr/include/c++/8/bits/basic_ios.h \ + /usr/include/c++/8/bits/locale_facets.h /usr/include/c++/8/cwctype \ + /usr/include/wctype.h /usr/include/x86_64-linux-gnu/bits/wctype-wchar.h \ + /usr/include/x86_64-linux-gnu/c++/8/bits/ctype_base.h \ + /usr/include/c++/8/bits/streambuf_iterator.h \ + /usr/include/x86_64-linux-gnu/c++/8/bits/ctype_inline.h \ + /usr/include/c++/8/bits/locale_facets.tcc \ + /usr/include/c++/8/bits/basic_ios.tcc \ + /usr/include/c++/8/bits/ostream.tcc /usr/include/c++/8/vector \ + /usr/include/c++/8/bits/stl_construct.h \ + /usr/include/c++/8/bits/stl_uninitialized.h \ + /usr/include/c++/8/bits/stl_vector.h \ + /usr/include/c++/8/bits/stl_bvector.h /usr/include/c++/8/bits/vector.tcc \ + include/gtest/internal/gtest-internal.h \ + include/gtest/internal/gtest-port.h /usr/include/c++/8/stdlib.h \ + /usr/include/string.h /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h \ + /usr/include/x86_64-linux-gnu/bits/statx.h /usr/include/c++/8/iostream \ + /usr/include/c++/8/istream /usr/include/c++/8/bits/istream.tcc \ + /usr/include/c++/8/sstream /usr/include/c++/8/bits/sstream.tcc \ + /usr/include/unistd.h /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h /usr/include/regex.h \ + /usr/include/c++/8/tuple /usr/include/c++/8/utility \ + /usr/include/c++/8/bits/stl_relops.h /usr/include/c++/8/array \ + /usr/include/c++/8/bits/uses_allocator.h \ + /usr/include/c++/8/bits/invoke.h \ + /usr/include/x86_64-linux-gnu/sys/wait.h /usr/include/signal.h \ + /usr/include/x86_64-linux-gnu/bits/signum.h \ + /usr/include/x86_64-linux-gnu/bits/signum-generic.h \ + /usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-arch.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-consts.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-consts-arch.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h \ + /usr/include/x86_64-linux-gnu/bits/sigevent-consts.h \ + /usr/include/x86_64-linux-gnu/bits/sigaction.h \ + /usr/include/x86_64-linux-gnu/bits/sigcontext.h \ + /usr/include/x86_64-linux-gnu/bits/types/stack_t.h \ + /usr/include/x86_64-linux-gnu/sys/ucontext.h \ + /usr/include/x86_64-linux-gnu/bits/sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/ss_flags.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/sigthread.h \ + /usr/include/c++/8/iomanip /usr/include/c++/8/locale \ + /usr/include/c++/8/bits/locale_facets_nonio.h /usr/include/c++/8/ctime \ + /usr/include/x86_64-linux-gnu/c++/8/bits/time_members.h \ + /usr/include/x86_64-linux-gnu/c++/8/bits/messages_members.h \ + /usr/include/libintl.h /usr/include/c++/8/bits/codecvt.h \ + /usr/include/c++/8/bits/locale_facets_nonio.tcc \ + /usr/include/c++/8/bits/locale_conv.h \ + /usr/include/c++/8/bits/unique_ptr.h \ + /usr/include/c++/8/bits/quoted_string.h /usr/include/c++/8/set \ + /usr/include/c++/8/bits/stl_tree.h \ + /usr/include/c++/8/ext/aligned_buffer.h \ + /usr/include/c++/8/bits/stl_set.h /usr/include/c++/8/bits/stl_multiset.h \ + include/gtest/internal/gtest-string.h \ + include/gtest/internal/gtest-filepath.h \ + include/gtest/internal/gtest-type-util.h /usr/include/c++/8/cxxabi.h \ + /usr/include/x86_64-linux-gnu/c++/8/bits/cxxabi_tweaks.h \ + include/gtest/gtest-death-test.h \ + include/gtest/internal/gtest-death-test-internal.h \ + include/gtest/gtest-message.h include/gtest/gtest-param-test.h \ + include/gtest/internal/gtest-param-util.h /usr/include/c++/8/iterator \ + /usr/include/c++/8/bits/stream_iterator.h \ + include/gtest/internal/gtest-linked_ptr.h /usr/include/assert.h \ + include/gtest/gtest-printers.h \ + include/gtest/internal/gtest-param-util-generated.h \ + include/gtest/gtest_prod.h include/gtest/gtest-test-part.h \ + include/gtest/gtest-typed-test.h include/gtest/gtest_pred_impl.h \ + src/gtest.cc include/gtest/gtest-spi.h /usr/include/c++/8/math.h \ + /usr/include/c++/8/cmath /usr/include/math.h \ + /usr/include/x86_64-linux-gnu/bits/math-vector.h \ + /usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h \ + /usr/include/x86_64-linux-gnu/bits/flt-eval-method.h \ + /usr/include/x86_64-linux-gnu/bits/fp-logb.h \ + /usr/include/x86_64-linux-gnu/bits/fp-fast.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls.h \ + /usr/include/x86_64-linux-gnu/bits/mathcalls-narrow.h \ + /usr/include/x86_64-linux-gnu/bits/iscanonical.h \ + /usr/include/c++/8/algorithm /usr/include/c++/8/bits/stl_algo.h \ + /usr/include/c++/8/bits/algorithmfwd.h \ + /usr/include/c++/8/bits/stl_heap.h /usr/include/c++/8/bits/stl_tempbuf.h \ + /usr/include/c++/8/bits/uniform_int_dist.h /usr/include/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl.h \ + /usr/include/x86_64-linux-gnu/bits/fcntl-linux.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_iovec.h \ + /usr/include/linux/falloc.h \ + /usr/lib/gcc/x86_64-linux-gnu/8/include-fixed/limits.h \ + /usr/lib/gcc/x86_64-linux-gnu/8/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/x86_64-linux-gnu/bits/posix1_lim.h \ + /usr/include/x86_64-linux-gnu/bits/local_lim.h \ + /usr/include/linux/limits.h \ + /usr/include/x86_64-linux-gnu/bits/posix2_lim.h \ + /usr/include/x86_64-linux-gnu/bits/xopen_lim.h \ + /usr/include/x86_64-linux-gnu/bits/uio_lim.h \ + /usr/include/x86_64-linux-gnu/sys/mman.h \ + /usr/include/x86_64-linux-gnu/bits/mman.h \ + /usr/include/x86_64-linux-gnu/bits/mman-linux.h \ + /usr/include/x86_64-linux-gnu/bits/mman-shared.h \ + /usr/include/x86_64-linux-gnu/sys/time.h /usr/include/arpa/inet.h \ + /usr/include/netinet/in.h /usr/include/x86_64-linux-gnu/sys/socket.h \ + /usr/include/x86_64-linux-gnu/bits/socket.h \ + /usr/include/x86_64-linux-gnu/bits/socket_type.h \ + /usr/include/x86_64-linux-gnu/bits/sockaddr.h \ + /usr/include/x86_64-linux-gnu/asm/socket.h \ + /usr/include/asm-generic/socket.h \ + /usr/include/x86_64-linux-gnu/asm/sockios.h \ + /usr/include/asm-generic/sockios.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_osockaddr.h \ + /usr/include/x86_64-linux-gnu/bits/in.h /usr/include/netdb.h \ + /usr/include/rpc/netdb.h /usr/include/x86_64-linux-gnu/bits/netdb.h \ + src/gtest-internal-inl.h src/gtest-death-test.cc src/gtest-filepath.cc \ + /usr/include/c++/8/climits src/gtest-port.cc src/gtest-printers.cc \ + src/gtest-test-part.cc src/gtest-typed-test.cc + +/usr/include/stdc-predef.h: + +include/gtest/gtest.h: + +/usr/include/c++/8/limits: + +/usr/include/x86_64-linux-gnu/c++/8/bits/c++config.h: + +/usr/include/x86_64-linux-gnu/c++/8/bits/os_defines.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/include/x86_64-linux-gnu/c++/8/bits/cpu_defines.h: + +/usr/include/c++/8/ostream: + +/usr/include/c++/8/ios: + +/usr/include/c++/8/iosfwd: + +/usr/include/c++/8/bits/stringfwd.h: + +/usr/include/c++/8/bits/memoryfwd.h: + +/usr/include/c++/8/bits/postypes.h: + +/usr/include/c++/8/cwchar: + +/usr/include/wchar.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/lib/gcc/x86_64-linux-gnu/8/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/8/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +/usr/include/x86_64-linux-gnu/bits/types/wint_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/c++/8/exception: + +/usr/include/c++/8/bits/exception.h: + +/usr/include/c++/8/bits/exception_ptr.h: + +/usr/include/c++/8/bits/exception_defines.h: + +/usr/include/c++/8/bits/cxxabi_init_exception.h: + +/usr/include/c++/8/typeinfo: + +/usr/include/c++/8/bits/hash_bytes.h: + +/usr/include/c++/8/new: + +/usr/include/c++/8/bits/nested_exception.h: + +/usr/include/c++/8/bits/move.h: + +/usr/include/c++/8/bits/concept_check.h: + +/usr/include/c++/8/type_traits: + +/usr/include/c++/8/bits/char_traits.h: + +/usr/include/c++/8/bits/stl_algobase.h: + +/usr/include/c++/8/bits/functexcept.h: + +/usr/include/c++/8/bits/cpp_type_traits.h: + +/usr/include/c++/8/ext/type_traits.h: + +/usr/include/c++/8/ext/numeric_traits.h: + +/usr/include/c++/8/bits/stl_pair.h: + +/usr/include/c++/8/bits/stl_iterator_base_types.h: + +/usr/include/c++/8/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/8/debug/assertions.h: + +/usr/include/c++/8/bits/stl_iterator.h: + +/usr/include/c++/8/bits/ptr_traits.h: + +/usr/include/c++/8/debug/debug.h: + +/usr/include/c++/8/bits/predefined_ops.h: + +/usr/include/c++/8/cstdint: + +/usr/lib/gcc/x86_64-linux-gnu/8/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h: + +/usr/include/c++/8/bits/localefwd.h: + +/usr/include/x86_64-linux-gnu/c++/8/bits/c++locale.h: + +/usr/include/c++/8/clocale: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +/usr/include/c++/8/cctype: + +/usr/include/ctype.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/c++/8/bits/ios_base.h: + +/usr/include/c++/8/ext/atomicity.h: + +/usr/include/x86_64-linux-gnu/c++/8/bits/gthr.h: + +/usr/include/x86_64-linux-gnu/c++/8/bits/gthr-default.h: + +/usr/include/pthread.h: + +/usr/include/sched.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/sched.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_sched_param.h: + +/usr/include/x86_64-linux-gnu/bits/cpu-set.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/timex.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/setjmp.h: + +/usr/include/x86_64-linux-gnu/c++/8/bits/atomic_word.h: + +/usr/include/c++/8/bits/locale_classes.h: + +/usr/include/c++/8/string: + +/usr/include/c++/8/bits/allocator.h: + +/usr/include/x86_64-linux-gnu/c++/8/bits/c++allocator.h: + +/usr/include/c++/8/ext/new_allocator.h: + +/usr/include/c++/8/bits/ostream_insert.h: + +/usr/include/c++/8/bits/cxxabi_forced.h: + +/usr/include/c++/8/bits/stl_function.h: + +/usr/include/c++/8/backward/binders.h: + +/usr/include/c++/8/bits/range_access.h: + +/usr/include/c++/8/initializer_list: + +/usr/include/c++/8/bits/basic_string.h: + +/usr/include/c++/8/ext/alloc_traits.h: + +/usr/include/c++/8/bits/alloc_traits.h: + +/usr/include/c++/8/ext/string_conversions.h: + +/usr/include/c++/8/cstdlib: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/c++/8/bits/std_abs.h: + +/usr/include/c++/8/cstdio: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +/usr/include/c++/8/cerrno: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/bits/types/error_t.h: + +/usr/include/c++/8/bits/functional_hash.h: + +/usr/include/c++/8/bits/basic_string.tcc: + +/usr/include/c++/8/bits/locale_classes.tcc: + +/usr/include/c++/8/system_error: + +/usr/include/x86_64-linux-gnu/c++/8/bits/error_constants.h: + +/usr/include/c++/8/stdexcept: + +/usr/include/c++/8/streambuf: + +/usr/include/c++/8/bits/streambuf.tcc: + +/usr/include/c++/8/bits/basic_ios.h: + +/usr/include/c++/8/bits/locale_facets.h: + +/usr/include/c++/8/cwctype: + +/usr/include/wctype.h: + +/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h: + +/usr/include/x86_64-linux-gnu/c++/8/bits/ctype_base.h: + +/usr/include/c++/8/bits/streambuf_iterator.h: + +/usr/include/x86_64-linux-gnu/c++/8/bits/ctype_inline.h: + +/usr/include/c++/8/bits/locale_facets.tcc: + +/usr/include/c++/8/bits/basic_ios.tcc: + +/usr/include/c++/8/bits/ostream.tcc: + +/usr/include/c++/8/vector: + +/usr/include/c++/8/bits/stl_construct.h: + +/usr/include/c++/8/bits/stl_uninitialized.h: + +/usr/include/c++/8/bits/stl_vector.h: + +/usr/include/c++/8/bits/stl_bvector.h: + +/usr/include/c++/8/bits/vector.tcc: + +include/gtest/internal/gtest-internal.h: + +include/gtest/internal/gtest-port.h: + +/usr/include/c++/8/stdlib.h: + +/usr/include/string.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/x86_64-linux-gnu/bits/statx.h: + +/usr/include/c++/8/iostream: + +/usr/include/c++/8/istream: + +/usr/include/c++/8/bits/istream.tcc: + +/usr/include/c++/8/sstream: + +/usr/include/c++/8/bits/sstream.tcc: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/regex.h: + +/usr/include/c++/8/tuple: + +/usr/include/c++/8/utility: + +/usr/include/c++/8/bits/stl_relops.h: + +/usr/include/c++/8/array: + +/usr/include/c++/8/bits/uses_allocator.h: + +/usr/include/c++/8/bits/invoke.h: + +/usr/include/x86_64-linux-gnu/sys/wait.h: + +/usr/include/signal.h: + +/usr/include/x86_64-linux-gnu/bits/signum.h: + +/usr/include/x86_64-linux-gnu/bits/signum-generic.h: + +/usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-arch.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-consts.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-consts-arch.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigval_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h: + +/usr/include/x86_64-linux-gnu/bits/sigevent-consts.h: + +/usr/include/x86_64-linux-gnu/bits/sigaction.h: + +/usr/include/x86_64-linux-gnu/bits/sigcontext.h: + +/usr/include/x86_64-linux-gnu/bits/types/stack_t.h: + +/usr/include/x86_64-linux-gnu/sys/ucontext.h: + +/usr/include/x86_64-linux-gnu/bits/sigstack.h: + +/usr/include/x86_64-linux-gnu/bits/ss_flags.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h: + +/usr/include/x86_64-linux-gnu/bits/sigthread.h: + +/usr/include/c++/8/iomanip: + +/usr/include/c++/8/locale: + +/usr/include/c++/8/bits/locale_facets_nonio.h: + +/usr/include/c++/8/ctime: + +/usr/include/x86_64-linux-gnu/c++/8/bits/time_members.h: + +/usr/include/x86_64-linux-gnu/c++/8/bits/messages_members.h: + +/usr/include/libintl.h: + +/usr/include/c++/8/bits/codecvt.h: + +/usr/include/c++/8/bits/locale_facets_nonio.tcc: + +/usr/include/c++/8/bits/locale_conv.h: + +/usr/include/c++/8/bits/unique_ptr.h: + +/usr/include/c++/8/bits/quoted_string.h: + +/usr/include/c++/8/set: + +/usr/include/c++/8/bits/stl_tree.h: + +/usr/include/c++/8/ext/aligned_buffer.h: + +/usr/include/c++/8/bits/stl_set.h: + +/usr/include/c++/8/bits/stl_multiset.h: + +include/gtest/internal/gtest-string.h: + +include/gtest/internal/gtest-filepath.h: + +include/gtest/internal/gtest-type-util.h: + +/usr/include/c++/8/cxxabi.h: + +/usr/include/x86_64-linux-gnu/c++/8/bits/cxxabi_tweaks.h: + +include/gtest/gtest-death-test.h: + +include/gtest/internal/gtest-death-test-internal.h: + +include/gtest/gtest-message.h: + +include/gtest/gtest-param-test.h: + +include/gtest/internal/gtest-param-util.h: + +/usr/include/c++/8/iterator: + +/usr/include/c++/8/bits/stream_iterator.h: + +include/gtest/internal/gtest-linked_ptr.h: + +/usr/include/assert.h: + +include/gtest/gtest-printers.h: + +include/gtest/internal/gtest-param-util-generated.h: + +include/gtest/gtest_prod.h: + +include/gtest/gtest-test-part.h: + +include/gtest/gtest-typed-test.h: + +include/gtest/gtest_pred_impl.h: + +src/gtest.cc: + +include/gtest/gtest-spi.h: + +/usr/include/c++/8/math.h: + +/usr/include/c++/8/cmath: + +/usr/include/math.h: + +/usr/include/x86_64-linux-gnu/bits/math-vector.h: + +/usr/include/x86_64-linux-gnu/bits/libm-simd-decl-stubs.h: + +/usr/include/x86_64-linux-gnu/bits/flt-eval-method.h: + +/usr/include/x86_64-linux-gnu/bits/fp-logb.h: + +/usr/include/x86_64-linux-gnu/bits/fp-fast.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls-helper-functions.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls.h: + +/usr/include/x86_64-linux-gnu/bits/mathcalls-narrow.h: + +/usr/include/x86_64-linux-gnu/bits/iscanonical.h: + +/usr/include/c++/8/algorithm: + +/usr/include/c++/8/bits/stl_algo.h: + +/usr/include/c++/8/bits/algorithmfwd.h: + +/usr/include/c++/8/bits/stl_heap.h: + +/usr/include/c++/8/bits/stl_tempbuf.h: + +/usr/include/c++/8/bits/uniform_int_dist.h: + +/usr/include/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl.h: + +/usr/include/x86_64-linux-gnu/bits/fcntl-linux.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_iovec.h: + +/usr/include/linux/falloc.h: + +/usr/lib/gcc/x86_64-linux-gnu/8/include-fixed/limits.h: + +/usr/lib/gcc/x86_64-linux-gnu/8/include-fixed/syslimits.h: + +/usr/include/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix1_lim.h: + +/usr/include/x86_64-linux-gnu/bits/local_lim.h: + +/usr/include/linux/limits.h: + +/usr/include/x86_64-linux-gnu/bits/posix2_lim.h: + +/usr/include/x86_64-linux-gnu/bits/xopen_lim.h: + +/usr/include/x86_64-linux-gnu/bits/uio_lim.h: + +/usr/include/x86_64-linux-gnu/sys/mman.h: + +/usr/include/x86_64-linux-gnu/bits/mman.h: + +/usr/include/x86_64-linux-gnu/bits/mman-linux.h: + +/usr/include/x86_64-linux-gnu/bits/mman-shared.h: + +/usr/include/x86_64-linux-gnu/sys/time.h: + +/usr/include/arpa/inet.h: + +/usr/include/netinet/in.h: + +/usr/include/x86_64-linux-gnu/sys/socket.h: + +/usr/include/x86_64-linux-gnu/bits/socket.h: + +/usr/include/x86_64-linux-gnu/bits/socket_type.h: + +/usr/include/x86_64-linux-gnu/bits/sockaddr.h: + +/usr/include/x86_64-linux-gnu/asm/socket.h: + +/usr/include/asm-generic/socket.h: + +/usr/include/x86_64-linux-gnu/asm/sockios.h: + +/usr/include/asm-generic/sockios.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_osockaddr.h: + +/usr/include/x86_64-linux-gnu/bits/in.h: + +/usr/include/netdb.h: + +/usr/include/rpc/netdb.h: + +/usr/include/x86_64-linux-gnu/bits/netdb.h: + +src/gtest-internal-inl.h: + +src/gtest-death-test.cc: + +src/gtest-filepath.cc: + +/usr/include/c++/8/climits: + +src/gtest-port.cc: + +src/gtest-printers.cc: + +src/gtest-test-part.cc: + +src/gtest-typed-test.cc: diff --git a/thirdparty/protobuf-2.6.1/gtest/src/.deps/gtest_main.Plo b/thirdparty/protobuf-2.6.1/gtest/src/.deps/gtest_main.Plo new file mode 100644 index 00000000..c3e3ad06 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/src/.deps/gtest_main.Plo @@ -0,0 +1,708 @@ +src/gtest_main.lo: src/gtest_main.cc /usr/include/stdc-predef.h \ + /usr/include/stdio.h \ + /usr/include/x86_64-linux-gnu/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/x86_64-linux-gnu/sys/cdefs.h \ + /usr/include/x86_64-linux-gnu/bits/wordsize.h \ + /usr/include/x86_64-linux-gnu/bits/long-double.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs.h \ + /usr/include/x86_64-linux-gnu/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-linux-gnu/8/include/stddef.h \ + /usr/lib/gcc/x86_64-linux-gnu/8/include/stdarg.h \ + /usr/include/x86_64-linux-gnu/bits/types.h \ + /usr/include/x86_64-linux-gnu/bits/typesizes.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h \ + /usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h \ + /usr/include/x86_64-linux-gnu/bits/stdio_lim.h \ + /usr/include/x86_64-linux-gnu/bits/sys_errlist.h include/gtest/gtest.h \ + /usr/include/c++/8/limits \ + /usr/include/x86_64-linux-gnu/c++/8/bits/c++config.h \ + /usr/include/x86_64-linux-gnu/c++/8/bits/os_defines.h \ + /usr/include/x86_64-linux-gnu/c++/8/bits/cpu_defines.h \ + /usr/include/c++/8/ostream /usr/include/c++/8/ios \ + /usr/include/c++/8/iosfwd /usr/include/c++/8/bits/stringfwd.h \ + /usr/include/c++/8/bits/memoryfwd.h /usr/include/c++/8/bits/postypes.h \ + /usr/include/c++/8/cwchar /usr/include/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/floatn.h \ + /usr/include/x86_64-linux-gnu/bits/floatn-common.h \ + /usr/include/x86_64-linux-gnu/bits/wchar.h \ + /usr/include/x86_64-linux-gnu/bits/types/wint_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/locale_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__locale_t.h \ + /usr/include/c++/8/exception /usr/include/c++/8/bits/exception.h \ + /usr/include/c++/8/bits/exception_ptr.h \ + /usr/include/c++/8/bits/exception_defines.h \ + /usr/include/c++/8/bits/cxxabi_init_exception.h \ + /usr/include/c++/8/typeinfo /usr/include/c++/8/bits/hash_bytes.h \ + /usr/include/c++/8/new /usr/include/c++/8/bits/nested_exception.h \ + /usr/include/c++/8/bits/move.h /usr/include/c++/8/bits/concept_check.h \ + /usr/include/c++/8/type_traits /usr/include/c++/8/bits/char_traits.h \ + /usr/include/c++/8/bits/stl_algobase.h \ + /usr/include/c++/8/bits/functexcept.h \ + /usr/include/c++/8/bits/cpp_type_traits.h \ + /usr/include/c++/8/ext/type_traits.h \ + /usr/include/c++/8/ext/numeric_traits.h \ + /usr/include/c++/8/bits/stl_pair.h \ + /usr/include/c++/8/bits/stl_iterator_base_types.h \ + /usr/include/c++/8/bits/stl_iterator_base_funcs.h \ + /usr/include/c++/8/debug/assertions.h \ + /usr/include/c++/8/bits/stl_iterator.h \ + /usr/include/c++/8/bits/ptr_traits.h /usr/include/c++/8/debug/debug.h \ + /usr/include/c++/8/bits/predefined_ops.h /usr/include/c++/8/cstdint \ + /usr/lib/gcc/x86_64-linux-gnu/8/include/stdint.h /usr/include/stdint.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-intn.h \ + /usr/include/x86_64-linux-gnu/bits/stdint-uintn.h \ + /usr/include/c++/8/bits/localefwd.h \ + /usr/include/x86_64-linux-gnu/c++/8/bits/c++locale.h \ + /usr/include/c++/8/clocale /usr/include/locale.h \ + /usr/include/x86_64-linux-gnu/bits/locale.h /usr/include/c++/8/cctype \ + /usr/include/ctype.h /usr/include/endian.h \ + /usr/include/x86_64-linux-gnu/bits/endian.h \ + /usr/include/x86_64-linux-gnu/bits/byteswap.h \ + /usr/include/x86_64-linux-gnu/bits/uintn-identity.h \ + /usr/include/c++/8/bits/ios_base.h /usr/include/c++/8/ext/atomicity.h \ + /usr/include/x86_64-linux-gnu/c++/8/bits/gthr.h \ + /usr/include/x86_64-linux-gnu/c++/8/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h \ + /usr/include/x86_64-linux-gnu/bits/types/time_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h \ + /usr/include/x86_64-linux-gnu/bits/sched.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sched_param.h \ + /usr/include/x86_64-linux-gnu/bits/cpu-set.h /usr/include/time.h \ + /usr/include/x86_64-linux-gnu/bits/time.h \ + /usr/include/x86_64-linux-gnu/bits/timex.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h \ + /usr/include/x86_64-linux-gnu/bits/types/clock_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_tm.h \ + /usr/include/x86_64-linux-gnu/bits/types/clockid_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/timer_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h \ + /usr/include/x86_64-linux-gnu/bits/thread-shared-types.h \ + /usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h \ + /usr/include/x86_64-linux-gnu/bits/setjmp.h \ + /usr/include/x86_64-linux-gnu/c++/8/bits/atomic_word.h \ + /usr/include/c++/8/bits/locale_classes.h /usr/include/c++/8/string \ + /usr/include/c++/8/bits/allocator.h \ + /usr/include/x86_64-linux-gnu/c++/8/bits/c++allocator.h \ + /usr/include/c++/8/ext/new_allocator.h \ + /usr/include/c++/8/bits/ostream_insert.h \ + /usr/include/c++/8/bits/cxxabi_forced.h \ + /usr/include/c++/8/bits/stl_function.h \ + /usr/include/c++/8/backward/binders.h \ + /usr/include/c++/8/bits/range_access.h \ + /usr/include/c++/8/initializer_list \ + /usr/include/c++/8/bits/basic_string.h \ + /usr/include/c++/8/ext/alloc_traits.h \ + /usr/include/c++/8/bits/alloc_traits.h \ + /usr/include/c++/8/ext/string_conversions.h /usr/include/c++/8/cstdlib \ + /usr/include/stdlib.h /usr/include/x86_64-linux-gnu/bits/waitflags.h \ + /usr/include/x86_64-linux-gnu/bits/waitstatus.h \ + /usr/include/x86_64-linux-gnu/sys/types.h \ + /usr/include/x86_64-linux-gnu/sys/select.h \ + /usr/include/x86_64-linux-gnu/bits/select.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigset_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h \ + /usr/include/alloca.h /usr/include/x86_64-linux-gnu/bits/stdlib-float.h \ + /usr/include/c++/8/bits/std_abs.h /usr/include/c++/8/cstdio \ + /usr/include/c++/8/cerrno /usr/include/errno.h \ + /usr/include/x86_64-linux-gnu/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/x86_64-linux-gnu/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/x86_64-linux-gnu/bits/types/error_t.h \ + /usr/include/c++/8/bits/functional_hash.h \ + /usr/include/c++/8/bits/basic_string.tcc \ + /usr/include/c++/8/bits/locale_classes.tcc \ + /usr/include/c++/8/system_error \ + /usr/include/x86_64-linux-gnu/c++/8/bits/error_constants.h \ + /usr/include/c++/8/stdexcept /usr/include/c++/8/streambuf \ + /usr/include/c++/8/bits/streambuf.tcc \ + /usr/include/c++/8/bits/basic_ios.h \ + /usr/include/c++/8/bits/locale_facets.h /usr/include/c++/8/cwctype \ + /usr/include/wctype.h /usr/include/x86_64-linux-gnu/bits/wctype-wchar.h \ + /usr/include/x86_64-linux-gnu/c++/8/bits/ctype_base.h \ + /usr/include/c++/8/bits/streambuf_iterator.h \ + /usr/include/x86_64-linux-gnu/c++/8/bits/ctype_inline.h \ + /usr/include/c++/8/bits/locale_facets.tcc \ + /usr/include/c++/8/bits/basic_ios.tcc \ + /usr/include/c++/8/bits/ostream.tcc /usr/include/c++/8/vector \ + /usr/include/c++/8/bits/stl_construct.h \ + /usr/include/c++/8/bits/stl_uninitialized.h \ + /usr/include/c++/8/bits/stl_vector.h \ + /usr/include/c++/8/bits/stl_bvector.h /usr/include/c++/8/bits/vector.tcc \ + include/gtest/internal/gtest-internal.h \ + include/gtest/internal/gtest-port.h /usr/include/c++/8/stdlib.h \ + /usr/include/string.h /usr/include/strings.h \ + /usr/include/x86_64-linux-gnu/sys/stat.h \ + /usr/include/x86_64-linux-gnu/bits/stat.h \ + /usr/include/x86_64-linux-gnu/bits/statx.h /usr/include/c++/8/iostream \ + /usr/include/c++/8/istream /usr/include/c++/8/bits/istream.tcc \ + /usr/include/c++/8/sstream /usr/include/c++/8/bits/sstream.tcc \ + /usr/include/unistd.h /usr/include/x86_64-linux-gnu/bits/posix_opt.h \ + /usr/include/x86_64-linux-gnu/bits/environments.h \ + /usr/include/x86_64-linux-gnu/bits/confname.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_posix.h \ + /usr/include/x86_64-linux-gnu/bits/getopt_core.h /usr/include/regex.h \ + /usr/include/c++/8/tuple /usr/include/c++/8/utility \ + /usr/include/c++/8/bits/stl_relops.h /usr/include/c++/8/array \ + /usr/include/c++/8/bits/uses_allocator.h \ + /usr/include/c++/8/bits/invoke.h \ + /usr/include/x86_64-linux-gnu/sys/wait.h /usr/include/signal.h \ + /usr/include/x86_64-linux-gnu/bits/signum.h \ + /usr/include/x86_64-linux-gnu/bits/signum-generic.h \ + /usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-arch.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-consts.h \ + /usr/include/x86_64-linux-gnu/bits/siginfo-consts-arch.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigval_t.h \ + /usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h \ + /usr/include/x86_64-linux-gnu/bits/sigevent-consts.h \ + /usr/include/x86_64-linux-gnu/bits/sigaction.h \ + /usr/include/x86_64-linux-gnu/bits/sigcontext.h \ + /usr/include/x86_64-linux-gnu/bits/types/stack_t.h \ + /usr/include/x86_64-linux-gnu/sys/ucontext.h \ + /usr/include/x86_64-linux-gnu/bits/sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/ss_flags.h \ + /usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h \ + /usr/include/x86_64-linux-gnu/bits/sigthread.h \ + /usr/include/c++/8/iomanip /usr/include/c++/8/locale \ + /usr/include/c++/8/bits/locale_facets_nonio.h /usr/include/c++/8/ctime \ + /usr/include/x86_64-linux-gnu/c++/8/bits/time_members.h \ + /usr/include/x86_64-linux-gnu/c++/8/bits/messages_members.h \ + /usr/include/libintl.h /usr/include/c++/8/bits/codecvt.h \ + /usr/include/c++/8/bits/locale_facets_nonio.tcc \ + /usr/include/c++/8/bits/locale_conv.h \ + /usr/include/c++/8/bits/unique_ptr.h \ + /usr/include/c++/8/bits/quoted_string.h /usr/include/c++/8/set \ + /usr/include/c++/8/bits/stl_tree.h \ + /usr/include/c++/8/ext/aligned_buffer.h \ + /usr/include/c++/8/bits/stl_set.h /usr/include/c++/8/bits/stl_multiset.h \ + include/gtest/internal/gtest-string.h \ + include/gtest/internal/gtest-filepath.h \ + include/gtest/internal/gtest-type-util.h /usr/include/c++/8/cxxabi.h \ + /usr/include/x86_64-linux-gnu/c++/8/bits/cxxabi_tweaks.h \ + include/gtest/gtest-death-test.h \ + include/gtest/internal/gtest-death-test-internal.h \ + include/gtest/gtest-message.h include/gtest/gtest-param-test.h \ + include/gtest/internal/gtest-param-util.h /usr/include/c++/8/iterator \ + /usr/include/c++/8/bits/stream_iterator.h \ + include/gtest/internal/gtest-linked_ptr.h /usr/include/assert.h \ + include/gtest/gtest-printers.h \ + include/gtest/internal/gtest-param-util-generated.h \ + include/gtest/gtest_prod.h include/gtest/gtest-test-part.h \ + include/gtest/gtest-typed-test.h include/gtest/gtest_pred_impl.h + +/usr/include/stdc-predef.h: + +/usr/include/stdio.h: + +/usr/include/x86_64-linux-gnu/bits/libc-header-start.h: + +/usr/include/features.h: + +/usr/include/x86_64-linux-gnu/sys/cdefs.h: + +/usr/include/x86_64-linux-gnu/bits/wordsize.h: + +/usr/include/x86_64-linux-gnu/bits/long-double.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs.h: + +/usr/include/x86_64-linux-gnu/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-linux-gnu/8/include/stddef.h: + +/usr/lib/gcc/x86_64-linux-gnu/8/include/stdarg.h: + +/usr/include/x86_64-linux-gnu/bits/types.h: + +/usr/include/x86_64-linux-gnu/bits/typesizes.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h: + +/usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h: + +/usr/include/x86_64-linux-gnu/bits/stdio_lim.h: + +/usr/include/x86_64-linux-gnu/bits/sys_errlist.h: + +include/gtest/gtest.h: + +/usr/include/c++/8/limits: + +/usr/include/x86_64-linux-gnu/c++/8/bits/c++config.h: + +/usr/include/x86_64-linux-gnu/c++/8/bits/os_defines.h: + +/usr/include/x86_64-linux-gnu/c++/8/bits/cpu_defines.h: + +/usr/include/c++/8/ostream: + +/usr/include/c++/8/ios: + +/usr/include/c++/8/iosfwd: + +/usr/include/c++/8/bits/stringfwd.h: + +/usr/include/c++/8/bits/memoryfwd.h: + +/usr/include/c++/8/bits/postypes.h: + +/usr/include/c++/8/cwchar: + +/usr/include/wchar.h: + +/usr/include/x86_64-linux-gnu/bits/floatn.h: + +/usr/include/x86_64-linux-gnu/bits/floatn-common.h: + +/usr/include/x86_64-linux-gnu/bits/wchar.h: + +/usr/include/x86_64-linux-gnu/bits/types/wint_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/mbstate_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/locale_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__locale_t.h: + +/usr/include/c++/8/exception: + +/usr/include/c++/8/bits/exception.h: + +/usr/include/c++/8/bits/exception_ptr.h: + +/usr/include/c++/8/bits/exception_defines.h: + +/usr/include/c++/8/bits/cxxabi_init_exception.h: + +/usr/include/c++/8/typeinfo: + +/usr/include/c++/8/bits/hash_bytes.h: + +/usr/include/c++/8/new: + +/usr/include/c++/8/bits/nested_exception.h: + +/usr/include/c++/8/bits/move.h: + +/usr/include/c++/8/bits/concept_check.h: + +/usr/include/c++/8/type_traits: + +/usr/include/c++/8/bits/char_traits.h: + +/usr/include/c++/8/bits/stl_algobase.h: + +/usr/include/c++/8/bits/functexcept.h: + +/usr/include/c++/8/bits/cpp_type_traits.h: + +/usr/include/c++/8/ext/type_traits.h: + +/usr/include/c++/8/ext/numeric_traits.h: + +/usr/include/c++/8/bits/stl_pair.h: + +/usr/include/c++/8/bits/stl_iterator_base_types.h: + +/usr/include/c++/8/bits/stl_iterator_base_funcs.h: + +/usr/include/c++/8/debug/assertions.h: + +/usr/include/c++/8/bits/stl_iterator.h: + +/usr/include/c++/8/bits/ptr_traits.h: + +/usr/include/c++/8/debug/debug.h: + +/usr/include/c++/8/bits/predefined_ops.h: + +/usr/include/c++/8/cstdint: + +/usr/lib/gcc/x86_64-linux-gnu/8/include/stdint.h: + +/usr/include/stdint.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-intn.h: + +/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h: + +/usr/include/c++/8/bits/localefwd.h: + +/usr/include/x86_64-linux-gnu/c++/8/bits/c++locale.h: + +/usr/include/c++/8/clocale: + +/usr/include/locale.h: + +/usr/include/x86_64-linux-gnu/bits/locale.h: + +/usr/include/c++/8/cctype: + +/usr/include/ctype.h: + +/usr/include/endian.h: + +/usr/include/x86_64-linux-gnu/bits/endian.h: + +/usr/include/x86_64-linux-gnu/bits/byteswap.h: + +/usr/include/x86_64-linux-gnu/bits/uintn-identity.h: + +/usr/include/c++/8/bits/ios_base.h: + +/usr/include/c++/8/ext/atomicity.h: + +/usr/include/x86_64-linux-gnu/c++/8/bits/gthr.h: + +/usr/include/x86_64-linux-gnu/c++/8/bits/gthr-default.h: + +/usr/include/pthread.h: + +/usr/include/sched.h: + +/usr/include/x86_64-linux-gnu/bits/types/time_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timespec.h: + +/usr/include/x86_64-linux-gnu/bits/sched.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_sched_param.h: + +/usr/include/x86_64-linux-gnu/bits/cpu-set.h: + +/usr/include/time.h: + +/usr/include/x86_64-linux-gnu/bits/time.h: + +/usr/include/x86_64-linux-gnu/bits/timex.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h: + +/usr/include/x86_64-linux-gnu/bits/types/clock_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h: + +/usr/include/x86_64-linux-gnu/bits/types/clockid_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/timer_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_itimerspec.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/x86_64-linux-gnu/bits/pthreadtypes-arch.h: + +/usr/include/x86_64-linux-gnu/bits/setjmp.h: + +/usr/include/x86_64-linux-gnu/c++/8/bits/atomic_word.h: + +/usr/include/c++/8/bits/locale_classes.h: + +/usr/include/c++/8/string: + +/usr/include/c++/8/bits/allocator.h: + +/usr/include/x86_64-linux-gnu/c++/8/bits/c++allocator.h: + +/usr/include/c++/8/ext/new_allocator.h: + +/usr/include/c++/8/bits/ostream_insert.h: + +/usr/include/c++/8/bits/cxxabi_forced.h: + +/usr/include/c++/8/bits/stl_function.h: + +/usr/include/c++/8/backward/binders.h: + +/usr/include/c++/8/bits/range_access.h: + +/usr/include/c++/8/initializer_list: + +/usr/include/c++/8/bits/basic_string.h: + +/usr/include/c++/8/ext/alloc_traits.h: + +/usr/include/c++/8/bits/alloc_traits.h: + +/usr/include/c++/8/ext/string_conversions.h: + +/usr/include/c++/8/cstdlib: + +/usr/include/stdlib.h: + +/usr/include/x86_64-linux-gnu/bits/waitflags.h: + +/usr/include/x86_64-linux-gnu/bits/waitstatus.h: + +/usr/include/x86_64-linux-gnu/sys/types.h: + +/usr/include/x86_64-linux-gnu/sys/select.h: + +/usr/include/x86_64-linux-gnu/bits/select.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigset_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigset_t.h: + +/usr/include/alloca.h: + +/usr/include/x86_64-linux-gnu/bits/stdlib-float.h: + +/usr/include/c++/8/bits/std_abs.h: + +/usr/include/c++/8/cstdio: + +/usr/include/c++/8/cerrno: + +/usr/include/errno.h: + +/usr/include/x86_64-linux-gnu/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/x86_64-linux-gnu/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/x86_64-linux-gnu/bits/types/error_t.h: + +/usr/include/c++/8/bits/functional_hash.h: + +/usr/include/c++/8/bits/basic_string.tcc: + +/usr/include/c++/8/bits/locale_classes.tcc: + +/usr/include/c++/8/system_error: + +/usr/include/x86_64-linux-gnu/c++/8/bits/error_constants.h: + +/usr/include/c++/8/stdexcept: + +/usr/include/c++/8/streambuf: + +/usr/include/c++/8/bits/streambuf.tcc: + +/usr/include/c++/8/bits/basic_ios.h: + +/usr/include/c++/8/bits/locale_facets.h: + +/usr/include/c++/8/cwctype: + +/usr/include/wctype.h: + +/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h: + +/usr/include/x86_64-linux-gnu/c++/8/bits/ctype_base.h: + +/usr/include/c++/8/bits/streambuf_iterator.h: + +/usr/include/x86_64-linux-gnu/c++/8/bits/ctype_inline.h: + +/usr/include/c++/8/bits/locale_facets.tcc: + +/usr/include/c++/8/bits/basic_ios.tcc: + +/usr/include/c++/8/bits/ostream.tcc: + +/usr/include/c++/8/vector: + +/usr/include/c++/8/bits/stl_construct.h: + +/usr/include/c++/8/bits/stl_uninitialized.h: + +/usr/include/c++/8/bits/stl_vector.h: + +/usr/include/c++/8/bits/stl_bvector.h: + +/usr/include/c++/8/bits/vector.tcc: + +include/gtest/internal/gtest-internal.h: + +include/gtest/internal/gtest-port.h: + +/usr/include/c++/8/stdlib.h: + +/usr/include/string.h: + +/usr/include/strings.h: + +/usr/include/x86_64-linux-gnu/sys/stat.h: + +/usr/include/x86_64-linux-gnu/bits/stat.h: + +/usr/include/x86_64-linux-gnu/bits/statx.h: + +/usr/include/c++/8/iostream: + +/usr/include/c++/8/istream: + +/usr/include/c++/8/bits/istream.tcc: + +/usr/include/c++/8/sstream: + +/usr/include/c++/8/bits/sstream.tcc: + +/usr/include/unistd.h: + +/usr/include/x86_64-linux-gnu/bits/posix_opt.h: + +/usr/include/x86_64-linux-gnu/bits/environments.h: + +/usr/include/x86_64-linux-gnu/bits/confname.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_posix.h: + +/usr/include/x86_64-linux-gnu/bits/getopt_core.h: + +/usr/include/regex.h: + +/usr/include/c++/8/tuple: + +/usr/include/c++/8/utility: + +/usr/include/c++/8/bits/stl_relops.h: + +/usr/include/c++/8/array: + +/usr/include/c++/8/bits/uses_allocator.h: + +/usr/include/c++/8/bits/invoke.h: + +/usr/include/x86_64-linux-gnu/sys/wait.h: + +/usr/include/signal.h: + +/usr/include/x86_64-linux-gnu/bits/signum.h: + +/usr/include/x86_64-linux-gnu/bits/signum-generic.h: + +/usr/include/x86_64-linux-gnu/bits/types/sig_atomic_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/siginfo_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/__sigval_t.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-arch.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-consts.h: + +/usr/include/x86_64-linux-gnu/bits/siginfo-consts-arch.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigval_t.h: + +/usr/include/x86_64-linux-gnu/bits/types/sigevent_t.h: + +/usr/include/x86_64-linux-gnu/bits/sigevent-consts.h: + +/usr/include/x86_64-linux-gnu/bits/sigaction.h: + +/usr/include/x86_64-linux-gnu/bits/sigcontext.h: + +/usr/include/x86_64-linux-gnu/bits/types/stack_t.h: + +/usr/include/x86_64-linux-gnu/sys/ucontext.h: + +/usr/include/x86_64-linux-gnu/bits/sigstack.h: + +/usr/include/x86_64-linux-gnu/bits/ss_flags.h: + +/usr/include/x86_64-linux-gnu/bits/types/struct_sigstack.h: + +/usr/include/x86_64-linux-gnu/bits/sigthread.h: + +/usr/include/c++/8/iomanip: + +/usr/include/c++/8/locale: + +/usr/include/c++/8/bits/locale_facets_nonio.h: + +/usr/include/c++/8/ctime: + +/usr/include/x86_64-linux-gnu/c++/8/bits/time_members.h: + +/usr/include/x86_64-linux-gnu/c++/8/bits/messages_members.h: + +/usr/include/libintl.h: + +/usr/include/c++/8/bits/codecvt.h: + +/usr/include/c++/8/bits/locale_facets_nonio.tcc: + +/usr/include/c++/8/bits/locale_conv.h: + +/usr/include/c++/8/bits/unique_ptr.h: + +/usr/include/c++/8/bits/quoted_string.h: + +/usr/include/c++/8/set: + +/usr/include/c++/8/bits/stl_tree.h: + +/usr/include/c++/8/ext/aligned_buffer.h: + +/usr/include/c++/8/bits/stl_set.h: + +/usr/include/c++/8/bits/stl_multiset.h: + +include/gtest/internal/gtest-string.h: + +include/gtest/internal/gtest-filepath.h: + +include/gtest/internal/gtest-type-util.h: + +/usr/include/c++/8/cxxabi.h: + +/usr/include/x86_64-linux-gnu/c++/8/bits/cxxabi_tweaks.h: + +include/gtest/gtest-death-test.h: + +include/gtest/internal/gtest-death-test-internal.h: + +include/gtest/gtest-message.h: + +include/gtest/gtest-param-test.h: + +include/gtest/internal/gtest-param-util.h: + +/usr/include/c++/8/iterator: + +/usr/include/c++/8/bits/stream_iterator.h: + +include/gtest/internal/gtest-linked_ptr.h: + +/usr/include/assert.h: + +include/gtest/gtest-printers.h: + +include/gtest/internal/gtest-param-util-generated.h: + +include/gtest/gtest_prod.h: + +include/gtest/gtest-test-part.h: + +include/gtest/gtest-typed-test.h: + +include/gtest/gtest_pred_impl.h: diff --git a/thirdparty/protobuf-2.6.1/gtest/src/.dirstamp b/thirdparty/protobuf-2.6.1/gtest/src/.dirstamp new file mode 100644 index 00000000..e69de29b diff --git a/thirdparty/protobuf-2.6.1/gtest/src/gtest-all.cc b/thirdparty/protobuf-2.6.1/gtest/src/gtest-all.cc new file mode 100644 index 00000000..0a9cee52 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/src/gtest-all.cc @@ -0,0 +1,48 @@ +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: mheule@google.com (Markus Heule) +// +// Google C++ Testing Framework (Google Test) +// +// Sometimes it's desirable to build Google Test by compiling a single file. +// This file serves this purpose. + +// This line ensures that gtest.h can be compiled on its own, even +// when it's fused. +#include "gtest/gtest.h" + +// The following lines pull in the real gtest *.cc files. +#include "src/gtest.cc" +#include "src/gtest-death-test.cc" +#include "src/gtest-filepath.cc" +#include "src/gtest-port.cc" +#include "src/gtest-printers.cc" +#include "src/gtest-test-part.cc" +#include "src/gtest-typed-test.cc" diff --git a/thirdparty/protobuf-2.6.1/gtest/src/gtest-death-test.cc b/thirdparty/protobuf-2.6.1/gtest/src/gtest-death-test.cc new file mode 100644 index 00000000..8b52431f --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/src/gtest-death-test.cc @@ -0,0 +1,1341 @@ +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan), vladl@google.com (Vlad Losev) +// +// This file implements death tests. + +#include "gtest/gtest-death-test.h" +#include "gtest/internal/gtest-port.h" + +#if GTEST_HAS_DEATH_TEST + +# if GTEST_OS_MAC +# include +# endif // GTEST_OS_MAC + +# include +# include +# include + +# if GTEST_OS_LINUX +# include +# endif // GTEST_OS_LINUX + +# include + +# if GTEST_OS_WINDOWS +# include +# else +# include +# include +# endif // GTEST_OS_WINDOWS + +# if GTEST_OS_QNX +# include +# endif // GTEST_OS_QNX + +#endif // GTEST_HAS_DEATH_TEST + +#include "gtest/gtest-message.h" +#include "gtest/internal/gtest-string.h" + +// Indicates that this translation unit is part of Google Test's +// implementation. It must come before gtest-internal-inl.h is +// included, or there will be a compiler error. This trick is to +// prevent a user from accidentally including gtest-internal-inl.h in +// his code. +#define GTEST_IMPLEMENTATION_ 1 +#include "src/gtest-internal-inl.h" +#undef GTEST_IMPLEMENTATION_ + +namespace testing { + +// Constants. + +// The default death test style. +static const char kDefaultDeathTestStyle[] = "fast"; + +GTEST_DEFINE_string_( + death_test_style, + internal::StringFromGTestEnv("death_test_style", kDefaultDeathTestStyle), + "Indicates how to run a death test in a forked child process: " + "\"threadsafe\" (child process re-executes the test binary " + "from the beginning, running only the specific death test) or " + "\"fast\" (child process runs the death test immediately " + "after forking)."); + +GTEST_DEFINE_bool_( + death_test_use_fork, + internal::BoolFromGTestEnv("death_test_use_fork", false), + "Instructs to use fork()/_exit() instead of clone() in death tests. " + "Ignored and always uses fork() on POSIX systems where clone() is not " + "implemented. Useful when running under valgrind or similar tools if " + "those do not support clone(). Valgrind 3.3.1 will just fail if " + "it sees an unsupported combination of clone() flags. " + "It is not recommended to use this flag w/o valgrind though it will " + "work in 99% of the cases. Once valgrind is fixed, this flag will " + "most likely be removed."); + +namespace internal { +GTEST_DEFINE_string_( + internal_run_death_test, "", + "Indicates the file, line number, temporal index of " + "the single death test to run, and a file descriptor to " + "which a success code may be sent, all separated by " + "the '|' characters. This flag is specified if and only if the current " + "process is a sub-process launched for running a thread-safe " + "death test. FOR INTERNAL USE ONLY."); +} // namespace internal + +#if GTEST_HAS_DEATH_TEST + +namespace internal { + +// Valid only for fast death tests. Indicates the code is running in the +// child process of a fast style death test. +static bool g_in_fast_death_test_child = false; + +// Returns a Boolean value indicating whether the caller is currently +// executing in the context of the death test child process. Tools such as +// Valgrind heap checkers may need this to modify their behavior in death +// tests. IMPORTANT: This is an internal utility. Using it may break the +// implementation of death tests. User code MUST NOT use it. +bool InDeathTestChild() { +# if GTEST_OS_WINDOWS + + // On Windows, death tests are thread-safe regardless of the value of the + // death_test_style flag. + return !GTEST_FLAG(internal_run_death_test).empty(); + +# else + + if (GTEST_FLAG(death_test_style) == "threadsafe") + return !GTEST_FLAG(internal_run_death_test).empty(); + else + return g_in_fast_death_test_child; +#endif +} + +} // namespace internal + +// ExitedWithCode constructor. +ExitedWithCode::ExitedWithCode(int exit_code) : exit_code_(exit_code) { +} + +// ExitedWithCode function-call operator. +bool ExitedWithCode::operator()(int exit_status) const { +# if GTEST_OS_WINDOWS + + return exit_status == exit_code_; + +# else + + return WIFEXITED(exit_status) && WEXITSTATUS(exit_status) == exit_code_; + +# endif // GTEST_OS_WINDOWS +} + +# if !GTEST_OS_WINDOWS +// KilledBySignal constructor. +KilledBySignal::KilledBySignal(int signum) : signum_(signum) { +} + +// KilledBySignal function-call operator. +bool KilledBySignal::operator()(int exit_status) const { + return WIFSIGNALED(exit_status) && WTERMSIG(exit_status) == signum_; +} +# endif // !GTEST_OS_WINDOWS + +namespace internal { + +// Utilities needed for death tests. + +// Generates a textual description of a given exit code, in the format +// specified by wait(2). +static std::string ExitSummary(int exit_code) { + Message m; + +# if GTEST_OS_WINDOWS + + m << "Exited with exit status " << exit_code; + +# else + + if (WIFEXITED(exit_code)) { + m << "Exited with exit status " << WEXITSTATUS(exit_code); + } else if (WIFSIGNALED(exit_code)) { + m << "Terminated by signal " << WTERMSIG(exit_code); + } +# ifdef WCOREDUMP + if (WCOREDUMP(exit_code)) { + m << " (core dumped)"; + } +# endif +# endif // GTEST_OS_WINDOWS + + return m.GetString(); +} + +// Returns true if exit_status describes a process that was terminated +// by a signal, or exited normally with a nonzero exit code. +bool ExitedUnsuccessfully(int exit_status) { + return !ExitedWithCode(0)(exit_status); +} + +# if !GTEST_OS_WINDOWS +// Generates a textual failure message when a death test finds more than +// one thread running, or cannot determine the number of threads, prior +// to executing the given statement. It is the responsibility of the +// caller not to pass a thread_count of 1. +static std::string DeathTestThreadWarning(size_t thread_count) { + Message msg; + msg << "Death tests use fork(), which is unsafe particularly" + << " in a threaded context. For this test, " << GTEST_NAME_ << " "; + if (thread_count == 0) + msg << "couldn't detect the number of threads."; + else + msg << "detected " << thread_count << " threads."; + return msg.GetString(); +} +# endif // !GTEST_OS_WINDOWS + +// Flag characters for reporting a death test that did not die. +static const char kDeathTestLived = 'L'; +static const char kDeathTestReturned = 'R'; +static const char kDeathTestThrew = 'T'; +static const char kDeathTestInternalError = 'I'; + +// An enumeration describing all of the possible ways that a death test can +// conclude. DIED means that the process died while executing the test +// code; LIVED means that process lived beyond the end of the test code; +// RETURNED means that the test statement attempted to execute a return +// statement, which is not allowed; THREW means that the test statement +// returned control by throwing an exception. IN_PROGRESS means the test +// has not yet concluded. +// TODO(vladl@google.com): Unify names and possibly values for +// AbortReason, DeathTestOutcome, and flag characters above. +enum DeathTestOutcome { IN_PROGRESS, DIED, LIVED, RETURNED, THREW }; + +// Routine for aborting the program which is safe to call from an +// exec-style death test child process, in which case the error +// message is propagated back to the parent process. Otherwise, the +// message is simply printed to stderr. In either case, the program +// then exits with status 1. +void DeathTestAbort(const std::string& message) { + // On a POSIX system, this function may be called from a threadsafe-style + // death test child process, which operates on a very small stack. Use + // the heap for any additional non-minuscule memory requirements. + const InternalRunDeathTestFlag* const flag = + GetUnitTestImpl()->internal_run_death_test_flag(); + if (flag != NULL) { + FILE* parent = posix::FDOpen(flag->write_fd(), "w"); + fputc(kDeathTestInternalError, parent); + fprintf(parent, "%s", message.c_str()); + fflush(parent); + _exit(1); + } else { + fprintf(stderr, "%s", message.c_str()); + fflush(stderr); + posix::Abort(); + } +} + +// A replacement for CHECK that calls DeathTestAbort if the assertion +// fails. +# define GTEST_DEATH_TEST_CHECK_(expression) \ + do { \ + if (!::testing::internal::IsTrue(expression)) { \ + DeathTestAbort(::testing::internal::String::Format( \ + "CHECK failed: File %s, line %d: %s", \ + __FILE__, __LINE__, #expression)); \ + } \ + } while (::testing::internal::AlwaysFalse()) + +// This macro is similar to GTEST_DEATH_TEST_CHECK_, but it is meant for +// evaluating any system call that fulfills two conditions: it must return +// -1 on failure, and set errno to EINTR when it is interrupted and +// should be tried again. The macro expands to a loop that repeatedly +// evaluates the expression as long as it evaluates to -1 and sets +// errno to EINTR. If the expression evaluates to -1 but errno is +// something other than EINTR, DeathTestAbort is called. +# define GTEST_DEATH_TEST_CHECK_SYSCALL_(expression) \ + do { \ + int gtest_retval; \ + do { \ + gtest_retval = (expression); \ + } while (gtest_retval == -1 && errno == EINTR); \ + if (gtest_retval == -1) { \ + DeathTestAbort(::testing::internal::String::Format( \ + "CHECK failed: File %s, line %d: %s != -1", \ + __FILE__, __LINE__, #expression)); \ + } \ + } while (::testing::internal::AlwaysFalse()) + +// Returns the message describing the last system error in errno. +std::string GetLastErrnoDescription() { + return errno == 0 ? "" : posix::StrError(errno); +} + +// This is called from a death test parent process to read a failure +// message from the death test child process and log it with the FATAL +// severity. On Windows, the message is read from a pipe handle. On other +// platforms, it is read from a file descriptor. +static void FailFromInternalError(int fd) { + Message error; + char buffer[256]; + int num_read; + + do { + while ((num_read = posix::Read(fd, buffer, 255)) > 0) { + buffer[num_read] = '\0'; + error << buffer; + } + } while (num_read == -1 && errno == EINTR); + + if (num_read == 0) { + GTEST_LOG_(FATAL) << error.GetString(); + } else { + const int last_error = errno; + GTEST_LOG_(FATAL) << "Error while reading death test internal: " + << GetLastErrnoDescription() << " [" << last_error << "]"; + } +} + +// Death test constructor. Increments the running death test count +// for the current test. +DeathTest::DeathTest() { + TestInfo* const info = GetUnitTestImpl()->current_test_info(); + if (info == NULL) { + DeathTestAbort("Cannot run a death test outside of a TEST or " + "TEST_F construct"); + } +} + +// Creates and returns a death test by dispatching to the current +// death test factory. +bool DeathTest::Create(const char* statement, const RE* regex, + const char* file, int line, DeathTest** test) { + return GetUnitTestImpl()->death_test_factory()->Create( + statement, regex, file, line, test); +} + +const char* DeathTest::LastMessage() { + return last_death_test_message_.c_str(); +} + +void DeathTest::set_last_death_test_message(const std::string& message) { + last_death_test_message_ = message; +} + +std::string DeathTest::last_death_test_message_; + +// Provides cross platform implementation for some death functionality. +class DeathTestImpl : public DeathTest { + protected: + DeathTestImpl(const char* a_statement, const RE* a_regex) + : statement_(a_statement), + regex_(a_regex), + spawned_(false), + status_(-1), + outcome_(IN_PROGRESS), + read_fd_(-1), + write_fd_(-1) {} + + // read_fd_ is expected to be closed and cleared by a derived class. + ~DeathTestImpl() { GTEST_DEATH_TEST_CHECK_(read_fd_ == -1); } + + void Abort(AbortReason reason); + virtual bool Passed(bool status_ok); + + const char* statement() const { return statement_; } + const RE* regex() const { return regex_; } + bool spawned() const { return spawned_; } + void set_spawned(bool is_spawned) { spawned_ = is_spawned; } + int status() const { return status_; } + void set_status(int a_status) { status_ = a_status; } + DeathTestOutcome outcome() const { return outcome_; } + void set_outcome(DeathTestOutcome an_outcome) { outcome_ = an_outcome; } + int read_fd() const { return read_fd_; } + void set_read_fd(int fd) { read_fd_ = fd; } + int write_fd() const { return write_fd_; } + void set_write_fd(int fd) { write_fd_ = fd; } + + // Called in the parent process only. Reads the result code of the death + // test child process via a pipe, interprets it to set the outcome_ + // member, and closes read_fd_. Outputs diagnostics and terminates in + // case of unexpected codes. + void ReadAndInterpretStatusByte(); + + private: + // The textual content of the code this object is testing. This class + // doesn't own this string and should not attempt to delete it. + const char* const statement_; + // The regular expression which test output must match. DeathTestImpl + // doesn't own this object and should not attempt to delete it. + const RE* const regex_; + // True if the death test child process has been successfully spawned. + bool spawned_; + // The exit status of the child process. + int status_; + // How the death test concluded. + DeathTestOutcome outcome_; + // Descriptor to the read end of the pipe to the child process. It is + // always -1 in the child process. The child keeps its write end of the + // pipe in write_fd_. + int read_fd_; + // Descriptor to the child's write end of the pipe to the parent process. + // It is always -1 in the parent process. The parent keeps its end of the + // pipe in read_fd_. + int write_fd_; +}; + +// Called in the parent process only. Reads the result code of the death +// test child process via a pipe, interprets it to set the outcome_ +// member, and closes read_fd_. Outputs diagnostics and terminates in +// case of unexpected codes. +void DeathTestImpl::ReadAndInterpretStatusByte() { + char flag; + int bytes_read; + + // The read() here blocks until data is available (signifying the + // failure of the death test) or until the pipe is closed (signifying + // its success), so it's okay to call this in the parent before + // the child process has exited. + do { + bytes_read = posix::Read(read_fd(), &flag, 1); + } while (bytes_read == -1 && errno == EINTR); + + if (bytes_read == 0) { + set_outcome(DIED); + } else if (bytes_read == 1) { + switch (flag) { + case kDeathTestReturned: + set_outcome(RETURNED); + break; + case kDeathTestThrew: + set_outcome(THREW); + break; + case kDeathTestLived: + set_outcome(LIVED); + break; + case kDeathTestInternalError: + FailFromInternalError(read_fd()); // Does not return. + break; + default: + GTEST_LOG_(FATAL) << "Death test child process reported " + << "unexpected status byte (" + << static_cast(flag) << ")"; + } + } else { + GTEST_LOG_(FATAL) << "Read from death test child process failed: " + << GetLastErrnoDescription(); + } + GTEST_DEATH_TEST_CHECK_SYSCALL_(posix::Close(read_fd())); + set_read_fd(-1); +} + +// Signals that the death test code which should have exited, didn't. +// Should be called only in a death test child process. +// Writes a status byte to the child's status file descriptor, then +// calls _exit(1). +void DeathTestImpl::Abort(AbortReason reason) { + // The parent process considers the death test to be a failure if + // it finds any data in our pipe. So, here we write a single flag byte + // to the pipe, then exit. + const char status_ch = + reason == TEST_DID_NOT_DIE ? kDeathTestLived : + reason == TEST_THREW_EXCEPTION ? kDeathTestThrew : kDeathTestReturned; + + GTEST_DEATH_TEST_CHECK_SYSCALL_(posix::Write(write_fd(), &status_ch, 1)); + // We are leaking the descriptor here because on some platforms (i.e., + // when built as Windows DLL), destructors of global objects will still + // run after calling _exit(). On such systems, write_fd_ will be + // indirectly closed from the destructor of UnitTestImpl, causing double + // close if it is also closed here. On debug configurations, double close + // may assert. As there are no in-process buffers to flush here, we are + // relying on the OS to close the descriptor after the process terminates + // when the destructors are not run. + _exit(1); // Exits w/o any normal exit hooks (we were supposed to crash) +} + +// Returns an indented copy of stderr output for a death test. +// This makes distinguishing death test output lines from regular log lines +// much easier. +static ::std::string FormatDeathTestOutput(const ::std::string& output) { + ::std::string ret; + for (size_t at = 0; ; ) { + const size_t line_end = output.find('\n', at); + ret += "[ DEATH ] "; + if (line_end == ::std::string::npos) { + ret += output.substr(at); + break; + } + ret += output.substr(at, line_end + 1 - at); + at = line_end + 1; + } + return ret; +} + +// Assesses the success or failure of a death test, using both private +// members which have previously been set, and one argument: +// +// Private data members: +// outcome: An enumeration describing how the death test +// concluded: DIED, LIVED, THREW, or RETURNED. The death test +// fails in the latter three cases. +// status: The exit status of the child process. On *nix, it is in the +// in the format specified by wait(2). On Windows, this is the +// value supplied to the ExitProcess() API or a numeric code +// of the exception that terminated the program. +// regex: A regular expression object to be applied to +// the test's captured standard error output; the death test +// fails if it does not match. +// +// Argument: +// status_ok: true if exit_status is acceptable in the context of +// this particular death test, which fails if it is false +// +// Returns true iff all of the above conditions are met. Otherwise, the +// first failing condition, in the order given above, is the one that is +// reported. Also sets the last death test message string. +bool DeathTestImpl::Passed(bool status_ok) { + if (!spawned()) + return false; + + const std::string error_message = GetCapturedStderr(); + + bool success = false; + Message buffer; + + buffer << "Death test: " << statement() << "\n"; + switch (outcome()) { + case LIVED: + buffer << " Result: failed to die.\n" + << " Error msg:\n" << FormatDeathTestOutput(error_message); + break; + case THREW: + buffer << " Result: threw an exception.\n" + << " Error msg:\n" << FormatDeathTestOutput(error_message); + break; + case RETURNED: + buffer << " Result: illegal return in test statement.\n" + << " Error msg:\n" << FormatDeathTestOutput(error_message); + break; + case DIED: + if (status_ok) { + const bool matched = RE::PartialMatch(error_message.c_str(), *regex()); + if (matched) { + success = true; + } else { + buffer << " Result: died but not with expected error.\n" + << " Expected: " << regex()->pattern() << "\n" + << "Actual msg:\n" << FormatDeathTestOutput(error_message); + } + } else { + buffer << " Result: died but not with expected exit code:\n" + << " " << ExitSummary(status()) << "\n" + << "Actual msg:\n" << FormatDeathTestOutput(error_message); + } + break; + case IN_PROGRESS: + default: + GTEST_LOG_(FATAL) + << "DeathTest::Passed somehow called before conclusion of test"; + } + + DeathTest::set_last_death_test_message(buffer.GetString()); + return success; +} + +# if GTEST_OS_WINDOWS +// WindowsDeathTest implements death tests on Windows. Due to the +// specifics of starting new processes on Windows, death tests there are +// always threadsafe, and Google Test considers the +// --gtest_death_test_style=fast setting to be equivalent to +// --gtest_death_test_style=threadsafe there. +// +// A few implementation notes: Like the Linux version, the Windows +// implementation uses pipes for child-to-parent communication. But due to +// the specifics of pipes on Windows, some extra steps are required: +// +// 1. The parent creates a communication pipe and stores handles to both +// ends of it. +// 2. The parent starts the child and provides it with the information +// necessary to acquire the handle to the write end of the pipe. +// 3. The child acquires the write end of the pipe and signals the parent +// using a Windows event. +// 4. Now the parent can release the write end of the pipe on its side. If +// this is done before step 3, the object's reference count goes down to +// 0 and it is destroyed, preventing the child from acquiring it. The +// parent now has to release it, or read operations on the read end of +// the pipe will not return when the child terminates. +// 5. The parent reads child's output through the pipe (outcome code and +// any possible error messages) from the pipe, and its stderr and then +// determines whether to fail the test. +// +// Note: to distinguish Win32 API calls from the local method and function +// calls, the former are explicitly resolved in the global namespace. +// +class WindowsDeathTest : public DeathTestImpl { + public: + WindowsDeathTest(const char* a_statement, + const RE* a_regex, + const char* file, + int line) + : DeathTestImpl(a_statement, a_regex), file_(file), line_(line) {} + + // All of these virtual functions are inherited from DeathTest. + virtual int Wait(); + virtual TestRole AssumeRole(); + + private: + // The name of the file in which the death test is located. + const char* const file_; + // The line number on which the death test is located. + const int line_; + // Handle to the write end of the pipe to the child process. + AutoHandle write_handle_; + // Child process handle. + AutoHandle child_handle_; + // Event the child process uses to signal the parent that it has + // acquired the handle to the write end of the pipe. After seeing this + // event the parent can release its own handles to make sure its + // ReadFile() calls return when the child terminates. + AutoHandle event_handle_; +}; + +// Waits for the child in a death test to exit, returning its exit +// status, or 0 if no child process exists. As a side effect, sets the +// outcome data member. +int WindowsDeathTest::Wait() { + if (!spawned()) + return 0; + + // Wait until the child either signals that it has acquired the write end + // of the pipe or it dies. + const HANDLE wait_handles[2] = { child_handle_.Get(), event_handle_.Get() }; + switch (::WaitForMultipleObjects(2, + wait_handles, + FALSE, // Waits for any of the handles. + INFINITE)) { + case WAIT_OBJECT_0: + case WAIT_OBJECT_0 + 1: + break; + default: + GTEST_DEATH_TEST_CHECK_(false); // Should not get here. + } + + // The child has acquired the write end of the pipe or exited. + // We release the handle on our side and continue. + write_handle_.Reset(); + event_handle_.Reset(); + + ReadAndInterpretStatusByte(); + + // Waits for the child process to exit if it haven't already. This + // returns immediately if the child has already exited, regardless of + // whether previous calls to WaitForMultipleObjects synchronized on this + // handle or not. + GTEST_DEATH_TEST_CHECK_( + WAIT_OBJECT_0 == ::WaitForSingleObject(child_handle_.Get(), + INFINITE)); + DWORD status_code; + GTEST_DEATH_TEST_CHECK_( + ::GetExitCodeProcess(child_handle_.Get(), &status_code) != FALSE); + child_handle_.Reset(); + set_status(static_cast(status_code)); + return status(); +} + +// The AssumeRole process for a Windows death test. It creates a child +// process with the same executable as the current process to run the +// death test. The child process is given the --gtest_filter and +// --gtest_internal_run_death_test flags such that it knows to run the +// current death test only. +DeathTest::TestRole WindowsDeathTest::AssumeRole() { + const UnitTestImpl* const impl = GetUnitTestImpl(); + const InternalRunDeathTestFlag* const flag = + impl->internal_run_death_test_flag(); + const TestInfo* const info = impl->current_test_info(); + const int death_test_index = info->result()->death_test_count(); + + if (flag != NULL) { + // ParseInternalRunDeathTestFlag() has performed all the necessary + // processing. + set_write_fd(flag->write_fd()); + return EXECUTE_TEST; + } + + // WindowsDeathTest uses an anonymous pipe to communicate results of + // a death test. + SECURITY_ATTRIBUTES handles_are_inheritable = { + sizeof(SECURITY_ATTRIBUTES), NULL, TRUE }; + HANDLE read_handle, write_handle; + GTEST_DEATH_TEST_CHECK_( + ::CreatePipe(&read_handle, &write_handle, &handles_are_inheritable, + 0) // Default buffer size. + != FALSE); + set_read_fd(::_open_osfhandle(reinterpret_cast(read_handle), + O_RDONLY)); + write_handle_.Reset(write_handle); + event_handle_.Reset(::CreateEvent( + &handles_are_inheritable, + TRUE, // The event will automatically reset to non-signaled state. + FALSE, // The initial state is non-signalled. + NULL)); // The even is unnamed. + GTEST_DEATH_TEST_CHECK_(event_handle_.Get() != NULL); + const std::string filter_flag = + std::string("--") + GTEST_FLAG_PREFIX_ + kFilterFlag + "=" + + info->test_case_name() + "." + info->name(); + const std::string internal_flag = + std::string("--") + GTEST_FLAG_PREFIX_ + kInternalRunDeathTestFlag + + "=" + file_ + "|" + String::Format("%d|%d|%u|%Iu|%Iu", line_, + death_test_index, + static_cast(::GetCurrentProcessId()), + // size_t has the same with as pointers on both 32-bit and 64-bit + // Windows platforms. + // See http://msdn.microsoft.com/en-us/library/tcxf1dw6.aspx. + reinterpret_cast(write_handle), + reinterpret_cast(event_handle_.Get())); + + char executable_path[_MAX_PATH + 1]; // NOLINT + GTEST_DEATH_TEST_CHECK_( + _MAX_PATH + 1 != ::GetModuleFileNameA(NULL, + executable_path, + _MAX_PATH)); + + std::string command_line = + std::string(::GetCommandLineA()) + " " + filter_flag + " \"" + + internal_flag + "\""; + + DeathTest::set_last_death_test_message(""); + + CaptureStderr(); + // Flush the log buffers since the log streams are shared with the child. + FlushInfoLog(); + + // The child process will share the standard handles with the parent. + STARTUPINFOA startup_info; + memset(&startup_info, 0, sizeof(STARTUPINFO)); + startup_info.dwFlags = STARTF_USESTDHANDLES; + startup_info.hStdInput = ::GetStdHandle(STD_INPUT_HANDLE); + startup_info.hStdOutput = ::GetStdHandle(STD_OUTPUT_HANDLE); + startup_info.hStdError = ::GetStdHandle(STD_ERROR_HANDLE); + + PROCESS_INFORMATION process_info; + GTEST_DEATH_TEST_CHECK_(::CreateProcessA( + executable_path, + const_cast(command_line.c_str()), + NULL, // Retuned process handle is not inheritable. + NULL, // Retuned thread handle is not inheritable. + TRUE, // Child inherits all inheritable handles (for write_handle_). + 0x0, // Default creation flags. + NULL, // Inherit the parent's environment. + UnitTest::GetInstance()->original_working_dir(), + &startup_info, + &process_info) != FALSE); + child_handle_.Reset(process_info.hProcess); + ::CloseHandle(process_info.hThread); + set_spawned(true); + return OVERSEE_TEST; +} +# else // We are not on Windows. + +// ForkingDeathTest provides implementations for most of the abstract +// methods of the DeathTest interface. Only the AssumeRole method is +// left undefined. +class ForkingDeathTest : public DeathTestImpl { + public: + ForkingDeathTest(const char* statement, const RE* regex); + + // All of these virtual functions are inherited from DeathTest. + virtual int Wait(); + + protected: + void set_child_pid(pid_t child_pid) { child_pid_ = child_pid; } + + private: + // PID of child process during death test; 0 in the child process itself. + pid_t child_pid_; +}; + +// Constructs a ForkingDeathTest. +ForkingDeathTest::ForkingDeathTest(const char* a_statement, const RE* a_regex) + : DeathTestImpl(a_statement, a_regex), + child_pid_(-1) {} + +// Waits for the child in a death test to exit, returning its exit +// status, or 0 if no child process exists. As a side effect, sets the +// outcome data member. +int ForkingDeathTest::Wait() { + if (!spawned()) + return 0; + + ReadAndInterpretStatusByte(); + + int status_value; + GTEST_DEATH_TEST_CHECK_SYSCALL_(waitpid(child_pid_, &status_value, 0)); + set_status(status_value); + return status_value; +} + +// A concrete death test class that forks, then immediately runs the test +// in the child process. +class NoExecDeathTest : public ForkingDeathTest { + public: + NoExecDeathTest(const char* a_statement, const RE* a_regex) : + ForkingDeathTest(a_statement, a_regex) { } + virtual TestRole AssumeRole(); +}; + +// The AssumeRole process for a fork-and-run death test. It implements a +// straightforward fork, with a simple pipe to transmit the status byte. +DeathTest::TestRole NoExecDeathTest::AssumeRole() { + const size_t thread_count = GetThreadCount(); + if (thread_count != 1) { + GTEST_LOG_(WARNING) << DeathTestThreadWarning(thread_count); + } + + int pipe_fd[2]; + GTEST_DEATH_TEST_CHECK_(pipe(pipe_fd) != -1); + + DeathTest::set_last_death_test_message(""); + CaptureStderr(); + // When we fork the process below, the log file buffers are copied, but the + // file descriptors are shared. We flush all log files here so that closing + // the file descriptors in the child process doesn't throw off the + // synchronization between descriptors and buffers in the parent process. + // This is as close to the fork as possible to avoid a race condition in case + // there are multiple threads running before the death test, and another + // thread writes to the log file. + FlushInfoLog(); + + const pid_t child_pid = fork(); + GTEST_DEATH_TEST_CHECK_(child_pid != -1); + set_child_pid(child_pid); + if (child_pid == 0) { + GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[0])); + set_write_fd(pipe_fd[1]); + // Redirects all logging to stderr in the child process to prevent + // concurrent writes to the log files. We capture stderr in the parent + // process and append the child process' output to a log. + LogToStderr(); + // Event forwarding to the listeners of event listener API mush be shut + // down in death test subprocesses. + GetUnitTestImpl()->listeners()->SuppressEventForwarding(); + g_in_fast_death_test_child = true; + return EXECUTE_TEST; + } else { + GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[1])); + set_read_fd(pipe_fd[0]); + set_spawned(true); + return OVERSEE_TEST; + } +} + +// A concrete death test class that forks and re-executes the main +// program from the beginning, with command-line flags set that cause +// only this specific death test to be run. +class ExecDeathTest : public ForkingDeathTest { + public: + ExecDeathTest(const char* a_statement, const RE* a_regex, + const char* file, int line) : + ForkingDeathTest(a_statement, a_regex), file_(file), line_(line) { } + virtual TestRole AssumeRole(); + private: + static ::std::vector + GetArgvsForDeathTestChildProcess() { + ::std::vector args = GetInjectableArgvs(); + return args; + } + // The name of the file in which the death test is located. + const char* const file_; + // The line number on which the death test is located. + const int line_; +}; + +// Utility class for accumulating command-line arguments. +class Arguments { + public: + Arguments() { + args_.push_back(NULL); + } + + ~Arguments() { + for (std::vector::iterator i = args_.begin(); i != args_.end(); + ++i) { + free(*i); + } + } + void AddArgument(const char* argument) { + args_.insert(args_.end() - 1, posix::StrDup(argument)); + } + + template + void AddArguments(const ::std::vector& arguments) { + for (typename ::std::vector::const_iterator i = arguments.begin(); + i != arguments.end(); + ++i) { + args_.insert(args_.end() - 1, posix::StrDup(i->c_str())); + } + } + char* const* Argv() { + return &args_[0]; + } + + private: + std::vector args_; +}; + +// A struct that encompasses the arguments to the child process of a +// threadsafe-style death test process. +struct ExecDeathTestArgs { + char* const* argv; // Command-line arguments for the child's call to exec + int close_fd; // File descriptor to close; the read end of a pipe +}; + +# if GTEST_OS_MAC +inline char** GetEnviron() { + // When Google Test is built as a framework on MacOS X, the environ variable + // is unavailable. Apple's documentation (man environ) recommends using + // _NSGetEnviron() instead. + return *_NSGetEnviron(); +} +# else +// Some POSIX platforms expect you to declare environ. extern "C" makes +// it reside in the global namespace. +extern "C" char** environ; +inline char** GetEnviron() { return environ; } +# endif // GTEST_OS_MAC + +# if !GTEST_OS_QNX +// The main function for a threadsafe-style death test child process. +// This function is called in a clone()-ed process and thus must avoid +// any potentially unsafe operations like malloc or libc functions. +static int ExecDeathTestChildMain(void* child_arg) { + ExecDeathTestArgs* const args = static_cast(child_arg); + GTEST_DEATH_TEST_CHECK_SYSCALL_(close(args->close_fd)); + + // We need to execute the test program in the same environment where + // it was originally invoked. Therefore we change to the original + // working directory first. + const char* const original_dir = + UnitTest::GetInstance()->original_working_dir(); + // We can safely call chdir() as it's a direct system call. + if (chdir(original_dir) != 0) { + DeathTestAbort(std::string("chdir(\"") + original_dir + "\") failed: " + + GetLastErrnoDescription()); + return EXIT_FAILURE; + } + + // We can safely call execve() as it's a direct system call. We + // cannot use execvp() as it's a libc function and thus potentially + // unsafe. Since execve() doesn't search the PATH, the user must + // invoke the test program via a valid path that contains at least + // one path separator. + execve(args->argv[0], args->argv, GetEnviron()); + DeathTestAbort(std::string("execve(") + args->argv[0] + ", ...) in " + + original_dir + " failed: " + + GetLastErrnoDescription()); + return EXIT_FAILURE; +} +# endif // !GTEST_OS_QNX + +// Two utility routines that together determine the direction the stack +// grows. +// This could be accomplished more elegantly by a single recursive +// function, but we want to guard against the unlikely possibility of +// a smart compiler optimizing the recursion away. +// +// GTEST_NO_INLINE_ is required to prevent GCC 4.6 from inlining +// StackLowerThanAddress into StackGrowsDown, which then doesn't give +// correct answer. +void StackLowerThanAddress(const void* ptr, bool* result) GTEST_NO_INLINE_; +void StackLowerThanAddress(const void* ptr, bool* result) { + int dummy; + *result = (&dummy < ptr); +} + +bool StackGrowsDown() { + int dummy; + bool result; + StackLowerThanAddress(&dummy, &result); + return result; +} + +// Spawns a child process with the same executable as the current process in +// a thread-safe manner and instructs it to run the death test. The +// implementation uses fork(2) + exec. On systems where clone(2) is +// available, it is used instead, being slightly more thread-safe. On QNX, +// fork supports only single-threaded environments, so this function uses +// spawn(2) there instead. The function dies with an error message if +// anything goes wrong. +static pid_t ExecDeathTestSpawnChild(char* const* argv, int close_fd) { + ExecDeathTestArgs args = { argv, close_fd }; + pid_t child_pid = -1; + +# if GTEST_OS_QNX + // Obtains the current directory and sets it to be closed in the child + // process. + const int cwd_fd = open(".", O_RDONLY); + GTEST_DEATH_TEST_CHECK_(cwd_fd != -1); + GTEST_DEATH_TEST_CHECK_SYSCALL_(fcntl(cwd_fd, F_SETFD, FD_CLOEXEC)); + // We need to execute the test program in the same environment where + // it was originally invoked. Therefore we change to the original + // working directory first. + const char* const original_dir = + UnitTest::GetInstance()->original_working_dir(); + // We can safely call chdir() as it's a direct system call. + if (chdir(original_dir) != 0) { + DeathTestAbort(std::string("chdir(\"") + original_dir + "\") failed: " + + GetLastErrnoDescription()); + return EXIT_FAILURE; + } + + int fd_flags; + // Set close_fd to be closed after spawn. + GTEST_DEATH_TEST_CHECK_SYSCALL_(fd_flags = fcntl(close_fd, F_GETFD)); + GTEST_DEATH_TEST_CHECK_SYSCALL_(fcntl(close_fd, F_SETFD, + fd_flags | FD_CLOEXEC)); + struct inheritance inherit = {0}; + // spawn is a system call. + child_pid = spawn(args.argv[0], 0, NULL, &inherit, args.argv, GetEnviron()); + // Restores the current working directory. + GTEST_DEATH_TEST_CHECK_(fchdir(cwd_fd) != -1); + GTEST_DEATH_TEST_CHECK_SYSCALL_(close(cwd_fd)); + +# else // GTEST_OS_QNX +# if GTEST_OS_LINUX + // When a SIGPROF signal is received while fork() or clone() are executing, + // the process may hang. To avoid this, we ignore SIGPROF here and re-enable + // it after the call to fork()/clone() is complete. + struct sigaction saved_sigprof_action; + struct sigaction ignore_sigprof_action; + memset(&ignore_sigprof_action, 0, sizeof(ignore_sigprof_action)); + sigemptyset(&ignore_sigprof_action.sa_mask); + ignore_sigprof_action.sa_handler = SIG_IGN; + GTEST_DEATH_TEST_CHECK_SYSCALL_(sigaction( + SIGPROF, &ignore_sigprof_action, &saved_sigprof_action)); +# endif // GTEST_OS_LINUX + +# if GTEST_HAS_CLONE + const bool use_fork = GTEST_FLAG(death_test_use_fork); + + if (!use_fork) { + static const bool stack_grows_down = StackGrowsDown(); + const size_t stack_size = getpagesize(); + // MMAP_ANONYMOUS is not defined on Mac, so we use MAP_ANON instead. + void* const stack = mmap(NULL, stack_size, PROT_READ | PROT_WRITE, + MAP_ANON | MAP_PRIVATE, -1, 0); + GTEST_DEATH_TEST_CHECK_(stack != MAP_FAILED); + + // Maximum stack alignment in bytes: For a downward-growing stack, this + // amount is subtracted from size of the stack space to get an address + // that is within the stack space and is aligned on all systems we care + // about. As far as I know there is no ABI with stack alignment greater + // than 64. We assume stack and stack_size already have alignment of + // kMaxStackAlignment. + const size_t kMaxStackAlignment = 64; + void* const stack_top = + static_cast(stack) + + (stack_grows_down ? stack_size - kMaxStackAlignment : 0); + GTEST_DEATH_TEST_CHECK_(stack_size > kMaxStackAlignment && + reinterpret_cast(stack_top) % kMaxStackAlignment == 0); + + child_pid = clone(&ExecDeathTestChildMain, stack_top, SIGCHLD, &args); + + GTEST_DEATH_TEST_CHECK_(munmap(stack, stack_size) != -1); + } +# else + const bool use_fork = true; +# endif // GTEST_HAS_CLONE + + if (use_fork && (child_pid = fork()) == 0) { + ExecDeathTestChildMain(&args); + _exit(0); + } +# endif // GTEST_OS_QNX +# if GTEST_OS_LINUX + GTEST_DEATH_TEST_CHECK_SYSCALL_( + sigaction(SIGPROF, &saved_sigprof_action, NULL)); +# endif // GTEST_OS_LINUX + + GTEST_DEATH_TEST_CHECK_(child_pid != -1); + return child_pid; +} + +// The AssumeRole process for a fork-and-exec death test. It re-executes the +// main program from the beginning, setting the --gtest_filter +// and --gtest_internal_run_death_test flags to cause only the current +// death test to be re-run. +DeathTest::TestRole ExecDeathTest::AssumeRole() { + const UnitTestImpl* const impl = GetUnitTestImpl(); + const InternalRunDeathTestFlag* const flag = + impl->internal_run_death_test_flag(); + const TestInfo* const info = impl->current_test_info(); + const int death_test_index = info->result()->death_test_count(); + + if (flag != NULL) { + set_write_fd(flag->write_fd()); + return EXECUTE_TEST; + } + + int pipe_fd[2]; + GTEST_DEATH_TEST_CHECK_(pipe(pipe_fd) != -1); + // Clear the close-on-exec flag on the write end of the pipe, lest + // it be closed when the child process does an exec: + GTEST_DEATH_TEST_CHECK_(fcntl(pipe_fd[1], F_SETFD, 0) != -1); + + const std::string filter_flag = + String::Format("--%s%s=%s.%s", + GTEST_FLAG_PREFIX_, kFilterFlag, + info->test_case_name(), info->name()); + const std::string internal_flag = + String::Format("--%s%s=%s|%d|%d|%d", + GTEST_FLAG_PREFIX_, kInternalRunDeathTestFlag, + file_, line_, death_test_index, pipe_fd[1]); + Arguments args; + args.AddArguments(GetArgvsForDeathTestChildProcess()); + args.AddArgument(filter_flag.c_str()); + args.AddArgument(internal_flag.c_str()); + + DeathTest::set_last_death_test_message(""); + + CaptureStderr(); + // See the comment in NoExecDeathTest::AssumeRole for why the next line + // is necessary. + FlushInfoLog(); + + const pid_t child_pid = ExecDeathTestSpawnChild(args.Argv(), pipe_fd[0]); + GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[1])); + set_child_pid(child_pid); + set_read_fd(pipe_fd[0]); + set_spawned(true); + return OVERSEE_TEST; +} + +# endif // !GTEST_OS_WINDOWS + +// Creates a concrete DeathTest-derived class that depends on the +// --gtest_death_test_style flag, and sets the pointer pointed to +// by the "test" argument to its address. If the test should be +// skipped, sets that pointer to NULL. Returns true, unless the +// flag is set to an invalid value. +bool DefaultDeathTestFactory::Create(const char* statement, const RE* regex, + const char* file, int line, + DeathTest** test) { + UnitTestImpl* const impl = GetUnitTestImpl(); + const InternalRunDeathTestFlag* const flag = + impl->internal_run_death_test_flag(); + const int death_test_index = impl->current_test_info() + ->increment_death_test_count(); + + if (flag != NULL) { + if (death_test_index > flag->index()) { + DeathTest::set_last_death_test_message(String::Format( + "Death test count (%d) somehow exceeded expected maximum (%d)", + death_test_index, flag->index())); + return false; + } + + if (!(flag->file() == file && flag->line() == line && + flag->index() == death_test_index)) { + *test = NULL; + return true; + } + } + +# if GTEST_OS_WINDOWS + + if (GTEST_FLAG(death_test_style) == "threadsafe" || + GTEST_FLAG(death_test_style) == "fast") { + *test = new WindowsDeathTest(statement, regex, file, line); + } + +# else + + if (GTEST_FLAG(death_test_style) == "threadsafe") { + *test = new ExecDeathTest(statement, regex, file, line); + } else if (GTEST_FLAG(death_test_style) == "fast") { + *test = new NoExecDeathTest(statement, regex); + } + +# endif // GTEST_OS_WINDOWS + + else { // NOLINT - this is more readable than unbalanced brackets inside #if. + DeathTest::set_last_death_test_message(String::Format( + "Unknown death test style \"%s\" encountered", + GTEST_FLAG(death_test_style).c_str())); + return false; + } + + return true; +} + +// Splits a given string on a given delimiter, populating a given +// vector with the fields. GTEST_HAS_DEATH_TEST implies that we have +// ::std::string, so we can use it here. +static void SplitString(const ::std::string& str, char delimiter, + ::std::vector< ::std::string>* dest) { + ::std::vector< ::std::string> parsed; + ::std::string::size_type pos = 0; + while (::testing::internal::AlwaysTrue()) { + const ::std::string::size_type colon = str.find(delimiter, pos); + if (colon == ::std::string::npos) { + parsed.push_back(str.substr(pos)); + break; + } else { + parsed.push_back(str.substr(pos, colon - pos)); + pos = colon + 1; + } + } + dest->swap(parsed); +} + +# if GTEST_OS_WINDOWS +// Recreates the pipe and event handles from the provided parameters, +// signals the event, and returns a file descriptor wrapped around the pipe +// handle. This function is called in the child process only. +int GetStatusFileDescriptor(unsigned int parent_process_id, + size_t write_handle_as_size_t, + size_t event_handle_as_size_t) { + AutoHandle parent_process_handle(::OpenProcess(PROCESS_DUP_HANDLE, + FALSE, // Non-inheritable. + parent_process_id)); + if (parent_process_handle.Get() == INVALID_HANDLE_VALUE) { + DeathTestAbort(String::Format("Unable to open parent process %u", + parent_process_id)); + } + + // TODO(vladl@google.com): Replace the following check with a + // compile-time assertion when available. + GTEST_CHECK_(sizeof(HANDLE) <= sizeof(size_t)); + + const HANDLE write_handle = + reinterpret_cast(write_handle_as_size_t); + HANDLE dup_write_handle; + + // The newly initialized handle is accessible only in in the parent + // process. To obtain one accessible within the child, we need to use + // DuplicateHandle. + if (!::DuplicateHandle(parent_process_handle.Get(), write_handle, + ::GetCurrentProcess(), &dup_write_handle, + 0x0, // Requested privileges ignored since + // DUPLICATE_SAME_ACCESS is used. + FALSE, // Request non-inheritable handler. + DUPLICATE_SAME_ACCESS)) { + DeathTestAbort(String::Format( + "Unable to duplicate the pipe handle %Iu from the parent process %u", + write_handle_as_size_t, parent_process_id)); + } + + const HANDLE event_handle = reinterpret_cast(event_handle_as_size_t); + HANDLE dup_event_handle; + + if (!::DuplicateHandle(parent_process_handle.Get(), event_handle, + ::GetCurrentProcess(), &dup_event_handle, + 0x0, + FALSE, + DUPLICATE_SAME_ACCESS)) { + DeathTestAbort(String::Format( + "Unable to duplicate the event handle %Iu from the parent process %u", + event_handle_as_size_t, parent_process_id)); + } + + const int write_fd = + ::_open_osfhandle(reinterpret_cast(dup_write_handle), O_APPEND); + if (write_fd == -1) { + DeathTestAbort(String::Format( + "Unable to convert pipe handle %Iu to a file descriptor", + write_handle_as_size_t)); + } + + // Signals the parent that the write end of the pipe has been acquired + // so the parent can release its own write end. + ::SetEvent(dup_event_handle); + + return write_fd; +} +# endif // GTEST_OS_WINDOWS + +// Returns a newly created InternalRunDeathTestFlag object with fields +// initialized from the GTEST_FLAG(internal_run_death_test) flag if +// the flag is specified; otherwise returns NULL. +InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag() { + if (GTEST_FLAG(internal_run_death_test) == "") return NULL; + + // GTEST_HAS_DEATH_TEST implies that we have ::std::string, so we + // can use it here. + int line = -1; + int index = -1; + ::std::vector< ::std::string> fields; + SplitString(GTEST_FLAG(internal_run_death_test).c_str(), '|', &fields); + int write_fd = -1; + +# if GTEST_OS_WINDOWS + + unsigned int parent_process_id = 0; + size_t write_handle_as_size_t = 0; + size_t event_handle_as_size_t = 0; + + if (fields.size() != 6 + || !ParseNaturalNumber(fields[1], &line) + || !ParseNaturalNumber(fields[2], &index) + || !ParseNaturalNumber(fields[3], &parent_process_id) + || !ParseNaturalNumber(fields[4], &write_handle_as_size_t) + || !ParseNaturalNumber(fields[5], &event_handle_as_size_t)) { + DeathTestAbort(String::Format( + "Bad --gtest_internal_run_death_test flag: %s", + GTEST_FLAG(internal_run_death_test).c_str())); + } + write_fd = GetStatusFileDescriptor(parent_process_id, + write_handle_as_size_t, + event_handle_as_size_t); +# else + + if (fields.size() != 4 + || !ParseNaturalNumber(fields[1], &line) + || !ParseNaturalNumber(fields[2], &index) + || !ParseNaturalNumber(fields[3], &write_fd)) { + DeathTestAbort(String::Format( + "Bad --gtest_internal_run_death_test flag: %s", + GTEST_FLAG(internal_run_death_test).c_str())); + } + +# endif // GTEST_OS_WINDOWS + + return new InternalRunDeathTestFlag(fields[0], line, index, write_fd); +} + +} // namespace internal + +#endif // GTEST_HAS_DEATH_TEST + +} // namespace testing diff --git a/thirdparty/protobuf-2.6.1/gtest/src/gtest-filepath.cc b/thirdparty/protobuf-2.6.1/gtest/src/gtest-filepath.cc new file mode 100644 index 00000000..4d40cb96 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/src/gtest-filepath.cc @@ -0,0 +1,381 @@ +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Authors: keith.ray@gmail.com (Keith Ray) + +#include "gtest/internal/gtest-filepath.h" +#include "gtest/internal/gtest-port.h" + +#include + +#if GTEST_OS_WINDOWS_MOBILE +# include +#elif GTEST_OS_WINDOWS +# include +# include +#elif GTEST_OS_SYMBIAN +// Symbian OpenC has PATH_MAX in sys/syslimits.h +# include +#else +# include +# include // Some Linux distributions define PATH_MAX here. +#endif // GTEST_OS_WINDOWS_MOBILE + +#if GTEST_OS_WINDOWS +# define GTEST_PATH_MAX_ _MAX_PATH +#elif defined(PATH_MAX) +# define GTEST_PATH_MAX_ PATH_MAX +#elif defined(_XOPEN_PATH_MAX) +# define GTEST_PATH_MAX_ _XOPEN_PATH_MAX +#else +# define GTEST_PATH_MAX_ _POSIX_PATH_MAX +#endif // GTEST_OS_WINDOWS + +#include "gtest/internal/gtest-string.h" + +namespace testing { +namespace internal { + +#if GTEST_OS_WINDOWS +// On Windows, '\\' is the standard path separator, but many tools and the +// Windows API also accept '/' as an alternate path separator. Unless otherwise +// noted, a file path can contain either kind of path separators, or a mixture +// of them. +const char kPathSeparator = '\\'; +const char kAlternatePathSeparator = '/'; +const char kPathSeparatorString[] = "\\"; +const char kAlternatePathSeparatorString[] = "/"; +# if GTEST_OS_WINDOWS_MOBILE +// Windows CE doesn't have a current directory. You should not use +// the current directory in tests on Windows CE, but this at least +// provides a reasonable fallback. +const char kCurrentDirectoryString[] = "\\"; +// Windows CE doesn't define INVALID_FILE_ATTRIBUTES +const DWORD kInvalidFileAttributes = 0xffffffff; +# else +const char kCurrentDirectoryString[] = ".\\"; +# endif // GTEST_OS_WINDOWS_MOBILE +#else +const char kPathSeparator = '/'; +const char kPathSeparatorString[] = "/"; +const char kCurrentDirectoryString[] = "./"; +#endif // GTEST_OS_WINDOWS + +// Returns whether the given character is a valid path separator. +static bool IsPathSeparator(char c) { +#if GTEST_HAS_ALT_PATH_SEP_ + return (c == kPathSeparator) || (c == kAlternatePathSeparator); +#else + return c == kPathSeparator; +#endif +} + +// Returns the current working directory, or "" if unsuccessful. +FilePath FilePath::GetCurrentDir() { +#if GTEST_OS_WINDOWS_MOBILE + // Windows CE doesn't have a current directory, so we just return + // something reasonable. + return FilePath(kCurrentDirectoryString); +#elif GTEST_OS_WINDOWS + char cwd[GTEST_PATH_MAX_ + 1] = { '\0' }; + return FilePath(_getcwd(cwd, sizeof(cwd)) == NULL ? "" : cwd); +#else + char cwd[GTEST_PATH_MAX_ + 1] = { '\0' }; + return FilePath(getcwd(cwd, sizeof(cwd)) == NULL ? "" : cwd); +#endif // GTEST_OS_WINDOWS_MOBILE +} + +// Returns a copy of the FilePath with the case-insensitive extension removed. +// Example: FilePath("dir/file.exe").RemoveExtension("EXE") returns +// FilePath("dir/file"). If a case-insensitive extension is not +// found, returns a copy of the original FilePath. +FilePath FilePath::RemoveExtension(const char* extension) const { + const std::string dot_extension = std::string(".") + extension; + if (String::EndsWithCaseInsensitive(pathname_, dot_extension)) { + return FilePath(pathname_.substr( + 0, pathname_.length() - dot_extension.length())); + } + return *this; +} + +// Returns a pointer to the last occurence of a valid path separator in +// the FilePath. On Windows, for example, both '/' and '\' are valid path +// separators. Returns NULL if no path separator was found. +const char* FilePath::FindLastPathSeparator() const { + const char* const last_sep = strrchr(c_str(), kPathSeparator); +#if GTEST_HAS_ALT_PATH_SEP_ + const char* const last_alt_sep = strrchr(c_str(), kAlternatePathSeparator); + // Comparing two pointers of which only one is NULL is undefined. + if (last_alt_sep != NULL && + (last_sep == NULL || last_alt_sep > last_sep)) { + return last_alt_sep; + } +#endif + return last_sep; +} + +// Returns a copy of the FilePath with the directory part removed. +// Example: FilePath("path/to/file").RemoveDirectoryName() returns +// FilePath("file"). If there is no directory part ("just_a_file"), it returns +// the FilePath unmodified. If there is no file part ("just_a_dir/") it +// returns an empty FilePath (""). +// On Windows platform, '\' is the path separator, otherwise it is '/'. +FilePath FilePath::RemoveDirectoryName() const { + const char* const last_sep = FindLastPathSeparator(); + return last_sep ? FilePath(last_sep + 1) : *this; +} + +// RemoveFileName returns the directory path with the filename removed. +// Example: FilePath("path/to/file").RemoveFileName() returns "path/to/". +// If the FilePath is "a_file" or "/a_file", RemoveFileName returns +// FilePath("./") or, on Windows, FilePath(".\\"). If the filepath does +// not have a file, like "just/a/dir/", it returns the FilePath unmodified. +// On Windows platform, '\' is the path separator, otherwise it is '/'. +FilePath FilePath::RemoveFileName() const { + const char* const last_sep = FindLastPathSeparator(); + std::string dir; + if (last_sep) { + dir = std::string(c_str(), last_sep + 1 - c_str()); + } else { + dir = kCurrentDirectoryString; + } + return FilePath(dir); +} + +// Helper functions for naming files in a directory for xml output. + +// Given directory = "dir", base_name = "test", number = 0, +// extension = "xml", returns "dir/test.xml". If number is greater +// than zero (e.g., 12), returns "dir/test_12.xml". +// On Windows platform, uses \ as the separator rather than /. +FilePath FilePath::MakeFileName(const FilePath& directory, + const FilePath& base_name, + int number, + const char* extension) { + std::string file; + if (number == 0) { + file = base_name.string() + "." + extension; + } else { + file = base_name.string() + "_" + String::Format("%d", number).c_str() + + "." + extension; + } + return ConcatPaths(directory, FilePath(file)); +} + +// Given directory = "dir", relative_path = "test.xml", returns "dir/test.xml". +// On Windows, uses \ as the separator rather than /. +FilePath FilePath::ConcatPaths(const FilePath& directory, + const FilePath& relative_path) { + if (directory.IsEmpty()) + return relative_path; + const FilePath dir(directory.RemoveTrailingPathSeparator()); + return FilePath(dir.string() + kPathSeparator + relative_path.string()); +} + +// Returns true if pathname describes something findable in the file-system, +// either a file, directory, or whatever. +bool FilePath::FileOrDirectoryExists() const { +#if GTEST_OS_WINDOWS_MOBILE + LPCWSTR unicode = String::AnsiToUtf16(pathname_.c_str()); + const DWORD attributes = GetFileAttributes(unicode); + delete [] unicode; + return attributes != kInvalidFileAttributes; +#else + posix::StatStruct file_stat; + return posix::Stat(pathname_.c_str(), &file_stat) == 0; +#endif // GTEST_OS_WINDOWS_MOBILE +} + +// Returns true if pathname describes a directory in the file-system +// that exists. +bool FilePath::DirectoryExists() const { + bool result = false; +#if GTEST_OS_WINDOWS + // Don't strip off trailing separator if path is a root directory on + // Windows (like "C:\\"). + const FilePath& path(IsRootDirectory() ? *this : + RemoveTrailingPathSeparator()); +#else + const FilePath& path(*this); +#endif + +#if GTEST_OS_WINDOWS_MOBILE + LPCWSTR unicode = String::AnsiToUtf16(path.c_str()); + const DWORD attributes = GetFileAttributes(unicode); + delete [] unicode; + if ((attributes != kInvalidFileAttributes) && + (attributes & FILE_ATTRIBUTE_DIRECTORY)) { + result = true; + } +#else + posix::StatStruct file_stat; + result = posix::Stat(path.c_str(), &file_stat) == 0 && + posix::IsDir(file_stat); +#endif // GTEST_OS_WINDOWS_MOBILE + + return result; +} + +// Returns true if pathname describes a root directory. (Windows has one +// root directory per disk drive.) +bool FilePath::IsRootDirectory() const { +#if GTEST_OS_WINDOWS + // TODO(wan@google.com): on Windows a network share like + // \\server\share can be a root directory, although it cannot be the + // current directory. Handle this properly. + return pathname_.length() == 3 && IsAbsolutePath(); +#else + return pathname_.length() == 1 && IsPathSeparator(pathname_.c_str()[0]); +#endif +} + +// Returns true if pathname describes an absolute path. +bool FilePath::IsAbsolutePath() const { + const char* const name = pathname_.c_str(); +#if GTEST_OS_WINDOWS + return pathname_.length() >= 3 && + ((name[0] >= 'a' && name[0] <= 'z') || + (name[0] >= 'A' && name[0] <= 'Z')) && + name[1] == ':' && + IsPathSeparator(name[2]); +#else + return IsPathSeparator(name[0]); +#endif +} + +// Returns a pathname for a file that does not currently exist. The pathname +// will be directory/base_name.extension or +// directory/base_name_.extension if directory/base_name.extension +// already exists. The number will be incremented until a pathname is found +// that does not already exist. +// Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'. +// There could be a race condition if two or more processes are calling this +// function at the same time -- they could both pick the same filename. +FilePath FilePath::GenerateUniqueFileName(const FilePath& directory, + const FilePath& base_name, + const char* extension) { + FilePath full_pathname; + int number = 0; + do { + full_pathname.Set(MakeFileName(directory, base_name, number++, extension)); + } while (full_pathname.FileOrDirectoryExists()); + return full_pathname; +} + +// Returns true if FilePath ends with a path separator, which indicates that +// it is intended to represent a directory. Returns false otherwise. +// This does NOT check that a directory (or file) actually exists. +bool FilePath::IsDirectory() const { + return !pathname_.empty() && + IsPathSeparator(pathname_.c_str()[pathname_.length() - 1]); +} + +// Create directories so that path exists. Returns true if successful or if +// the directories already exist; returns false if unable to create directories +// for any reason. +bool FilePath::CreateDirectoriesRecursively() const { + if (!this->IsDirectory()) { + return false; + } + + if (pathname_.length() == 0 || this->DirectoryExists()) { + return true; + } + + const FilePath parent(this->RemoveTrailingPathSeparator().RemoveFileName()); + return parent.CreateDirectoriesRecursively() && this->CreateFolder(); +} + +// Create the directory so that path exists. Returns true if successful or +// if the directory already exists; returns false if unable to create the +// directory for any reason, including if the parent directory does not +// exist. Not named "CreateDirectory" because that's a macro on Windows. +bool FilePath::CreateFolder() const { +#if GTEST_OS_WINDOWS_MOBILE + FilePath removed_sep(this->RemoveTrailingPathSeparator()); + LPCWSTR unicode = String::AnsiToUtf16(removed_sep.c_str()); + int result = CreateDirectory(unicode, NULL) ? 0 : -1; + delete [] unicode; +#elif GTEST_OS_WINDOWS + int result = _mkdir(pathname_.c_str()); +#else + int result = mkdir(pathname_.c_str(), 0777); +#endif // GTEST_OS_WINDOWS_MOBILE + + if (result == -1) { + return this->DirectoryExists(); // An error is OK if the directory exists. + } + return true; // No error. +} + +// If input name has a trailing separator character, remove it and return the +// name, otherwise return the name string unmodified. +// On Windows platform, uses \ as the separator, other platforms use /. +FilePath FilePath::RemoveTrailingPathSeparator() const { + return IsDirectory() + ? FilePath(pathname_.substr(0, pathname_.length() - 1)) + : *this; +} + +// Removes any redundant separators that might be in the pathname. +// For example, "bar///foo" becomes "bar/foo". Does not eliminate other +// redundancies that might be in a pathname involving "." or "..". +// TODO(wan@google.com): handle Windows network shares (e.g. \\server\share). +void FilePath::Normalize() { + if (pathname_.c_str() == NULL) { + pathname_ = ""; + return; + } + const char* src = pathname_.c_str(); + char* const dest = new char[pathname_.length() + 1]; + char* dest_ptr = dest; + memset(dest_ptr, 0, pathname_.length() + 1); + + while (*src != '\0') { + *dest_ptr = *src; + if (!IsPathSeparator(*src)) { + src++; + } else { +#if GTEST_HAS_ALT_PATH_SEP_ + if (*dest_ptr == kAlternatePathSeparator) { + *dest_ptr = kPathSeparator; + } +#endif + while (IsPathSeparator(*src)) + src++; + } + dest_ptr++; + } + *dest_ptr = '\0'; + pathname_ = dest; + delete[] dest; +} + +} // namespace internal +} // namespace testing diff --git a/thirdparty/protobuf-2.6.1/gtest/src/gtest-internal-inl.h b/thirdparty/protobuf-2.6.1/gtest/src/gtest-internal-inl.h new file mode 100644 index 00000000..54717c95 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/src/gtest-internal-inl.h @@ -0,0 +1,1056 @@ +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Utility functions and classes used by the Google C++ testing framework. +// +// Author: wan@google.com (Zhanyong Wan) +// +// This file contains purely Google Test's internal implementation. Please +// DO NOT #INCLUDE IT IN A USER PROGRAM. + +#ifndef GTEST_SRC_GTEST_INTERNAL_INL_H_ +#define GTEST_SRC_GTEST_INTERNAL_INL_H_ + +// GTEST_IMPLEMENTATION_ is defined to 1 iff the current translation unit is +// part of Google Test's implementation; otherwise it's undefined. +#if !GTEST_IMPLEMENTATION_ +// A user is trying to include this from his code - just say no. +# error "gtest-internal-inl.h is part of Google Test's internal implementation." +# error "It must not be included except by Google Test itself." +#endif // GTEST_IMPLEMENTATION_ + +#ifndef _WIN32_WCE +# include +#endif // !_WIN32_WCE +#include +#include // For strtoll/_strtoul64/malloc/free. +#include // For memmove. + +#include +#include +#include + +#include "gtest/internal/gtest-port.h" + +#if GTEST_OS_WINDOWS +# include // NOLINT +#endif // GTEST_OS_WINDOWS + +#include "gtest/gtest.h" // NOLINT +#include "gtest/gtest-spi.h" + +namespace testing { + +// Declares the flags. +// +// We don't want the users to modify this flag in the code, but want +// Google Test's own unit tests to be able to access it. Therefore we +// declare it here as opposed to in gtest.h. +GTEST_DECLARE_bool_(death_test_use_fork); + +namespace internal { + +// The value of GetTestTypeId() as seen from within the Google Test +// library. This is solely for testing GetTestTypeId(). +GTEST_API_ extern const TypeId kTestTypeIdInGoogleTest; + +// Names of the flags (needed for parsing Google Test flags). +const char kAlsoRunDisabledTestsFlag[] = "also_run_disabled_tests"; +const char kBreakOnFailureFlag[] = "break_on_failure"; +const char kCatchExceptionsFlag[] = "catch_exceptions"; +const char kColorFlag[] = "color"; +const char kFilterFlag[] = "filter"; +const char kListTestsFlag[] = "list_tests"; +const char kOutputFlag[] = "output"; +const char kPrintTimeFlag[] = "print_time"; +const char kRandomSeedFlag[] = "random_seed"; +const char kRepeatFlag[] = "repeat"; +const char kShuffleFlag[] = "shuffle"; +const char kStackTraceDepthFlag[] = "stack_trace_depth"; +const char kStreamResultToFlag[] = "stream_result_to"; +const char kThrowOnFailureFlag[] = "throw_on_failure"; + +// A valid random seed must be in [1, kMaxRandomSeed]. +const int kMaxRandomSeed = 99999; + +// g_help_flag is true iff the --help flag or an equivalent form is +// specified on the command line. +GTEST_API_ extern bool g_help_flag; + +// Returns the current time in milliseconds. +GTEST_API_ TimeInMillis GetTimeInMillis(); + +// Returns true iff Google Test should use colors in the output. +GTEST_API_ bool ShouldUseColor(bool stdout_is_tty); + +// Formats the given time in milliseconds as seconds. +GTEST_API_ std::string FormatTimeInMillisAsSeconds(TimeInMillis ms); + +// Converts the given time in milliseconds to a date string in the ISO 8601 +// format, without the timezone information. N.B.: due to the use the +// non-reentrant localtime() function, this function is not thread safe. Do +// not use it in any code that can be called from multiple threads. +GTEST_API_ std::string FormatEpochTimeInMillisAsIso8601(TimeInMillis ms); + +// Parses a string for an Int32 flag, in the form of "--flag=value". +// +// On success, stores the value of the flag in *value, and returns +// true. On failure, returns false without changing *value. +GTEST_API_ bool ParseInt32Flag( + const char* str, const char* flag, Int32* value); + +// Returns a random seed in range [1, kMaxRandomSeed] based on the +// given --gtest_random_seed flag value. +inline int GetRandomSeedFromFlag(Int32 random_seed_flag) { + const unsigned int raw_seed = (random_seed_flag == 0) ? + static_cast(GetTimeInMillis()) : + static_cast(random_seed_flag); + + // Normalizes the actual seed to range [1, kMaxRandomSeed] such that + // it's easy to type. + const int normalized_seed = + static_cast((raw_seed - 1U) % + static_cast(kMaxRandomSeed)) + 1; + return normalized_seed; +} + +// Returns the first valid random seed after 'seed'. The behavior is +// undefined if 'seed' is invalid. The seed after kMaxRandomSeed is +// considered to be 1. +inline int GetNextRandomSeed(int seed) { + GTEST_CHECK_(1 <= seed && seed <= kMaxRandomSeed) + << "Invalid random seed " << seed << " - must be in [1, " + << kMaxRandomSeed << "]."; + const int next_seed = seed + 1; + return (next_seed > kMaxRandomSeed) ? 1 : next_seed; +} + +// This class saves the values of all Google Test flags in its c'tor, and +// restores them in its d'tor. +class GTestFlagSaver { + public: + // The c'tor. + GTestFlagSaver() { + also_run_disabled_tests_ = GTEST_FLAG(also_run_disabled_tests); + break_on_failure_ = GTEST_FLAG(break_on_failure); + catch_exceptions_ = GTEST_FLAG(catch_exceptions); + color_ = GTEST_FLAG(color); + death_test_style_ = GTEST_FLAG(death_test_style); + death_test_use_fork_ = GTEST_FLAG(death_test_use_fork); + filter_ = GTEST_FLAG(filter); + internal_run_death_test_ = GTEST_FLAG(internal_run_death_test); + list_tests_ = GTEST_FLAG(list_tests); + output_ = GTEST_FLAG(output); + print_time_ = GTEST_FLAG(print_time); + random_seed_ = GTEST_FLAG(random_seed); + repeat_ = GTEST_FLAG(repeat); + shuffle_ = GTEST_FLAG(shuffle); + stack_trace_depth_ = GTEST_FLAG(stack_trace_depth); + stream_result_to_ = GTEST_FLAG(stream_result_to); + throw_on_failure_ = GTEST_FLAG(throw_on_failure); + } + + // The d'tor is not virtual. DO NOT INHERIT FROM THIS CLASS. + ~GTestFlagSaver() { + GTEST_FLAG(also_run_disabled_tests) = also_run_disabled_tests_; + GTEST_FLAG(break_on_failure) = break_on_failure_; + GTEST_FLAG(catch_exceptions) = catch_exceptions_; + GTEST_FLAG(color) = color_; + GTEST_FLAG(death_test_style) = death_test_style_; + GTEST_FLAG(death_test_use_fork) = death_test_use_fork_; + GTEST_FLAG(filter) = filter_; + GTEST_FLAG(internal_run_death_test) = internal_run_death_test_; + GTEST_FLAG(list_tests) = list_tests_; + GTEST_FLAG(output) = output_; + GTEST_FLAG(print_time) = print_time_; + GTEST_FLAG(random_seed) = random_seed_; + GTEST_FLAG(repeat) = repeat_; + GTEST_FLAG(shuffle) = shuffle_; + GTEST_FLAG(stack_trace_depth) = stack_trace_depth_; + GTEST_FLAG(stream_result_to) = stream_result_to_; + GTEST_FLAG(throw_on_failure) = throw_on_failure_; + } + + private: + // Fields for saving the original values of flags. + bool also_run_disabled_tests_; + bool break_on_failure_; + bool catch_exceptions_; + std::string color_; + std::string death_test_style_; + bool death_test_use_fork_; + std::string filter_; + std::string internal_run_death_test_; + bool list_tests_; + std::string output_; + bool print_time_; + bool pretty_; + internal::Int32 random_seed_; + internal::Int32 repeat_; + bool shuffle_; + internal::Int32 stack_trace_depth_; + std::string stream_result_to_; + bool throw_on_failure_; +} GTEST_ATTRIBUTE_UNUSED_; + +// Converts a Unicode code point to a narrow string in UTF-8 encoding. +// code_point parameter is of type UInt32 because wchar_t may not be +// wide enough to contain a code point. +// The output buffer str must containt at least 32 characters. +// The function returns the address of the output buffer. +// If the code_point is not a valid Unicode code point +// (i.e. outside of Unicode range U+0 to U+10FFFF) it will be output +// as '(Invalid Unicode 0xXXXXXXXX)'. +GTEST_API_ char* CodePointToUtf8(UInt32 code_point, char* str); + +// Converts a wide string to a narrow string in UTF-8 encoding. +// The wide string is assumed to have the following encoding: +// UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin, Symbian OS) +// UTF-32 if sizeof(wchar_t) == 4 (on Linux) +// Parameter str points to a null-terminated wide string. +// Parameter num_chars may additionally limit the number +// of wchar_t characters processed. -1 is used when the entire string +// should be processed. +// If the string contains code points that are not valid Unicode code points +// (i.e. outside of Unicode range U+0 to U+10FFFF) they will be output +// as '(Invalid Unicode 0xXXXXXXXX)'. If the string is in UTF16 encoding +// and contains invalid UTF-16 surrogate pairs, values in those pairs +// will be encoded as individual Unicode characters from Basic Normal Plane. +GTEST_API_ std::string WideStringToUtf8(const wchar_t* str, int num_chars); + +// Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file +// if the variable is present. If a file already exists at this location, this +// function will write over it. If the variable is present, but the file cannot +// be created, prints an error and exits. +void WriteToShardStatusFileIfNeeded(); + +// Checks whether sharding is enabled by examining the relevant +// environment variable values. If the variables are present, +// but inconsistent (e.g., shard_index >= total_shards), prints +// an error and exits. If in_subprocess_for_death_test, sharding is +// disabled because it must only be applied to the original test +// process. Otherwise, we could filter out death tests we intended to execute. +GTEST_API_ bool ShouldShard(const char* total_shards_str, + const char* shard_index_str, + bool in_subprocess_for_death_test); + +// Parses the environment variable var as an Int32. If it is unset, +// returns default_val. If it is not an Int32, prints an error and +// and aborts. +GTEST_API_ Int32 Int32FromEnvOrDie(const char* env_var, Int32 default_val); + +// Given the total number of shards, the shard index, and the test id, +// returns true iff the test should be run on this shard. The test id is +// some arbitrary but unique non-negative integer assigned to each test +// method. Assumes that 0 <= shard_index < total_shards. +GTEST_API_ bool ShouldRunTestOnShard( + int total_shards, int shard_index, int test_id); + +// STL container utilities. + +// Returns the number of elements in the given container that satisfy +// the given predicate. +template +inline int CountIf(const Container& c, Predicate predicate) { + // Implemented as an explicit loop since std::count_if() in libCstd on + // Solaris has a non-standard signature. + int count = 0; + for (typename Container::const_iterator it = c.begin(); it != c.end(); ++it) { + if (predicate(*it)) + ++count; + } + return count; +} + +// Applies a function/functor to each element in the container. +template +void ForEach(const Container& c, Functor functor) { + std::for_each(c.begin(), c.end(), functor); +} + +// Returns the i-th element of the vector, or default_value if i is not +// in range [0, v.size()). +template +inline E GetElementOr(const std::vector& v, int i, E default_value) { + return (i < 0 || i >= static_cast(v.size())) ? default_value : v[i]; +} + +// Performs an in-place shuffle of a range of the vector's elements. +// 'begin' and 'end' are element indices as an STL-style range; +// i.e. [begin, end) are shuffled, where 'end' == size() means to +// shuffle to the end of the vector. +template +void ShuffleRange(internal::Random* random, int begin, int end, + std::vector* v) { + const int size = static_cast(v->size()); + GTEST_CHECK_(0 <= begin && begin <= size) + << "Invalid shuffle range start " << begin << ": must be in range [0, " + << size << "]."; + GTEST_CHECK_(begin <= end && end <= size) + << "Invalid shuffle range finish " << end << ": must be in range [" + << begin << ", " << size << "]."; + + // Fisher-Yates shuffle, from + // http://en.wikipedia.org/wiki/Fisher-Yates_shuffle + for (int range_width = end - begin; range_width >= 2; range_width--) { + const int last_in_range = begin + range_width - 1; + const int selected = begin + random->Generate(range_width); + std::swap((*v)[selected], (*v)[last_in_range]); + } +} + +// Performs an in-place shuffle of the vector's elements. +template +inline void Shuffle(internal::Random* random, std::vector* v) { + ShuffleRange(random, 0, static_cast(v->size()), v); +} + +// A function for deleting an object. Handy for being used as a +// functor. +template +static void Delete(T* x) { + delete x; +} + +// A predicate that checks the key of a TestProperty against a known key. +// +// TestPropertyKeyIs is copyable. +class TestPropertyKeyIs { + public: + // Constructor. + // + // TestPropertyKeyIs has NO default constructor. + explicit TestPropertyKeyIs(const char* key) + : key_(key) {} + + // Returns true iff the test name of test property matches on key_. + bool operator()(const TestProperty& test_property) const { + return test_property.key() == key_; + } + + private: + std::string key_; +}; + +// Class UnitTestOptions. +// +// This class contains functions for processing options the user +// specifies when running the tests. It has only static members. +// +// In most cases, the user can specify an option using either an +// environment variable or a command line flag. E.g. you can set the +// test filter using either GTEST_FILTER or --gtest_filter. If both +// the variable and the flag are present, the latter overrides the +// former. +class GTEST_API_ UnitTestOptions { + public: + // Functions for processing the gtest_output flag. + + // Returns the output format, or "" for normal printed output. + static std::string GetOutputFormat(); + + // Returns the absolute path of the requested output file, or the + // default (test_detail.xml in the original working directory) if + // none was explicitly specified. + static std::string GetAbsolutePathToOutputFile(); + + // Functions for processing the gtest_filter flag. + + // Returns true iff the wildcard pattern matches the string. The + // first ':' or '\0' character in pattern marks the end of it. + // + // This recursive algorithm isn't very efficient, but is clear and + // works well enough for matching test names, which are short. + static bool PatternMatchesString(const char *pattern, const char *str); + + // Returns true iff the user-specified filter matches the test case + // name and the test name. + static bool FilterMatchesTest(const std::string &test_case_name, + const std::string &test_name); + +#if GTEST_OS_WINDOWS + // Function for supporting the gtest_catch_exception flag. + + // Returns EXCEPTION_EXECUTE_HANDLER if Google Test should handle the + // given SEH exception, or EXCEPTION_CONTINUE_SEARCH otherwise. + // This function is useful as an __except condition. + static int GTestShouldProcessSEH(DWORD exception_code); +#endif // GTEST_OS_WINDOWS + + // Returns true if "name" matches the ':' separated list of glob-style + // filters in "filter". + static bool MatchesFilter(const std::string& name, const char* filter); +}; + +// Returns the current application's name, removing directory path if that +// is present. Used by UnitTestOptions::GetOutputFile. +GTEST_API_ FilePath GetCurrentExecutableName(); + +// The role interface for getting the OS stack trace as a string. +class OsStackTraceGetterInterface { + public: + OsStackTraceGetterInterface() {} + virtual ~OsStackTraceGetterInterface() {} + + // Returns the current OS stack trace as an std::string. Parameters: + // + // max_depth - the maximum number of stack frames to be included + // in the trace. + // skip_count - the number of top frames to be skipped; doesn't count + // against max_depth. + virtual string CurrentStackTrace(int max_depth, int skip_count) = 0; + + // UponLeavingGTest() should be called immediately before Google Test calls + // user code. It saves some information about the current stack that + // CurrentStackTrace() will use to find and hide Google Test stack frames. + virtual void UponLeavingGTest() = 0; + + private: + GTEST_DISALLOW_COPY_AND_ASSIGN_(OsStackTraceGetterInterface); +}; + +// A working implementation of the OsStackTraceGetterInterface interface. +class OsStackTraceGetter : public OsStackTraceGetterInterface { + public: + OsStackTraceGetter() : caller_frame_(NULL) {} + + virtual string CurrentStackTrace(int max_depth, int skip_count) + GTEST_LOCK_EXCLUDED_(mutex_); + + virtual void UponLeavingGTest() GTEST_LOCK_EXCLUDED_(mutex_); + + // This string is inserted in place of stack frames that are part of + // Google Test's implementation. + static const char* const kElidedFramesMarker; + + private: + Mutex mutex_; // protects all internal state + + // We save the stack frame below the frame that calls user code. + // We do this because the address of the frame immediately below + // the user code changes between the call to UponLeavingGTest() + // and any calls to CurrentStackTrace() from within the user code. + void* caller_frame_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(OsStackTraceGetter); +}; + +// Information about a Google Test trace point. +struct TraceInfo { + const char* file; + int line; + std::string message; +}; + +// This is the default global test part result reporter used in UnitTestImpl. +// This class should only be used by UnitTestImpl. +class DefaultGlobalTestPartResultReporter + : public TestPartResultReporterInterface { + public: + explicit DefaultGlobalTestPartResultReporter(UnitTestImpl* unit_test); + // Implements the TestPartResultReporterInterface. Reports the test part + // result in the current test. + virtual void ReportTestPartResult(const TestPartResult& result); + + private: + UnitTestImpl* const unit_test_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultGlobalTestPartResultReporter); +}; + +// This is the default per thread test part result reporter used in +// UnitTestImpl. This class should only be used by UnitTestImpl. +class DefaultPerThreadTestPartResultReporter + : public TestPartResultReporterInterface { + public: + explicit DefaultPerThreadTestPartResultReporter(UnitTestImpl* unit_test); + // Implements the TestPartResultReporterInterface. The implementation just + // delegates to the current global test part result reporter of *unit_test_. + virtual void ReportTestPartResult(const TestPartResult& result); + + private: + UnitTestImpl* const unit_test_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultPerThreadTestPartResultReporter); +}; + +// The private implementation of the UnitTest class. We don't protect +// the methods under a mutex, as this class is not accessible by a +// user and the UnitTest class that delegates work to this class does +// proper locking. +class GTEST_API_ UnitTestImpl { + public: + explicit UnitTestImpl(UnitTest* parent); + virtual ~UnitTestImpl(); + + // There are two different ways to register your own TestPartResultReporter. + // You can register your own repoter to listen either only for test results + // from the current thread or for results from all threads. + // By default, each per-thread test result repoter just passes a new + // TestPartResult to the global test result reporter, which registers the + // test part result for the currently running test. + + // Returns the global test part result reporter. + TestPartResultReporterInterface* GetGlobalTestPartResultReporter(); + + // Sets the global test part result reporter. + void SetGlobalTestPartResultReporter( + TestPartResultReporterInterface* reporter); + + // Returns the test part result reporter for the current thread. + TestPartResultReporterInterface* GetTestPartResultReporterForCurrentThread(); + + // Sets the test part result reporter for the current thread. + void SetTestPartResultReporterForCurrentThread( + TestPartResultReporterInterface* reporter); + + // Gets the number of successful test cases. + int successful_test_case_count() const; + + // Gets the number of failed test cases. + int failed_test_case_count() const; + + // Gets the number of all test cases. + int total_test_case_count() const; + + // Gets the number of all test cases that contain at least one test + // that should run. + int test_case_to_run_count() const; + + // Gets the number of successful tests. + int successful_test_count() const; + + // Gets the number of failed tests. + int failed_test_count() const; + + // Gets the number of disabled tests. + int disabled_test_count() const; + + // Gets the number of all tests. + int total_test_count() const; + + // Gets the number of tests that should run. + int test_to_run_count() const; + + // Gets the time of the test program start, in ms from the start of the + // UNIX epoch. + TimeInMillis start_timestamp() const { return start_timestamp_; } + + // Gets the elapsed time, in milliseconds. + TimeInMillis elapsed_time() const { return elapsed_time_; } + + // Returns true iff the unit test passed (i.e. all test cases passed). + bool Passed() const { return !Failed(); } + + // Returns true iff the unit test failed (i.e. some test case failed + // or something outside of all tests failed). + bool Failed() const { + return failed_test_case_count() > 0 || ad_hoc_test_result()->Failed(); + } + + // Gets the i-th test case among all the test cases. i can range from 0 to + // total_test_case_count() - 1. If i is not in that range, returns NULL. + const TestCase* GetTestCase(int i) const { + const int index = GetElementOr(test_case_indices_, i, -1); + return index < 0 ? NULL : test_cases_[i]; + } + + // Gets the i-th test case among all the test cases. i can range from 0 to + // total_test_case_count() - 1. If i is not in that range, returns NULL. + TestCase* GetMutableTestCase(int i) { + const int index = GetElementOr(test_case_indices_, i, -1); + return index < 0 ? NULL : test_cases_[index]; + } + + // Provides access to the event listener list. + TestEventListeners* listeners() { return &listeners_; } + + // Returns the TestResult for the test that's currently running, or + // the TestResult for the ad hoc test if no test is running. + TestResult* current_test_result(); + + // Returns the TestResult for the ad hoc test. + const TestResult* ad_hoc_test_result() const { return &ad_hoc_test_result_; } + + // Sets the OS stack trace getter. + // + // Does nothing if the input and the current OS stack trace getter + // are the same; otherwise, deletes the old getter and makes the + // input the current getter. + void set_os_stack_trace_getter(OsStackTraceGetterInterface* getter); + + // Returns the current OS stack trace getter if it is not NULL; + // otherwise, creates an OsStackTraceGetter, makes it the current + // getter, and returns it. + OsStackTraceGetterInterface* os_stack_trace_getter(); + + // Returns the current OS stack trace as an std::string. + // + // The maximum number of stack frames to be included is specified by + // the gtest_stack_trace_depth flag. The skip_count parameter + // specifies the number of top frames to be skipped, which doesn't + // count against the number of frames to be included. + // + // For example, if Foo() calls Bar(), which in turn calls + // CurrentOsStackTraceExceptTop(1), Foo() will be included in the + // trace but Bar() and CurrentOsStackTraceExceptTop() won't. + std::string CurrentOsStackTraceExceptTop(int skip_count) GTEST_NO_INLINE_; + + // Finds and returns a TestCase with the given name. If one doesn't + // exist, creates one and returns it. + // + // Arguments: + // + // test_case_name: name of the test case + // type_param: the name of the test's type parameter, or NULL if + // this is not a typed or a type-parameterized test. + // set_up_tc: pointer to the function that sets up the test case + // tear_down_tc: pointer to the function that tears down the test case + TestCase* GetTestCase(const char* test_case_name, + const char* type_param, + Test::SetUpTestCaseFunc set_up_tc, + Test::TearDownTestCaseFunc tear_down_tc); + + // Adds a TestInfo to the unit test. + // + // Arguments: + // + // set_up_tc: pointer to the function that sets up the test case + // tear_down_tc: pointer to the function that tears down the test case + // test_info: the TestInfo object + void AddTestInfo(Test::SetUpTestCaseFunc set_up_tc, + Test::TearDownTestCaseFunc tear_down_tc, + TestInfo* test_info) { + // In order to support thread-safe death tests, we need to + // remember the original working directory when the test program + // was first invoked. We cannot do this in RUN_ALL_TESTS(), as + // the user may have changed the current directory before calling + // RUN_ALL_TESTS(). Therefore we capture the current directory in + // AddTestInfo(), which is called to register a TEST or TEST_F + // before main() is reached. + if (original_working_dir_.IsEmpty()) { + original_working_dir_.Set(FilePath::GetCurrentDir()); + GTEST_CHECK_(!original_working_dir_.IsEmpty()) + << "Failed to get the current working directory."; + } + + GetTestCase(test_info->test_case_name(), + test_info->type_param(), + set_up_tc, + tear_down_tc)->AddTestInfo(test_info); + } + +#if GTEST_HAS_PARAM_TEST + // Returns ParameterizedTestCaseRegistry object used to keep track of + // value-parameterized tests and instantiate and register them. + internal::ParameterizedTestCaseRegistry& parameterized_test_registry() { + return parameterized_test_registry_; + } +#endif // GTEST_HAS_PARAM_TEST + + // Sets the TestCase object for the test that's currently running. + void set_current_test_case(TestCase* a_current_test_case) { + current_test_case_ = a_current_test_case; + } + + // Sets the TestInfo object for the test that's currently running. If + // current_test_info is NULL, the assertion results will be stored in + // ad_hoc_test_result_. + void set_current_test_info(TestInfo* a_current_test_info) { + current_test_info_ = a_current_test_info; + } + + // Registers all parameterized tests defined using TEST_P and + // INSTANTIATE_TEST_CASE_P, creating regular tests for each test/parameter + // combination. This method can be called more then once; it has guards + // protecting from registering the tests more then once. If + // value-parameterized tests are disabled, RegisterParameterizedTests is + // present but does nothing. + void RegisterParameterizedTests(); + + // Runs all tests in this UnitTest object, prints the result, and + // returns true if all tests are successful. If any exception is + // thrown during a test, this test is considered to be failed, but + // the rest of the tests will still be run. + bool RunAllTests(); + + // Clears the results of all tests, except the ad hoc tests. + void ClearNonAdHocTestResult() { + ForEach(test_cases_, TestCase::ClearTestCaseResult); + } + + // Clears the results of ad-hoc test assertions. + void ClearAdHocTestResult() { + ad_hoc_test_result_.Clear(); + } + + enum ReactionToSharding { + HONOR_SHARDING_PROTOCOL, + IGNORE_SHARDING_PROTOCOL + }; + + // Matches the full name of each test against the user-specified + // filter to decide whether the test should run, then records the + // result in each TestCase and TestInfo object. + // If shard_tests == HONOR_SHARDING_PROTOCOL, further filters tests + // based on sharding variables in the environment. + // Returns the number of tests that should run. + int FilterTests(ReactionToSharding shard_tests); + + // Prints the names of the tests matching the user-specified filter flag. + void ListTestsMatchingFilter(); + + const TestCase* current_test_case() const { return current_test_case_; } + TestInfo* current_test_info() { return current_test_info_; } + const TestInfo* current_test_info() const { return current_test_info_; } + + // Returns the vector of environments that need to be set-up/torn-down + // before/after the tests are run. + std::vector& environments() { return environments_; } + + // Getters for the per-thread Google Test trace stack. + std::vector& gtest_trace_stack() { + return *(gtest_trace_stack_.pointer()); + } + const std::vector& gtest_trace_stack() const { + return gtest_trace_stack_.get(); + } + +#if GTEST_HAS_DEATH_TEST + void InitDeathTestSubprocessControlInfo() { + internal_run_death_test_flag_.reset(ParseInternalRunDeathTestFlag()); + } + // Returns a pointer to the parsed --gtest_internal_run_death_test + // flag, or NULL if that flag was not specified. + // This information is useful only in a death test child process. + // Must not be called before a call to InitGoogleTest. + const InternalRunDeathTestFlag* internal_run_death_test_flag() const { + return internal_run_death_test_flag_.get(); + } + + // Returns a pointer to the current death test factory. + internal::DeathTestFactory* death_test_factory() { + return death_test_factory_.get(); + } + + void SuppressTestEventsIfInSubprocess(); + + friend class ReplaceDeathTestFactory; +#endif // GTEST_HAS_DEATH_TEST + + // Initializes the event listener performing XML output as specified by + // UnitTestOptions. Must not be called before InitGoogleTest. + void ConfigureXmlOutput(); + +#if GTEST_CAN_STREAM_RESULTS_ + // Initializes the event listener for streaming test results to a socket. + // Must not be called before InitGoogleTest. + void ConfigureStreamingOutput(); +#endif + + // Performs initialization dependent upon flag values obtained in + // ParseGoogleTestFlagsOnly. Is called from InitGoogleTest after the call to + // ParseGoogleTestFlagsOnly. In case a user neglects to call InitGoogleTest + // this function is also called from RunAllTests. Since this function can be + // called more than once, it has to be idempotent. + void PostFlagParsingInit(); + + // Gets the random seed used at the start of the current test iteration. + int random_seed() const { return random_seed_; } + + // Gets the random number generator. + internal::Random* random() { return &random_; } + + // Shuffles all test cases, and the tests within each test case, + // making sure that death tests are still run first. + void ShuffleTests(); + + // Restores the test cases and tests to their order before the first shuffle. + void UnshuffleTests(); + + // Returns the value of GTEST_FLAG(catch_exceptions) at the moment + // UnitTest::Run() starts. + bool catch_exceptions() const { return catch_exceptions_; } + + private: + friend class ::testing::UnitTest; + + // Used by UnitTest::Run() to capture the state of + // GTEST_FLAG(catch_exceptions) at the moment it starts. + void set_catch_exceptions(bool value) { catch_exceptions_ = value; } + + // The UnitTest object that owns this implementation object. + UnitTest* const parent_; + + // The working directory when the first TEST() or TEST_F() was + // executed. + internal::FilePath original_working_dir_; + + // The default test part result reporters. + DefaultGlobalTestPartResultReporter default_global_test_part_result_reporter_; + DefaultPerThreadTestPartResultReporter + default_per_thread_test_part_result_reporter_; + + // Points to (but doesn't own) the global test part result reporter. + TestPartResultReporterInterface* global_test_part_result_repoter_; + + // Protects read and write access to global_test_part_result_reporter_. + internal::Mutex global_test_part_result_reporter_mutex_; + + // Points to (but doesn't own) the per-thread test part result reporter. + internal::ThreadLocal + per_thread_test_part_result_reporter_; + + // The vector of environments that need to be set-up/torn-down + // before/after the tests are run. + std::vector environments_; + + // The vector of TestCases in their original order. It owns the + // elements in the vector. + std::vector test_cases_; + + // Provides a level of indirection for the test case list to allow + // easy shuffling and restoring the test case order. The i-th + // element of this vector is the index of the i-th test case in the + // shuffled order. + std::vector test_case_indices_; + +#if GTEST_HAS_PARAM_TEST + // ParameterizedTestRegistry object used to register value-parameterized + // tests. + internal::ParameterizedTestCaseRegistry parameterized_test_registry_; + + // Indicates whether RegisterParameterizedTests() has been called already. + bool parameterized_tests_registered_; +#endif // GTEST_HAS_PARAM_TEST + + // Index of the last death test case registered. Initially -1. + int last_death_test_case_; + + // This points to the TestCase for the currently running test. It + // changes as Google Test goes through one test case after another. + // When no test is running, this is set to NULL and Google Test + // stores assertion results in ad_hoc_test_result_. Initially NULL. + TestCase* current_test_case_; + + // This points to the TestInfo for the currently running test. It + // changes as Google Test goes through one test after another. When + // no test is running, this is set to NULL and Google Test stores + // assertion results in ad_hoc_test_result_. Initially NULL. + TestInfo* current_test_info_; + + // Normally, a user only writes assertions inside a TEST or TEST_F, + // or inside a function called by a TEST or TEST_F. Since Google + // Test keeps track of which test is current running, it can + // associate such an assertion with the test it belongs to. + // + // If an assertion is encountered when no TEST or TEST_F is running, + // Google Test attributes the assertion result to an imaginary "ad hoc" + // test, and records the result in ad_hoc_test_result_. + TestResult ad_hoc_test_result_; + + // The list of event listeners that can be used to track events inside + // Google Test. + TestEventListeners listeners_; + + // The OS stack trace getter. Will be deleted when the UnitTest + // object is destructed. By default, an OsStackTraceGetter is used, + // but the user can set this field to use a custom getter if that is + // desired. + OsStackTraceGetterInterface* os_stack_trace_getter_; + + // True iff PostFlagParsingInit() has been called. + bool post_flag_parse_init_performed_; + + // The random number seed used at the beginning of the test run. + int random_seed_; + + // Our random number generator. + internal::Random random_; + + // The time of the test program start, in ms from the start of the + // UNIX epoch. + TimeInMillis start_timestamp_; + + // How long the test took to run, in milliseconds. + TimeInMillis elapsed_time_; + +#if GTEST_HAS_DEATH_TEST + // The decomposed components of the gtest_internal_run_death_test flag, + // parsed when RUN_ALL_TESTS is called. + internal::scoped_ptr internal_run_death_test_flag_; + internal::scoped_ptr death_test_factory_; +#endif // GTEST_HAS_DEATH_TEST + + // A per-thread stack of traces created by the SCOPED_TRACE() macro. + internal::ThreadLocal > gtest_trace_stack_; + + // The value of GTEST_FLAG(catch_exceptions) at the moment RunAllTests() + // starts. + bool catch_exceptions_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(UnitTestImpl); +}; // class UnitTestImpl + +// Convenience function for accessing the global UnitTest +// implementation object. +inline UnitTestImpl* GetUnitTestImpl() { + return UnitTest::GetInstance()->impl(); +} + +#if GTEST_USES_SIMPLE_RE + +// Internal helper functions for implementing the simple regular +// expression matcher. +GTEST_API_ bool IsInSet(char ch, const char* str); +GTEST_API_ bool IsAsciiDigit(char ch); +GTEST_API_ bool IsAsciiPunct(char ch); +GTEST_API_ bool IsRepeat(char ch); +GTEST_API_ bool IsAsciiWhiteSpace(char ch); +GTEST_API_ bool IsAsciiWordChar(char ch); +GTEST_API_ bool IsValidEscape(char ch); +GTEST_API_ bool AtomMatchesChar(bool escaped, char pattern, char ch); +GTEST_API_ bool ValidateRegex(const char* regex); +GTEST_API_ bool MatchRegexAtHead(const char* regex, const char* str); +GTEST_API_ bool MatchRepetitionAndRegexAtHead( + bool escaped, char ch, char repeat, const char* regex, const char* str); +GTEST_API_ bool MatchRegexAnywhere(const char* regex, const char* str); + +#endif // GTEST_USES_SIMPLE_RE + +// Parses the command line for Google Test flags, without initializing +// other parts of Google Test. +GTEST_API_ void ParseGoogleTestFlagsOnly(int* argc, char** argv); +GTEST_API_ void ParseGoogleTestFlagsOnly(int* argc, wchar_t** argv); + +#if GTEST_HAS_DEATH_TEST + +// Returns the message describing the last system error, regardless of the +// platform. +GTEST_API_ std::string GetLastErrnoDescription(); + +# if GTEST_OS_WINDOWS +// Provides leak-safe Windows kernel handle ownership. +class AutoHandle { + public: + AutoHandle() : handle_(INVALID_HANDLE_VALUE) {} + explicit AutoHandle(HANDLE handle) : handle_(handle) {} + + ~AutoHandle() { Reset(); } + + HANDLE Get() const { return handle_; } + void Reset() { Reset(INVALID_HANDLE_VALUE); } + void Reset(HANDLE handle) { + if (handle != handle_) { + if (handle_ != INVALID_HANDLE_VALUE) + ::CloseHandle(handle_); + handle_ = handle; + } + } + + private: + HANDLE handle_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(AutoHandle); +}; +# endif // GTEST_OS_WINDOWS + +// Attempts to parse a string into a positive integer pointed to by the +// number parameter. Returns true if that is possible. +// GTEST_HAS_DEATH_TEST implies that we have ::std::string, so we can use +// it here. +template +bool ParseNaturalNumber(const ::std::string& str, Integer* number) { + // Fail fast if the given string does not begin with a digit; + // this bypasses strtoXXX's "optional leading whitespace and plus + // or minus sign" semantics, which are undesirable here. + if (str.empty() || !IsDigit(str[0])) { + return false; + } + errno = 0; + + char* end; + // BiggestConvertible is the largest integer type that system-provided + // string-to-number conversion routines can return. + +# if GTEST_OS_WINDOWS && !defined(__GNUC__) + + // MSVC and C++ Builder define __int64 instead of the standard long long. + typedef unsigned __int64 BiggestConvertible; + const BiggestConvertible parsed = _strtoui64(str.c_str(), &end, 10); + +# else + + typedef unsigned long long BiggestConvertible; // NOLINT + const BiggestConvertible parsed = strtoull(str.c_str(), &end, 10); + +# endif // GTEST_OS_WINDOWS && !defined(__GNUC__) + + const bool parse_success = *end == '\0' && errno == 0; + + // TODO(vladl@google.com): Convert this to compile time assertion when it is + // available. + GTEST_CHECK_(sizeof(Integer) <= sizeof(parsed)); + + const Integer result = static_cast(parsed); + if (parse_success && static_cast(result) == parsed) { + *number = result; + return true; + } + return false; +} +#endif // GTEST_HAS_DEATH_TEST + +// TestResult contains some private methods that should be hidden from +// Google Test user but are required for testing. This class allow our tests +// to access them. +// +// This class is supplied only for the purpose of testing Google Test's own +// constructs. Do not use it in user tests, either directly or indirectly. +class TestResultAccessor { + public: + static void RecordProperty(TestResult* test_result, + const TestProperty& property) { + test_result->RecordProperty(property); + } + + static void ClearTestPartResults(TestResult* test_result) { + test_result->ClearTestPartResults(); + } + + static const std::vector& test_part_results( + const TestResult& test_result) { + return test_result.test_part_results(); + } +}; + +} // namespace internal +} // namespace testing + +#endif // GTEST_SRC_GTEST_INTERNAL_INL_H_ diff --git a/thirdparty/protobuf-2.6.1/gtest/src/gtest-port.cc b/thirdparty/protobuf-2.6.1/gtest/src/gtest-port.cc new file mode 100644 index 00000000..fa8f29cf --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/src/gtest-port.cc @@ -0,0 +1,805 @@ +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +#include "gtest/internal/gtest-port.h" + +#include +#include +#include +#include + +#if GTEST_OS_WINDOWS_MOBILE +# include // For TerminateProcess() +#elif GTEST_OS_WINDOWS +# include +# include +#else +# include +#endif // GTEST_OS_WINDOWS_MOBILE + +#if GTEST_OS_MAC +# include +# include +# include +#endif // GTEST_OS_MAC + +#if GTEST_OS_QNX +# include +# include +#endif // GTEST_OS_QNX + +#include "gtest/gtest-spi.h" +#include "gtest/gtest-message.h" +#include "gtest/internal/gtest-internal.h" +#include "gtest/internal/gtest-string.h" + +// Indicates that this translation unit is part of Google Test's +// implementation. It must come before gtest-internal-inl.h is +// included, or there will be a compiler error. This trick is to +// prevent a user from accidentally including gtest-internal-inl.h in +// his code. +#define GTEST_IMPLEMENTATION_ 1 +#include "src/gtest-internal-inl.h" +#undef GTEST_IMPLEMENTATION_ + +namespace testing { +namespace internal { + +#if defined(_MSC_VER) || defined(__BORLANDC__) +// MSVC and C++Builder do not provide a definition of STDERR_FILENO. +const int kStdOutFileno = 1; +const int kStdErrFileno = 2; +#else +const int kStdOutFileno = STDOUT_FILENO; +const int kStdErrFileno = STDERR_FILENO; +#endif // _MSC_VER + +#if GTEST_OS_MAC + +// Returns the number of threads running in the process, or 0 to indicate that +// we cannot detect it. +size_t GetThreadCount() { + const task_t task = mach_task_self(); + mach_msg_type_number_t thread_count; + thread_act_array_t thread_list; + const kern_return_t status = task_threads(task, &thread_list, &thread_count); + if (status == KERN_SUCCESS) { + // task_threads allocates resources in thread_list and we need to free them + // to avoid leaks. + vm_deallocate(task, + reinterpret_cast(thread_list), + sizeof(thread_t) * thread_count); + return static_cast(thread_count); + } else { + return 0; + } +} + +#elif GTEST_OS_QNX + +// Returns the number of threads running in the process, or 0 to indicate that +// we cannot detect it. +size_t GetThreadCount() { + const int fd = open("/proc/self/as", O_RDONLY); + if (fd < 0) { + return 0; + } + procfs_info process_info; + const int status = + devctl(fd, DCMD_PROC_INFO, &process_info, sizeof(process_info), NULL); + close(fd); + if (status == EOK) { + return static_cast(process_info.num_threads); + } else { + return 0; + } +} + +#else + +size_t GetThreadCount() { + // There's no portable way to detect the number of threads, so we just + // return 0 to indicate that we cannot detect it. + return 0; +} + +#endif // GTEST_OS_MAC + +#if GTEST_USES_POSIX_RE + +// Implements RE. Currently only needed for death tests. + +RE::~RE() { + if (is_valid_) { + // regfree'ing an invalid regex might crash because the content + // of the regex is undefined. Since the regex's are essentially + // the same, one cannot be valid (or invalid) without the other + // being so too. + regfree(&partial_regex_); + regfree(&full_regex_); + } + free(const_cast(pattern_)); +} + +// Returns true iff regular expression re matches the entire str. +bool RE::FullMatch(const char* str, const RE& re) { + if (!re.is_valid_) return false; + + regmatch_t match; + return regexec(&re.full_regex_, str, 1, &match, 0) == 0; +} + +// Returns true iff regular expression re matches a substring of str +// (including str itself). +bool RE::PartialMatch(const char* str, const RE& re) { + if (!re.is_valid_) return false; + + regmatch_t match; + return regexec(&re.partial_regex_, str, 1, &match, 0) == 0; +} + +// Initializes an RE from its string representation. +void RE::Init(const char* regex) { + pattern_ = posix::StrDup(regex); + + // Reserves enough bytes to hold the regular expression used for a + // full match. + const size_t full_regex_len = strlen(regex) + 10; + char* const full_pattern = new char[full_regex_len]; + + snprintf(full_pattern, full_regex_len, "^(%s)$", regex); + is_valid_ = regcomp(&full_regex_, full_pattern, REG_EXTENDED) == 0; + // We want to call regcomp(&partial_regex_, ...) even if the + // previous expression returns false. Otherwise partial_regex_ may + // not be properly initialized can may cause trouble when it's + // freed. + // + // Some implementation of POSIX regex (e.g. on at least some + // versions of Cygwin) doesn't accept the empty string as a valid + // regex. We change it to an equivalent form "()" to be safe. + if (is_valid_) { + const char* const partial_regex = (*regex == '\0') ? "()" : regex; + is_valid_ = regcomp(&partial_regex_, partial_regex, REG_EXTENDED) == 0; + } + EXPECT_TRUE(is_valid_) + << "Regular expression \"" << regex + << "\" is not a valid POSIX Extended regular expression."; + + delete[] full_pattern; +} + +#elif GTEST_USES_SIMPLE_RE + +// Returns true iff ch appears anywhere in str (excluding the +// terminating '\0' character). +bool IsInSet(char ch, const char* str) { + return ch != '\0' && strchr(str, ch) != NULL; +} + +// Returns true iff ch belongs to the given classification. Unlike +// similar functions in , these aren't affected by the +// current locale. +bool IsAsciiDigit(char ch) { return '0' <= ch && ch <= '9'; } +bool IsAsciiPunct(char ch) { + return IsInSet(ch, "^-!\"#$%&'()*+,./:;<=>?@[\\]_`{|}~"); +} +bool IsRepeat(char ch) { return IsInSet(ch, "?*+"); } +bool IsAsciiWhiteSpace(char ch) { return IsInSet(ch, " \f\n\r\t\v"); } +bool IsAsciiWordChar(char ch) { + return ('a' <= ch && ch <= 'z') || ('A' <= ch && ch <= 'Z') || + ('0' <= ch && ch <= '9') || ch == '_'; +} + +// Returns true iff "\\c" is a supported escape sequence. +bool IsValidEscape(char c) { + return (IsAsciiPunct(c) || IsInSet(c, "dDfnrsStvwW")); +} + +// Returns true iff the given atom (specified by escaped and pattern) +// matches ch. The result is undefined if the atom is invalid. +bool AtomMatchesChar(bool escaped, char pattern_char, char ch) { + if (escaped) { // "\\p" where p is pattern_char. + switch (pattern_char) { + case 'd': return IsAsciiDigit(ch); + case 'D': return !IsAsciiDigit(ch); + case 'f': return ch == '\f'; + case 'n': return ch == '\n'; + case 'r': return ch == '\r'; + case 's': return IsAsciiWhiteSpace(ch); + case 'S': return !IsAsciiWhiteSpace(ch); + case 't': return ch == '\t'; + case 'v': return ch == '\v'; + case 'w': return IsAsciiWordChar(ch); + case 'W': return !IsAsciiWordChar(ch); + } + return IsAsciiPunct(pattern_char) && pattern_char == ch; + } + + return (pattern_char == '.' && ch != '\n') || pattern_char == ch; +} + +// Helper function used by ValidateRegex() to format error messages. +std::string FormatRegexSyntaxError(const char* regex, int index) { + return (Message() << "Syntax error at index " << index + << " in simple regular expression \"" << regex << "\": ").GetString(); +} + +// Generates non-fatal failures and returns false if regex is invalid; +// otherwise returns true. +bool ValidateRegex(const char* regex) { + if (regex == NULL) { + // TODO(wan@google.com): fix the source file location in the + // assertion failures to match where the regex is used in user + // code. + ADD_FAILURE() << "NULL is not a valid simple regular expression."; + return false; + } + + bool is_valid = true; + + // True iff ?, *, or + can follow the previous atom. + bool prev_repeatable = false; + for (int i = 0; regex[i]; i++) { + if (regex[i] == '\\') { // An escape sequence + i++; + if (regex[i] == '\0') { + ADD_FAILURE() << FormatRegexSyntaxError(regex, i - 1) + << "'\\' cannot appear at the end."; + return false; + } + + if (!IsValidEscape(regex[i])) { + ADD_FAILURE() << FormatRegexSyntaxError(regex, i - 1) + << "invalid escape sequence \"\\" << regex[i] << "\"."; + is_valid = false; + } + prev_repeatable = true; + } else { // Not an escape sequence. + const char ch = regex[i]; + + if (ch == '^' && i > 0) { + ADD_FAILURE() << FormatRegexSyntaxError(regex, i) + << "'^' can only appear at the beginning."; + is_valid = false; + } else if (ch == '$' && regex[i + 1] != '\0') { + ADD_FAILURE() << FormatRegexSyntaxError(regex, i) + << "'$' can only appear at the end."; + is_valid = false; + } else if (IsInSet(ch, "()[]{}|")) { + ADD_FAILURE() << FormatRegexSyntaxError(regex, i) + << "'" << ch << "' is unsupported."; + is_valid = false; + } else if (IsRepeat(ch) && !prev_repeatable) { + ADD_FAILURE() << FormatRegexSyntaxError(regex, i) + << "'" << ch << "' can only follow a repeatable token."; + is_valid = false; + } + + prev_repeatable = !IsInSet(ch, "^$?*+"); + } + } + + return is_valid; +} + +// Matches a repeated regex atom followed by a valid simple regular +// expression. The regex atom is defined as c if escaped is false, +// or \c otherwise. repeat is the repetition meta character (?, *, +// or +). The behavior is undefined if str contains too many +// characters to be indexable by size_t, in which case the test will +// probably time out anyway. We are fine with this limitation as +// std::string has it too. +bool MatchRepetitionAndRegexAtHead( + bool escaped, char c, char repeat, const char* regex, + const char* str) { + const size_t min_count = (repeat == '+') ? 1 : 0; + const size_t max_count = (repeat == '?') ? 1 : + static_cast(-1) - 1; + // We cannot call numeric_limits::max() as it conflicts with the + // max() macro on Windows. + + for (size_t i = 0; i <= max_count; ++i) { + // We know that the atom matches each of the first i characters in str. + if (i >= min_count && MatchRegexAtHead(regex, str + i)) { + // We have enough matches at the head, and the tail matches too. + // Since we only care about *whether* the pattern matches str + // (as opposed to *how* it matches), there is no need to find a + // greedy match. + return true; + } + if (str[i] == '\0' || !AtomMatchesChar(escaped, c, str[i])) + return false; + } + return false; +} + +// Returns true iff regex matches a prefix of str. regex must be a +// valid simple regular expression and not start with "^", or the +// result is undefined. +bool MatchRegexAtHead(const char* regex, const char* str) { + if (*regex == '\0') // An empty regex matches a prefix of anything. + return true; + + // "$" only matches the end of a string. Note that regex being + // valid guarantees that there's nothing after "$" in it. + if (*regex == '$') + return *str == '\0'; + + // Is the first thing in regex an escape sequence? + const bool escaped = *regex == '\\'; + if (escaped) + ++regex; + if (IsRepeat(regex[1])) { + // MatchRepetitionAndRegexAtHead() calls MatchRegexAtHead(), so + // here's an indirect recursion. It terminates as the regex gets + // shorter in each recursion. + return MatchRepetitionAndRegexAtHead( + escaped, regex[0], regex[1], regex + 2, str); + } else { + // regex isn't empty, isn't "$", and doesn't start with a + // repetition. We match the first atom of regex with the first + // character of str and recurse. + return (*str != '\0') && AtomMatchesChar(escaped, *regex, *str) && + MatchRegexAtHead(regex + 1, str + 1); + } +} + +// Returns true iff regex matches any substring of str. regex must be +// a valid simple regular expression, or the result is undefined. +// +// The algorithm is recursive, but the recursion depth doesn't exceed +// the regex length, so we won't need to worry about running out of +// stack space normally. In rare cases the time complexity can be +// exponential with respect to the regex length + the string length, +// but usually it's must faster (often close to linear). +bool MatchRegexAnywhere(const char* regex, const char* str) { + if (regex == NULL || str == NULL) + return false; + + if (*regex == '^') + return MatchRegexAtHead(regex + 1, str); + + // A successful match can be anywhere in str. + do { + if (MatchRegexAtHead(regex, str)) + return true; + } while (*str++ != '\0'); + return false; +} + +// Implements the RE class. + +RE::~RE() { + free(const_cast(pattern_)); + free(const_cast(full_pattern_)); +} + +// Returns true iff regular expression re matches the entire str. +bool RE::FullMatch(const char* str, const RE& re) { + return re.is_valid_ && MatchRegexAnywhere(re.full_pattern_, str); +} + +// Returns true iff regular expression re matches a substring of str +// (including str itself). +bool RE::PartialMatch(const char* str, const RE& re) { + return re.is_valid_ && MatchRegexAnywhere(re.pattern_, str); +} + +// Initializes an RE from its string representation. +void RE::Init(const char* regex) { + pattern_ = full_pattern_ = NULL; + if (regex != NULL) { + pattern_ = posix::StrDup(regex); + } + + is_valid_ = ValidateRegex(regex); + if (!is_valid_) { + // No need to calculate the full pattern when the regex is invalid. + return; + } + + const size_t len = strlen(regex); + // Reserves enough bytes to hold the regular expression used for a + // full match: we need space to prepend a '^', append a '$', and + // terminate the string with '\0'. + char* buffer = static_cast(malloc(len + 3)); + full_pattern_ = buffer; + + if (*regex != '^') + *buffer++ = '^'; // Makes sure full_pattern_ starts with '^'. + + // We don't use snprintf or strncpy, as they trigger a warning when + // compiled with VC++ 8.0. + memcpy(buffer, regex, len); + buffer += len; + + if (len == 0 || regex[len - 1] != '$') + *buffer++ = '$'; // Makes sure full_pattern_ ends with '$'. + + *buffer = '\0'; +} + +#endif // GTEST_USES_POSIX_RE + +const char kUnknownFile[] = "unknown file"; + +// Formats a source file path and a line number as they would appear +// in an error message from the compiler used to compile this code. +GTEST_API_ ::std::string FormatFileLocation(const char* file, int line) { + const char* const file_name = file == NULL ? kUnknownFile : file; + + if (line < 0) { + return String::Format("%s:", file_name).c_str(); + } +#ifdef _MSC_VER + return String::Format("%s(%d):", file_name, line).c_str(); +#else + return String::Format("%s:%d:", file_name, line).c_str(); +#endif // _MSC_VER +} + +// Formats a file location for compiler-independent XML output. +// Although this function is not platform dependent, we put it next to +// FormatFileLocation in order to contrast the two functions. +// Note that FormatCompilerIndependentFileLocation() does NOT append colon +// to the file location it produces, unlike FormatFileLocation(). +GTEST_API_ ::std::string FormatCompilerIndependentFileLocation( + const char* file, int line) { + const char* const file_name = file == NULL ? kUnknownFile : file; + + if (line < 0) + return file_name; + else + return String::Format("%s:%d", file_name, line).c_str(); +} + + +GTestLog::GTestLog(GTestLogSeverity severity, const char* file, int line) + : severity_(severity) { + const char* const marker = + severity == GTEST_INFO ? "[ INFO ]" : + severity == GTEST_WARNING ? "[WARNING]" : + severity == GTEST_ERROR ? "[ ERROR ]" : "[ FATAL ]"; + GetStream() << ::std::endl << marker << " " + << FormatFileLocation(file, line).c_str() << ": "; +} + +// Flushes the buffers and, if severity is GTEST_FATAL, aborts the program. +GTestLog::~GTestLog() { + GetStream() << ::std::endl; + if (severity_ == GTEST_FATAL) { + fflush(stderr); + posix::Abort(); + } +} +// Disable Microsoft deprecation warnings for POSIX functions called from +// this class (creat, dup, dup2, and close) +#ifdef _MSC_VER +# pragma warning(push) +# pragma warning(disable: 4996) +#endif // _MSC_VER + +#if GTEST_HAS_STREAM_REDIRECTION + +// Object that captures an output stream (stdout/stderr). +class CapturedStream { + public: + // The ctor redirects the stream to a temporary file. + explicit CapturedStream(int fd) : fd_(fd), uncaptured_fd_(dup(fd)) { +# if GTEST_OS_WINDOWS + char temp_dir_path[MAX_PATH + 1] = { '\0' }; // NOLINT + char temp_file_path[MAX_PATH + 1] = { '\0' }; // NOLINT + + ::GetTempPathA(sizeof(temp_dir_path), temp_dir_path); + const UINT success = ::GetTempFileNameA(temp_dir_path, + "gtest_redir", + 0, // Generate unique file name. + temp_file_path); + GTEST_CHECK_(success != 0) + << "Unable to create a temporary file in " << temp_dir_path; + const int captured_fd = creat(temp_file_path, _S_IREAD | _S_IWRITE); + GTEST_CHECK_(captured_fd != -1) << "Unable to open temporary file " + << temp_file_path; + filename_ = temp_file_path; +# else + // There's no guarantee that a test has write access to the current + // directory, so we create the temporary file in the /tmp directory + // instead. We use /tmp on most systems, and /sdcard on Android. + // That's because Android doesn't have /tmp. +# if GTEST_OS_LINUX_ANDROID + // Note: Android applications are expected to call the framework's + // Context.getExternalStorageDirectory() method through JNI to get + // the location of the world-writable SD Card directory. However, + // this requires a Context handle, which cannot be retrieved + // globally from native code. Doing so also precludes running the + // code as part of a regular standalone executable, which doesn't + // run in a Dalvik process (e.g. when running it through 'adb shell'). + // + // The location /sdcard is directly accessible from native code + // and is the only location (unofficially) supported by the Android + // team. It's generally a symlink to the real SD Card mount point + // which can be /mnt/sdcard, /mnt/sdcard0, /system/media/sdcard, or + // other OEM-customized locations. Never rely on these, and always + // use /sdcard. + char name_template[] = "/sdcard/gtest_captured_stream.XXXXXX"; +# else + char name_template[] = "/tmp/captured_stream.XXXXXX"; +# endif // GTEST_OS_LINUX_ANDROID + const int captured_fd = mkstemp(name_template); + filename_ = name_template; +# endif // GTEST_OS_WINDOWS + fflush(NULL); + dup2(captured_fd, fd_); + close(captured_fd); + } + + ~CapturedStream() { + remove(filename_.c_str()); + } + + std::string GetCapturedString() { + if (uncaptured_fd_ != -1) { + // Restores the original stream. + fflush(NULL); + dup2(uncaptured_fd_, fd_); + close(uncaptured_fd_); + uncaptured_fd_ = -1; + } + + FILE* const file = posix::FOpen(filename_.c_str(), "r"); + const std::string content = ReadEntireFile(file); + posix::FClose(file); + return content; + } + + private: + // Reads the entire content of a file as an std::string. + static std::string ReadEntireFile(FILE* file); + + // Returns the size (in bytes) of a file. + static size_t GetFileSize(FILE* file); + + const int fd_; // A stream to capture. + int uncaptured_fd_; + // Name of the temporary file holding the stderr output. + ::std::string filename_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(CapturedStream); +}; + +// Returns the size (in bytes) of a file. +size_t CapturedStream::GetFileSize(FILE* file) { + fseek(file, 0, SEEK_END); + return static_cast(ftell(file)); +} + +// Reads the entire content of a file as a string. +std::string CapturedStream::ReadEntireFile(FILE* file) { + const size_t file_size = GetFileSize(file); + char* const buffer = new char[file_size]; + + size_t bytes_last_read = 0; // # of bytes read in the last fread() + size_t bytes_read = 0; // # of bytes read so far + + fseek(file, 0, SEEK_SET); + + // Keeps reading the file until we cannot read further or the + // pre-determined file size is reached. + do { + bytes_last_read = fread(buffer+bytes_read, 1, file_size-bytes_read, file); + bytes_read += bytes_last_read; + } while (bytes_last_read > 0 && bytes_read < file_size); + + const std::string content(buffer, bytes_read); + delete[] buffer; + + return content; +} + +# ifdef _MSC_VER +# pragma warning(pop) +# endif // _MSC_VER + +static CapturedStream* g_captured_stderr = NULL; +static CapturedStream* g_captured_stdout = NULL; + +// Starts capturing an output stream (stdout/stderr). +void CaptureStream(int fd, const char* stream_name, CapturedStream** stream) { + if (*stream != NULL) { + GTEST_LOG_(FATAL) << "Only one " << stream_name + << " capturer can exist at a time."; + } + *stream = new CapturedStream(fd); +} + +// Stops capturing the output stream and returns the captured string. +std::string GetCapturedStream(CapturedStream** captured_stream) { + const std::string content = (*captured_stream)->GetCapturedString(); + + delete *captured_stream; + *captured_stream = NULL; + + return content; +} + +// Starts capturing stdout. +void CaptureStdout() { + CaptureStream(kStdOutFileno, "stdout", &g_captured_stdout); +} + +// Starts capturing stderr. +void CaptureStderr() { + CaptureStream(kStdErrFileno, "stderr", &g_captured_stderr); +} + +// Stops capturing stdout and returns the captured string. +std::string GetCapturedStdout() { + return GetCapturedStream(&g_captured_stdout); +} + +// Stops capturing stderr and returns the captured string. +std::string GetCapturedStderr() { + return GetCapturedStream(&g_captured_stderr); +} + +#endif // GTEST_HAS_STREAM_REDIRECTION + +#if GTEST_HAS_DEATH_TEST + +// A copy of all command line arguments. Set by InitGoogleTest(). +::std::vector g_argvs; + +static const ::std::vector* g_injected_test_argvs = + NULL; // Owned. + +void SetInjectableArgvs(const ::std::vector* argvs) { + if (g_injected_test_argvs != argvs) + delete g_injected_test_argvs; + g_injected_test_argvs = argvs; +} + +const ::std::vector& GetInjectableArgvs() { + if (g_injected_test_argvs != NULL) { + return *g_injected_test_argvs; + } + return g_argvs; +} +#endif // GTEST_HAS_DEATH_TEST + +#if GTEST_OS_WINDOWS_MOBILE +namespace posix { +void Abort() { + DebugBreak(); + TerminateProcess(GetCurrentProcess(), 1); +} +} // namespace posix +#endif // GTEST_OS_WINDOWS_MOBILE + +// Returns the name of the environment variable corresponding to the +// given flag. For example, FlagToEnvVar("foo") will return +// "GTEST_FOO" in the open-source version. +static std::string FlagToEnvVar(const char* flag) { + const std::string full_flag = + (Message() << GTEST_FLAG_PREFIX_ << flag).GetString(); + + Message env_var; + for (size_t i = 0; i != full_flag.length(); i++) { + env_var << ToUpper(full_flag.c_str()[i]); + } + + return env_var.GetString(); +} + +// Parses 'str' for a 32-bit signed integer. If successful, writes +// the result to *value and returns true; otherwise leaves *value +// unchanged and returns false. +bool ParseInt32(const Message& src_text, const char* str, Int32* value) { + // Parses the environment variable as a decimal integer. + char* end = NULL; + const long long_value = strtol(str, &end, 10); // NOLINT + + // Has strtol() consumed all characters in the string? + if (*end != '\0') { + // No - an invalid character was encountered. + Message msg; + msg << "WARNING: " << src_text + << " is expected to be a 32-bit integer, but actually" + << " has value \"" << str << "\".\n"; + printf("%s", msg.GetString().c_str()); + fflush(stdout); + return false; + } + + // Is the parsed value in the range of an Int32? + const Int32 result = static_cast(long_value); + if (long_value == LONG_MAX || long_value == LONG_MIN || + // The parsed value overflows as a long. (strtol() returns + // LONG_MAX or LONG_MIN when the input overflows.) + result != long_value + // The parsed value overflows as an Int32. + ) { + Message msg; + msg << "WARNING: " << src_text + << " is expected to be a 32-bit integer, but actually" + << " has value " << str << ", which overflows.\n"; + printf("%s", msg.GetString().c_str()); + fflush(stdout); + return false; + } + + *value = result; + return true; +} + +// Reads and returns the Boolean environment variable corresponding to +// the given flag; if it's not set, returns default_value. +// +// The value is considered true iff it's not "0". +bool BoolFromGTestEnv(const char* flag, bool default_value) { + const std::string env_var = FlagToEnvVar(flag); + const char* const string_value = posix::GetEnv(env_var.c_str()); + return string_value == NULL ? + default_value : strcmp(string_value, "0") != 0; +} + +// Reads and returns a 32-bit integer stored in the environment +// variable corresponding to the given flag; if it isn't set or +// doesn't represent a valid 32-bit integer, returns default_value. +Int32 Int32FromGTestEnv(const char* flag, Int32 default_value) { + const std::string env_var = FlagToEnvVar(flag); + const char* const string_value = posix::GetEnv(env_var.c_str()); + if (string_value == NULL) { + // The environment variable is not set. + return default_value; + } + + Int32 result = default_value; + if (!ParseInt32(Message() << "Environment variable " << env_var, + string_value, &result)) { + printf("The default value %s is used.\n", + (Message() << default_value).GetString().c_str()); + fflush(stdout); + return default_value; + } + + return result; +} + +// Reads and returns the string environment variable corresponding to +// the given flag; if it's not set, returns default_value. +const char* StringFromGTestEnv(const char* flag, const char* default_value) { + const std::string env_var = FlagToEnvVar(flag); + const char* const value = posix::GetEnv(env_var.c_str()); + return value == NULL ? default_value : value; +} + +} // namespace internal +} // namespace testing diff --git a/thirdparty/protobuf-2.6.1/gtest/src/gtest-printers.cc b/thirdparty/protobuf-2.6.1/gtest/src/gtest-printers.cc new file mode 100644 index 00000000..898d61d8 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/src/gtest-printers.cc @@ -0,0 +1,364 @@ +// Copyright 2007, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +// Google Test - The Google C++ Testing Framework +// +// This file implements a universal value printer that can print a +// value of any type T: +// +// void ::testing::internal::UniversalPrinter::Print(value, ostream_ptr); +// +// It uses the << operator when possible, and prints the bytes in the +// object otherwise. A user can override its behavior for a class +// type Foo by defining either operator<<(::std::ostream&, const Foo&) +// or void PrintTo(const Foo&, ::std::ostream*) in the namespace that +// defines Foo. + +#include "gtest/gtest-printers.h" +#include +#include +#include // NOLINT +#include +#include "gtest/internal/gtest-port.h" + +namespace testing { + +namespace { + +using ::std::ostream; + +// Prints a segment of bytes in the given object. +void PrintByteSegmentInObjectTo(const unsigned char* obj_bytes, size_t start, + size_t count, ostream* os) { + char text[5] = ""; + for (size_t i = 0; i != count; i++) { + const size_t j = start + i; + if (i != 0) { + // Organizes the bytes into groups of 2 for easy parsing by + // human. + if ((j % 2) == 0) + *os << ' '; + else + *os << '-'; + } + GTEST_SNPRINTF_(text, sizeof(text), "%02X", obj_bytes[j]); + *os << text; + } +} + +// Prints the bytes in the given value to the given ostream. +void PrintBytesInObjectToImpl(const unsigned char* obj_bytes, size_t count, + ostream* os) { + // Tells the user how big the object is. + *os << count << "-byte object <"; + + const size_t kThreshold = 132; + const size_t kChunkSize = 64; + // If the object size is bigger than kThreshold, we'll have to omit + // some details by printing only the first and the last kChunkSize + // bytes. + // TODO(wan): let the user control the threshold using a flag. + if (count < kThreshold) { + PrintByteSegmentInObjectTo(obj_bytes, 0, count, os); + } else { + PrintByteSegmentInObjectTo(obj_bytes, 0, kChunkSize, os); + *os << " ... "; + // Rounds up to 2-byte boundary. + const size_t resume_pos = (count - kChunkSize + 1)/2*2; + PrintByteSegmentInObjectTo(obj_bytes, resume_pos, count - resume_pos, os); + } + *os << ">"; +} + +} // namespace + +namespace internal2 { + +// Delegates to PrintBytesInObjectToImpl() to print the bytes in the +// given object. The delegation simplifies the implementation, which +// uses the << operator and thus is easier done outside of the +// ::testing::internal namespace, which contains a << operator that +// sometimes conflicts with the one in STL. +void PrintBytesInObjectTo(const unsigned char* obj_bytes, size_t count, + ostream* os) { + PrintBytesInObjectToImpl(obj_bytes, count, os); +} + +} // namespace internal2 + +namespace internal { + +// Depending on the value of a char (or wchar_t), we print it in one +// of three formats: +// - as is if it's a printable ASCII (e.g. 'a', '2', ' '), +// - as a hexidecimal escape sequence (e.g. '\x7F'), or +// - as a special escape sequence (e.g. '\r', '\n'). +enum CharFormat { + kAsIs, + kHexEscape, + kSpecialEscape +}; + +// Returns true if c is a printable ASCII character. We test the +// value of c directly instead of calling isprint(), which is buggy on +// Windows Mobile. +inline bool IsPrintableAscii(wchar_t c) { + return 0x20 <= c && c <= 0x7E; +} + +// Prints a wide or narrow char c as a character literal without the +// quotes, escaping it when necessary; returns how c was formatted. +// The template argument UnsignedChar is the unsigned version of Char, +// which is the type of c. +template +static CharFormat PrintAsCharLiteralTo(Char c, ostream* os) { + switch (static_cast(c)) { + case L'\0': + *os << "\\0"; + break; + case L'\'': + *os << "\\'"; + break; + case L'\\': + *os << "\\\\"; + break; + case L'\a': + *os << "\\a"; + break; + case L'\b': + *os << "\\b"; + break; + case L'\f': + *os << "\\f"; + break; + case L'\n': + *os << "\\n"; + break; + case L'\r': + *os << "\\r"; + break; + case L'\t': + *os << "\\t"; + break; + case L'\v': + *os << "\\v"; + break; + default: + if (IsPrintableAscii(c)) { + *os << static_cast(c); + return kAsIs; + } else { + *os << String::Format("\\x%X", static_cast(c)); + return kHexEscape; + } + } + return kSpecialEscape; +} + +// Prints a wchar_t c as if it's part of a string literal, escaping it when +// necessary; returns how c was formatted. +static CharFormat PrintAsStringLiteralTo(wchar_t c, ostream* os) { + switch (c) { + case L'\'': + *os << "'"; + return kAsIs; + case L'"': + *os << "\\\""; + return kSpecialEscape; + default: + return PrintAsCharLiteralTo(c, os); + } +} + +// Prints a char c as if it's part of a string literal, escaping it when +// necessary; returns how c was formatted. +static CharFormat PrintAsStringLiteralTo(char c, ostream* os) { + return PrintAsStringLiteralTo( + static_cast(static_cast(c)), os); +} + +// Prints a wide or narrow character c and its code. '\0' is printed +// as "'\\0'", other unprintable characters are also properly escaped +// using the standard C++ escape sequence. The template argument +// UnsignedChar is the unsigned version of Char, which is the type of c. +template +void PrintCharAndCodeTo(Char c, ostream* os) { + // First, print c as a literal in the most readable form we can find. + *os << ((sizeof(c) > 1) ? "L'" : "'"); + const CharFormat format = PrintAsCharLiteralTo(c, os); + *os << "'"; + + // To aid user debugging, we also print c's code in decimal, unless + // it's 0 (in which case c was printed as '\\0', making the code + // obvious). + if (c == 0) + return; + *os << " (" << String::Format("%d", c).c_str(); + + // For more convenience, we print c's code again in hexidecimal, + // unless c was already printed in the form '\x##' or the code is in + // [1, 9]. + if (format == kHexEscape || (1 <= c && c <= 9)) { + // Do nothing. + } else { + *os << String::Format(", 0x%X", + static_cast(c)).c_str(); + } + *os << ")"; +} + +void PrintTo(unsigned char c, ::std::ostream* os) { + PrintCharAndCodeTo(c, os); +} +void PrintTo(signed char c, ::std::ostream* os) { + PrintCharAndCodeTo(c, os); +} + +// Prints a wchar_t as a symbol if it is printable or as its internal +// code otherwise and also as its code. L'\0' is printed as "L'\\0'". +void PrintTo(wchar_t wc, ostream* os) { + PrintCharAndCodeTo(wc, os); +} + +// Prints the given array of characters to the ostream. CharType must be either +// char or wchar_t. +// The array starts at begin, the length is len, it may include '\0' characters +// and may not be NUL-terminated. +template +static void PrintCharsAsStringTo( + const CharType* begin, size_t len, ostream* os) { + const char* const kQuoteBegin = sizeof(CharType) == 1 ? "\"" : "L\""; + *os << kQuoteBegin; + bool is_previous_hex = false; + for (size_t index = 0; index < len; ++index) { + const CharType cur = begin[index]; + if (is_previous_hex && IsXDigit(cur)) { + // Previous character is of '\x..' form and this character can be + // interpreted as another hexadecimal digit in its number. Break string to + // disambiguate. + *os << "\" " << kQuoteBegin; + } + is_previous_hex = PrintAsStringLiteralTo(cur, os) == kHexEscape; + } + *os << "\""; +} + +// Prints a (const) char/wchar_t array of 'len' elements, starting at address +// 'begin'. CharType must be either char or wchar_t. +template +static void UniversalPrintCharArray( + const CharType* begin, size_t len, ostream* os) { + // The code + // const char kFoo[] = "foo"; + // generates an array of 4, not 3, elements, with the last one being '\0'. + // + // Therefore when printing a char array, we don't print the last element if + // it's '\0', such that the output matches the string literal as it's + // written in the source code. + if (len > 0 && begin[len - 1] == '\0') { + PrintCharsAsStringTo(begin, len - 1, os); + return; + } + + // If, however, the last element in the array is not '\0', e.g. + // const char kFoo[] = { 'f', 'o', 'o' }; + // we must print the entire array. We also print a message to indicate + // that the array is not NUL-terminated. + PrintCharsAsStringTo(begin, len, os); + *os << " (no terminating NUL)"; +} + +// Prints a (const) char array of 'len' elements, starting at address 'begin'. +void UniversalPrintArray(const char* begin, size_t len, ostream* os) { + UniversalPrintCharArray(begin, len, os); +} + +// Prints a (const) wchar_t array of 'len' elements, starting at address +// 'begin'. +void UniversalPrintArray(const wchar_t* begin, size_t len, ostream* os) { + UniversalPrintCharArray(begin, len, os); +} + +// Prints the given C string to the ostream. +void PrintTo(const char* s, ostream* os) { + if (s == NULL) { + *os << "NULL"; + } else { + *os << ImplicitCast_(s) << " pointing to "; + PrintCharsAsStringTo(s, strlen(s), os); + } +} + +// MSVC compiler can be configured to define whar_t as a typedef +// of unsigned short. Defining an overload for const wchar_t* in that case +// would cause pointers to unsigned shorts be printed as wide strings, +// possibly accessing more memory than intended and causing invalid +// memory accesses. MSVC defines _NATIVE_WCHAR_T_DEFINED symbol when +// wchar_t is implemented as a native type. +#if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED) +// Prints the given wide C string to the ostream. +void PrintTo(const wchar_t* s, ostream* os) { + if (s == NULL) { + *os << "NULL"; + } else { + *os << ImplicitCast_(s) << " pointing to "; + PrintCharsAsStringTo(s, wcslen(s), os); + } +} +#endif // wchar_t is native + +// Prints a ::string object. +#if GTEST_HAS_GLOBAL_STRING +void PrintStringTo(const ::string& s, ostream* os) { + PrintCharsAsStringTo(s.data(), s.size(), os); +} +#endif // GTEST_HAS_GLOBAL_STRING + +void PrintStringTo(const ::std::string& s, ostream* os) { + PrintCharsAsStringTo(s.data(), s.size(), os); +} + +// Prints a ::wstring object. +#if GTEST_HAS_GLOBAL_WSTRING +void PrintWideStringTo(const ::wstring& s, ostream* os) { + PrintCharsAsStringTo(s.data(), s.size(), os); +} +#endif // GTEST_HAS_GLOBAL_WSTRING + +#if GTEST_HAS_STD_WSTRING +void PrintWideStringTo(const ::std::wstring& s, ostream* os) { + PrintCharsAsStringTo(s.data(), s.size(), os); +} +#endif // GTEST_HAS_STD_WSTRING + +} // namespace internal + +} // namespace testing diff --git a/thirdparty/protobuf-2.6.1/gtest/src/gtest-test-part.cc b/thirdparty/protobuf-2.6.1/gtest/src/gtest-test-part.cc new file mode 100644 index 00000000..c60eef3a --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/src/gtest-test-part.cc @@ -0,0 +1,110 @@ +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: mheule@google.com (Markus Heule) +// +// The Google C++ Testing Framework (Google Test) + +#include "gtest/gtest-test-part.h" + +// Indicates that this translation unit is part of Google Test's +// implementation. It must come before gtest-internal-inl.h is +// included, or there will be a compiler error. This trick is to +// prevent a user from accidentally including gtest-internal-inl.h in +// his code. +#define GTEST_IMPLEMENTATION_ 1 +#include "src/gtest-internal-inl.h" +#undef GTEST_IMPLEMENTATION_ + +namespace testing { + +using internal::GetUnitTestImpl; + +// Gets the summary of the failure message by omitting the stack trace +// in it. +std::string TestPartResult::ExtractSummary(const char* message) { + const char* const stack_trace = strstr(message, internal::kStackTraceMarker); + return stack_trace == NULL ? message : + std::string(message, stack_trace); +} + +// Prints a TestPartResult object. +std::ostream& operator<<(std::ostream& os, const TestPartResult& result) { + return os + << result.file_name() << ":" << result.line_number() << ": " + << (result.type() == TestPartResult::kSuccess ? "Success" : + result.type() == TestPartResult::kFatalFailure ? "Fatal failure" : + "Non-fatal failure") << ":\n" + << result.message() << std::endl; +} + +// Appends a TestPartResult to the array. +void TestPartResultArray::Append(const TestPartResult& result) { + array_.push_back(result); +} + +// Returns the TestPartResult at the given index (0-based). +const TestPartResult& TestPartResultArray::GetTestPartResult(int index) const { + if (index < 0 || index >= size()) { + printf("\nInvalid index (%d) into TestPartResultArray.\n", index); + internal::posix::Abort(); + } + + return array_[index]; +} + +// Returns the number of TestPartResult objects in the array. +int TestPartResultArray::size() const { + return static_cast(array_.size()); +} + +namespace internal { + +HasNewFatalFailureHelper::HasNewFatalFailureHelper() + : has_new_fatal_failure_(false), + original_reporter_(GetUnitTestImpl()-> + GetTestPartResultReporterForCurrentThread()) { + GetUnitTestImpl()->SetTestPartResultReporterForCurrentThread(this); +} + +HasNewFatalFailureHelper::~HasNewFatalFailureHelper() { + GetUnitTestImpl()->SetTestPartResultReporterForCurrentThread( + original_reporter_); +} + +void HasNewFatalFailureHelper::ReportTestPartResult( + const TestPartResult& result) { + if (result.fatally_failed()) + has_new_fatal_failure_ = true; + original_reporter_->ReportTestPartResult(result); +} + +} // namespace internal + +} // namespace testing diff --git a/thirdparty/protobuf-2.6.1/gtest/src/gtest-typed-test.cc b/thirdparty/protobuf-2.6.1/gtest/src/gtest-typed-test.cc new file mode 100644 index 00000000..f0079f40 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/src/gtest-typed-test.cc @@ -0,0 +1,110 @@ +// Copyright 2008 Google Inc. +// All Rights Reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +#include "gtest/gtest-typed-test.h" +#include "gtest/gtest.h" + +namespace testing { +namespace internal { + +#if GTEST_HAS_TYPED_TEST_P + +// Skips to the first non-space char in str. Returns an empty string if str +// contains only whitespace characters. +static const char* SkipSpaces(const char* str) { + while (IsSpace(*str)) + str++; + return str; +} + +// Verifies that registered_tests match the test names in +// defined_test_names_; returns registered_tests if successful, or +// aborts the program otherwise. +const char* TypedTestCasePState::VerifyRegisteredTestNames( + const char* file, int line, const char* registered_tests) { + typedef ::std::set::const_iterator DefinedTestIter; + registered_ = true; + + // Skip initial whitespace in registered_tests since some + // preprocessors prefix stringizied literals with whitespace. + registered_tests = SkipSpaces(registered_tests); + + Message errors; + ::std::set tests; + for (const char* names = registered_tests; names != NULL; + names = SkipComma(names)) { + const std::string name = GetPrefixUntilComma(names); + if (tests.count(name) != 0) { + errors << "Test " << name << " is listed more than once.\n"; + continue; + } + + bool found = false; + for (DefinedTestIter it = defined_test_names_.begin(); + it != defined_test_names_.end(); + ++it) { + if (name == *it) { + found = true; + break; + } + } + + if (found) { + tests.insert(name); + } else { + errors << "No test named " << name + << " can be found in this test case.\n"; + } + } + + for (DefinedTestIter it = defined_test_names_.begin(); + it != defined_test_names_.end(); + ++it) { + if (tests.count(*it) == 0) { + errors << "You forgot to list test " << *it << ".\n"; + } + } + + const std::string& errors_str = errors.GetString(); + if (errors_str != "") { + fprintf(stderr, "%s %s", FormatFileLocation(file, line).c_str(), + errors_str.c_str()); + fflush(stderr); + posix::Abort(); + } + + return registered_tests; +} + +#endif // GTEST_HAS_TYPED_TEST_P + +} // namespace internal +} // namespace testing diff --git a/thirdparty/protobuf-2.6.1/gtest/src/gtest.cc b/thirdparty/protobuf-2.6.1/gtest/src/gtest.cc new file mode 100644 index 00000000..0567e83c --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/src/gtest.cc @@ -0,0 +1,4838 @@ +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) +// +// The Google C++ Testing Framework (Google Test) + +#include "gtest/gtest.h" +#include "gtest/gtest-spi.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include // NOLINT +#include +#include + +#if GTEST_OS_LINUX + +// TODO(kenton@google.com): Use autoconf to detect availability of +// gettimeofday(). +# define GTEST_HAS_GETTIMEOFDAY_ 1 + +# include // NOLINT +# include // NOLINT +# include // NOLINT +// Declares vsnprintf(). This header is not available on Windows. +# include // NOLINT +# include // NOLINT +# include // NOLINT +# include // NOLINT +# include + +#elif GTEST_OS_SYMBIAN +# define GTEST_HAS_GETTIMEOFDAY_ 1 +# include // NOLINT + +#elif GTEST_OS_ZOS +# define GTEST_HAS_GETTIMEOFDAY_ 1 +# include // NOLINT + +// On z/OS we additionally need strings.h for strcasecmp. +# include // NOLINT + +#elif GTEST_OS_WINDOWS_MOBILE // We are on Windows CE. + +# include // NOLINT + +#elif GTEST_OS_WINDOWS // We are on Windows proper. + +# include // NOLINT +# include // NOLINT +# include // NOLINT +# include // NOLINT + +# if GTEST_OS_WINDOWS_MINGW +// MinGW has gettimeofday() but not _ftime64(). +// TODO(kenton@google.com): Use autoconf to detect availability of +// gettimeofday(). +// TODO(kenton@google.com): There are other ways to get the time on +// Windows, like GetTickCount() or GetSystemTimeAsFileTime(). MinGW +// supports these. consider using them instead. +# define GTEST_HAS_GETTIMEOFDAY_ 1 +# include // NOLINT +# endif // GTEST_OS_WINDOWS_MINGW + +// cpplint thinks that the header is already included, so we want to +// silence it. +# include // NOLINT + +#else + +// Assume other platforms have gettimeofday(). +// TODO(kenton@google.com): Use autoconf to detect availability of +// gettimeofday(). +# define GTEST_HAS_GETTIMEOFDAY_ 1 + +// cpplint thinks that the header is already included, so we want to +// silence it. +# include // NOLINT +# include // NOLINT + +#endif // GTEST_OS_LINUX + +#if GTEST_HAS_EXCEPTIONS +# include +#endif + +#if GTEST_CAN_STREAM_RESULTS_ +# include // NOLINT +# include // NOLINT +#endif + +// Indicates that this translation unit is part of Google Test's +// implementation. It must come before gtest-internal-inl.h is +// included, or there will be a compiler error. This trick is to +// prevent a user from accidentally including gtest-internal-inl.h in +// his code. +#define GTEST_IMPLEMENTATION_ 1 +#include "src/gtest-internal-inl.h" +#undef GTEST_IMPLEMENTATION_ + +#if GTEST_OS_WINDOWS +# define vsnprintf _vsnprintf +#endif // GTEST_OS_WINDOWS + +namespace testing { + +using internal::CountIf; +using internal::ForEach; +using internal::GetElementOr; +using internal::Shuffle; + +// Constants. + +// A test whose test case name or test name matches this filter is +// disabled and not run. +static const char kDisableTestFilter[] = "DISABLED_*:*/DISABLED_*"; + +// A test case whose name matches this filter is considered a death +// test case and will be run before test cases whose name doesn't +// match this filter. +static const char kDeathTestCaseFilter[] = "*DeathTest:*DeathTest/*"; + +// A test filter that matches everything. +static const char kUniversalFilter[] = "*"; + +// The default output file for XML output. +static const char kDefaultOutputFile[] = "test_detail.xml"; + +// The environment variable name for the test shard index. +static const char kTestShardIndex[] = "GTEST_SHARD_INDEX"; +// The environment variable name for the total number of test shards. +static const char kTestTotalShards[] = "GTEST_TOTAL_SHARDS"; +// The environment variable name for the test shard status file. +static const char kTestShardStatusFile[] = "GTEST_SHARD_STATUS_FILE"; + +namespace internal { + +// The text used in failure messages to indicate the start of the +// stack trace. +const char kStackTraceMarker[] = "\nStack trace:\n"; + +// g_help_flag is true iff the --help flag or an equivalent form is +// specified on the command line. +bool g_help_flag = false; + +} // namespace internal + +GTEST_DEFINE_bool_( + also_run_disabled_tests, + internal::BoolFromGTestEnv("also_run_disabled_tests", false), + "Run disabled tests too, in addition to the tests normally being run."); + +GTEST_DEFINE_bool_( + break_on_failure, + internal::BoolFromGTestEnv("break_on_failure", false), + "True iff a failed assertion should be a debugger break-point."); + +GTEST_DEFINE_bool_( + catch_exceptions, + internal::BoolFromGTestEnv("catch_exceptions", true), + "True iff " GTEST_NAME_ + " should catch exceptions and treat them as test failures."); + +GTEST_DEFINE_string_( + color, + internal::StringFromGTestEnv("color", "auto"), + "Whether to use colors in the output. Valid values: yes, no, " + "and auto. 'auto' means to use colors if the output is " + "being sent to a terminal and the TERM environment variable " + "is set to xterm, xterm-color, xterm-256color, linux or cygwin."); + +GTEST_DEFINE_string_( + filter, + internal::StringFromGTestEnv("filter", kUniversalFilter), + "A colon-separated list of glob (not regex) patterns " + "for filtering the tests to run, optionally followed by a " + "'-' and a : separated list of negative patterns (tests to " + "exclude). A test is run if it matches one of the positive " + "patterns and does not match any of the negative patterns."); + +GTEST_DEFINE_bool_(list_tests, false, + "List all tests without running them."); + +GTEST_DEFINE_string_( + output, + internal::StringFromGTestEnv("output", ""), + "A format (currently must be \"xml\"), optionally followed " + "by a colon and an output file name or directory. A directory " + "is indicated by a trailing pathname separator. " + "Examples: \"xml:filename.xml\", \"xml::directoryname/\". " + "If a directory is specified, output files will be created " + "within that directory, with file-names based on the test " + "executable's name and, if necessary, made unique by adding " + "digits."); + +GTEST_DEFINE_bool_( + print_time, + internal::BoolFromGTestEnv("print_time", true), + "True iff " GTEST_NAME_ + " should display elapsed time in text output."); + +GTEST_DEFINE_int32_( + random_seed, + internal::Int32FromGTestEnv("random_seed", 0), + "Random number seed to use when shuffling test orders. Must be in range " + "[1, 99999], or 0 to use a seed based on the current time."); + +GTEST_DEFINE_int32_( + repeat, + internal::Int32FromGTestEnv("repeat", 1), + "How many times to repeat each test. Specify a negative number " + "for repeating forever. Useful for shaking out flaky tests."); + +GTEST_DEFINE_bool_( + show_internal_stack_frames, false, + "True iff " GTEST_NAME_ " should include internal stack frames when " + "printing test failure stack traces."); + +GTEST_DEFINE_bool_( + shuffle, + internal::BoolFromGTestEnv("shuffle", false), + "True iff " GTEST_NAME_ + " should randomize tests' order on every run."); + +GTEST_DEFINE_int32_( + stack_trace_depth, + internal::Int32FromGTestEnv("stack_trace_depth", kMaxStackTraceDepth), + "The maximum number of stack frames to print when an " + "assertion fails. The valid range is 0 through 100, inclusive."); + +GTEST_DEFINE_string_( + stream_result_to, + internal::StringFromGTestEnv("stream_result_to", ""), + "This flag specifies the host name and the port number on which to stream " + "test results. Example: \"localhost:555\". The flag is effective only on " + "Linux."); + +GTEST_DEFINE_bool_( + throw_on_failure, + internal::BoolFromGTestEnv("throw_on_failure", false), + "When this flag is specified, a failed assertion will throw an exception " + "if exceptions are enabled or exit the program with a non-zero code " + "otherwise."); + +namespace internal { + +// Generates a random number from [0, range), using a Linear +// Congruential Generator (LCG). Crashes if 'range' is 0 or greater +// than kMaxRange. +UInt32 Random::Generate(UInt32 range) { + // These constants are the same as are used in glibc's rand(3). + state_ = (1103515245U*state_ + 12345U) % kMaxRange; + + GTEST_CHECK_(range > 0) + << "Cannot generate a number in the range [0, 0)."; + GTEST_CHECK_(range <= kMaxRange) + << "Generation of a number in [0, " << range << ") was requested, " + << "but this can only generate numbers in [0, " << kMaxRange << ")."; + + // Converting via modulus introduces a bit of downward bias, but + // it's simple, and a linear congruential generator isn't too good + // to begin with. + return state_ % range; +} + +// GTestIsInitialized() returns true iff the user has initialized +// Google Test. Useful for catching the user mistake of not initializing +// Google Test before calling RUN_ALL_TESTS(). +// +// A user must call testing::InitGoogleTest() to initialize Google +// Test. g_init_gtest_count is set to the number of times +// InitGoogleTest() has been called. We don't protect this variable +// under a mutex as it is only accessed in the main thread. +GTEST_API_ int g_init_gtest_count = 0; +static bool GTestIsInitialized() { return g_init_gtest_count != 0; } + +// Iterates over a vector of TestCases, keeping a running sum of the +// results of calling a given int-returning method on each. +// Returns the sum. +static int SumOverTestCaseList(const std::vector& case_list, + int (TestCase::*method)() const) { + int sum = 0; + for (size_t i = 0; i < case_list.size(); i++) { + sum += (case_list[i]->*method)(); + } + return sum; +} + +// Returns true iff the test case passed. +static bool TestCasePassed(const TestCase* test_case) { + return test_case->should_run() && test_case->Passed(); +} + +// Returns true iff the test case failed. +static bool TestCaseFailed(const TestCase* test_case) { + return test_case->should_run() && test_case->Failed(); +} + +// Returns true iff test_case contains at least one test that should +// run. +static bool ShouldRunTestCase(const TestCase* test_case) { + return test_case->should_run(); +} + +// AssertHelper constructor. +AssertHelper::AssertHelper(TestPartResult::Type type, + const char* file, + int line, + const char* message) + : data_(new AssertHelperData(type, file, line, message)) { +} + +AssertHelper::~AssertHelper() { + delete data_; +} + +// Message assignment, for assertion streaming support. +void AssertHelper::operator=(const Message& message) const { + UnitTest::GetInstance()-> + AddTestPartResult(data_->type, data_->file, data_->line, + AppendUserMessage(data_->message, message), + UnitTest::GetInstance()->impl() + ->CurrentOsStackTraceExceptTop(1) + // Skips the stack frame for this function itself. + ); // NOLINT +} + +// Mutex for linked pointers. +GTEST_API_ GTEST_DEFINE_STATIC_MUTEX_(g_linked_ptr_mutex); + +// Application pathname gotten in InitGoogleTest. +std::string g_executable_path; + +// Returns the current application's name, removing directory path if that +// is present. +FilePath GetCurrentExecutableName() { + FilePath result; + +#if GTEST_OS_WINDOWS + result.Set(FilePath(g_executable_path).RemoveExtension("exe")); +#else + result.Set(FilePath(g_executable_path)); +#endif // GTEST_OS_WINDOWS + + return result.RemoveDirectoryName(); +} + +// Functions for processing the gtest_output flag. + +// Returns the output format, or "" for normal printed output. +std::string UnitTestOptions::GetOutputFormat() { + const char* const gtest_output_flag = GTEST_FLAG(output).c_str(); + if (gtest_output_flag == NULL) return std::string(""); + + const char* const colon = strchr(gtest_output_flag, ':'); + return (colon == NULL) ? + std::string(gtest_output_flag) : + std::string(gtest_output_flag, colon - gtest_output_flag); +} + +// Returns the name of the requested output file, or the default if none +// was explicitly specified. +std::string UnitTestOptions::GetAbsolutePathToOutputFile() { + const char* const gtest_output_flag = GTEST_FLAG(output).c_str(); + if (gtest_output_flag == NULL) + return ""; + + const char* const colon = strchr(gtest_output_flag, ':'); + if (colon == NULL) + return internal::FilePath::ConcatPaths( + internal::FilePath( + UnitTest::GetInstance()->original_working_dir()), + internal::FilePath(kDefaultOutputFile)).string(); + + internal::FilePath output_name(colon + 1); + if (!output_name.IsAbsolutePath()) + // TODO(wan@google.com): on Windows \some\path is not an absolute + // path (as its meaning depends on the current drive), yet the + // following logic for turning it into an absolute path is wrong. + // Fix it. + output_name = internal::FilePath::ConcatPaths( + internal::FilePath(UnitTest::GetInstance()->original_working_dir()), + internal::FilePath(colon + 1)); + + if (!output_name.IsDirectory()) + return output_name.string(); + + internal::FilePath result(internal::FilePath::GenerateUniqueFileName( + output_name, internal::GetCurrentExecutableName(), + GetOutputFormat().c_str())); + return result.string(); +} + +// Returns true iff the wildcard pattern matches the string. The +// first ':' or '\0' character in pattern marks the end of it. +// +// This recursive algorithm isn't very efficient, but is clear and +// works well enough for matching test names, which are short. +bool UnitTestOptions::PatternMatchesString(const char *pattern, + const char *str) { + switch (*pattern) { + case '\0': + case ':': // Either ':' or '\0' marks the end of the pattern. + return *str == '\0'; + case '?': // Matches any single character. + return *str != '\0' && PatternMatchesString(pattern + 1, str + 1); + case '*': // Matches any string (possibly empty) of characters. + return (*str != '\0' && PatternMatchesString(pattern, str + 1)) || + PatternMatchesString(pattern + 1, str); + default: // Non-special character. Matches itself. + return *pattern == *str && + PatternMatchesString(pattern + 1, str + 1); + } +} + +bool UnitTestOptions::MatchesFilter( + const std::string& name, const char* filter) { + const char *cur_pattern = filter; + for (;;) { + if (PatternMatchesString(cur_pattern, name.c_str())) { + return true; + } + + // Finds the next pattern in the filter. + cur_pattern = strchr(cur_pattern, ':'); + + // Returns if no more pattern can be found. + if (cur_pattern == NULL) { + return false; + } + + // Skips the pattern separater (the ':' character). + cur_pattern++; + } +} + +// Returns true iff the user-specified filter matches the test case +// name and the test name. +bool UnitTestOptions::FilterMatchesTest(const std::string &test_case_name, + const std::string &test_name) { + const std::string& full_name = test_case_name + "." + test_name.c_str(); + + // Split --gtest_filter at '-', if there is one, to separate into + // positive filter and negative filter portions + const char* const p = GTEST_FLAG(filter).c_str(); + const char* const dash = strchr(p, '-'); + std::string positive; + std::string negative; + if (dash == NULL) { + positive = GTEST_FLAG(filter).c_str(); // Whole string is a positive filter + negative = ""; + } else { + positive = std::string(p, dash); // Everything up to the dash + negative = std::string(dash + 1); // Everything after the dash + if (positive.empty()) { + // Treat '-test1' as the same as '*-test1' + positive = kUniversalFilter; + } + } + + // A filter is a colon-separated list of patterns. It matches a + // test if any pattern in it matches the test. + return (MatchesFilter(full_name, positive.c_str()) && + !MatchesFilter(full_name, negative.c_str())); +} + +#if GTEST_HAS_SEH +// Returns EXCEPTION_EXECUTE_HANDLER if Google Test should handle the +// given SEH exception, or EXCEPTION_CONTINUE_SEARCH otherwise. +// This function is useful as an __except condition. +int UnitTestOptions::GTestShouldProcessSEH(DWORD exception_code) { + // Google Test should handle a SEH exception if: + // 1. the user wants it to, AND + // 2. this is not a breakpoint exception, AND + // 3. this is not a C++ exception (VC++ implements them via SEH, + // apparently). + // + // SEH exception code for C++ exceptions. + // (see http://support.microsoft.com/kb/185294 for more information). + const DWORD kCxxExceptionCode = 0xe06d7363; + + bool should_handle = true; + + if (!GTEST_FLAG(catch_exceptions)) + should_handle = false; + else if (exception_code == EXCEPTION_BREAKPOINT) + should_handle = false; + else if (exception_code == kCxxExceptionCode) + should_handle = false; + + return should_handle ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH; +} +#endif // GTEST_HAS_SEH + +} // namespace internal + +// The c'tor sets this object as the test part result reporter used by +// Google Test. The 'result' parameter specifies where to report the +// results. Intercepts only failures from the current thread. +ScopedFakeTestPartResultReporter::ScopedFakeTestPartResultReporter( + TestPartResultArray* result) + : intercept_mode_(INTERCEPT_ONLY_CURRENT_THREAD), + result_(result) { + Init(); +} + +// The c'tor sets this object as the test part result reporter used by +// Google Test. The 'result' parameter specifies where to report the +// results. +ScopedFakeTestPartResultReporter::ScopedFakeTestPartResultReporter( + InterceptMode intercept_mode, TestPartResultArray* result) + : intercept_mode_(intercept_mode), + result_(result) { + Init(); +} + +void ScopedFakeTestPartResultReporter::Init() { + internal::UnitTestImpl* const impl = internal::GetUnitTestImpl(); + if (intercept_mode_ == INTERCEPT_ALL_THREADS) { + old_reporter_ = impl->GetGlobalTestPartResultReporter(); + impl->SetGlobalTestPartResultReporter(this); + } else { + old_reporter_ = impl->GetTestPartResultReporterForCurrentThread(); + impl->SetTestPartResultReporterForCurrentThread(this); + } +} + +// The d'tor restores the test part result reporter used by Google Test +// before. +ScopedFakeTestPartResultReporter::~ScopedFakeTestPartResultReporter() { + internal::UnitTestImpl* const impl = internal::GetUnitTestImpl(); + if (intercept_mode_ == INTERCEPT_ALL_THREADS) { + impl->SetGlobalTestPartResultReporter(old_reporter_); + } else { + impl->SetTestPartResultReporterForCurrentThread(old_reporter_); + } +} + +// Increments the test part result count and remembers the result. +// This method is from the TestPartResultReporterInterface interface. +void ScopedFakeTestPartResultReporter::ReportTestPartResult( + const TestPartResult& result) { + result_->Append(result); +} + +namespace internal { + +// Returns the type ID of ::testing::Test. We should always call this +// instead of GetTypeId< ::testing::Test>() to get the type ID of +// testing::Test. This is to work around a suspected linker bug when +// using Google Test as a framework on Mac OS X. The bug causes +// GetTypeId< ::testing::Test>() to return different values depending +// on whether the call is from the Google Test framework itself or +// from user test code. GetTestTypeId() is guaranteed to always +// return the same value, as it always calls GetTypeId<>() from the +// gtest.cc, which is within the Google Test framework. +TypeId GetTestTypeId() { + return GetTypeId(); +} + +// The value of GetTestTypeId() as seen from within the Google Test +// library. This is solely for testing GetTestTypeId(). +extern const TypeId kTestTypeIdInGoogleTest = GetTestTypeId(); + +// This predicate-formatter checks that 'results' contains a test part +// failure of the given type and that the failure message contains the +// given substring. +AssertionResult HasOneFailure(const char* /* results_expr */, + const char* /* type_expr */, + const char* /* substr_expr */, + const TestPartResultArray& results, + TestPartResult::Type type, + const string& substr) { + const std::string expected(type == TestPartResult::kFatalFailure ? + "1 fatal failure" : + "1 non-fatal failure"); + Message msg; + if (results.size() != 1) { + msg << "Expected: " << expected << "\n" + << " Actual: " << results.size() << " failures"; + for (int i = 0; i < results.size(); i++) { + msg << "\n" << results.GetTestPartResult(i); + } + return AssertionFailure() << msg; + } + + const TestPartResult& r = results.GetTestPartResult(0); + if (r.type() != type) { + return AssertionFailure() << "Expected: " << expected << "\n" + << " Actual:\n" + << r; + } + + if (strstr(r.message(), substr.c_str()) == NULL) { + return AssertionFailure() << "Expected: " << expected << " containing \"" + << substr << "\"\n" + << " Actual:\n" + << r; + } + + return AssertionSuccess(); +} + +// The constructor of SingleFailureChecker remembers where to look up +// test part results, what type of failure we expect, and what +// substring the failure message should contain. +SingleFailureChecker:: SingleFailureChecker( + const TestPartResultArray* results, + TestPartResult::Type type, + const string& substr) + : results_(results), + type_(type), + substr_(substr) {} + +// The destructor of SingleFailureChecker verifies that the given +// TestPartResultArray contains exactly one failure that has the given +// type and contains the given substring. If that's not the case, a +// non-fatal failure will be generated. +SingleFailureChecker::~SingleFailureChecker() { + EXPECT_PRED_FORMAT3(HasOneFailure, *results_, type_, substr_); +} + +DefaultGlobalTestPartResultReporter::DefaultGlobalTestPartResultReporter( + UnitTestImpl* unit_test) : unit_test_(unit_test) {} + +void DefaultGlobalTestPartResultReporter::ReportTestPartResult( + const TestPartResult& result) { + unit_test_->current_test_result()->AddTestPartResult(result); + unit_test_->listeners()->repeater()->OnTestPartResult(result); +} + +DefaultPerThreadTestPartResultReporter::DefaultPerThreadTestPartResultReporter( + UnitTestImpl* unit_test) : unit_test_(unit_test) {} + +void DefaultPerThreadTestPartResultReporter::ReportTestPartResult( + const TestPartResult& result) { + unit_test_->GetGlobalTestPartResultReporter()->ReportTestPartResult(result); +} + +// Returns the global test part result reporter. +TestPartResultReporterInterface* +UnitTestImpl::GetGlobalTestPartResultReporter() { + internal::MutexLock lock(&global_test_part_result_reporter_mutex_); + return global_test_part_result_repoter_; +} + +// Sets the global test part result reporter. +void UnitTestImpl::SetGlobalTestPartResultReporter( + TestPartResultReporterInterface* reporter) { + internal::MutexLock lock(&global_test_part_result_reporter_mutex_); + global_test_part_result_repoter_ = reporter; +} + +// Returns the test part result reporter for the current thread. +TestPartResultReporterInterface* +UnitTestImpl::GetTestPartResultReporterForCurrentThread() { + return per_thread_test_part_result_reporter_.get(); +} + +// Sets the test part result reporter for the current thread. +void UnitTestImpl::SetTestPartResultReporterForCurrentThread( + TestPartResultReporterInterface* reporter) { + per_thread_test_part_result_reporter_.set(reporter); +} + +// Gets the number of successful test cases. +int UnitTestImpl::successful_test_case_count() const { + return CountIf(test_cases_, TestCasePassed); +} + +// Gets the number of failed test cases. +int UnitTestImpl::failed_test_case_count() const { + return CountIf(test_cases_, TestCaseFailed); +} + +// Gets the number of all test cases. +int UnitTestImpl::total_test_case_count() const { + return static_cast(test_cases_.size()); +} + +// Gets the number of all test cases that contain at least one test +// that should run. +int UnitTestImpl::test_case_to_run_count() const { + return CountIf(test_cases_, ShouldRunTestCase); +} + +// Gets the number of successful tests. +int UnitTestImpl::successful_test_count() const { + return SumOverTestCaseList(test_cases_, &TestCase::successful_test_count); +} + +// Gets the number of failed tests. +int UnitTestImpl::failed_test_count() const { + return SumOverTestCaseList(test_cases_, &TestCase::failed_test_count); +} + +// Gets the number of disabled tests. +int UnitTestImpl::disabled_test_count() const { + return SumOverTestCaseList(test_cases_, &TestCase::disabled_test_count); +} + +// Gets the number of all tests. +int UnitTestImpl::total_test_count() const { + return SumOverTestCaseList(test_cases_, &TestCase::total_test_count); +} + +// Gets the number of tests that should run. +int UnitTestImpl::test_to_run_count() const { + return SumOverTestCaseList(test_cases_, &TestCase::test_to_run_count); +} + +// Returns the current OS stack trace as an std::string. +// +// The maximum number of stack frames to be included is specified by +// the gtest_stack_trace_depth flag. The skip_count parameter +// specifies the number of top frames to be skipped, which doesn't +// count against the number of frames to be included. +// +// For example, if Foo() calls Bar(), which in turn calls +// CurrentOsStackTraceExceptTop(1), Foo() will be included in the +// trace but Bar() and CurrentOsStackTraceExceptTop() won't. +std::string UnitTestImpl::CurrentOsStackTraceExceptTop(int skip_count) { + (void)skip_count; + return ""; +} + +// Returns the current time in milliseconds. +TimeInMillis GetTimeInMillis() { +#if GTEST_OS_WINDOWS_MOBILE || defined(__BORLANDC__) + // Difference between 1970-01-01 and 1601-01-01 in milliseconds. + // http://analogous.blogspot.com/2005/04/epoch.html + const TimeInMillis kJavaEpochToWinFileTimeDelta = + static_cast(116444736UL) * 100000UL; + const DWORD kTenthMicrosInMilliSecond = 10000; + + SYSTEMTIME now_systime; + FILETIME now_filetime; + ULARGE_INTEGER now_int64; + // TODO(kenton@google.com): Shouldn't this just use + // GetSystemTimeAsFileTime()? + GetSystemTime(&now_systime); + if (SystemTimeToFileTime(&now_systime, &now_filetime)) { + now_int64.LowPart = now_filetime.dwLowDateTime; + now_int64.HighPart = now_filetime.dwHighDateTime; + now_int64.QuadPart = (now_int64.QuadPart / kTenthMicrosInMilliSecond) - + kJavaEpochToWinFileTimeDelta; + return now_int64.QuadPart; + } + return 0; +#elif GTEST_OS_WINDOWS && !GTEST_HAS_GETTIMEOFDAY_ + __timeb64 now; + +# ifdef _MSC_VER + + // MSVC 8 deprecates _ftime64(), so we want to suppress warning 4996 + // (deprecated function) there. + // TODO(kenton@google.com): Use GetTickCount()? Or use + // SystemTimeToFileTime() +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4996) // Temporarily disables warning 4996. + _ftime64(&now); +# pragma warning(pop) // Restores the warning state. +# else + + _ftime64(&now); + +# endif // _MSC_VER + + return static_cast(now.time) * 1000 + now.millitm; +#elif GTEST_HAS_GETTIMEOFDAY_ + struct timeval now; + gettimeofday(&now, NULL); + return static_cast(now.tv_sec) * 1000 + now.tv_usec / 1000; +#else +# error "Don't know how to get the current time on your system." +#endif +} + +// Utilities + +// class String. + +#if GTEST_OS_WINDOWS_MOBILE +// Creates a UTF-16 wide string from the given ANSI string, allocating +// memory using new. The caller is responsible for deleting the return +// value using delete[]. Returns the wide string, or NULL if the +// input is NULL. +LPCWSTR String::AnsiToUtf16(const char* ansi) { + if (!ansi) return NULL; + const int length = strlen(ansi); + const int unicode_length = + MultiByteToWideChar(CP_ACP, 0, ansi, length, + NULL, 0); + WCHAR* unicode = new WCHAR[unicode_length + 1]; + MultiByteToWideChar(CP_ACP, 0, ansi, length, + unicode, unicode_length); + unicode[unicode_length] = 0; + return unicode; +} + +// Creates an ANSI string from the given wide string, allocating +// memory using new. The caller is responsible for deleting the return +// value using delete[]. Returns the ANSI string, or NULL if the +// input is NULL. +const char* String::Utf16ToAnsi(LPCWSTR utf16_str) { + if (!utf16_str) return NULL; + const int ansi_length = + WideCharToMultiByte(CP_ACP, 0, utf16_str, -1, + NULL, 0, NULL, NULL); + char* ansi = new char[ansi_length + 1]; + WideCharToMultiByte(CP_ACP, 0, utf16_str, -1, + ansi, ansi_length, NULL, NULL); + ansi[ansi_length] = 0; + return ansi; +} + +#endif // GTEST_OS_WINDOWS_MOBILE + +// Compares two C strings. Returns true iff they have the same content. +// +// Unlike strcmp(), this function can handle NULL argument(s). A NULL +// C string is considered different to any non-NULL C string, +// including the empty string. +bool String::CStringEquals(const char * lhs, const char * rhs) { + if ( lhs == NULL ) return rhs == NULL; + + if ( rhs == NULL ) return false; + + return strcmp(lhs, rhs) == 0; +} + +#if GTEST_HAS_STD_WSTRING || GTEST_HAS_GLOBAL_WSTRING + +// Converts an array of wide chars to a narrow string using the UTF-8 +// encoding, and streams the result to the given Message object. +static void StreamWideCharsToMessage(const wchar_t* wstr, size_t length, + Message* msg) { + for (size_t i = 0; i != length; ) { // NOLINT + if (wstr[i] != L'\0') { + *msg << WideStringToUtf8(wstr + i, static_cast(length - i)); + while (i != length && wstr[i] != L'\0') + i++; + } else { + *msg << '\0'; + i++; + } + } +} + +#endif // GTEST_HAS_STD_WSTRING || GTEST_HAS_GLOBAL_WSTRING + +} // namespace internal + +#if GTEST_HAS_STD_WSTRING +// Converts the given wide string to a narrow string using the UTF-8 +// encoding, and streams the result to this Message object. +Message& Message::operator <<(const ::std::wstring& wstr) { + internal::StreamWideCharsToMessage(wstr.c_str(), wstr.length(), this); + return *this; +} +#endif // GTEST_HAS_STD_WSTRING + +#if GTEST_HAS_GLOBAL_WSTRING +// Converts the given wide string to a narrow string using the UTF-8 +// encoding, and streams the result to this Message object. +Message& Message::operator <<(const ::wstring& wstr) { + internal::StreamWideCharsToMessage(wstr.c_str(), wstr.length(), this); + return *this; +} +#endif // GTEST_HAS_GLOBAL_WSTRING + +// AssertionResult constructors. +// Used in EXPECT_TRUE/FALSE(assertion_result). +AssertionResult::AssertionResult(const AssertionResult& other) + : success_(other.success_), + message_(other.message_.get() != NULL ? + new ::std::string(*other.message_) : + static_cast< ::std::string*>(NULL)) { +} + +// Returns the assertion's negation. Used with EXPECT/ASSERT_FALSE. +AssertionResult AssertionResult::operator!() const { + AssertionResult negation(!success_); + if (message_.get() != NULL) + negation << *message_; + return negation; +} + +// Makes a successful assertion result. +AssertionResult AssertionSuccess() { + return AssertionResult(true); +} + +// Makes a failed assertion result. +AssertionResult AssertionFailure() { + return AssertionResult(false); +} + +// Makes a failed assertion result with the given failure message. +// Deprecated; use AssertionFailure() << message. +AssertionResult AssertionFailure(const Message& message) { + return AssertionFailure() << message; +} + +namespace internal { + +// Constructs and returns the message for an equality assertion +// (e.g. ASSERT_EQ, EXPECT_STREQ, etc) failure. +// +// The first four parameters are the expressions used in the assertion +// and their values, as strings. For example, for ASSERT_EQ(foo, bar) +// where foo is 5 and bar is 6, we have: +// +// expected_expression: "foo" +// actual_expression: "bar" +// expected_value: "5" +// actual_value: "6" +// +// The ignoring_case parameter is true iff the assertion is a +// *_STRCASEEQ*. When it's true, the string " (ignoring case)" will +// be inserted into the message. +AssertionResult EqFailure(const char* expected_expression, + const char* actual_expression, + const std::string& expected_value, + const std::string& actual_value, + bool ignoring_case) { + Message msg; + msg << "Value of: " << actual_expression; + if (actual_value != actual_expression) { + msg << "\n Actual: " << actual_value; + } + + msg << "\nExpected: " << expected_expression; + if (ignoring_case) { + msg << " (ignoring case)"; + } + if (expected_value != expected_expression) { + msg << "\nWhich is: " << expected_value; + } + + return AssertionFailure() << msg; +} + +// Constructs a failure message for Boolean assertions such as EXPECT_TRUE. +std::string GetBoolAssertionFailureMessage( + const AssertionResult& assertion_result, + const char* expression_text, + const char* actual_predicate_value, + const char* expected_predicate_value) { + const char* actual_message = assertion_result.message(); + Message msg; + msg << "Value of: " << expression_text + << "\n Actual: " << actual_predicate_value; + if (actual_message[0] != '\0') + msg << " (" << actual_message << ")"; + msg << "\nExpected: " << expected_predicate_value; + return msg.GetString(); +} + +// Helper function for implementing ASSERT_NEAR. +AssertionResult DoubleNearPredFormat(const char* expr1, + const char* expr2, + const char* abs_error_expr, + double val1, + double val2, + double abs_error) { + const double diff = fabs(val1 - val2); + if (diff <= abs_error) return AssertionSuccess(); + + // TODO(wan): do not print the value of an expression if it's + // already a literal. + return AssertionFailure() + << "The difference between " << expr1 << " and " << expr2 + << " is " << diff << ", which exceeds " << abs_error_expr << ", where\n" + << expr1 << " evaluates to " << val1 << ",\n" + << expr2 << " evaluates to " << val2 << ", and\n" + << abs_error_expr << " evaluates to " << abs_error << "."; +} + + +// Helper template for implementing FloatLE() and DoubleLE(). +template +AssertionResult FloatingPointLE(const char* expr1, + const char* expr2, + RawType val1, + RawType val2) { + // Returns success if val1 is less than val2, + if (val1 < val2) { + return AssertionSuccess(); + } + + // or if val1 is almost equal to val2. + const FloatingPoint lhs(val1), rhs(val2); + if (lhs.AlmostEquals(rhs)) { + return AssertionSuccess(); + } + + // Note that the above two checks will both fail if either val1 or + // val2 is NaN, as the IEEE floating-point standard requires that + // any predicate involving a NaN must return false. + + ::std::stringstream val1_ss; + val1_ss << std::setprecision(std::numeric_limits::digits10 + 2) + << val1; + + ::std::stringstream val2_ss; + val2_ss << std::setprecision(std::numeric_limits::digits10 + 2) + << val2; + + return AssertionFailure() + << "Expected: (" << expr1 << ") <= (" << expr2 << ")\n" + << " Actual: " << StringStreamToString(&val1_ss) << " vs " + << StringStreamToString(&val2_ss); +} + +} // namespace internal + +// Asserts that val1 is less than, or almost equal to, val2. Fails +// otherwise. In particular, it fails if either val1 or val2 is NaN. +AssertionResult FloatLE(const char* expr1, const char* expr2, + float val1, float val2) { + return internal::FloatingPointLE(expr1, expr2, val1, val2); +} + +// Asserts that val1 is less than, or almost equal to, val2. Fails +// otherwise. In particular, it fails if either val1 or val2 is NaN. +AssertionResult DoubleLE(const char* expr1, const char* expr2, + double val1, double val2) { + return internal::FloatingPointLE(expr1, expr2, val1, val2); +} + +namespace internal { + +// The helper function for {ASSERT|EXPECT}_EQ with int or enum +// arguments. +AssertionResult CmpHelperEQ(const char* expected_expression, + const char* actual_expression, + BiggestInt expected, + BiggestInt actual) { + if (expected == actual) { + return AssertionSuccess(); + } + + return EqFailure(expected_expression, + actual_expression, + FormatForComparisonFailureMessage(expected, actual), + FormatForComparisonFailureMessage(actual, expected), + false); +} + +// A macro for implementing the helper functions needed to implement +// ASSERT_?? and EXPECT_?? with integer or enum arguments. It is here +// just to avoid copy-and-paste of similar code. +#define GTEST_IMPL_CMP_HELPER_(op_name, op)\ +AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \ + BiggestInt val1, BiggestInt val2) {\ + if (val1 op val2) {\ + return AssertionSuccess();\ + } else {\ + return AssertionFailure() \ + << "Expected: (" << expr1 << ") " #op " (" << expr2\ + << "), actual: " << FormatForComparisonFailureMessage(val1, val2)\ + << " vs " << FormatForComparisonFailureMessage(val2, val1);\ + }\ +} + +// Implements the helper function for {ASSERT|EXPECT}_NE with int or +// enum arguments. +GTEST_IMPL_CMP_HELPER_(NE, !=) +// Implements the helper function for {ASSERT|EXPECT}_LE with int or +// enum arguments. +GTEST_IMPL_CMP_HELPER_(LE, <=) +// Implements the helper function for {ASSERT|EXPECT}_LT with int or +// enum arguments. +GTEST_IMPL_CMP_HELPER_(LT, < ) +// Implements the helper function for {ASSERT|EXPECT}_GE with int or +// enum arguments. +GTEST_IMPL_CMP_HELPER_(GE, >=) +// Implements the helper function for {ASSERT|EXPECT}_GT with int or +// enum arguments. +GTEST_IMPL_CMP_HELPER_(GT, > ) + +#undef GTEST_IMPL_CMP_HELPER_ + +// The helper function for {ASSERT|EXPECT}_STREQ. +AssertionResult CmpHelperSTREQ(const char* expected_expression, + const char* actual_expression, + const char* expected, + const char* actual) { + if (String::CStringEquals(expected, actual)) { + return AssertionSuccess(); + } + + return EqFailure(expected_expression, + actual_expression, + PrintToString(expected), + PrintToString(actual), + false); +} + +// The helper function for {ASSERT|EXPECT}_STRCASEEQ. +AssertionResult CmpHelperSTRCASEEQ(const char* expected_expression, + const char* actual_expression, + const char* expected, + const char* actual) { + if (String::CaseInsensitiveCStringEquals(expected, actual)) { + return AssertionSuccess(); + } + + return EqFailure(expected_expression, + actual_expression, + PrintToString(expected), + PrintToString(actual), + true); +} + +// The helper function for {ASSERT|EXPECT}_STRNE. +AssertionResult CmpHelperSTRNE(const char* s1_expression, + const char* s2_expression, + const char* s1, + const char* s2) { + if (!String::CStringEquals(s1, s2)) { + return AssertionSuccess(); + } else { + return AssertionFailure() << "Expected: (" << s1_expression << ") != (" + << s2_expression << "), actual: \"" + << s1 << "\" vs \"" << s2 << "\""; + } +} + +// The helper function for {ASSERT|EXPECT}_STRCASENE. +AssertionResult CmpHelperSTRCASENE(const char* s1_expression, + const char* s2_expression, + const char* s1, + const char* s2) { + if (!String::CaseInsensitiveCStringEquals(s1, s2)) { + return AssertionSuccess(); + } else { + return AssertionFailure() + << "Expected: (" << s1_expression << ") != (" + << s2_expression << ") (ignoring case), actual: \"" + << s1 << "\" vs \"" << s2 << "\""; + } +} + +} // namespace internal + +namespace { + +// Helper functions for implementing IsSubString() and IsNotSubstring(). + +// This group of overloaded functions return true iff needle is a +// substring of haystack. NULL is considered a substring of itself +// only. + +bool IsSubstringPred(const char* needle, const char* haystack) { + if (needle == NULL || haystack == NULL) + return needle == haystack; + + return strstr(haystack, needle) != NULL; +} + +bool IsSubstringPred(const wchar_t* needle, const wchar_t* haystack) { + if (needle == NULL || haystack == NULL) + return needle == haystack; + + return wcsstr(haystack, needle) != NULL; +} + +// StringType here can be either ::std::string or ::std::wstring. +template +bool IsSubstringPred(const StringType& needle, + const StringType& haystack) { + return haystack.find(needle) != StringType::npos; +} + +// This function implements either IsSubstring() or IsNotSubstring(), +// depending on the value of the expected_to_be_substring parameter. +// StringType here can be const char*, const wchar_t*, ::std::string, +// or ::std::wstring. +template +AssertionResult IsSubstringImpl( + bool expected_to_be_substring, + const char* needle_expr, const char* haystack_expr, + const StringType& needle, const StringType& haystack) { + if (IsSubstringPred(needle, haystack) == expected_to_be_substring) + return AssertionSuccess(); + + const bool is_wide_string = sizeof(needle[0]) > 1; + const char* const begin_string_quote = is_wide_string ? "L\"" : "\""; + return AssertionFailure() + << "Value of: " << needle_expr << "\n" + << " Actual: " << begin_string_quote << needle << "\"\n" + << "Expected: " << (expected_to_be_substring ? "" : "not ") + << "a substring of " << haystack_expr << "\n" + << "Which is: " << begin_string_quote << haystack << "\""; +} + +} // namespace + +// IsSubstring() and IsNotSubstring() check whether needle is a +// substring of haystack (NULL is considered a substring of itself +// only), and return an appropriate error message when they fail. + +AssertionResult IsSubstring( + const char* needle_expr, const char* haystack_expr, + const char* needle, const char* haystack) { + return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack); +} + +AssertionResult IsSubstring( + const char* needle_expr, const char* haystack_expr, + const wchar_t* needle, const wchar_t* haystack) { + return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack); +} + +AssertionResult IsNotSubstring( + const char* needle_expr, const char* haystack_expr, + const char* needle, const char* haystack) { + return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack); +} + +AssertionResult IsNotSubstring( + const char* needle_expr, const char* haystack_expr, + const wchar_t* needle, const wchar_t* haystack) { + return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack); +} + +AssertionResult IsSubstring( + const char* needle_expr, const char* haystack_expr, + const ::std::string& needle, const ::std::string& haystack) { + return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack); +} + +AssertionResult IsNotSubstring( + const char* needle_expr, const char* haystack_expr, + const ::std::string& needle, const ::std::string& haystack) { + return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack); +} + +#if GTEST_HAS_STD_WSTRING +AssertionResult IsSubstring( + const char* needle_expr, const char* haystack_expr, + const ::std::wstring& needle, const ::std::wstring& haystack) { + return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack); +} + +AssertionResult IsNotSubstring( + const char* needle_expr, const char* haystack_expr, + const ::std::wstring& needle, const ::std::wstring& haystack) { + return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack); +} +#endif // GTEST_HAS_STD_WSTRING + +namespace internal { + +#if GTEST_OS_WINDOWS + +namespace { + +// Helper function for IsHRESULT{SuccessFailure} predicates +AssertionResult HRESULTFailureHelper(const char* expr, + const char* expected, + long hr) { // NOLINT +# if GTEST_OS_WINDOWS_MOBILE + + // Windows CE doesn't support FormatMessage. + const char error_text[] = ""; + +# else + + // Looks up the human-readable system message for the HRESULT code + // and since we're not passing any params to FormatMessage, we don't + // want inserts expanded. + const DWORD kFlags = FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS; + const DWORD kBufSize = 4096; // String::Format can't exceed this length. + // Gets the system's human readable message string for this HRESULT. + char error_text[kBufSize] = { '\0' }; + DWORD message_length = ::FormatMessageA(kFlags, + 0, // no source, we're asking system + hr, // the error + 0, // no line width restrictions + error_text, // output buffer + kBufSize, // buf size + NULL); // no arguments for inserts + // Trims tailing white space (FormatMessage leaves a trailing cr-lf) + for (; message_length && IsSpace(error_text[message_length - 1]); + --message_length) { + error_text[message_length - 1] = '\0'; + } + +# endif // GTEST_OS_WINDOWS_MOBILE + + const std::string error_hex(String::Format("0x%08X ", hr)); + return ::testing::AssertionFailure() + << "Expected: " << expr << " " << expected << ".\n" + << " Actual: " << error_hex << error_text << "\n"; +} + +} // namespace + +AssertionResult IsHRESULTSuccess(const char* expr, long hr) { // NOLINT + if (SUCCEEDED(hr)) { + return AssertionSuccess(); + } + return HRESULTFailureHelper(expr, "succeeds", hr); +} + +AssertionResult IsHRESULTFailure(const char* expr, long hr) { // NOLINT + if (FAILED(hr)) { + return AssertionSuccess(); + } + return HRESULTFailureHelper(expr, "fails", hr); +} + +#endif // GTEST_OS_WINDOWS + +// Utility functions for encoding Unicode text (wide strings) in +// UTF-8. + +// A Unicode code-point can have upto 21 bits, and is encoded in UTF-8 +// like this: +// +// Code-point length Encoding +// 0 - 7 bits 0xxxxxxx +// 8 - 11 bits 110xxxxx 10xxxxxx +// 12 - 16 bits 1110xxxx 10xxxxxx 10xxxxxx +// 17 - 21 bits 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx + +// The maximum code-point a one-byte UTF-8 sequence can represent. +const UInt32 kMaxCodePoint1 = (static_cast(1) << 7) - 1; + +// The maximum code-point a two-byte UTF-8 sequence can represent. +const UInt32 kMaxCodePoint2 = (static_cast(1) << (5 + 6)) - 1; + +// The maximum code-point a three-byte UTF-8 sequence can represent. +const UInt32 kMaxCodePoint3 = (static_cast(1) << (4 + 2*6)) - 1; + +// The maximum code-point a four-byte UTF-8 sequence can represent. +const UInt32 kMaxCodePoint4 = (static_cast(1) << (3 + 3*6)) - 1; + +// Chops off the n lowest bits from a bit pattern. Returns the n +// lowest bits. As a side effect, the original bit pattern will be +// shifted to the right by n bits. +inline UInt32 ChopLowBits(UInt32* bits, int n) { + const UInt32 low_bits = *bits & ((static_cast(1) << n) - 1); + *bits >>= n; + return low_bits; +} + +// Converts a Unicode code point to a narrow string in UTF-8 encoding. +// code_point parameter is of type UInt32 because wchar_t may not be +// wide enough to contain a code point. +// The output buffer str must containt at least 32 characters. +// The function returns the address of the output buffer. +// If the code_point is not a valid Unicode code point +// (i.e. outside of Unicode range U+0 to U+10FFFF) it will be output +// as '(Invalid Unicode 0xXXXXXXXX)'. +char* CodePointToUtf8(UInt32 code_point, char* str) { + if (code_point <= kMaxCodePoint1) { + str[1] = '\0'; + str[0] = static_cast(code_point); // 0xxxxxxx + } else if (code_point <= kMaxCodePoint2) { + str[2] = '\0'; + str[1] = static_cast(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx + str[0] = static_cast(0xC0 | code_point); // 110xxxxx + } else if (code_point <= kMaxCodePoint3) { + str[3] = '\0'; + str[2] = static_cast(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx + str[1] = static_cast(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx + str[0] = static_cast(0xE0 | code_point); // 1110xxxx + } else if (code_point <= kMaxCodePoint4) { + str[4] = '\0'; + str[3] = static_cast(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx + str[2] = static_cast(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx + str[1] = static_cast(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx + str[0] = static_cast(0xF0 | code_point); // 11110xxx + } else { + // The longest string String::Format can produce when invoked + // with these parameters is 28 character long (not including + // the terminating nul character). We are asking for 32 character + // buffer just in case. This is also enough for strncpy to + // null-terminate the destination string. + posix::StrNCpy( + str, String::Format("(Invalid Unicode 0x%X)", code_point).c_str(), 32); + str[31] = '\0'; // Makes sure no change in the format to strncpy leaves + // the result unterminated. + } + return str; +} + +// The following two functions only make sense if the the system +// uses UTF-16 for wide string encoding. All supported systems +// with 16 bit wchar_t (Windows, Cygwin, Symbian OS) do use UTF-16. + +// Determines if the arguments constitute UTF-16 surrogate pair +// and thus should be combined into a single Unicode code point +// using CreateCodePointFromUtf16SurrogatePair. +inline bool IsUtf16SurrogatePair(wchar_t first, wchar_t second) { + return sizeof(wchar_t) == 2 && + (first & 0xFC00) == 0xD800 && (second & 0xFC00) == 0xDC00; +} + +// Creates a Unicode code point from UTF16 surrogate pair. +inline UInt32 CreateCodePointFromUtf16SurrogatePair(wchar_t first, + wchar_t second) { + const UInt32 mask = (1 << 10) - 1; + return (sizeof(wchar_t) == 2) ? + (((first & mask) << 10) | (second & mask)) + 0x10000 : + // This function should not be called when the condition is + // false, but we provide a sensible default in case it is. + static_cast(first); +} + +// Converts a wide string to a narrow string in UTF-8 encoding. +// The wide string is assumed to have the following encoding: +// UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin, Symbian OS) +// UTF-32 if sizeof(wchar_t) == 4 (on Linux) +// Parameter str points to a null-terminated wide string. +// Parameter num_chars may additionally limit the number +// of wchar_t characters processed. -1 is used when the entire string +// should be processed. +// If the string contains code points that are not valid Unicode code points +// (i.e. outside of Unicode range U+0 to U+10FFFF) they will be output +// as '(Invalid Unicode 0xXXXXXXXX)'. If the string is in UTF16 encoding +// and contains invalid UTF-16 surrogate pairs, values in those pairs +// will be encoded as individual Unicode characters from Basic Normal Plane. +std::string WideStringToUtf8(const wchar_t* str, int num_chars) { + if (num_chars == -1) + num_chars = static_cast(wcslen(str)); + + ::std::stringstream stream; + for (int i = 0; i < num_chars; ++i) { + UInt32 unicode_code_point; + + if (str[i] == L'\0') { + break; + } else if (i + 1 < num_chars && IsUtf16SurrogatePair(str[i], str[i + 1])) { + unicode_code_point = CreateCodePointFromUtf16SurrogatePair(str[i], + str[i + 1]); + i++; + } else { + unicode_code_point = static_cast(str[i]); + } + + char buffer[32]; // CodePointToUtf8 requires a buffer this big. + stream << CodePointToUtf8(unicode_code_point, buffer); + } + return StringStreamToString(&stream); +} + +// Converts a wide C string to an std::string using the UTF-8 encoding. +// NULL will be converted to "(null)". +std::string String::ShowWideCString(const wchar_t * wide_c_str) { + if (wide_c_str == NULL) return "(null)"; + + return internal::WideStringToUtf8(wide_c_str, -1); +} + +// Compares two wide C strings. Returns true iff they have the same +// content. +// +// Unlike wcscmp(), this function can handle NULL argument(s). A NULL +// C string is considered different to any non-NULL C string, +// including the empty string. +bool String::WideCStringEquals(const wchar_t * lhs, const wchar_t * rhs) { + if (lhs == NULL) return rhs == NULL; + + if (rhs == NULL) return false; + + return wcscmp(lhs, rhs) == 0; +} + +// Helper function for *_STREQ on wide strings. +AssertionResult CmpHelperSTREQ(const char* expected_expression, + const char* actual_expression, + const wchar_t* expected, + const wchar_t* actual) { + if (String::WideCStringEquals(expected, actual)) { + return AssertionSuccess(); + } + + return EqFailure(expected_expression, + actual_expression, + PrintToString(expected), + PrintToString(actual), + false); +} + +// Helper function for *_STRNE on wide strings. +AssertionResult CmpHelperSTRNE(const char* s1_expression, + const char* s2_expression, + const wchar_t* s1, + const wchar_t* s2) { + if (!String::WideCStringEquals(s1, s2)) { + return AssertionSuccess(); + } + + return AssertionFailure() << "Expected: (" << s1_expression << ") != (" + << s2_expression << "), actual: " + << PrintToString(s1) + << " vs " << PrintToString(s2); +} + +// Compares two C strings, ignoring case. Returns true iff they have +// the same content. +// +// Unlike strcasecmp(), this function can handle NULL argument(s). A +// NULL C string is considered different to any non-NULL C string, +// including the empty string. +bool String::CaseInsensitiveCStringEquals(const char * lhs, const char * rhs) { + if (lhs == NULL) + return rhs == NULL; + if (rhs == NULL) + return false; + return posix::StrCaseCmp(lhs, rhs) == 0; +} + + // Compares two wide C strings, ignoring case. Returns true iff they + // have the same content. + // + // Unlike wcscasecmp(), this function can handle NULL argument(s). + // A NULL C string is considered different to any non-NULL wide C string, + // including the empty string. + // NB: The implementations on different platforms slightly differ. + // On windows, this method uses _wcsicmp which compares according to LC_CTYPE + // environment variable. On GNU platform this method uses wcscasecmp + // which compares according to LC_CTYPE category of the current locale. + // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the + // current locale. +bool String::CaseInsensitiveWideCStringEquals(const wchar_t* lhs, + const wchar_t* rhs) { + if (lhs == NULL) return rhs == NULL; + + if (rhs == NULL) return false; + +#if GTEST_OS_WINDOWS + return _wcsicmp(lhs, rhs) == 0; +#elif GTEST_OS_LINUX && !GTEST_OS_LINUX_ANDROID + return wcscasecmp(lhs, rhs) == 0; +#else + // Android, Mac OS X and Cygwin don't define wcscasecmp. + // Other unknown OSes may not define it either. + wint_t left, right; + do { + left = towlower(*lhs++); + right = towlower(*rhs++); + } while (left && left == right); + return left == right; +#endif // OS selector +} + +// Returns true iff str ends with the given suffix, ignoring case. +// Any string is considered to end with an empty suffix. +bool String::EndsWithCaseInsensitive( + const std::string& str, const std::string& suffix) { + const size_t str_len = str.length(); + const size_t suffix_len = suffix.length(); + return (str_len >= suffix_len) && + CaseInsensitiveCStringEquals(str.c_str() + str_len - suffix_len, + suffix.c_str()); +} + +// Formats a list of arguments to an std::string, using the same format +// spec string as for printf. +// +// We do not use the StringPrintf class as it is not universally +// available. +// +// The result is limited to 4096 characters (including the tailing 0). +// If 4096 characters are not enough to format the input, or if +// there's an error, "" is +// returned. +std::string String::Format(const char * format, ...) { + va_list args; + va_start(args, format); + + char buffer[4096]; + const int kBufferSize = sizeof(buffer)/sizeof(buffer[0]); + + // MSVC 8 deprecates vsnprintf(), so we want to suppress warning + // 4996 (deprecated function) there. +#ifdef _MSC_VER // We are using MSVC. +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4996) // Temporarily disables warning 4996. + + const int size = vsnprintf(buffer, kBufferSize, format, args); + +# pragma warning(pop) // Restores the warning state. +#else // We are not using MSVC. + const int size = vsnprintf(buffer, kBufferSize, format, args); +#endif // _MSC_VER + va_end(args); + + // vsnprintf()'s behavior is not portable. When the buffer is not + // big enough, it returns a negative value in MSVC, and returns the + // needed buffer size on Linux. When there is an output error, it + // always returns a negative value. For simplicity, we lump the two + // error cases together. + if (size < 0 || size >= kBufferSize) { + return ""; + } else { + return std::string(buffer, size); + } +} + +// Converts the buffer in a stringstream to an std::string, converting NUL +// bytes to "\\0" along the way. +std::string StringStreamToString(::std::stringstream* ss) { + const ::std::string& str = ss->str(); + const char* const start = str.c_str(); + const char* const end = start + str.length(); + + std::string result; + result.reserve(2 * (end - start)); + for (const char* ch = start; ch != end; ++ch) { + if (*ch == '\0') { + result += "\\0"; // Replaces NUL with "\\0"; + } else { + result += *ch; + } + } + + return result; +} + +// Appends the user-supplied message to the Google-Test-generated message. +std::string AppendUserMessage(const std::string& gtest_msg, + const Message& user_msg) { + // Appends the user message if it's non-empty. + const std::string user_msg_string = user_msg.GetString(); + if (user_msg_string.empty()) { + return gtest_msg; + } + + return gtest_msg + "\n" + user_msg_string; +} + +} // namespace internal + +// class TestResult + +// Creates an empty TestResult. +TestResult::TestResult() + : death_test_count_(0), + elapsed_time_(0) { +} + +// D'tor. +TestResult::~TestResult() { +} + +// Returns the i-th test part result among all the results. i can +// range from 0 to total_part_count() - 1. If i is not in that range, +// aborts the program. +const TestPartResult& TestResult::GetTestPartResult(int i) const { + if (i < 0 || i >= total_part_count()) + internal::posix::Abort(); + return test_part_results_.at(i); +} + +// Returns the i-th test property. i can range from 0 to +// test_property_count() - 1. If i is not in that range, aborts the +// program. +const TestProperty& TestResult::GetTestProperty(int i) const { + if (i < 0 || i >= test_property_count()) + internal::posix::Abort(); + return test_properties_.at(i); +} + +// Clears the test part results. +void TestResult::ClearTestPartResults() { + test_part_results_.clear(); +} + +// Adds a test part result to the list. +void TestResult::AddTestPartResult(const TestPartResult& test_part_result) { + test_part_results_.push_back(test_part_result); +} + +// Adds a test property to the list. If a property with the same key as the +// supplied property is already represented, the value of this test_property +// replaces the old value for that key. +void TestResult::RecordProperty(const TestProperty& test_property) { + if (!ValidateTestProperty(test_property)) { + return; + } + internal::MutexLock lock(&test_properites_mutex_); + const std::vector::iterator property_with_matching_key = + std::find_if(test_properties_.begin(), test_properties_.end(), + internal::TestPropertyKeyIs(test_property.key())); + if (property_with_matching_key == test_properties_.end()) { + test_properties_.push_back(test_property); + return; + } + property_with_matching_key->SetValue(test_property.value()); +} + +// Adds a failure if the key is a reserved attribute of Google Test +// testcase tags. Returns true if the property is valid. +bool TestResult::ValidateTestProperty(const TestProperty& test_property) { + const std::string& key = test_property.key(); + if (key == "name" || key == "status" || key == "time" || key == "classname") { + ADD_FAILURE() + << "Reserved key used in RecordProperty(): " + << key + << " ('name', 'status', 'time', and 'classname' are reserved by " + << GTEST_NAME_ << ")"; + return false; + } + return true; +} + +// Clears the object. +void TestResult::Clear() { + test_part_results_.clear(); + test_properties_.clear(); + death_test_count_ = 0; + elapsed_time_ = 0; +} + +// Returns true iff the test failed. +bool TestResult::Failed() const { + for (int i = 0; i < total_part_count(); ++i) { + if (GetTestPartResult(i).failed()) + return true; + } + return false; +} + +// Returns true iff the test part fatally failed. +static bool TestPartFatallyFailed(const TestPartResult& result) { + return result.fatally_failed(); +} + +// Returns true iff the test fatally failed. +bool TestResult::HasFatalFailure() const { + return CountIf(test_part_results_, TestPartFatallyFailed) > 0; +} + +// Returns true iff the test part non-fatally failed. +static bool TestPartNonfatallyFailed(const TestPartResult& result) { + return result.nonfatally_failed(); +} + +// Returns true iff the test has a non-fatal failure. +bool TestResult::HasNonfatalFailure() const { + return CountIf(test_part_results_, TestPartNonfatallyFailed) > 0; +} + +// Gets the number of all test parts. This is the sum of the number +// of successful test parts and the number of failed test parts. +int TestResult::total_part_count() const { + return static_cast(test_part_results_.size()); +} + +// Returns the number of the test properties. +int TestResult::test_property_count() const { + return static_cast(test_properties_.size()); +} + +// class Test + +// Creates a Test object. + +// The c'tor saves the values of all Google Test flags. +Test::Test() + : gtest_flag_saver_(new internal::GTestFlagSaver) { +} + +// The d'tor restores the values of all Google Test flags. +Test::~Test() { + delete gtest_flag_saver_; +} + +// Sets up the test fixture. +// +// A sub-class may override this. +void Test::SetUp() { +} + +// Tears down the test fixture. +// +// A sub-class may override this. +void Test::TearDown() { +} + +// Allows user supplied key value pairs to be recorded for later output. +void Test::RecordProperty(const char* key, const char* value) { + UnitTest::GetInstance()->RecordPropertyForCurrentTest(key, value); +} + +// Allows user supplied key value pairs to be recorded for later output. +void Test::RecordProperty(const char* key, int value) { + Message value_message; + value_message << value; + RecordProperty(key, value_message.GetString().c_str()); +} + +namespace internal { + +void ReportFailureInUnknownLocation(TestPartResult::Type result_type, + const std::string& message) { + // This function is a friend of UnitTest and as such has access to + // AddTestPartResult. + UnitTest::GetInstance()->AddTestPartResult( + result_type, + NULL, // No info about the source file where the exception occurred. + -1, // We have no info on which line caused the exception. + message, + ""); // No stack trace, either. +} + +} // namespace internal + +// Google Test requires all tests in the same test case to use the same test +// fixture class. This function checks if the current test has the +// same fixture class as the first test in the current test case. If +// yes, it returns true; otherwise it generates a Google Test failure and +// returns false. +bool Test::HasSameFixtureClass() { + internal::UnitTestImpl* const impl = internal::GetUnitTestImpl(); + const TestCase* const test_case = impl->current_test_case(); + + // Info about the first test in the current test case. + const TestInfo* const first_test_info = test_case->test_info_list()[0]; + const internal::TypeId first_fixture_id = first_test_info->fixture_class_id_; + const char* const first_test_name = first_test_info->name(); + + // Info about the current test. + const TestInfo* const this_test_info = impl->current_test_info(); + const internal::TypeId this_fixture_id = this_test_info->fixture_class_id_; + const char* const this_test_name = this_test_info->name(); + + if (this_fixture_id != first_fixture_id) { + // Is the first test defined using TEST? + const bool first_is_TEST = first_fixture_id == internal::GetTestTypeId(); + // Is this test defined using TEST? + const bool this_is_TEST = this_fixture_id == internal::GetTestTypeId(); + + if (first_is_TEST || this_is_TEST) { + // The user mixed TEST and TEST_F in this test case - we'll tell + // him/her how to fix it. + + // Gets the name of the TEST and the name of the TEST_F. Note + // that first_is_TEST and this_is_TEST cannot both be true, as + // the fixture IDs are different for the two tests. + const char* const TEST_name = + first_is_TEST ? first_test_name : this_test_name; + const char* const TEST_F_name = + first_is_TEST ? this_test_name : first_test_name; + + ADD_FAILURE() + << "All tests in the same test case must use the same test fixture\n" + << "class, so mixing TEST_F and TEST in the same test case is\n" + << "illegal. In test case " << this_test_info->test_case_name() + << ",\n" + << "test " << TEST_F_name << " is defined using TEST_F but\n" + << "test " << TEST_name << " is defined using TEST. You probably\n" + << "want to change the TEST to TEST_F or move it to another test\n" + << "case."; + } else { + // The user defined two fixture classes with the same name in + // two namespaces - we'll tell him/her how to fix it. + ADD_FAILURE() + << "All tests in the same test case must use the same test fixture\n" + << "class. However, in test case " + << this_test_info->test_case_name() << ",\n" + << "you defined test " << first_test_name + << " and test " << this_test_name << "\n" + << "using two different test fixture classes. This can happen if\n" + << "the two classes are from different namespaces or translation\n" + << "units and have the same name. You should probably rename one\n" + << "of the classes to put the tests into different test cases."; + } + return false; + } + + return true; +} + +#if GTEST_HAS_SEH + +// Adds an "exception thrown" fatal failure to the current test. This +// function returns its result via an output parameter pointer because VC++ +// prohibits creation of objects with destructors on stack in functions +// using __try (see error C2712). +static std::string* FormatSehExceptionMessage(DWORD exception_code, + const char* location) { + Message message; + message << "SEH exception with code 0x" << std::setbase(16) << + exception_code << std::setbase(10) << " thrown in " << location << "."; + + return new std::string(message.GetString()); +} + +#endif // GTEST_HAS_SEH + +#if GTEST_HAS_EXCEPTIONS + +// Adds an "exception thrown" fatal failure to the current test. +static std::string FormatCxxExceptionMessage(const char* description, + const char* location) { + Message message; + if (description != NULL) { + message << "C++ exception with description \"" << description << "\""; + } else { + message << "Unknown C++ exception"; + } + message << " thrown in " << location << "."; + + return message.GetString(); +} + +static std::string PrintTestPartResultToString( + const TestPartResult& test_part_result); + +// A failed Google Test assertion will throw an exception of this type when +// GTEST_FLAG(throw_on_failure) is true (if exceptions are enabled). We +// derive it from std::runtime_error, which is for errors presumably +// detectable only at run time. Since std::runtime_error inherits from +// std::exception, many testing frameworks know how to extract and print the +// message inside it. +class GoogleTestFailureException : public ::std::runtime_error { + public: + explicit GoogleTestFailureException(const TestPartResult& failure) + : ::std::runtime_error(PrintTestPartResultToString(failure).c_str()) {} +}; +#endif // GTEST_HAS_EXCEPTIONS + +namespace internal { +// We put these helper functions in the internal namespace as IBM's xlC +// compiler rejects the code if they were declared static. + +// Runs the given method and handles SEH exceptions it throws, when +// SEH is supported; returns the 0-value for type Result in case of an +// SEH exception. (Microsoft compilers cannot handle SEH and C++ +// exceptions in the same function. Therefore, we provide a separate +// wrapper function for handling SEH exceptions.) +template +Result HandleSehExceptionsInMethodIfSupported( + T* object, Result (T::*method)(), const char* location) { +#if GTEST_HAS_SEH + __try { + return (object->*method)(); + } __except (internal::UnitTestOptions::GTestShouldProcessSEH( // NOLINT + GetExceptionCode())) { + // We create the exception message on the heap because VC++ prohibits + // creation of objects with destructors on stack in functions using __try + // (see error C2712). + std::string* exception_message = FormatSehExceptionMessage( + GetExceptionCode(), location); + internal::ReportFailureInUnknownLocation(TestPartResult::kFatalFailure, + *exception_message); + delete exception_message; + return static_cast(0); + } +#else + (void)location; + return (object->*method)(); +#endif // GTEST_HAS_SEH +} + +// Runs the given method and catches and reports C++ and/or SEH-style +// exceptions, if they are supported; returns the 0-value for type +// Result in case of an SEH exception. +template +Result HandleExceptionsInMethodIfSupported( + T* object, Result (T::*method)(), const char* location) { + // NOTE: The user code can affect the way in which Google Test handles + // exceptions by setting GTEST_FLAG(catch_exceptions), but only before + // RUN_ALL_TESTS() starts. It is technically possible to check the flag + // after the exception is caught and either report or re-throw the + // exception based on the flag's value: + // + // try { + // // Perform the test method. + // } catch (...) { + // if (GTEST_FLAG(catch_exceptions)) + // // Report the exception as failure. + // else + // throw; // Re-throws the original exception. + // } + // + // However, the purpose of this flag is to allow the program to drop into + // the debugger when the exception is thrown. On most platforms, once the + // control enters the catch block, the exception origin information is + // lost and the debugger will stop the program at the point of the + // re-throw in this function -- instead of at the point of the original + // throw statement in the code under test. For this reason, we perform + // the check early, sacrificing the ability to affect Google Test's + // exception handling in the method where the exception is thrown. + if (internal::GetUnitTestImpl()->catch_exceptions()) { +#if GTEST_HAS_EXCEPTIONS + try { + return HandleSehExceptionsInMethodIfSupported(object, method, location); + } catch (const GoogleTestFailureException&) { // NOLINT + // This exception doesn't originate in code under test. It makes no + // sense to report it as a test failure. + throw; + } catch (const std::exception& e) { // NOLINT + internal::ReportFailureInUnknownLocation( + TestPartResult::kFatalFailure, + FormatCxxExceptionMessage(e.what(), location)); + } catch (...) { // NOLINT + internal::ReportFailureInUnknownLocation( + TestPartResult::kFatalFailure, + FormatCxxExceptionMessage(NULL, location)); + } + return static_cast(0); +#else + return HandleSehExceptionsInMethodIfSupported(object, method, location); +#endif // GTEST_HAS_EXCEPTIONS + } else { + return (object->*method)(); + } +} + +} // namespace internal + +// Runs the test and updates the test result. +void Test::Run() { + if (!HasSameFixtureClass()) return; + + internal::UnitTestImpl* const impl = internal::GetUnitTestImpl(); + impl->os_stack_trace_getter()->UponLeavingGTest(); + internal::HandleExceptionsInMethodIfSupported(this, &Test::SetUp, "SetUp()"); + // We will run the test only if SetUp() was successful. + if (!HasFatalFailure()) { + impl->os_stack_trace_getter()->UponLeavingGTest(); + internal::HandleExceptionsInMethodIfSupported( + this, &Test::TestBody, "the test body"); + } + + // However, we want to clean up as much as possible. Hence we will + // always call TearDown(), even if SetUp() or the test body has + // failed. + impl->os_stack_trace_getter()->UponLeavingGTest(); + internal::HandleExceptionsInMethodIfSupported( + this, &Test::TearDown, "TearDown()"); +} + +// Returns true iff the current test has a fatal failure. +bool Test::HasFatalFailure() { + return internal::GetUnitTestImpl()->current_test_result()->HasFatalFailure(); +} + +// Returns true iff the current test has a non-fatal failure. +bool Test::HasNonfatalFailure() { + return internal::GetUnitTestImpl()->current_test_result()-> + HasNonfatalFailure(); +} + +// class TestInfo + +// Constructs a TestInfo object. It assumes ownership of the test factory +// object. +// TODO(vladl@google.com): Make a_test_case_name and a_name const string&'s +// to signify they cannot be NULLs. +TestInfo::TestInfo(const char* a_test_case_name, + const char* a_name, + const char* a_type_param, + const char* a_value_param, + internal::TypeId fixture_class_id, + internal::TestFactoryBase* factory) + : test_case_name_(a_test_case_name), + name_(a_name), + type_param_(a_type_param ? new std::string(a_type_param) : NULL), + value_param_(a_value_param ? new std::string(a_value_param) : NULL), + fixture_class_id_(fixture_class_id), + should_run_(false), + is_disabled_(false), + matches_filter_(false), + factory_(factory), + result_() {} + +// Destructs a TestInfo object. +TestInfo::~TestInfo() { delete factory_; } + +namespace internal { + +// Creates a new TestInfo object and registers it with Google Test; +// returns the created object. +// +// Arguments: +// +// test_case_name: name of the test case +// name: name of the test +// type_param: the name of the test's type parameter, or NULL if +// this is not a typed or a type-parameterized test. +// value_param: text representation of the test's value parameter, +// or NULL if this is not a value-parameterized test. +// fixture_class_id: ID of the test fixture class +// set_up_tc: pointer to the function that sets up the test case +// tear_down_tc: pointer to the function that tears down the test case +// factory: pointer to the factory that creates a test object. +// The newly created TestInfo instance will assume +// ownership of the factory object. +TestInfo* MakeAndRegisterTestInfo( + const char* test_case_name, const char* name, + const char* type_param, + const char* value_param, + TypeId fixture_class_id, + SetUpTestCaseFunc set_up_tc, + TearDownTestCaseFunc tear_down_tc, + TestFactoryBase* factory) { + TestInfo* const test_info = + new TestInfo(test_case_name, name, type_param, value_param, + fixture_class_id, factory); + GetUnitTestImpl()->AddTestInfo(set_up_tc, tear_down_tc, test_info); + return test_info; +} + +#if GTEST_HAS_PARAM_TEST +void ReportInvalidTestCaseType(const char* test_case_name, + const char* file, int line) { + Message errors; + errors + << "Attempted redefinition of test case " << test_case_name << ".\n" + << "All tests in the same test case must use the same test fixture\n" + << "class. However, in test case " << test_case_name << ", you tried\n" + << "to define a test using a fixture class different from the one\n" + << "used earlier. This can happen if the two fixture classes are\n" + << "from different namespaces and have the same name. You should\n" + << "probably rename one of the classes to put the tests into different\n" + << "test cases."; + + fprintf(stderr, "%s %s", FormatFileLocation(file, line).c_str(), + errors.GetString().c_str()); +} +#endif // GTEST_HAS_PARAM_TEST + +} // namespace internal + +namespace { + +// A predicate that checks the test name of a TestInfo against a known +// value. +// +// This is used for implementation of the TestCase class only. We put +// it in the anonymous namespace to prevent polluting the outer +// namespace. +// +// TestNameIs is copyable. +class TestNameIs { + public: + // Constructor. + // + // TestNameIs has NO default constructor. + explicit TestNameIs(const char* name) + : name_(name) {} + + // Returns true iff the test name of test_info matches name_. + bool operator()(const TestInfo * test_info) const { + return test_info && test_info->name() == name_; + } + + private: + std::string name_; +}; + +} // namespace + +namespace internal { + +// This method expands all parameterized tests registered with macros TEST_P +// and INSTANTIATE_TEST_CASE_P into regular tests and registers those. +// This will be done just once during the program runtime. +void UnitTestImpl::RegisterParameterizedTests() { +#if GTEST_HAS_PARAM_TEST + if (!parameterized_tests_registered_) { + parameterized_test_registry_.RegisterTests(); + parameterized_tests_registered_ = true; + } +#endif +} + +} // namespace internal + +// Creates the test object, runs it, records its result, and then +// deletes it. +void TestInfo::Run() { + if (!should_run_) return; + + // Tells UnitTest where to store test result. + internal::UnitTestImpl* const impl = internal::GetUnitTestImpl(); + impl->set_current_test_info(this); + + TestEventListener* repeater = UnitTest::GetInstance()->listeners().repeater(); + + // Notifies the unit test event listeners that a test is about to start. + repeater->OnTestStart(*this); + + const TimeInMillis start = internal::GetTimeInMillis(); + + impl->os_stack_trace_getter()->UponLeavingGTest(); + + // Creates the test object. + Test* const test = internal::HandleExceptionsInMethodIfSupported( + factory_, &internal::TestFactoryBase::CreateTest, + "the test fixture's constructor"); + + // Runs the test only if the test object was created and its + // constructor didn't generate a fatal failure. + if ((test != NULL) && !Test::HasFatalFailure()) { + // This doesn't throw as all user code that can throw are wrapped into + // exception handling code. + test->Run(); + } + + // Deletes the test object. + impl->os_stack_trace_getter()->UponLeavingGTest(); + internal::HandleExceptionsInMethodIfSupported( + test, &Test::DeleteSelf_, "the test fixture's destructor"); + + result_.set_elapsed_time(internal::GetTimeInMillis() - start); + + // Notifies the unit test event listener that a test has just finished. + repeater->OnTestEnd(*this); + + // Tells UnitTest to stop associating assertion results to this + // test. + impl->set_current_test_info(NULL); +} + +// class TestCase + +// Gets the number of successful tests in this test case. +int TestCase::successful_test_count() const { + return CountIf(test_info_list_, TestPassed); +} + +// Gets the number of failed tests in this test case. +int TestCase::failed_test_count() const { + return CountIf(test_info_list_, TestFailed); +} + +int TestCase::disabled_test_count() const { + return CountIf(test_info_list_, TestDisabled); +} + +// Get the number of tests in this test case that should run. +int TestCase::test_to_run_count() const { + return CountIf(test_info_list_, ShouldRunTest); +} + +// Gets the number of all tests. +int TestCase::total_test_count() const { + return static_cast(test_info_list_.size()); +} + +// Creates a TestCase with the given name. +// +// Arguments: +// +// name: name of the test case +// a_type_param: the name of the test case's type parameter, or NULL if +// this is not a typed or a type-parameterized test case. +// set_up_tc: pointer to the function that sets up the test case +// tear_down_tc: pointer to the function that tears down the test case +TestCase::TestCase(const char* a_name, const char* a_type_param, + Test::SetUpTestCaseFunc set_up_tc, + Test::TearDownTestCaseFunc tear_down_tc) + : name_(a_name), + type_param_(a_type_param ? new std::string(a_type_param) : NULL), + set_up_tc_(set_up_tc), + tear_down_tc_(tear_down_tc), + should_run_(false), + elapsed_time_(0) { +} + +// Destructor of TestCase. +TestCase::~TestCase() { + // Deletes every Test in the collection. + ForEach(test_info_list_, internal::Delete); +} + +// Returns the i-th test among all the tests. i can range from 0 to +// total_test_count() - 1. If i is not in that range, returns NULL. +const TestInfo* TestCase::GetTestInfo(int i) const { + const int index = GetElementOr(test_indices_, i, -1); + return index < 0 ? NULL : test_info_list_[index]; +} + +// Returns the i-th test among all the tests. i can range from 0 to +// total_test_count() - 1. If i is not in that range, returns NULL. +TestInfo* TestCase::GetMutableTestInfo(int i) { + const int index = GetElementOr(test_indices_, i, -1); + return index < 0 ? NULL : test_info_list_[index]; +} + +// Adds a test to this test case. Will delete the test upon +// destruction of the TestCase object. +void TestCase::AddTestInfo(TestInfo * test_info) { + test_info_list_.push_back(test_info); + test_indices_.push_back(static_cast(test_indices_.size())); +} + +// Runs every test in this TestCase. +void TestCase::Run() { + if (!should_run_) return; + + internal::UnitTestImpl* const impl = internal::GetUnitTestImpl(); + impl->set_current_test_case(this); + + TestEventListener* repeater = UnitTest::GetInstance()->listeners().repeater(); + + repeater->OnTestCaseStart(*this); + impl->os_stack_trace_getter()->UponLeavingGTest(); + internal::HandleExceptionsInMethodIfSupported( + this, &TestCase::RunSetUpTestCase, "SetUpTestCase()"); + + const internal::TimeInMillis start = internal::GetTimeInMillis(); + for (int i = 0; i < total_test_count(); i++) { + GetMutableTestInfo(i)->Run(); + } + elapsed_time_ = internal::GetTimeInMillis() - start; + + impl->os_stack_trace_getter()->UponLeavingGTest(); + internal::HandleExceptionsInMethodIfSupported( + this, &TestCase::RunTearDownTestCase, "TearDownTestCase()"); + + repeater->OnTestCaseEnd(*this); + impl->set_current_test_case(NULL); +} + +// Clears the results of all tests in this test case. +void TestCase::ClearResult() { + ForEach(test_info_list_, TestInfo::ClearTestResult); +} + +// Shuffles the tests in this test case. +void TestCase::ShuffleTests(internal::Random* random) { + Shuffle(random, &test_indices_); +} + +// Restores the test order to before the first shuffle. +void TestCase::UnshuffleTests() { + for (size_t i = 0; i < test_indices_.size(); i++) { + test_indices_[i] = static_cast(i); + } +} + +// Formats a countable noun. Depending on its quantity, either the +// singular form or the plural form is used. e.g. +// +// FormatCountableNoun(1, "formula", "formuli") returns "1 formula". +// FormatCountableNoun(5, "book", "books") returns "5 books". +static std::string FormatCountableNoun(int count, + const char * singular_form, + const char * plural_form) { + return internal::String::Format("%d %s", count, + count == 1 ? singular_form : plural_form); +} + +// Formats the count of tests. +static std::string FormatTestCount(int test_count) { + return FormatCountableNoun(test_count, "test", "tests"); +} + +// Formats the count of test cases. +static std::string FormatTestCaseCount(int test_case_count) { + return FormatCountableNoun(test_case_count, "test case", "test cases"); +} + +// Converts a TestPartResult::Type enum to human-friendly string +// representation. Both kNonFatalFailure and kFatalFailure are translated +// to "Failure", as the user usually doesn't care about the difference +// between the two when viewing the test result. +static const char * TestPartResultTypeToString(TestPartResult::Type type) { + switch (type) { + case TestPartResult::kSuccess: + return "Success"; + + case TestPartResult::kNonFatalFailure: + case TestPartResult::kFatalFailure: +#ifdef _MSC_VER + return "error: "; +#else + return "Failure\n"; +#endif + default: + return "Unknown result type"; + } +} + +// Prints a TestPartResult to an std::string. +static std::string PrintTestPartResultToString( + const TestPartResult& test_part_result) { + return (Message() + << internal::FormatFileLocation(test_part_result.file_name(), + test_part_result.line_number()) + << " " << TestPartResultTypeToString(test_part_result.type()) + << test_part_result.message()).GetString(); +} + +// Prints a TestPartResult. +static void PrintTestPartResult(const TestPartResult& test_part_result) { + const std::string& result = + PrintTestPartResultToString(test_part_result); + printf("%s\n", result.c_str()); + fflush(stdout); + // If the test program runs in Visual Studio or a debugger, the + // following statements add the test part result message to the Output + // window such that the user can double-click on it to jump to the + // corresponding source code location; otherwise they do nothing. +#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE + // We don't call OutputDebugString*() on Windows Mobile, as printing + // to stdout is done by OutputDebugString() there already - we don't + // want the same message printed twice. + ::OutputDebugStringA(result.c_str()); + ::OutputDebugStringA("\n"); +#endif +} + +// class PrettyUnitTestResultPrinter + +namespace internal { + +enum GTestColor { + COLOR_DEFAULT, + COLOR_RED, + COLOR_GREEN, + COLOR_YELLOW +}; + +#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE + +// Returns the character attribute for the given color. +WORD GetColorAttribute(GTestColor color) { + switch (color) { + case COLOR_RED: return FOREGROUND_RED; + case COLOR_GREEN: return FOREGROUND_GREEN; + case COLOR_YELLOW: return FOREGROUND_RED | FOREGROUND_GREEN; + default: return 0; + } +} + +#else + +// Returns the ANSI color code for the given color. COLOR_DEFAULT is +// an invalid input. +const char* GetAnsiColorCode(GTestColor color) { + switch (color) { + case COLOR_RED: return "1"; + case COLOR_GREEN: return "2"; + case COLOR_YELLOW: return "3"; + default: return NULL; + }; +} + +#endif // GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE + +// Returns true iff Google Test should use colors in the output. +bool ShouldUseColor(bool stdout_is_tty) { + const char* const gtest_color = GTEST_FLAG(color).c_str(); + + if (String::CaseInsensitiveCStringEquals(gtest_color, "auto")) { +#if GTEST_OS_WINDOWS + // On Windows the TERM variable is usually not set, but the + // console there does support colors. + return stdout_is_tty; +#else + // On non-Windows platforms, we rely on the TERM variable. + const char* const term = posix::GetEnv("TERM"); + const bool term_supports_color = + String::CStringEquals(term, "xterm") || + String::CStringEquals(term, "xterm-color") || + String::CStringEquals(term, "xterm-256color") || + String::CStringEquals(term, "screen") || + String::CStringEquals(term, "linux") || + String::CStringEquals(term, "cygwin"); + return stdout_is_tty && term_supports_color; +#endif // GTEST_OS_WINDOWS + } + + return String::CaseInsensitiveCStringEquals(gtest_color, "yes") || + String::CaseInsensitiveCStringEquals(gtest_color, "true") || + String::CaseInsensitiveCStringEquals(gtest_color, "t") || + String::CStringEquals(gtest_color, "1"); + // We take "yes", "true", "t", and "1" as meaning "yes". If the + // value is neither one of these nor "auto", we treat it as "no" to + // be conservative. +} + +// Helpers for printing colored strings to stdout. Note that on Windows, we +// cannot simply emit special characters and have the terminal change colors. +// This routine must actually emit the characters rather than return a string +// that would be colored when printed, as can be done on Linux. +void ColoredPrintf(GTestColor color, const char* fmt, ...) { + va_list args; + va_start(args, fmt); + +#if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN || GTEST_OS_ZOS || GTEST_OS_IOS + const bool use_color = false; +#else + static const bool in_color_mode = + ShouldUseColor(posix::IsATTY(posix::FileNo(stdout)) != 0); + const bool use_color = in_color_mode && (color != COLOR_DEFAULT); +#endif // GTEST_OS_WINDOWS_MOBILE || GTEST_OS_SYMBIAN || GTEST_OS_ZOS + // The '!= 0' comparison is necessary to satisfy MSVC 7.1. + + if (!use_color) { + vprintf(fmt, args); + va_end(args); + return; + } + +#if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE + const HANDLE stdout_handle = GetStdHandle(STD_OUTPUT_HANDLE); + + // Gets the current text color. + CONSOLE_SCREEN_BUFFER_INFO buffer_info; + GetConsoleScreenBufferInfo(stdout_handle, &buffer_info); + const WORD old_color_attrs = buffer_info.wAttributes; + + // We need to flush the stream buffers into the console before each + // SetConsoleTextAttribute call lest it affect the text that is already + // printed but has not yet reached the console. + fflush(stdout); + SetConsoleTextAttribute(stdout_handle, + GetColorAttribute(color) | FOREGROUND_INTENSITY); + vprintf(fmt, args); + + fflush(stdout); + // Restores the text color. + SetConsoleTextAttribute(stdout_handle, old_color_attrs); +#else + printf("\033[0;3%sm", GetAnsiColorCode(color)); + vprintf(fmt, args); + printf("\033[m"); // Resets the terminal to default. +#endif // GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE + va_end(args); +} + +void PrintFullTestCommentIfPresent(const TestInfo& test_info) { + const char* const type_param = test_info.type_param(); + const char* const value_param = test_info.value_param(); + + if (type_param != NULL || value_param != NULL) { + printf(", where "); + if (type_param != NULL) { + printf("TypeParam = %s", type_param); + if (value_param != NULL) + printf(" and "); + } + if (value_param != NULL) { + printf("GetParam() = %s", value_param); + } + } +} + +// This class implements the TestEventListener interface. +// +// Class PrettyUnitTestResultPrinter is copyable. +class PrettyUnitTestResultPrinter : public TestEventListener { + public: + PrettyUnitTestResultPrinter() {} + static void PrintTestName(const char * test_case, const char * test) { + printf("%s.%s", test_case, test); + } + + // The following methods override what's in the TestEventListener class. + virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) {} + virtual void OnTestIterationStart(const UnitTest& unit_test, int iteration); + virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test); + virtual void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) {} + virtual void OnTestCaseStart(const TestCase& test_case); + virtual void OnTestStart(const TestInfo& test_info); + virtual void OnTestPartResult(const TestPartResult& result); + virtual void OnTestEnd(const TestInfo& test_info); + virtual void OnTestCaseEnd(const TestCase& test_case); + virtual void OnEnvironmentsTearDownStart(const UnitTest& unit_test); + virtual void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) {} + virtual void OnTestIterationEnd(const UnitTest& unit_test, int iteration); + virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) {} + + private: + static void PrintFailedTests(const UnitTest& unit_test); +}; + + // Fired before each iteration of tests starts. +void PrettyUnitTestResultPrinter::OnTestIterationStart( + const UnitTest& unit_test, int iteration) { + if (GTEST_FLAG(repeat) != 1) + printf("\nRepeating all tests (iteration %d) . . .\n\n", iteration + 1); + + const char* const filter = GTEST_FLAG(filter).c_str(); + + // Prints the filter if it's not *. This reminds the user that some + // tests may be skipped. + if (!String::CStringEquals(filter, kUniversalFilter)) { + ColoredPrintf(COLOR_YELLOW, + "Note: %s filter = %s\n", GTEST_NAME_, filter); + } + + if (internal::ShouldShard(kTestTotalShards, kTestShardIndex, false)) { + const Int32 shard_index = Int32FromEnvOrDie(kTestShardIndex, -1); + ColoredPrintf(COLOR_YELLOW, + "Note: This is test shard %d of %s.\n", + static_cast(shard_index) + 1, + internal::posix::GetEnv(kTestTotalShards)); + } + + if (GTEST_FLAG(shuffle)) { + ColoredPrintf(COLOR_YELLOW, + "Note: Randomizing tests' orders with a seed of %d .\n", + unit_test.random_seed()); + } + + ColoredPrintf(COLOR_GREEN, "[==========] "); + printf("Running %s from %s.\n", + FormatTestCount(unit_test.test_to_run_count()).c_str(), + FormatTestCaseCount(unit_test.test_case_to_run_count()).c_str()); + fflush(stdout); +} + +void PrettyUnitTestResultPrinter::OnEnvironmentsSetUpStart( + const UnitTest& /*unit_test*/) { + ColoredPrintf(COLOR_GREEN, "[----------] "); + printf("Global test environment set-up.\n"); + fflush(stdout); +} + +void PrettyUnitTestResultPrinter::OnTestCaseStart(const TestCase& test_case) { + const std::string counts = + FormatCountableNoun(test_case.test_to_run_count(), "test", "tests"); + ColoredPrintf(COLOR_GREEN, "[----------] "); + printf("%s from %s", counts.c_str(), test_case.name()); + if (test_case.type_param() == NULL) { + printf("\n"); + } else { + printf(", where TypeParam = %s\n", test_case.type_param()); + } + fflush(stdout); +} + +void PrettyUnitTestResultPrinter::OnTestStart(const TestInfo& test_info) { + ColoredPrintf(COLOR_GREEN, "[ RUN ] "); + PrintTestName(test_info.test_case_name(), test_info.name()); + printf("\n"); + fflush(stdout); +} + +// Called after an assertion failure. +void PrettyUnitTestResultPrinter::OnTestPartResult( + const TestPartResult& result) { + // If the test part succeeded, we don't need to do anything. + if (result.type() == TestPartResult::kSuccess) + return; + + // Print failure message from the assertion (e.g. expected this and got that). + PrintTestPartResult(result); + fflush(stdout); +} + +void PrettyUnitTestResultPrinter::OnTestEnd(const TestInfo& test_info) { + if (test_info.result()->Passed()) { + ColoredPrintf(COLOR_GREEN, "[ OK ] "); + } else { + ColoredPrintf(COLOR_RED, "[ FAILED ] "); + } + PrintTestName(test_info.test_case_name(), test_info.name()); + if (test_info.result()->Failed()) + PrintFullTestCommentIfPresent(test_info); + + if (GTEST_FLAG(print_time)) { + printf(" (%s ms)\n", internal::StreamableToString( + test_info.result()->elapsed_time()).c_str()); + } else { + printf("\n"); + } + fflush(stdout); +} + +void PrettyUnitTestResultPrinter::OnTestCaseEnd(const TestCase& test_case) { + if (!GTEST_FLAG(print_time)) return; + + const std::string counts = + FormatCountableNoun(test_case.test_to_run_count(), "test", "tests"); + ColoredPrintf(COLOR_GREEN, "[----------] "); + printf("%s from %s (%s ms total)\n\n", + counts.c_str(), test_case.name(), + internal::StreamableToString(test_case.elapsed_time()).c_str()); + fflush(stdout); +} + +void PrettyUnitTestResultPrinter::OnEnvironmentsTearDownStart( + const UnitTest& /*unit_test*/) { + ColoredPrintf(COLOR_GREEN, "[----------] "); + printf("Global test environment tear-down\n"); + fflush(stdout); +} + +// Internal helper for printing the list of failed tests. +void PrettyUnitTestResultPrinter::PrintFailedTests(const UnitTest& unit_test) { + const int failed_test_count = unit_test.failed_test_count(); + if (failed_test_count == 0) { + return; + } + + for (int i = 0; i < unit_test.total_test_case_count(); ++i) { + const TestCase& test_case = *unit_test.GetTestCase(i); + if (!test_case.should_run() || (test_case.failed_test_count() == 0)) { + continue; + } + for (int j = 0; j < test_case.total_test_count(); ++j) { + const TestInfo& test_info = *test_case.GetTestInfo(j); + if (!test_info.should_run() || test_info.result()->Passed()) { + continue; + } + ColoredPrintf(COLOR_RED, "[ FAILED ] "); + printf("%s.%s", test_case.name(), test_info.name()); + PrintFullTestCommentIfPresent(test_info); + printf("\n"); + } + } +} + +void PrettyUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test, + int /*iteration*/) { + ColoredPrintf(COLOR_GREEN, "[==========] "); + printf("%s from %s ran.", + FormatTestCount(unit_test.test_to_run_count()).c_str(), + FormatTestCaseCount(unit_test.test_case_to_run_count()).c_str()); + if (GTEST_FLAG(print_time)) { + printf(" (%s ms total)", + internal::StreamableToString(unit_test.elapsed_time()).c_str()); + } + printf("\n"); + ColoredPrintf(COLOR_GREEN, "[ PASSED ] "); + printf("%s.\n", FormatTestCount(unit_test.successful_test_count()).c_str()); + + int num_failures = unit_test.failed_test_count(); + if (!unit_test.Passed()) { + const int failed_test_count = unit_test.failed_test_count(); + ColoredPrintf(COLOR_RED, "[ FAILED ] "); + printf("%s, listed below:\n", FormatTestCount(failed_test_count).c_str()); + PrintFailedTests(unit_test); + printf("\n%2d FAILED %s\n", num_failures, + num_failures == 1 ? "TEST" : "TESTS"); + } + + int num_disabled = unit_test.disabled_test_count(); + if (num_disabled && !GTEST_FLAG(also_run_disabled_tests)) { + if (!num_failures) { + printf("\n"); // Add a spacer if no FAILURE banner is displayed. + } + ColoredPrintf(COLOR_YELLOW, + " YOU HAVE %d DISABLED %s\n\n", + num_disabled, + num_disabled == 1 ? "TEST" : "TESTS"); + } + // Ensure that Google Test output is printed before, e.g., heapchecker output. + fflush(stdout); +} + +// End PrettyUnitTestResultPrinter + +// class TestEventRepeater +// +// This class forwards events to other event listeners. +class TestEventRepeater : public TestEventListener { + public: + TestEventRepeater() : forwarding_enabled_(true) {} + virtual ~TestEventRepeater(); + void Append(TestEventListener *listener); + TestEventListener* Release(TestEventListener* listener); + + // Controls whether events will be forwarded to listeners_. Set to false + // in death test child processes. + bool forwarding_enabled() const { return forwarding_enabled_; } + void set_forwarding_enabled(bool enable) { forwarding_enabled_ = enable; } + + virtual void OnTestProgramStart(const UnitTest& unit_test); + virtual void OnTestIterationStart(const UnitTest& unit_test, int iteration); + virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test); + virtual void OnEnvironmentsSetUpEnd(const UnitTest& unit_test); + virtual void OnTestCaseStart(const TestCase& test_case); + virtual void OnTestStart(const TestInfo& test_info); + virtual void OnTestPartResult(const TestPartResult& result); + virtual void OnTestEnd(const TestInfo& test_info); + virtual void OnTestCaseEnd(const TestCase& test_case); + virtual void OnEnvironmentsTearDownStart(const UnitTest& unit_test); + virtual void OnEnvironmentsTearDownEnd(const UnitTest& unit_test); + virtual void OnTestIterationEnd(const UnitTest& unit_test, int iteration); + virtual void OnTestProgramEnd(const UnitTest& unit_test); + + private: + // Controls whether events will be forwarded to listeners_. Set to false + // in death test child processes. + bool forwarding_enabled_; + // The list of listeners that receive events. + std::vector listeners_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(TestEventRepeater); +}; + +TestEventRepeater::~TestEventRepeater() { + ForEach(listeners_, Delete); +} + +void TestEventRepeater::Append(TestEventListener *listener) { + listeners_.push_back(listener); +} + +// TODO(vladl@google.com): Factor the search functionality into Vector::Find. +TestEventListener* TestEventRepeater::Release(TestEventListener *listener) { + for (size_t i = 0; i < listeners_.size(); ++i) { + if (listeners_[i] == listener) { + listeners_.erase(listeners_.begin() + i); + return listener; + } + } + + return NULL; +} + +// Since most methods are very similar, use macros to reduce boilerplate. +// This defines a member that forwards the call to all listeners. +#define GTEST_REPEATER_METHOD_(Name, Type) \ +void TestEventRepeater::Name(const Type& parameter) { \ + if (forwarding_enabled_) { \ + for (size_t i = 0; i < listeners_.size(); i++) { \ + listeners_[i]->Name(parameter); \ + } \ + } \ +} +// This defines a member that forwards the call to all listeners in reverse +// order. +#define GTEST_REVERSE_REPEATER_METHOD_(Name, Type) \ +void TestEventRepeater::Name(const Type& parameter) { \ + if (forwarding_enabled_) { \ + for (int i = static_cast(listeners_.size()) - 1; i >= 0; i--) { \ + listeners_[i]->Name(parameter); \ + } \ + } \ +} + +GTEST_REPEATER_METHOD_(OnTestProgramStart, UnitTest) +GTEST_REPEATER_METHOD_(OnEnvironmentsSetUpStart, UnitTest) +GTEST_REPEATER_METHOD_(OnTestCaseStart, TestCase) +GTEST_REPEATER_METHOD_(OnTestStart, TestInfo) +GTEST_REPEATER_METHOD_(OnTestPartResult, TestPartResult) +GTEST_REPEATER_METHOD_(OnEnvironmentsTearDownStart, UnitTest) +GTEST_REVERSE_REPEATER_METHOD_(OnEnvironmentsSetUpEnd, UnitTest) +GTEST_REVERSE_REPEATER_METHOD_(OnEnvironmentsTearDownEnd, UnitTest) +GTEST_REVERSE_REPEATER_METHOD_(OnTestEnd, TestInfo) +GTEST_REVERSE_REPEATER_METHOD_(OnTestCaseEnd, TestCase) +GTEST_REVERSE_REPEATER_METHOD_(OnTestProgramEnd, UnitTest) + +#undef GTEST_REPEATER_METHOD_ +#undef GTEST_REVERSE_REPEATER_METHOD_ + +void TestEventRepeater::OnTestIterationStart(const UnitTest& unit_test, + int iteration) { + if (forwarding_enabled_) { + for (size_t i = 0; i < listeners_.size(); i++) { + listeners_[i]->OnTestIterationStart(unit_test, iteration); + } + } +} + +void TestEventRepeater::OnTestIterationEnd(const UnitTest& unit_test, + int iteration) { + if (forwarding_enabled_) { + for (int i = static_cast(listeners_.size()) - 1; i >= 0; i--) { + listeners_[i]->OnTestIterationEnd(unit_test, iteration); + } + } +} + +// End TestEventRepeater + +// This class generates an XML output file. +class XmlUnitTestResultPrinter : public EmptyTestEventListener { + public: + explicit XmlUnitTestResultPrinter(const char* output_file); + + virtual void OnTestIterationEnd(const UnitTest& unit_test, int iteration); + + private: + // Is c a whitespace character that is normalized to a space character + // when it appears in an XML attribute value? + static bool IsNormalizableWhitespace(char c) { + return c == 0x9 || c == 0xA || c == 0xD; + } + + // May c appear in a well-formed XML document? + static bool IsValidXmlCharacter(char c) { + return IsNormalizableWhitespace(c) || c >= 0x20; + } + + // Returns an XML-escaped copy of the input string str. If + // is_attribute is true, the text is meant to appear as an attribute + // value, and normalizable whitespace is preserved by replacing it + // with character references. + static std::string EscapeXml(const char* str, bool is_attribute); + + // Returns the given string with all characters invalid in XML removed. + static string RemoveInvalidXmlCharacters(const string& str); + + // Convenience wrapper around EscapeXml when str is an attribute value. + static std::string EscapeXmlAttribute(const char* str) { + return EscapeXml(str, true); + } + + // Convenience wrapper around EscapeXml when str is not an attribute value. + static std::string EscapeXmlText(const char* str) { + return EscapeXml(str, false); + } + + // Streams an XML CDATA section, escaping invalid CDATA sequences as needed. + static void OutputXmlCDataSection(::std::ostream* stream, const char* data); + + // Streams an XML representation of a TestInfo object. + static void OutputXmlTestInfo(::std::ostream* stream, + const char* test_case_name, + const TestInfo& test_info); + + // Prints an XML representation of a TestCase object + static void PrintXmlTestCase(FILE* out, const TestCase& test_case); + + // Prints an XML summary of unit_test to output stream out. + static void PrintXmlUnitTest(FILE* out, const UnitTest& unit_test); + + // Produces a string representing the test properties in a result as space + // delimited XML attributes based on the property key="value" pairs. + // When the std::string is not empty, it includes a space at the beginning, + // to delimit this attribute from prior attributes. + static std::string TestPropertiesAsXmlAttributes(const TestResult& result); + + // The output file. + const std::string output_file_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(XmlUnitTestResultPrinter); +}; + +// Creates a new XmlUnitTestResultPrinter. +XmlUnitTestResultPrinter::XmlUnitTestResultPrinter(const char* output_file) + : output_file_(output_file) { + if (output_file_.c_str() == NULL || output_file_.empty()) { + fprintf(stderr, "XML output file may not be null\n"); + fflush(stderr); + exit(EXIT_FAILURE); + } +} + +// Called after the unit test ends. +void XmlUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test, + int /*iteration*/) { + FILE* xmlout = NULL; + FilePath output_file(output_file_); + FilePath output_dir(output_file.RemoveFileName()); + + if (output_dir.CreateDirectoriesRecursively()) { + xmlout = posix::FOpen(output_file_.c_str(), "w"); + } + if (xmlout == NULL) { + // TODO(wan): report the reason of the failure. + // + // We don't do it for now as: + // + // 1. There is no urgent need for it. + // 2. It's a bit involved to make the errno variable thread-safe on + // all three operating systems (Linux, Windows, and Mac OS). + // 3. To interpret the meaning of errno in a thread-safe way, + // we need the strerror_r() function, which is not available on + // Windows. + fprintf(stderr, + "Unable to open file \"%s\"\n", + output_file_.c_str()); + fflush(stderr); + exit(EXIT_FAILURE); + } + PrintXmlUnitTest(xmlout, unit_test); + fclose(xmlout); +} + +// Returns an XML-escaped copy of the input string str. If is_attribute +// is true, the text is meant to appear as an attribute value, and +// normalizable whitespace is preserved by replacing it with character +// references. +// +// Invalid XML characters in str, if any, are stripped from the output. +// It is expected that most, if not all, of the text processed by this +// module will consist of ordinary English text. +// If this module is ever modified to produce version 1.1 XML output, +// most invalid characters can be retained using character references. +// TODO(wan): It might be nice to have a minimally invasive, human-readable +// escaping scheme for invalid characters, rather than dropping them. +std::string XmlUnitTestResultPrinter::EscapeXml( + const char* str, bool is_attribute) { + Message m; + + if (str != NULL) { + for (const char* src = str; *src; ++src) { + switch (*src) { + case '<': + m << "<"; + break; + case '>': + m << ">"; + break; + case '&': + m << "&"; + break; + case '\'': + if (is_attribute) + m << "'"; + else + m << '\''; + break; + case '"': + if (is_attribute) + m << """; + else + m << '"'; + break; + default: + if (IsValidXmlCharacter(*src)) { + if (is_attribute && IsNormalizableWhitespace(*src)) + m << String::Format("&#x%02X;", unsigned(*src)); + else + m << *src; + } + break; + } + } + } + + return m.GetString(); +} + +// Returns the given string with all characters invalid in XML removed. +// Currently invalid characters are dropped from the string. An +// alternative is to replace them with certain characters such as . or ?. +string XmlUnitTestResultPrinter::RemoveInvalidXmlCharacters(const string& str) { + string output; + output.reserve(str.size()); + for (string::const_iterator it = str.begin(); it != str.end(); ++it) + if (IsValidXmlCharacter(*it)) + output.push_back(*it); + + return output; +} + +// The following routines generate an XML representation of a UnitTest +// object. +// +// This is how Google Test concepts map to the DTD: +// +// <-- corresponds to a UnitTest object +// <-- corresponds to a TestCase object +// <-- corresponds to a TestInfo object +// ... +// ... +// ... +// <-- individual assertion failures +// +// +// + +// Formats the given time in milliseconds as seconds. +std::string FormatTimeInMillisAsSeconds(TimeInMillis ms) { + ::std::stringstream ss; + ss << ms/1000.0; + return ss.str(); +} + +// Converts the given epoch time in milliseconds to a date string in the ISO +// 8601 format, without the timezone information. +std::string FormatEpochTimeInMillisAsIso8601(TimeInMillis ms) { + // Using non-reentrant version as localtime_r is not portable. + time_t seconds = static_cast(ms / 1000); +#ifdef _MSC_VER +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4996) // Temporarily disables warning 4996 + // (function or variable may be unsafe). + const struct tm* const time_struct = localtime(&seconds); // NOLINT +# pragma warning(pop) // Restores the warning state again. +#else + const struct tm* const time_struct = localtime(&seconds); // NOLINT +#endif + if (time_struct == NULL) + return ""; // Invalid ms value + + return String::Format("%d-%02d-%02dT%02d:%02d:%02d", // YYYY-MM-DDThh:mm:ss + time_struct->tm_year + 1900, + time_struct->tm_mon + 1, + time_struct->tm_mday, + time_struct->tm_hour, + time_struct->tm_min, + time_struct->tm_sec); +} + +// Streams an XML CDATA section, escaping invalid CDATA sequences as needed. +void XmlUnitTestResultPrinter::OutputXmlCDataSection(::std::ostream* stream, + const char* data) { + const char* segment = data; + *stream << ""); + if (next_segment != NULL) { + stream->write( + segment, static_cast(next_segment - segment)); + *stream << "]]>]]>"); + } else { + *stream << segment; + break; + } + } + *stream << "]]>"; +} + +// Prints an XML representation of a TestInfo object. +// TODO(wan): There is also value in printing properties with the plain printer. +void XmlUnitTestResultPrinter::OutputXmlTestInfo(::std::ostream* stream, + const char* test_case_name, + const TestInfo& test_info) { + const TestResult& result = *test_info.result(); + *stream << " \n"; + } + const string location = internal::FormatCompilerIndependentFileLocation( + part.file_name(), part.line_number()); + const string summary = location + "\n" + part.summary(); + *stream << " "; + const string detail = location + "\n" + part.message(); + OutputXmlCDataSection(stream, RemoveInvalidXmlCharacters(detail).c_str()); + *stream << "\n"; + } + } + + if (failures == 0) + *stream << " />\n"; + else + *stream << " \n"; +} + +// Prints an XML representation of a TestCase object +void XmlUnitTestResultPrinter::PrintXmlTestCase(FILE* out, + const TestCase& test_case) { + fprintf(out, + " \n", + FormatTimeInMillisAsSeconds(test_case.elapsed_time()).c_str()); + for (int i = 0; i < test_case.total_test_count(); ++i) { + ::std::stringstream stream; + OutputXmlTestInfo(&stream, test_case.name(), *test_case.GetTestInfo(i)); + fprintf(out, "%s", StringStreamToString(&stream).c_str()); + } + fprintf(out, " \n"); +} + +// Prints an XML summary of unit_test to output stream out. +void XmlUnitTestResultPrinter::PrintXmlUnitTest(FILE* out, + const UnitTest& unit_test) { + fprintf(out, "\n"); + fprintf(out, + "\n"); + for (int i = 0; i < unit_test.total_test_case_count(); ++i) + PrintXmlTestCase(out, *unit_test.GetTestCase(i)); + fprintf(out, "\n"); +} + +// Produces a string representing the test properties in a result as space +// delimited XML attributes based on the property key="value" pairs. +std::string XmlUnitTestResultPrinter::TestPropertiesAsXmlAttributes( + const TestResult& result) { + Message attributes; + for (int i = 0; i < result.test_property_count(); ++i) { + const TestProperty& property = result.GetTestProperty(i); + attributes << " " << property.key() << "=" + << "\"" << EscapeXmlAttribute(property.value()) << "\""; + } + return attributes.GetString(); +} + +// End XmlUnitTestResultPrinter + +#if GTEST_CAN_STREAM_RESULTS_ + +// Streams test results to the given port on the given host machine. +class StreamingListener : public EmptyTestEventListener { + public: + // Escapes '=', '&', '%', and '\n' characters in str as "%xx". + static string UrlEncode(const char* str); + + StreamingListener(const string& host, const string& port) + : sockfd_(-1), host_name_(host), port_num_(port) { + MakeConnection(); + Send("gtest_streaming_protocol_version=1.0\n"); + } + + virtual ~StreamingListener() { + if (sockfd_ != -1) + CloseConnection(); + } + + void OnTestProgramStart(const UnitTest& /* unit_test */) { + Send("event=TestProgramStart\n"); + } + + void OnTestProgramEnd(const UnitTest& unit_test) { + // Note that Google Test current only report elapsed time for each + // test iteration, not for the entire test program. + Send(String::Format("event=TestProgramEnd&passed=%d\n", + unit_test.Passed())); + + // Notify the streaming server to stop. + CloseConnection(); + } + + void OnTestIterationStart(const UnitTest& /* unit_test */, int iteration) { + Send(String::Format("event=TestIterationStart&iteration=%d\n", + iteration)); + } + + void OnTestIterationEnd(const UnitTest& unit_test, int /* iteration */) { + Send(String::Format("event=TestIterationEnd&passed=%d&elapsed_time=%sms\n", + unit_test.Passed(), + StreamableToString(unit_test.elapsed_time()).c_str())); + } + + void OnTestCaseStart(const TestCase& test_case) { + Send(String::Format("event=TestCaseStart&name=%s\n", test_case.name())); + } + + void OnTestCaseEnd(const TestCase& test_case) { + Send(String::Format("event=TestCaseEnd&passed=%d&elapsed_time=%sms\n", + test_case.Passed(), + StreamableToString(test_case.elapsed_time()).c_str())); + } + + void OnTestStart(const TestInfo& test_info) { + Send(String::Format("event=TestStart&name=%s\n", test_info.name())); + } + + void OnTestEnd(const TestInfo& test_info) { + Send(String::Format( + "event=TestEnd&passed=%d&elapsed_time=%sms\n", + (test_info.result())->Passed(), + StreamableToString((test_info.result())->elapsed_time()).c_str())); + } + + void OnTestPartResult(const TestPartResult& test_part_result) { + const char* file_name = test_part_result.file_name(); + if (file_name == NULL) + file_name = ""; + Send(String::Format("event=TestPartResult&file=%s&line=%d&message=", + UrlEncode(file_name).c_str(), + test_part_result.line_number())); + Send(UrlEncode(test_part_result.message()) + "\n"); + } + + private: + // Creates a client socket and connects to the server. + void MakeConnection(); + + // Closes the socket. + void CloseConnection() { + GTEST_CHECK_(sockfd_ != -1) + << "CloseConnection() can be called only when there is a connection."; + + close(sockfd_); + sockfd_ = -1; + } + + // Sends a string to the socket. + void Send(const string& message) { + GTEST_CHECK_(sockfd_ != -1) + << "Send() can be called only when there is a connection."; + + const int len = static_cast(message.length()); + if (write(sockfd_, message.c_str(), len) != len) { + GTEST_LOG_(WARNING) + << "stream_result_to: failed to stream to " + << host_name_ << ":" << port_num_; + } + } + + int sockfd_; // socket file descriptor + const string host_name_; + const string port_num_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(StreamingListener); +}; // class StreamingListener + +// Checks if str contains '=', '&', '%' or '\n' characters. If yes, +// replaces them by "%xx" where xx is their hexadecimal value. For +// example, replaces "=" with "%3D". This algorithm is O(strlen(str)) +// in both time and space -- important as the input str may contain an +// arbitrarily long test failure message and stack trace. +string StreamingListener::UrlEncode(const char* str) { + string result; + result.reserve(strlen(str) + 1); + for (char ch = *str; ch != '\0'; ch = *++str) { + switch (ch) { + case '%': + case '=': + case '&': + case '\n': + result.append(String::Format("%%%02x", static_cast(ch))); + break; + default: + result.push_back(ch); + break; + } + } + return result; +} + +void StreamingListener::MakeConnection() { + GTEST_CHECK_(sockfd_ == -1) + << "MakeConnection() can't be called when there is already a connection."; + + addrinfo hints; + memset(&hints, 0, sizeof(hints)); + hints.ai_family = AF_UNSPEC; // To allow both IPv4 and IPv6 addresses. + hints.ai_socktype = SOCK_STREAM; + addrinfo* servinfo = NULL; + + // Use the getaddrinfo() to get a linked list of IP addresses for + // the given host name. + const int error_num = getaddrinfo( + host_name_.c_str(), port_num_.c_str(), &hints, &servinfo); + if (error_num != 0) { + GTEST_LOG_(WARNING) << "stream_result_to: getaddrinfo() failed: " + << gai_strerror(error_num); + } + + // Loop through all the results and connect to the first we can. + for (addrinfo* cur_addr = servinfo; sockfd_ == -1 && cur_addr != NULL; + cur_addr = cur_addr->ai_next) { + sockfd_ = socket( + cur_addr->ai_family, cur_addr->ai_socktype, cur_addr->ai_protocol); + if (sockfd_ != -1) { + // Connect the client socket to the server socket. + if (connect(sockfd_, cur_addr->ai_addr, cur_addr->ai_addrlen) == -1) { + close(sockfd_); + sockfd_ = -1; + } + } + } + + freeaddrinfo(servinfo); // all done with this structure + + if (sockfd_ == -1) { + GTEST_LOG_(WARNING) << "stream_result_to: failed to connect to " + << host_name_ << ":" << port_num_; + } +} + +// End of class Streaming Listener +#endif // GTEST_CAN_STREAM_RESULTS__ + +// Class ScopedTrace + +// Pushes the given source file location and message onto a per-thread +// trace stack maintained by Google Test. +ScopedTrace::ScopedTrace(const char* file, int line, const Message& message) + GTEST_LOCK_EXCLUDED_(&UnitTest::mutex_) { + TraceInfo trace; + trace.file = file; + trace.line = line; + trace.message = message.GetString(); + + UnitTest::GetInstance()->PushGTestTrace(trace); +} + +// Pops the info pushed by the c'tor. +ScopedTrace::~ScopedTrace() + GTEST_LOCK_EXCLUDED_(&UnitTest::mutex_) { + UnitTest::GetInstance()->PopGTestTrace(); +} + + +// class OsStackTraceGetter + +// Returns the current OS stack trace as an std::string. Parameters: +// +// max_depth - the maximum number of stack frames to be included +// in the trace. +// skip_count - the number of top frames to be skipped; doesn't count +// against max_depth. +// +string OsStackTraceGetter::CurrentStackTrace(int /* max_depth */, + int /* skip_count */) + GTEST_LOCK_EXCLUDED_(mutex_) { + return ""; +} + +void OsStackTraceGetter::UponLeavingGTest() + GTEST_LOCK_EXCLUDED_(mutex_) { +} + +const char* const +OsStackTraceGetter::kElidedFramesMarker = + "... " GTEST_NAME_ " internal frames ..."; + +} // namespace internal + +// class TestEventListeners + +TestEventListeners::TestEventListeners() + : repeater_(new internal::TestEventRepeater()), + default_result_printer_(NULL), + default_xml_generator_(NULL) { +} + +TestEventListeners::~TestEventListeners() { delete repeater_; } + +// Returns the standard listener responsible for the default console +// output. Can be removed from the listeners list to shut down default +// console output. Note that removing this object from the listener list +// with Release transfers its ownership to the user. +void TestEventListeners::Append(TestEventListener* listener) { + repeater_->Append(listener); +} + +// Removes the given event listener from the list and returns it. It then +// becomes the caller's responsibility to delete the listener. Returns +// NULL if the listener is not found in the list. +TestEventListener* TestEventListeners::Release(TestEventListener* listener) { + if (listener == default_result_printer_) + default_result_printer_ = NULL; + else if (listener == default_xml_generator_) + default_xml_generator_ = NULL; + return repeater_->Release(listener); +} + +// Returns repeater that broadcasts the TestEventListener events to all +// subscribers. +TestEventListener* TestEventListeners::repeater() { return repeater_; } + +// Sets the default_result_printer attribute to the provided listener. +// The listener is also added to the listener list and previous +// default_result_printer is removed from it and deleted. The listener can +// also be NULL in which case it will not be added to the list. Does +// nothing if the previous and the current listener objects are the same. +void TestEventListeners::SetDefaultResultPrinter(TestEventListener* listener) { + if (default_result_printer_ != listener) { + // It is an error to pass this method a listener that is already in the + // list. + delete Release(default_result_printer_); + default_result_printer_ = listener; + if (listener != NULL) + Append(listener); + } +} + +// Sets the default_xml_generator attribute to the provided listener. The +// listener is also added to the listener list and previous +// default_xml_generator is removed from it and deleted. The listener can +// also be NULL in which case it will not be added to the list. Does +// nothing if the previous and the current listener objects are the same. +void TestEventListeners::SetDefaultXmlGenerator(TestEventListener* listener) { + if (default_xml_generator_ != listener) { + // It is an error to pass this method a listener that is already in the + // list. + delete Release(default_xml_generator_); + default_xml_generator_ = listener; + if (listener != NULL) + Append(listener); + } +} + +// Controls whether events will be forwarded by the repeater to the +// listeners in the list. +bool TestEventListeners::EventForwardingEnabled() const { + return repeater_->forwarding_enabled(); +} + +void TestEventListeners::SuppressEventForwarding() { + repeater_->set_forwarding_enabled(false); +} + +// class UnitTest + +// Gets the singleton UnitTest object. The first time this method is +// called, a UnitTest object is constructed and returned. Consecutive +// calls will return the same object. +// +// We don't protect this under mutex_ as a user is not supposed to +// call this before main() starts, from which point on the return +// value will never change. +UnitTest * UnitTest::GetInstance() { + // When compiled with MSVC 7.1 in optimized mode, destroying the + // UnitTest object upon exiting the program messes up the exit code, + // causing successful tests to appear failed. We have to use a + // different implementation in this case to bypass the compiler bug. + // This implementation makes the compiler happy, at the cost of + // leaking the UnitTest object. + + // CodeGear C++Builder insists on a public destructor for the + // default implementation. Use this implementation to keep good OO + // design with private destructor. + +#if (_MSC_VER == 1310 && !defined(_DEBUG)) || defined(__BORLANDC__) + static UnitTest* const instance = new UnitTest; + return instance; +#else + static UnitTest instance; + return &instance; +#endif // (_MSC_VER == 1310 && !defined(_DEBUG)) || defined(__BORLANDC__) +} + +// Gets the number of successful test cases. +int UnitTest::successful_test_case_count() const { + return impl()->successful_test_case_count(); +} + +// Gets the number of failed test cases. +int UnitTest::failed_test_case_count() const { + return impl()->failed_test_case_count(); +} + +// Gets the number of all test cases. +int UnitTest::total_test_case_count() const { + return impl()->total_test_case_count(); +} + +// Gets the number of all test cases that contain at least one test +// that should run. +int UnitTest::test_case_to_run_count() const { + return impl()->test_case_to_run_count(); +} + +// Gets the number of successful tests. +int UnitTest::successful_test_count() const { + return impl()->successful_test_count(); +} + +// Gets the number of failed tests. +int UnitTest::failed_test_count() const { return impl()->failed_test_count(); } + +// Gets the number of disabled tests. +int UnitTest::disabled_test_count() const { + return impl()->disabled_test_count(); +} + +// Gets the number of all tests. +int UnitTest::total_test_count() const { return impl()->total_test_count(); } + +// Gets the number of tests that should run. +int UnitTest::test_to_run_count() const { return impl()->test_to_run_count(); } + +// Gets the time of the test program start, in ms from the start of the +// UNIX epoch. +internal::TimeInMillis UnitTest::start_timestamp() const { + return impl()->start_timestamp(); +} + +// Gets the elapsed time, in milliseconds. +internal::TimeInMillis UnitTest::elapsed_time() const { + return impl()->elapsed_time(); +} + +// Returns true iff the unit test passed (i.e. all test cases passed). +bool UnitTest::Passed() const { return impl()->Passed(); } + +// Returns true iff the unit test failed (i.e. some test case failed +// or something outside of all tests failed). +bool UnitTest::Failed() const { return impl()->Failed(); } + +// Gets the i-th test case among all the test cases. i can range from 0 to +// total_test_case_count() - 1. If i is not in that range, returns NULL. +const TestCase* UnitTest::GetTestCase(int i) const { + return impl()->GetTestCase(i); +} + +// Gets the i-th test case among all the test cases. i can range from 0 to +// total_test_case_count() - 1. If i is not in that range, returns NULL. +TestCase* UnitTest::GetMutableTestCase(int i) { + return impl()->GetMutableTestCase(i); +} + +// Returns the list of event listeners that can be used to track events +// inside Google Test. +TestEventListeners& UnitTest::listeners() { + return *impl()->listeners(); +} + +// Registers and returns a global test environment. When a test +// program is run, all global test environments will be set-up in the +// order they were registered. After all tests in the program have +// finished, all global test environments will be torn-down in the +// *reverse* order they were registered. +// +// The UnitTest object takes ownership of the given environment. +// +// We don't protect this under mutex_, as we only support calling it +// from the main thread. +Environment* UnitTest::AddEnvironment(Environment* env) { + if (env == NULL) { + return NULL; + } + + impl_->environments().push_back(env); + return env; +} + +// Adds a TestPartResult to the current TestResult object. All Google Test +// assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc) eventually call +// this to report their results. The user code should use the +// assertion macros instead of calling this directly. +void UnitTest::AddTestPartResult( + TestPartResult::Type result_type, + const char* file_name, + int line_number, + const std::string& message, + const std::string& os_stack_trace) + GTEST_LOCK_EXCLUDED_(mutex_) { + Message msg; + msg << message; + + internal::MutexLock lock(&mutex_); + if (impl_->gtest_trace_stack().size() > 0) { + msg << "\n" << GTEST_NAME_ << " trace:"; + + for (int i = static_cast(impl_->gtest_trace_stack().size()); + i > 0; --i) { + const internal::TraceInfo& trace = impl_->gtest_trace_stack()[i - 1]; + msg << "\n" << internal::FormatFileLocation(trace.file, trace.line) + << " " << trace.message; + } + } + + if (os_stack_trace.c_str() != NULL && !os_stack_trace.empty()) { + msg << internal::kStackTraceMarker << os_stack_trace; + } + + const TestPartResult result = + TestPartResult(result_type, file_name, line_number, + msg.GetString().c_str()); + impl_->GetTestPartResultReporterForCurrentThread()-> + ReportTestPartResult(result); + + if (result_type != TestPartResult::kSuccess) { + // gtest_break_on_failure takes precedence over + // gtest_throw_on_failure. This allows a user to set the latter + // in the code (perhaps in order to use Google Test assertions + // with another testing framework) and specify the former on the + // command line for debugging. + if (GTEST_FLAG(break_on_failure)) { +#if GTEST_OS_WINDOWS + // Using DebugBreak on Windows allows gtest to still break into a debugger + // when a failure happens and both the --gtest_break_on_failure and + // the --gtest_catch_exceptions flags are specified. + DebugBreak(); +#else + // Dereference NULL through a volatile pointer to prevent the compiler + // from removing. We use this rather than abort() or __builtin_trap() for + // portability: Symbian doesn't implement abort() well, and some debuggers + // don't correctly trap abort(). + *static_cast(NULL) = 1; +#endif // GTEST_OS_WINDOWS + } else if (GTEST_FLAG(throw_on_failure)) { +#if GTEST_HAS_EXCEPTIONS + throw GoogleTestFailureException(result); +#else + // We cannot call abort() as it generates a pop-up in debug mode + // that cannot be suppressed in VC 7.1 or below. + exit(1); +#endif + } + } +} + +// Creates and adds a property to the current TestResult. If a property matching +// the supplied value already exists, updates its value instead. +void UnitTest::RecordPropertyForCurrentTest(const char* key, + const char* value) { + const TestProperty test_property(key, value); + impl_->current_test_result()->RecordProperty(test_property); +} + +// Runs all tests in this UnitTest object and prints the result. +// Returns 0 if successful, or 1 otherwise. +// +// We don't protect this under mutex_, as we only support calling it +// from the main thread. +int UnitTest::Run() { + // Captures the value of GTEST_FLAG(catch_exceptions). This value will be + // used for the duration of the program. + impl()->set_catch_exceptions(GTEST_FLAG(catch_exceptions)); + +#if GTEST_HAS_SEH + const bool in_death_test_child_process = + internal::GTEST_FLAG(internal_run_death_test).length() > 0; + + // Either the user wants Google Test to catch exceptions thrown by the + // tests or this is executing in the context of death test child + // process. In either case the user does not want to see pop-up dialogs + // about crashes - they are expected. + if (impl()->catch_exceptions() || in_death_test_child_process) { +# if !GTEST_OS_WINDOWS_MOBILE + // SetErrorMode doesn't exist on CE. + SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOALIGNMENTFAULTEXCEPT | + SEM_NOGPFAULTERRORBOX | SEM_NOOPENFILEERRORBOX); +# endif // !GTEST_OS_WINDOWS_MOBILE + +# if (defined(_MSC_VER) || GTEST_OS_WINDOWS_MINGW) && !GTEST_OS_WINDOWS_MOBILE + // Death test children can be terminated with _abort(). On Windows, + // _abort() can show a dialog with a warning message. This forces the + // abort message to go to stderr instead. + _set_error_mode(_OUT_TO_STDERR); +# endif + +# if _MSC_VER >= 1400 && !GTEST_OS_WINDOWS_MOBILE + // In the debug version, Visual Studio pops up a separate dialog + // offering a choice to debug the aborted program. We need to suppress + // this dialog or it will pop up for every EXPECT/ASSERT_DEATH statement + // executed. Google Test will notify the user of any unexpected + // failure via stderr. + // + // VC++ doesn't define _set_abort_behavior() prior to the version 8.0. + // Users of prior VC versions shall suffer the agony and pain of + // clicking through the countless debug dialogs. + // TODO(vladl@google.com): find a way to suppress the abort dialog() in the + // debug mode when compiled with VC 7.1 or lower. + if (!GTEST_FLAG(break_on_failure)) + _set_abort_behavior( + 0x0, // Clear the following flags: + _WRITE_ABORT_MSG | _CALL_REPORTFAULT); // pop-up window, core dump. +# endif + } +#endif // GTEST_HAS_SEH + + return internal::HandleExceptionsInMethodIfSupported( + impl(), + &internal::UnitTestImpl::RunAllTests, + "auxiliary test code (environments or event listeners)") ? 0 : 1; +} + +// Returns the working directory when the first TEST() or TEST_F() was +// executed. +const char* UnitTest::original_working_dir() const { + return impl_->original_working_dir_.c_str(); +} + +// Returns the TestCase object for the test that's currently running, +// or NULL if no test is running. +const TestCase* UnitTest::current_test_case() const + GTEST_LOCK_EXCLUDED_(mutex_) { + internal::MutexLock lock(&mutex_); + return impl_->current_test_case(); +} + +// Returns the TestInfo object for the test that's currently running, +// or NULL if no test is running. +const TestInfo* UnitTest::current_test_info() const + GTEST_LOCK_EXCLUDED_(mutex_) { + internal::MutexLock lock(&mutex_); + return impl_->current_test_info(); +} + +// Returns the random seed used at the start of the current test run. +int UnitTest::random_seed() const { return impl_->random_seed(); } + +#if GTEST_HAS_PARAM_TEST +// Returns ParameterizedTestCaseRegistry object used to keep track of +// value-parameterized tests and instantiate and register them. +internal::ParameterizedTestCaseRegistry& + UnitTest::parameterized_test_registry() + GTEST_LOCK_EXCLUDED_(mutex_) { + return impl_->parameterized_test_registry(); +} +#endif // GTEST_HAS_PARAM_TEST + +// Creates an empty UnitTest. +UnitTest::UnitTest() { + impl_ = new internal::UnitTestImpl(this); +} + +// Destructor of UnitTest. +UnitTest::~UnitTest() { + delete impl_; +} + +// Pushes a trace defined by SCOPED_TRACE() on to the per-thread +// Google Test trace stack. +void UnitTest::PushGTestTrace(const internal::TraceInfo& trace) + GTEST_LOCK_EXCLUDED_(mutex_) { + internal::MutexLock lock(&mutex_); + impl_->gtest_trace_stack().push_back(trace); +} + +// Pops a trace from the per-thread Google Test trace stack. +void UnitTest::PopGTestTrace() + GTEST_LOCK_EXCLUDED_(mutex_) { + internal::MutexLock lock(&mutex_); + impl_->gtest_trace_stack().pop_back(); +} + +namespace internal { + +UnitTestImpl::UnitTestImpl(UnitTest* parent) + : parent_(parent), +#ifdef _MSC_VER +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4355) // Temporarily disables warning 4355 + // (using this in initializer). + default_global_test_part_result_reporter_(this), + default_per_thread_test_part_result_reporter_(this), +# pragma warning(pop) // Restores the warning state again. +#else + default_global_test_part_result_reporter_(this), + default_per_thread_test_part_result_reporter_(this), +#endif // _MSC_VER + global_test_part_result_repoter_( + &default_global_test_part_result_reporter_), + per_thread_test_part_result_reporter_( + &default_per_thread_test_part_result_reporter_), +#if GTEST_HAS_PARAM_TEST + parameterized_test_registry_(), + parameterized_tests_registered_(false), +#endif // GTEST_HAS_PARAM_TEST + last_death_test_case_(-1), + current_test_case_(NULL), + current_test_info_(NULL), + ad_hoc_test_result_(), + os_stack_trace_getter_(NULL), + post_flag_parse_init_performed_(false), + random_seed_(0), // Will be overridden by the flag before first use. + random_(0), // Will be reseeded before first use. + start_timestamp_(0), + elapsed_time_(0), +#if GTEST_HAS_DEATH_TEST + internal_run_death_test_flag_(NULL), + death_test_factory_(new DefaultDeathTestFactory), +#endif + // Will be overridden by the flag before first use. + catch_exceptions_(false) { + listeners()->SetDefaultResultPrinter(new PrettyUnitTestResultPrinter); +} + +UnitTestImpl::~UnitTestImpl() { + // Deletes every TestCase. + ForEach(test_cases_, internal::Delete); + + // Deletes every Environment. + ForEach(environments_, internal::Delete); + + delete os_stack_trace_getter_; +} + +#if GTEST_HAS_DEATH_TEST +// Disables event forwarding if the control is currently in a death test +// subprocess. Must not be called before InitGoogleTest. +void UnitTestImpl::SuppressTestEventsIfInSubprocess() { + if (internal_run_death_test_flag_.get() != NULL) + listeners()->SuppressEventForwarding(); +} +#endif // GTEST_HAS_DEATH_TEST + +// Initializes event listeners performing XML output as specified by +// UnitTestOptions. Must not be called before InitGoogleTest. +void UnitTestImpl::ConfigureXmlOutput() { + const std::string& output_format = UnitTestOptions::GetOutputFormat(); + if (output_format == "xml") { + listeners()->SetDefaultXmlGenerator(new XmlUnitTestResultPrinter( + UnitTestOptions::GetAbsolutePathToOutputFile().c_str())); + } else if (output_format != "") { + printf("WARNING: unrecognized output format \"%s\" ignored.\n", + output_format.c_str()); + fflush(stdout); + } +} + +#if GTEST_CAN_STREAM_RESULTS_ +// Initializes event listeners for streaming test results in string form. +// Must not be called before InitGoogleTest. +void UnitTestImpl::ConfigureStreamingOutput() { + const std::string& target = GTEST_FLAG(stream_result_to); + if (!target.empty()) { + const size_t pos = target.find(':'); + if (pos != std::string::npos) { + listeners()->Append(new StreamingListener(target.substr(0, pos), + target.substr(pos+1))); + } else { + printf("WARNING: unrecognized streaming target \"%s\" ignored.\n", + target.c_str()); + fflush(stdout); + } + } +} +#endif // GTEST_CAN_STREAM_RESULTS_ + +// Performs initialization dependent upon flag values obtained in +// ParseGoogleTestFlagsOnly. Is called from InitGoogleTest after the call to +// ParseGoogleTestFlagsOnly. In case a user neglects to call InitGoogleTest +// this function is also called from RunAllTests. Since this function can be +// called more than once, it has to be idempotent. +void UnitTestImpl::PostFlagParsingInit() { + // Ensures that this function does not execute more than once. + if (!post_flag_parse_init_performed_) { + post_flag_parse_init_performed_ = true; + +#if GTEST_HAS_DEATH_TEST + InitDeathTestSubprocessControlInfo(); + SuppressTestEventsIfInSubprocess(); +#endif // GTEST_HAS_DEATH_TEST + + // Registers parameterized tests. This makes parameterized tests + // available to the UnitTest reflection API without running + // RUN_ALL_TESTS. + RegisterParameterizedTests(); + + // Configures listeners for XML output. This makes it possible for users + // to shut down the default XML output before invoking RUN_ALL_TESTS. + ConfigureXmlOutput(); + +#if GTEST_CAN_STREAM_RESULTS_ + // Configures listeners for streaming test results to the specified server. + ConfigureStreamingOutput(); +#endif // GTEST_CAN_STREAM_RESULTS_ + } +} + +// A predicate that checks the name of a TestCase against a known +// value. +// +// This is used for implementation of the UnitTest class only. We put +// it in the anonymous namespace to prevent polluting the outer +// namespace. +// +// TestCaseNameIs is copyable. +class TestCaseNameIs { + public: + // Constructor. + explicit TestCaseNameIs(const std::string& name) + : name_(name) {} + + // Returns true iff the name of test_case matches name_. + bool operator()(const TestCase* test_case) const { + return test_case != NULL && strcmp(test_case->name(), name_.c_str()) == 0; + } + + private: + std::string name_; +}; + +// Finds and returns a TestCase with the given name. If one doesn't +// exist, creates one and returns it. It's the CALLER'S +// RESPONSIBILITY to ensure that this function is only called WHEN THE +// TESTS ARE NOT SHUFFLED. +// +// Arguments: +// +// test_case_name: name of the test case +// type_param: the name of the test case's type parameter, or NULL if +// this is not a typed or a type-parameterized test case. +// set_up_tc: pointer to the function that sets up the test case +// tear_down_tc: pointer to the function that tears down the test case +TestCase* UnitTestImpl::GetTestCase(const char* test_case_name, + const char* type_param, + Test::SetUpTestCaseFunc set_up_tc, + Test::TearDownTestCaseFunc tear_down_tc) { + // Can we find a TestCase with the given name? + const std::vector::const_iterator test_case = + std::find_if(test_cases_.begin(), test_cases_.end(), + TestCaseNameIs(test_case_name)); + + if (test_case != test_cases_.end()) + return *test_case; + + // No. Let's create one. + TestCase* const new_test_case = + new TestCase(test_case_name, type_param, set_up_tc, tear_down_tc); + + // Is this a death test case? + if (internal::UnitTestOptions::MatchesFilter(test_case_name, + kDeathTestCaseFilter)) { + // Yes. Inserts the test case after the last death test case + // defined so far. This only works when the test cases haven't + // been shuffled. Otherwise we may end up running a death test + // after a non-death test. + ++last_death_test_case_; + test_cases_.insert(test_cases_.begin() + last_death_test_case_, + new_test_case); + } else { + // No. Appends to the end of the list. + test_cases_.push_back(new_test_case); + } + + test_case_indices_.push_back(static_cast(test_case_indices_.size())); + return new_test_case; +} + +// Helpers for setting up / tearing down the given environment. They +// are for use in the ForEach() function. +static void SetUpEnvironment(Environment* env) { env->SetUp(); } +static void TearDownEnvironment(Environment* env) { env->TearDown(); } + +// Runs all tests in this UnitTest object, prints the result, and +// returns true if all tests are successful. If any exception is +// thrown during a test, the test is considered to be failed, but the +// rest of the tests will still be run. +// +// When parameterized tests are enabled, it expands and registers +// parameterized tests first in RegisterParameterizedTests(). +// All other functions called from RunAllTests() may safely assume that +// parameterized tests are ready to be counted and run. +bool UnitTestImpl::RunAllTests() { + // Makes sure InitGoogleTest() was called. + if (!GTestIsInitialized()) { + printf("%s", + "\nThis test program did NOT call ::testing::InitGoogleTest " + "before calling RUN_ALL_TESTS(). Please fix it.\n"); + return false; + } + + // Do not run any test if the --help flag was specified. + if (g_help_flag) + return true; + + // Repeats the call to the post-flag parsing initialization in case the + // user didn't call InitGoogleTest. + PostFlagParsingInit(); + + // Even if sharding is not on, test runners may want to use the + // GTEST_SHARD_STATUS_FILE to query whether the test supports the sharding + // protocol. + internal::WriteToShardStatusFileIfNeeded(); + + // True iff we are in a subprocess for running a thread-safe-style + // death test. + bool in_subprocess_for_death_test = false; + +#if GTEST_HAS_DEATH_TEST + in_subprocess_for_death_test = (internal_run_death_test_flag_.get() != NULL); +#endif // GTEST_HAS_DEATH_TEST + + const bool should_shard = ShouldShard(kTestTotalShards, kTestShardIndex, + in_subprocess_for_death_test); + + // Compares the full test names with the filter to decide which + // tests to run. + const bool has_tests_to_run = FilterTests(should_shard + ? HONOR_SHARDING_PROTOCOL + : IGNORE_SHARDING_PROTOCOL) > 0; + + // Lists the tests and exits if the --gtest_list_tests flag was specified. + if (GTEST_FLAG(list_tests)) { + // This must be called *after* FilterTests() has been called. + ListTestsMatchingFilter(); + return true; + } + + random_seed_ = GTEST_FLAG(shuffle) ? + GetRandomSeedFromFlag(GTEST_FLAG(random_seed)) : 0; + + // True iff at least one test has failed. + bool failed = false; + + TestEventListener* repeater = listeners()->repeater(); + + start_timestamp_ = GetTimeInMillis(); + repeater->OnTestProgramStart(*parent_); + + // How many times to repeat the tests? We don't want to repeat them + // when we are inside the subprocess of a death test. + const int repeat = in_subprocess_for_death_test ? 1 : GTEST_FLAG(repeat); + // Repeats forever if the repeat count is negative. + const bool forever = repeat < 0; + for (int i = 0; forever || i != repeat; i++) { + // We want to preserve failures generated by ad-hoc test + // assertions executed before RUN_ALL_TESTS(). + ClearNonAdHocTestResult(); + + const TimeInMillis start = GetTimeInMillis(); + + // Shuffles test cases and tests if requested. + if (has_tests_to_run && GTEST_FLAG(shuffle)) { + random()->Reseed(random_seed_); + // This should be done before calling OnTestIterationStart(), + // such that a test event listener can see the actual test order + // in the event. + ShuffleTests(); + } + + // Tells the unit test event listeners that the tests are about to start. + repeater->OnTestIterationStart(*parent_, i); + + // Runs each test case if there is at least one test to run. + if (has_tests_to_run) { + // Sets up all environments beforehand. + repeater->OnEnvironmentsSetUpStart(*parent_); + ForEach(environments_, SetUpEnvironment); + repeater->OnEnvironmentsSetUpEnd(*parent_); + + // Runs the tests only if there was no fatal failure during global + // set-up. + if (!Test::HasFatalFailure()) { + for (int test_index = 0; test_index < total_test_case_count(); + test_index++) { + GetMutableTestCase(test_index)->Run(); + } + } + + // Tears down all environments in reverse order afterwards. + repeater->OnEnvironmentsTearDownStart(*parent_); + std::for_each(environments_.rbegin(), environments_.rend(), + TearDownEnvironment); + repeater->OnEnvironmentsTearDownEnd(*parent_); + } + + elapsed_time_ = GetTimeInMillis() - start; + + // Tells the unit test event listener that the tests have just finished. + repeater->OnTestIterationEnd(*parent_, i); + + // Gets the result and clears it. + if (!Passed()) { + failed = true; + } + + // Restores the original test order after the iteration. This + // allows the user to quickly repro a failure that happens in the + // N-th iteration without repeating the first (N - 1) iterations. + // This is not enclosed in "if (GTEST_FLAG(shuffle)) { ... }", in + // case the user somehow changes the value of the flag somewhere + // (it's always safe to unshuffle the tests). + UnshuffleTests(); + + if (GTEST_FLAG(shuffle)) { + // Picks a new random seed for each iteration. + random_seed_ = GetNextRandomSeed(random_seed_); + } + } + + repeater->OnTestProgramEnd(*parent_); + + return !failed; +} + +// Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file +// if the variable is present. If a file already exists at this location, this +// function will write over it. If the variable is present, but the file cannot +// be created, prints an error and exits. +void WriteToShardStatusFileIfNeeded() { + const char* const test_shard_file = posix::GetEnv(kTestShardStatusFile); + if (test_shard_file != NULL) { + FILE* const file = posix::FOpen(test_shard_file, "w"); + if (file == NULL) { + ColoredPrintf(COLOR_RED, + "Could not write to the test shard status file \"%s\" " + "specified by the %s environment variable.\n", + test_shard_file, kTestShardStatusFile); + fflush(stdout); + exit(EXIT_FAILURE); + } + fclose(file); + } +} + +// Checks whether sharding is enabled by examining the relevant +// environment variable values. If the variables are present, +// but inconsistent (i.e., shard_index >= total_shards), prints +// an error and exits. If in_subprocess_for_death_test, sharding is +// disabled because it must only be applied to the original test +// process. Otherwise, we could filter out death tests we intended to execute. +bool ShouldShard(const char* total_shards_env, + const char* shard_index_env, + bool in_subprocess_for_death_test) { + if (in_subprocess_for_death_test) { + return false; + } + + const Int32 total_shards = Int32FromEnvOrDie(total_shards_env, -1); + const Int32 shard_index = Int32FromEnvOrDie(shard_index_env, -1); + + if (total_shards == -1 && shard_index == -1) { + return false; + } else if (total_shards == -1 && shard_index != -1) { + const Message msg = Message() + << "Invalid environment variables: you have " + << kTestShardIndex << " = " << shard_index + << ", but have left " << kTestTotalShards << " unset.\n"; + ColoredPrintf(COLOR_RED, msg.GetString().c_str()); + fflush(stdout); + exit(EXIT_FAILURE); + } else if (total_shards != -1 && shard_index == -1) { + const Message msg = Message() + << "Invalid environment variables: you have " + << kTestTotalShards << " = " << total_shards + << ", but have left " << kTestShardIndex << " unset.\n"; + ColoredPrintf(COLOR_RED, msg.GetString().c_str()); + fflush(stdout); + exit(EXIT_FAILURE); + } else if (shard_index < 0 || shard_index >= total_shards) { + const Message msg = Message() + << "Invalid environment variables: we require 0 <= " + << kTestShardIndex << " < " << kTestTotalShards + << ", but you have " << kTestShardIndex << "=" << shard_index + << ", " << kTestTotalShards << "=" << total_shards << ".\n"; + ColoredPrintf(COLOR_RED, msg.GetString().c_str()); + fflush(stdout); + exit(EXIT_FAILURE); + } + + return total_shards > 1; +} + +// Parses the environment variable var as an Int32. If it is unset, +// returns default_val. If it is not an Int32, prints an error +// and aborts. +Int32 Int32FromEnvOrDie(const char* var, Int32 default_val) { + const char* str_val = posix::GetEnv(var); + if (str_val == NULL) { + return default_val; + } + + Int32 result; + if (!ParseInt32(Message() << "The value of environment variable " << var, + str_val, &result)) { + exit(EXIT_FAILURE); + } + return result; +} + +// Given the total number of shards, the shard index, and the test id, +// returns true iff the test should be run on this shard. The test id is +// some arbitrary but unique non-negative integer assigned to each test +// method. Assumes that 0 <= shard_index < total_shards. +bool ShouldRunTestOnShard(int total_shards, int shard_index, int test_id) { + return (test_id % total_shards) == shard_index; +} + +// Compares the name of each test with the user-specified filter to +// decide whether the test should be run, then records the result in +// each TestCase and TestInfo object. +// If shard_tests == true, further filters tests based on sharding +// variables in the environment - see +// http://code.google.com/p/googletest/wiki/GoogleTestAdvancedGuide. +// Returns the number of tests that should run. +int UnitTestImpl::FilterTests(ReactionToSharding shard_tests) { + const Int32 total_shards = shard_tests == HONOR_SHARDING_PROTOCOL ? + Int32FromEnvOrDie(kTestTotalShards, -1) : -1; + const Int32 shard_index = shard_tests == HONOR_SHARDING_PROTOCOL ? + Int32FromEnvOrDie(kTestShardIndex, -1) : -1; + + // num_runnable_tests are the number of tests that will + // run across all shards (i.e., match filter and are not disabled). + // num_selected_tests are the number of tests to be run on + // this shard. + int num_runnable_tests = 0; + int num_selected_tests = 0; + for (size_t i = 0; i < test_cases_.size(); i++) { + TestCase* const test_case = test_cases_[i]; + const std::string &test_case_name = test_case->name(); + test_case->set_should_run(false); + + for (size_t j = 0; j < test_case->test_info_list().size(); j++) { + TestInfo* const test_info = test_case->test_info_list()[j]; + const std::string test_name(test_info->name()); + // A test is disabled if test case name or test name matches + // kDisableTestFilter. + const bool is_disabled = + internal::UnitTestOptions::MatchesFilter(test_case_name, + kDisableTestFilter) || + internal::UnitTestOptions::MatchesFilter(test_name, + kDisableTestFilter); + test_info->is_disabled_ = is_disabled; + + const bool matches_filter = + internal::UnitTestOptions::FilterMatchesTest(test_case_name, + test_name); + test_info->matches_filter_ = matches_filter; + + const bool is_runnable = + (GTEST_FLAG(also_run_disabled_tests) || !is_disabled) && + matches_filter; + + const bool is_selected = is_runnable && + (shard_tests == IGNORE_SHARDING_PROTOCOL || + ShouldRunTestOnShard(total_shards, shard_index, + num_runnable_tests)); + + num_runnable_tests += is_runnable; + num_selected_tests += is_selected; + + test_info->should_run_ = is_selected; + test_case->set_should_run(test_case->should_run() || is_selected); + } + } + return num_selected_tests; +} + +// Prints the names of the tests matching the user-specified filter flag. +void UnitTestImpl::ListTestsMatchingFilter() { + for (size_t i = 0; i < test_cases_.size(); i++) { + const TestCase* const test_case = test_cases_[i]; + bool printed_test_case_name = false; + + for (size_t j = 0; j < test_case->test_info_list().size(); j++) { + const TestInfo* const test_info = + test_case->test_info_list()[j]; + if (test_info->matches_filter_) { + if (!printed_test_case_name) { + printed_test_case_name = true; + printf("%s.\n", test_case->name()); + } + printf(" %s\n", test_info->name()); + } + } + } + fflush(stdout); +} + +// Sets the OS stack trace getter. +// +// Does nothing if the input and the current OS stack trace getter are +// the same; otherwise, deletes the old getter and makes the input the +// current getter. +void UnitTestImpl::set_os_stack_trace_getter( + OsStackTraceGetterInterface* getter) { + if (os_stack_trace_getter_ != getter) { + delete os_stack_trace_getter_; + os_stack_trace_getter_ = getter; + } +} + +// Returns the current OS stack trace getter if it is not NULL; +// otherwise, creates an OsStackTraceGetter, makes it the current +// getter, and returns it. +OsStackTraceGetterInterface* UnitTestImpl::os_stack_trace_getter() { + if (os_stack_trace_getter_ == NULL) { + os_stack_trace_getter_ = new OsStackTraceGetter; + } + + return os_stack_trace_getter_; +} + +// Returns the TestResult for the test that's currently running, or +// the TestResult for the ad hoc test if no test is running. +TestResult* UnitTestImpl::current_test_result() { + return current_test_info_ ? + &(current_test_info_->result_) : &ad_hoc_test_result_; +} + +// Shuffles all test cases, and the tests within each test case, +// making sure that death tests are still run first. +void UnitTestImpl::ShuffleTests() { + // Shuffles the death test cases. + ShuffleRange(random(), 0, last_death_test_case_ + 1, &test_case_indices_); + + // Shuffles the non-death test cases. + ShuffleRange(random(), last_death_test_case_ + 1, + static_cast(test_cases_.size()), &test_case_indices_); + + // Shuffles the tests inside each test case. + for (size_t i = 0; i < test_cases_.size(); i++) { + test_cases_[i]->ShuffleTests(random()); + } +} + +// Restores the test cases and tests to their order before the first shuffle. +void UnitTestImpl::UnshuffleTests() { + for (size_t i = 0; i < test_cases_.size(); i++) { + // Unshuffles the tests in each test case. + test_cases_[i]->UnshuffleTests(); + // Resets the index of each test case. + test_case_indices_[i] = static_cast(i); + } +} + +// Returns the current OS stack trace as an std::string. +// +// The maximum number of stack frames to be included is specified by +// the gtest_stack_trace_depth flag. The skip_count parameter +// specifies the number of top frames to be skipped, which doesn't +// count against the number of frames to be included. +// +// For example, if Foo() calls Bar(), which in turn calls +// GetCurrentOsStackTraceExceptTop(..., 1), Foo() will be included in +// the trace but Bar() and GetCurrentOsStackTraceExceptTop() won't. +std::string GetCurrentOsStackTraceExceptTop(UnitTest* /*unit_test*/, + int skip_count) { + // We pass skip_count + 1 to skip this wrapper function in addition + // to what the user really wants to skip. + return GetUnitTestImpl()->CurrentOsStackTraceExceptTop(skip_count + 1); +} + +// Used by the GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_ macro to +// suppress unreachable code warnings. +namespace { +class ClassUniqueToAlwaysTrue {}; +} + +bool IsTrue(bool condition) { return condition; } + +bool AlwaysTrue() { +#if GTEST_HAS_EXCEPTIONS + // This condition is always false so AlwaysTrue() never actually throws, + // but it makes the compiler think that it may throw. + if (IsTrue(false)) + throw ClassUniqueToAlwaysTrue(); +#endif // GTEST_HAS_EXCEPTIONS + return true; +} + +// If *pstr starts with the given prefix, modifies *pstr to be right +// past the prefix and returns true; otherwise leaves *pstr unchanged +// and returns false. None of pstr, *pstr, and prefix can be NULL. +bool SkipPrefix(const char* prefix, const char** pstr) { + const size_t prefix_len = strlen(prefix); + if (strncmp(*pstr, prefix, prefix_len) == 0) { + *pstr += prefix_len; + return true; + } + return false; +} + +// Parses a string as a command line flag. The string should have +// the format "--flag=value". When def_optional is true, the "=value" +// part can be omitted. +// +// Returns the value of the flag, or NULL if the parsing failed. +const char* ParseFlagValue(const char* str, + const char* flag, + bool def_optional) { + // str and flag must not be NULL. + if (str == NULL || flag == NULL) return NULL; + + // The flag must start with "--" followed by GTEST_FLAG_PREFIX_. + const std::string flag_str = std::string("--") + GTEST_FLAG_PREFIX_ + flag; + const size_t flag_len = flag_str.length(); + if (strncmp(str, flag_str.c_str(), flag_len) != 0) return NULL; + + // Skips the flag name. + const char* flag_end = str + flag_len; + + // When def_optional is true, it's OK to not have a "=value" part. + if (def_optional && (flag_end[0] == '\0')) { + return flag_end; + } + + // If def_optional is true and there are more characters after the + // flag name, or if def_optional is false, there must be a '=' after + // the flag name. + if (flag_end[0] != '=') return NULL; + + // Returns the string after "=". + return flag_end + 1; +} + +// Parses a string for a bool flag, in the form of either +// "--flag=value" or "--flag". +// +// In the former case, the value is taken as true as long as it does +// not start with '0', 'f', or 'F'. +// +// In the latter case, the value is taken as true. +// +// On success, stores the value of the flag in *value, and returns +// true. On failure, returns false without changing *value. +bool ParseBoolFlag(const char* str, const char* flag, bool* value) { + // Gets the value of the flag as a string. + const char* const value_str = ParseFlagValue(str, flag, true); + + // Aborts if the parsing failed. + if (value_str == NULL) return false; + + // Converts the string value to a bool. + *value = !(*value_str == '0' || *value_str == 'f' || *value_str == 'F'); + return true; +} + +// Parses a string for an Int32 flag, in the form of +// "--flag=value". +// +// On success, stores the value of the flag in *value, and returns +// true. On failure, returns false without changing *value. +bool ParseInt32Flag(const char* str, const char* flag, Int32* value) { + // Gets the value of the flag as a string. + const char* const value_str = ParseFlagValue(str, flag, false); + + // Aborts if the parsing failed. + if (value_str == NULL) return false; + + // Sets *value to the value of the flag. + return ParseInt32(Message() << "The value of flag --" << flag, + value_str, value); +} + +// Parses a string for a string flag, in the form of +// "--flag=value". +// +// On success, stores the value of the flag in *value, and returns +// true. On failure, returns false without changing *value. +bool ParseStringFlag(const char* str, const char* flag, std::string* value) { + // Gets the value of the flag as a string. + const char* const value_str = ParseFlagValue(str, flag, false); + + // Aborts if the parsing failed. + if (value_str == NULL) return false; + + // Sets *value to the value of the flag. + *value = value_str; + return true; +} + +// Determines whether a string has a prefix that Google Test uses for its +// flags, i.e., starts with GTEST_FLAG_PREFIX_ or GTEST_FLAG_PREFIX_DASH_. +// If Google Test detects that a command line flag has its prefix but is not +// recognized, it will print its help message. Flags starting with +// GTEST_INTERNAL_PREFIX_ followed by "internal_" are considered Google Test +// internal flags and do not trigger the help message. +static bool HasGoogleTestFlagPrefix(const char* str) { + return (SkipPrefix("--", &str) || + SkipPrefix("-", &str) || + SkipPrefix("/", &str)) && + !SkipPrefix(GTEST_FLAG_PREFIX_ "internal_", &str) && + (SkipPrefix(GTEST_FLAG_PREFIX_, &str) || + SkipPrefix(GTEST_FLAG_PREFIX_DASH_, &str)); +} + +// Prints a string containing code-encoded text. The following escape +// sequences can be used in the string to control the text color: +// +// @@ prints a single '@' character. +// @R changes the color to red. +// @G changes the color to green. +// @Y changes the color to yellow. +// @D changes to the default terminal text color. +// +// TODO(wan@google.com): Write tests for this once we add stdout +// capturing to Google Test. +static void PrintColorEncoded(const char* str) { + GTestColor color = COLOR_DEFAULT; // The current color. + + // Conceptually, we split the string into segments divided by escape + // sequences. Then we print one segment at a time. At the end of + // each iteration, the str pointer advances to the beginning of the + // next segment. + for (;;) { + const char* p = strchr(str, '@'); + if (p == NULL) { + ColoredPrintf(color, "%s", str); + return; + } + + ColoredPrintf(color, "%s", std::string(str, p).c_str()); + + const char ch = p[1]; + str = p + 2; + if (ch == '@') { + ColoredPrintf(color, "@"); + } else if (ch == 'D') { + color = COLOR_DEFAULT; + } else if (ch == 'R') { + color = COLOR_RED; + } else if (ch == 'G') { + color = COLOR_GREEN; + } else if (ch == 'Y') { + color = COLOR_YELLOW; + } else { + --str; + } + } +} + +static const char kColorEncodedHelpMessage[] = +"This program contains tests written using " GTEST_NAME_ ". You can use the\n" +"following command line flags to control its behavior:\n" +"\n" +"Test Selection:\n" +" @G--" GTEST_FLAG_PREFIX_ "list_tests@D\n" +" List the names of all tests instead of running them. The name of\n" +" TEST(Foo, Bar) is \"Foo.Bar\".\n" +" @G--" GTEST_FLAG_PREFIX_ "filter=@YPOSTIVE_PATTERNS" + "[@G-@YNEGATIVE_PATTERNS]@D\n" +" Run only the tests whose name matches one of the positive patterns but\n" +" none of the negative patterns. '?' matches any single character; '*'\n" +" matches any substring; ':' separates two patterns.\n" +" @G--" GTEST_FLAG_PREFIX_ "also_run_disabled_tests@D\n" +" Run all disabled tests too.\n" +"\n" +"Test Execution:\n" +" @G--" GTEST_FLAG_PREFIX_ "repeat=@Y[COUNT]@D\n" +" Run the tests repeatedly; use a negative count to repeat forever.\n" +" @G--" GTEST_FLAG_PREFIX_ "shuffle@D\n" +" Randomize tests' orders on every iteration.\n" +" @G--" GTEST_FLAG_PREFIX_ "random_seed=@Y[NUMBER]@D\n" +" Random number seed to use for shuffling test orders (between 1 and\n" +" 99999, or 0 to use a seed based on the current time).\n" +"\n" +"Test Output:\n" +" @G--" GTEST_FLAG_PREFIX_ "color=@Y(@Gyes@Y|@Gno@Y|@Gauto@Y)@D\n" +" Enable/disable colored output. The default is @Gauto@D.\n" +" -@G-" GTEST_FLAG_PREFIX_ "print_time=0@D\n" +" Don't print the elapsed time of each test.\n" +" @G--" GTEST_FLAG_PREFIX_ "output=xml@Y[@G:@YDIRECTORY_PATH@G" + GTEST_PATH_SEP_ "@Y|@G:@YFILE_PATH]@D\n" +" Generate an XML report in the given directory or with the given file\n" +" name. @YFILE_PATH@D defaults to @Gtest_details.xml@D.\n" +#if GTEST_CAN_STREAM_RESULTS_ +" @G--" GTEST_FLAG_PREFIX_ "stream_result_to=@YHOST@G:@YPORT@D\n" +" Stream test results to the given server.\n" +#endif // GTEST_CAN_STREAM_RESULTS_ +"\n" +"Assertion Behavior:\n" +#if GTEST_HAS_DEATH_TEST && !GTEST_OS_WINDOWS +" @G--" GTEST_FLAG_PREFIX_ "death_test_style=@Y(@Gfast@Y|@Gthreadsafe@Y)@D\n" +" Set the default death test style.\n" +#endif // GTEST_HAS_DEATH_TEST && !GTEST_OS_WINDOWS +" @G--" GTEST_FLAG_PREFIX_ "break_on_failure@D\n" +" Turn assertion failures into debugger break-points.\n" +" @G--" GTEST_FLAG_PREFIX_ "throw_on_failure@D\n" +" Turn assertion failures into C++ exceptions.\n" +" @G--" GTEST_FLAG_PREFIX_ "catch_exceptions=0@D\n" +" Do not report exceptions as test failures. Instead, allow them\n" +" to crash the program or throw a pop-up (on Windows).\n" +"\n" +"Except for @G--" GTEST_FLAG_PREFIX_ "list_tests@D, you can alternatively set " + "the corresponding\n" +"environment variable of a flag (all letters in upper-case). For example, to\n" +"disable colored text output, you can either specify @G--" GTEST_FLAG_PREFIX_ + "color=no@D or set\n" +"the @G" GTEST_FLAG_PREFIX_UPPER_ "COLOR@D environment variable to @Gno@D.\n" +"\n" +"For more information, please read the " GTEST_NAME_ " documentation at\n" +"@G" GTEST_PROJECT_URL_ "@D. If you find a bug in " GTEST_NAME_ "\n" +"(not one in your own code or tests), please report it to\n" +"@G<" GTEST_DEV_EMAIL_ ">@D.\n"; + +// Parses the command line for Google Test flags, without initializing +// other parts of Google Test. The type parameter CharType can be +// instantiated to either char or wchar_t. +template +void ParseGoogleTestFlagsOnlyImpl(int* argc, CharType** argv) { + for (int i = 1; i < *argc; i++) { + const std::string arg_string = StreamableToString(argv[i]); + const char* const arg = arg_string.c_str(); + + using internal::ParseBoolFlag; + using internal::ParseInt32Flag; + using internal::ParseStringFlag; + + // Do we see a Google Test flag? + if (ParseBoolFlag(arg, kAlsoRunDisabledTestsFlag, + >EST_FLAG(also_run_disabled_tests)) || + ParseBoolFlag(arg, kBreakOnFailureFlag, + >EST_FLAG(break_on_failure)) || + ParseBoolFlag(arg, kCatchExceptionsFlag, + >EST_FLAG(catch_exceptions)) || + ParseStringFlag(arg, kColorFlag, >EST_FLAG(color)) || + ParseStringFlag(arg, kDeathTestStyleFlag, + >EST_FLAG(death_test_style)) || + ParseBoolFlag(arg, kDeathTestUseFork, + >EST_FLAG(death_test_use_fork)) || + ParseStringFlag(arg, kFilterFlag, >EST_FLAG(filter)) || + ParseStringFlag(arg, kInternalRunDeathTestFlag, + >EST_FLAG(internal_run_death_test)) || + ParseBoolFlag(arg, kListTestsFlag, >EST_FLAG(list_tests)) || + ParseStringFlag(arg, kOutputFlag, >EST_FLAG(output)) || + ParseBoolFlag(arg, kPrintTimeFlag, >EST_FLAG(print_time)) || + ParseInt32Flag(arg, kRandomSeedFlag, >EST_FLAG(random_seed)) || + ParseInt32Flag(arg, kRepeatFlag, >EST_FLAG(repeat)) || + ParseBoolFlag(arg, kShuffleFlag, >EST_FLAG(shuffle)) || + ParseInt32Flag(arg, kStackTraceDepthFlag, + >EST_FLAG(stack_trace_depth)) || + ParseStringFlag(arg, kStreamResultToFlag, + >EST_FLAG(stream_result_to)) || + ParseBoolFlag(arg, kThrowOnFailureFlag, + >EST_FLAG(throw_on_failure)) + ) { + // Yes. Shift the remainder of the argv list left by one. Note + // that argv has (*argc + 1) elements, the last one always being + // NULL. The following loop moves the trailing NULL element as + // well. + for (int j = i; j != *argc; j++) { + argv[j] = argv[j + 1]; + } + + // Decrements the argument count. + (*argc)--; + + // We also need to decrement the iterator as we just removed + // an element. + i--; + } else if (arg_string == "--help" || arg_string == "-h" || + arg_string == "-?" || arg_string == "/?" || + HasGoogleTestFlagPrefix(arg)) { + // Both help flag and unrecognized Google Test flags (excluding + // internal ones) trigger help display. + g_help_flag = true; + } + } + + if (g_help_flag) { + // We print the help here instead of in RUN_ALL_TESTS(), as the + // latter may not be called at all if the user is using Google + // Test with another testing framework. + PrintColorEncoded(kColorEncodedHelpMessage); + } +} + +// Parses the command line for Google Test flags, without initializing +// other parts of Google Test. +void ParseGoogleTestFlagsOnly(int* argc, char** argv) { + ParseGoogleTestFlagsOnlyImpl(argc, argv); +} +void ParseGoogleTestFlagsOnly(int* argc, wchar_t** argv) { + ParseGoogleTestFlagsOnlyImpl(argc, argv); +} + +// The internal implementation of InitGoogleTest(). +// +// The type parameter CharType can be instantiated to either char or +// wchar_t. +template +void InitGoogleTestImpl(int* argc, CharType** argv) { + g_init_gtest_count++; + + // We don't want to run the initialization code twice. + if (g_init_gtest_count != 1) return; + + if (*argc <= 0) return; + + internal::g_executable_path = internal::StreamableToString(argv[0]); + +#if GTEST_HAS_DEATH_TEST + + g_argvs.clear(); + for (int i = 0; i != *argc; i++) { + g_argvs.push_back(StreamableToString(argv[i])); + } + +#endif // GTEST_HAS_DEATH_TEST + + ParseGoogleTestFlagsOnly(argc, argv); + GetUnitTestImpl()->PostFlagParsingInit(); +} + +} // namespace internal + +// Initializes Google Test. This must be called before calling +// RUN_ALL_TESTS(). In particular, it parses a command line for the +// flags that Google Test recognizes. Whenever a Google Test flag is +// seen, it is removed from argv, and *argc is decremented. +// +// No value is returned. Instead, the Google Test flag variables are +// updated. +// +// Calling the function for the second time has no user-visible effect. +void InitGoogleTest(int* argc, char** argv) { + internal::InitGoogleTestImpl(argc, argv); +} + +// This overloaded version can be used in Windows programs compiled in +// UNICODE mode. +void InitGoogleTest(int* argc, wchar_t** argv) { + internal::InitGoogleTestImpl(argc, argv); +} + +} // namespace testing diff --git a/thirdparty/protobuf-2.6.1/gtest/src/gtest_main.cc b/thirdparty/protobuf-2.6.1/gtest/src/gtest_main.cc new file mode 100644 index 00000000..f3028225 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/src/gtest_main.cc @@ -0,0 +1,38 @@ +// Copyright 2006, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +#include + +#include "gtest/gtest.h" + +GTEST_API_ int main(int argc, char **argv) { + printf("Running main() from gtest_main.cc\n"); + testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} diff --git a/thirdparty/protobuf-2.6.1/gtest/test/.deps/gtest_all_test.Po b/thirdparty/protobuf-2.6.1/gtest/test/.deps/gtest_all_test.Po new file mode 100644 index 00000000..9ce06a81 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/.deps/gtest_all_test.Po @@ -0,0 +1 @@ +# dummy diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest-death-test_ex_test.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest-death-test_ex_test.cc new file mode 100644 index 00000000..b50a13d5 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest-death-test_ex_test.cc @@ -0,0 +1,93 @@ +// Copyright 2010, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: vladl@google.com (Vlad Losev) +// +// Tests that verify interaction of exceptions and death tests. + +#include "gtest/gtest-death-test.h" +#include "gtest/gtest.h" + +#if GTEST_HAS_DEATH_TEST + +# if GTEST_HAS_SEH +# include // For RaiseException(). +# endif + +# include "gtest/gtest-spi.h" + +# if GTEST_HAS_EXCEPTIONS + +# include // For std::exception. + +// Tests that death tests report thrown exceptions as failures and that the +// exceptions do not escape death test macros. +TEST(CxxExceptionDeathTest, ExceptionIsFailure) { + try { + EXPECT_NONFATAL_FAILURE(EXPECT_DEATH(throw 1, ""), "threw an exception"); + } catch (...) { // NOLINT + FAIL() << "An exception escaped a death test macro invocation " + << "with catch_exceptions " + << (testing::GTEST_FLAG(catch_exceptions) ? "enabled" : "disabled"); + } +} + +class TestException : public std::exception { + public: + virtual const char* what() const throw() { return "exceptional message"; } +}; + +TEST(CxxExceptionDeathTest, PrintsMessageForStdExceptions) { + // Verifies that the exception message is quoted in the failure text. + EXPECT_NONFATAL_FAILURE(EXPECT_DEATH(throw TestException(), ""), + "exceptional message"); + // Verifies that the location is mentioned in the failure text. + EXPECT_NONFATAL_FAILURE(EXPECT_DEATH(throw TestException(), ""), + "gtest-death-test_ex_test.cc"); +} +# endif // GTEST_HAS_EXCEPTIONS + +# if GTEST_HAS_SEH +// Tests that enabling interception of SEH exceptions with the +// catch_exceptions flag does not interfere with SEH exceptions being +// treated as death by death tests. +TEST(SehExceptionDeasTest, CatchExceptionsDoesNotInterfere) { + EXPECT_DEATH(RaiseException(42, 0x0, 0, NULL), "") + << "with catch_exceptions " + << (testing::GTEST_FLAG(catch_exceptions) ? "enabled" : "disabled"); +} +# endif + +#endif // GTEST_HAS_DEATH_TEST + +int main(int argc, char** argv) { + testing::InitGoogleTest(&argc, argv); + testing::GTEST_FLAG(catch_exceptions) = GTEST_ENABLE_CATCH_EXCEPTIONS_ != 0; + return RUN_ALL_TESTS(); +} diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest-death-test_test.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest-death-test_test.cc new file mode 100644 index 00000000..e42c0136 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest-death-test_test.cc @@ -0,0 +1,1368 @@ +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) +// +// Tests for death tests. + +#include "gtest/gtest-death-test.h" +#include "gtest/gtest.h" +#include "gtest/internal/gtest-filepath.h" + +using testing::internal::AlwaysFalse; +using testing::internal::AlwaysTrue; + +#if GTEST_HAS_DEATH_TEST + +# if GTEST_OS_WINDOWS +# include // For chdir(). +# else +# include +# include // For waitpid. +# include // For std::numeric_limits. +# endif // GTEST_OS_WINDOWS + +# include +# include +# include + +# if GTEST_OS_LINUX +# include +# endif // GTEST_OS_LINUX + +# include "gtest/gtest-spi.h" + +// Indicates that this translation unit is part of Google Test's +// implementation. It must come before gtest-internal-inl.h is +// included, or there will be a compiler error. This trick is to +// prevent a user from accidentally including gtest-internal-inl.h in +// his code. +# define GTEST_IMPLEMENTATION_ 1 +# include "src/gtest-internal-inl.h" +# undef GTEST_IMPLEMENTATION_ + +namespace posix = ::testing::internal::posix; + +using testing::Message; +using testing::internal::DeathTest; +using testing::internal::DeathTestFactory; +using testing::internal::FilePath; +using testing::internal::GetLastErrnoDescription; +using testing::internal::GetUnitTestImpl; +using testing::internal::InDeathTestChild; +using testing::internal::ParseNaturalNumber; + +namespace testing { +namespace internal { + +// A helper class whose objects replace the death test factory for a +// single UnitTest object during their lifetimes. +class ReplaceDeathTestFactory { + public: + explicit ReplaceDeathTestFactory(DeathTestFactory* new_factory) + : unit_test_impl_(GetUnitTestImpl()) { + old_factory_ = unit_test_impl_->death_test_factory_.release(); + unit_test_impl_->death_test_factory_.reset(new_factory); + } + + ~ReplaceDeathTestFactory() { + unit_test_impl_->death_test_factory_.release(); + unit_test_impl_->death_test_factory_.reset(old_factory_); + } + private: + // Prevents copying ReplaceDeathTestFactory objects. + ReplaceDeathTestFactory(const ReplaceDeathTestFactory&); + void operator=(const ReplaceDeathTestFactory&); + + UnitTestImpl* unit_test_impl_; + DeathTestFactory* old_factory_; +}; + +} // namespace internal +} // namespace testing + +void DieWithMessage(const ::std::string& message) { + fprintf(stderr, "%s", message.c_str()); + fflush(stderr); // Make sure the text is printed before the process exits. + + // We call _exit() instead of exit(), as the former is a direct + // system call and thus safer in the presence of threads. exit() + // will invoke user-defined exit-hooks, which may do dangerous + // things that conflict with death tests. + // + // Some compilers can recognize that _exit() never returns and issue the + // 'unreachable code' warning for code following this function, unless + // fooled by a fake condition. + if (AlwaysTrue()) + _exit(1); +} + +void DieInside(const ::std::string& function) { + DieWithMessage("death inside " + function + "()."); +} + +// Tests that death tests work. + +class TestForDeathTest : public testing::Test { + protected: + TestForDeathTest() : original_dir_(FilePath::GetCurrentDir()) {} + + virtual ~TestForDeathTest() { + posix::ChDir(original_dir_.c_str()); + } + + // A static member function that's expected to die. + static void StaticMemberFunction() { DieInside("StaticMemberFunction"); } + + // A method of the test fixture that may die. + void MemberFunction() { + if (should_die_) + DieInside("MemberFunction"); + } + + // True iff MemberFunction() should die. + bool should_die_; + const FilePath original_dir_; +}; + +// A class with a member function that may die. +class MayDie { + public: + explicit MayDie(bool should_die) : should_die_(should_die) {} + + // A member function that may die. + void MemberFunction() const { + if (should_die_) + DieInside("MayDie::MemberFunction"); + } + + private: + // True iff MemberFunction() should die. + bool should_die_; +}; + +// A global function that's expected to die. +void GlobalFunction() { DieInside("GlobalFunction"); } + +// A non-void function that's expected to die. +int NonVoidFunction() { + DieInside("NonVoidFunction"); + return 1; +} + +// A unary function that may die. +void DieIf(bool should_die) { + if (should_die) + DieInside("DieIf"); +} + +// A binary function that may die. +bool DieIfLessThan(int x, int y) { + if (x < y) { + DieInside("DieIfLessThan"); + } + return true; +} + +// Tests that ASSERT_DEATH can be used outside a TEST, TEST_F, or test fixture. +void DeathTestSubroutine() { + EXPECT_DEATH(GlobalFunction(), "death.*GlobalFunction"); + ASSERT_DEATH(GlobalFunction(), "death.*GlobalFunction"); +} + +// Death in dbg, not opt. +int DieInDebugElse12(int* sideeffect) { + if (sideeffect) *sideeffect = 12; + +# ifndef NDEBUG + + DieInside("DieInDebugElse12"); + +# endif // NDEBUG + + return 12; +} + +# if GTEST_OS_WINDOWS + +// Tests the ExitedWithCode predicate. +TEST(ExitStatusPredicateTest, ExitedWithCode) { + // On Windows, the process's exit code is the same as its exit status, + // so the predicate just compares the its input with its parameter. + EXPECT_TRUE(testing::ExitedWithCode(0)(0)); + EXPECT_TRUE(testing::ExitedWithCode(1)(1)); + EXPECT_TRUE(testing::ExitedWithCode(42)(42)); + EXPECT_FALSE(testing::ExitedWithCode(0)(1)); + EXPECT_FALSE(testing::ExitedWithCode(1)(0)); +} + +# else + +// Returns the exit status of a process that calls _exit(2) with a +// given exit code. This is a helper function for the +// ExitStatusPredicateTest test suite. +static int NormalExitStatus(int exit_code) { + pid_t child_pid = fork(); + if (child_pid == 0) { + _exit(exit_code); + } + int status; + waitpid(child_pid, &status, 0); + return status; +} + +// Returns the exit status of a process that raises a given signal. +// If the signal does not cause the process to die, then it returns +// instead the exit status of a process that exits normally with exit +// code 1. This is a helper function for the ExitStatusPredicateTest +// test suite. +static int KilledExitStatus(int signum) { + pid_t child_pid = fork(); + if (child_pid == 0) { + raise(signum); + _exit(1); + } + int status; + waitpid(child_pid, &status, 0); + return status; +} + +// Tests the ExitedWithCode predicate. +TEST(ExitStatusPredicateTest, ExitedWithCode) { + const int status0 = NormalExitStatus(0); + const int status1 = NormalExitStatus(1); + const int status42 = NormalExitStatus(42); + const testing::ExitedWithCode pred0(0); + const testing::ExitedWithCode pred1(1); + const testing::ExitedWithCode pred42(42); + EXPECT_PRED1(pred0, status0); + EXPECT_PRED1(pred1, status1); + EXPECT_PRED1(pred42, status42); + EXPECT_FALSE(pred0(status1)); + EXPECT_FALSE(pred42(status0)); + EXPECT_FALSE(pred1(status42)); +} + +// Tests the KilledBySignal predicate. +TEST(ExitStatusPredicateTest, KilledBySignal) { + const int status_segv = KilledExitStatus(SIGSEGV); + const int status_kill = KilledExitStatus(SIGKILL); + const testing::KilledBySignal pred_segv(SIGSEGV); + const testing::KilledBySignal pred_kill(SIGKILL); + EXPECT_PRED1(pred_segv, status_segv); + EXPECT_PRED1(pred_kill, status_kill); + EXPECT_FALSE(pred_segv(status_kill)); + EXPECT_FALSE(pred_kill(status_segv)); +} + +# endif // GTEST_OS_WINDOWS + +// Tests that the death test macros expand to code which may or may not +// be followed by operator<<, and that in either case the complete text +// comprises only a single C++ statement. +TEST_F(TestForDeathTest, SingleStatement) { + if (AlwaysFalse()) + // This would fail if executed; this is a compilation test only + ASSERT_DEATH(return, ""); + + if (AlwaysTrue()) + EXPECT_DEATH(_exit(1), ""); + else + // This empty "else" branch is meant to ensure that EXPECT_DEATH + // doesn't expand into an "if" statement without an "else" + ; + + if (AlwaysFalse()) + ASSERT_DEATH(return, "") << "did not die"; + + if (AlwaysFalse()) + ; + else + EXPECT_DEATH(_exit(1), "") << 1 << 2 << 3; +} + +void DieWithEmbeddedNul() { + fprintf(stderr, "Hello%cmy null world.\n", '\0'); + fflush(stderr); + _exit(1); +} + +# if GTEST_USES_PCRE +// Tests that EXPECT_DEATH and ASSERT_DEATH work when the error +// message has a NUL character in it. +TEST_F(TestForDeathTest, EmbeddedNulInMessage) { + // TODO(wan@google.com): doesn't support matching strings + // with embedded NUL characters - find a way to workaround it. + EXPECT_DEATH(DieWithEmbeddedNul(), "my null world"); + ASSERT_DEATH(DieWithEmbeddedNul(), "my null world"); +} +# endif // GTEST_USES_PCRE + +// Tests that death test macros expand to code which interacts well with switch +// statements. +TEST_F(TestForDeathTest, SwitchStatement) { +// Microsoft compiler usually complains about switch statements without +// case labels. We suppress that warning for this test. +# ifdef _MSC_VER +# pragma warning(push) +# pragma warning(disable: 4065) +# endif // _MSC_VER + + switch (0) + default: + ASSERT_DEATH(_exit(1), "") << "exit in default switch handler"; + + switch (0) + case 0: + EXPECT_DEATH(_exit(1), "") << "exit in switch case"; + +# ifdef _MSC_VER +# pragma warning(pop) +# endif // _MSC_VER +} + +// Tests that a static member function can be used in a "fast" style +// death test. +TEST_F(TestForDeathTest, StaticMemberFunctionFastStyle) { + testing::GTEST_FLAG(death_test_style) = "fast"; + ASSERT_DEATH(StaticMemberFunction(), "death.*StaticMember"); +} + +// Tests that a method of the test fixture can be used in a "fast" +// style death test. +TEST_F(TestForDeathTest, MemberFunctionFastStyle) { + testing::GTEST_FLAG(death_test_style) = "fast"; + should_die_ = true; + EXPECT_DEATH(MemberFunction(), "inside.*MemberFunction"); +} + +void ChangeToRootDir() { posix::ChDir(GTEST_PATH_SEP_); } + +// Tests that death tests work even if the current directory has been +// changed. +TEST_F(TestForDeathTest, FastDeathTestInChangedDir) { + testing::GTEST_FLAG(death_test_style) = "fast"; + + ChangeToRootDir(); + EXPECT_EXIT(_exit(1), testing::ExitedWithCode(1), ""); + + ChangeToRootDir(); + ASSERT_DEATH(_exit(1), ""); +} + +# if GTEST_OS_LINUX +void SigprofAction(int, siginfo_t*, void*) { /* no op */ } + +// Sets SIGPROF action and ITIMER_PROF timer (interval: 1ms). +void SetSigprofActionAndTimer() { + struct itimerval timer; + timer.it_interval.tv_sec = 0; + timer.it_interval.tv_usec = 1; + timer.it_value = timer.it_interval; + ASSERT_EQ(0, setitimer(ITIMER_PROF, &timer, NULL)); + struct sigaction signal_action; + memset(&signal_action, 0, sizeof(signal_action)); + sigemptyset(&signal_action.sa_mask); + signal_action.sa_sigaction = SigprofAction; + signal_action.sa_flags = SA_RESTART | SA_SIGINFO; + ASSERT_EQ(0, sigaction(SIGPROF, &signal_action, NULL)); +} + +// Disables ITIMER_PROF timer and ignores SIGPROF signal. +void DisableSigprofActionAndTimer(struct sigaction* old_signal_action) { + struct itimerval timer; + timer.it_interval.tv_sec = 0; + timer.it_interval.tv_usec = 0; + timer.it_value = timer.it_interval; + ASSERT_EQ(0, setitimer(ITIMER_PROF, &timer, NULL)); + struct sigaction signal_action; + memset(&signal_action, 0, sizeof(signal_action)); + sigemptyset(&signal_action.sa_mask); + signal_action.sa_handler = SIG_IGN; + ASSERT_EQ(0, sigaction(SIGPROF, &signal_action, old_signal_action)); +} + +// Tests that death tests work when SIGPROF handler and timer are set. +TEST_F(TestForDeathTest, FastSigprofActionSet) { + testing::GTEST_FLAG(death_test_style) = "fast"; + SetSigprofActionAndTimer(); + EXPECT_DEATH(_exit(1), ""); + struct sigaction old_signal_action; + DisableSigprofActionAndTimer(&old_signal_action); + EXPECT_TRUE(old_signal_action.sa_sigaction == SigprofAction); +} + +TEST_F(TestForDeathTest, ThreadSafeSigprofActionSet) { + testing::GTEST_FLAG(death_test_style) = "threadsafe"; + SetSigprofActionAndTimer(); + EXPECT_DEATH(_exit(1), ""); + struct sigaction old_signal_action; + DisableSigprofActionAndTimer(&old_signal_action); + EXPECT_TRUE(old_signal_action.sa_sigaction == SigprofAction); +} +# endif // GTEST_OS_LINUX + +// Repeats a representative sample of death tests in the "threadsafe" style: + +TEST_F(TestForDeathTest, StaticMemberFunctionThreadsafeStyle) { + testing::GTEST_FLAG(death_test_style) = "threadsafe"; + ASSERT_DEATH(StaticMemberFunction(), "death.*StaticMember"); +} + +TEST_F(TestForDeathTest, MemberFunctionThreadsafeStyle) { + testing::GTEST_FLAG(death_test_style) = "threadsafe"; + should_die_ = true; + EXPECT_DEATH(MemberFunction(), "inside.*MemberFunction"); +} + +TEST_F(TestForDeathTest, ThreadsafeDeathTestInLoop) { + testing::GTEST_FLAG(death_test_style) = "threadsafe"; + + for (int i = 0; i < 3; ++i) + EXPECT_EXIT(_exit(i), testing::ExitedWithCode(i), "") << ": i = " << i; +} + +TEST_F(TestForDeathTest, ThreadsafeDeathTestInChangedDir) { + testing::GTEST_FLAG(death_test_style) = "threadsafe"; + + ChangeToRootDir(); + EXPECT_EXIT(_exit(1), testing::ExitedWithCode(1), ""); + + ChangeToRootDir(); + ASSERT_DEATH(_exit(1), ""); +} + +TEST_F(TestForDeathTest, MixedStyles) { + testing::GTEST_FLAG(death_test_style) = "threadsafe"; + EXPECT_DEATH(_exit(1), ""); + testing::GTEST_FLAG(death_test_style) = "fast"; + EXPECT_DEATH(_exit(1), ""); +} + +namespace { + +bool pthread_flag; + +void SetPthreadFlag() { + pthread_flag = true; +} + +} // namespace + +# if GTEST_HAS_CLONE && GTEST_HAS_PTHREAD + +TEST_F(TestForDeathTest, DoesNotExecuteAtforkHooks) { + if (!testing::GTEST_FLAG(death_test_use_fork)) { + testing::GTEST_FLAG(death_test_style) = "threadsafe"; + pthread_flag = false; + ASSERT_EQ(0, pthread_atfork(&SetPthreadFlag, NULL, NULL)); + ASSERT_DEATH(_exit(1), ""); + ASSERT_FALSE(pthread_flag); + } +} + +# endif // GTEST_HAS_CLONE && GTEST_HAS_PTHREAD + +// Tests that a method of another class can be used in a death test. +TEST_F(TestForDeathTest, MethodOfAnotherClass) { + const MayDie x(true); + ASSERT_DEATH(x.MemberFunction(), "MayDie\\:\\:MemberFunction"); +} + +// Tests that a global function can be used in a death test. +TEST_F(TestForDeathTest, GlobalFunction) { + EXPECT_DEATH(GlobalFunction(), "GlobalFunction"); +} + +// Tests that any value convertible to an RE works as a second +// argument to EXPECT_DEATH. +TEST_F(TestForDeathTest, AcceptsAnythingConvertibleToRE) { + static const char regex_c_str[] = "GlobalFunction"; + EXPECT_DEATH(GlobalFunction(), regex_c_str); + + const testing::internal::RE regex(regex_c_str); + EXPECT_DEATH(GlobalFunction(), regex); + +# if GTEST_HAS_GLOBAL_STRING + + const string regex_str(regex_c_str); + EXPECT_DEATH(GlobalFunction(), regex_str); + +# endif // GTEST_HAS_GLOBAL_STRING + + const ::std::string regex_std_str(regex_c_str); + EXPECT_DEATH(GlobalFunction(), regex_std_str); +} + +// Tests that a non-void function can be used in a death test. +TEST_F(TestForDeathTest, NonVoidFunction) { + ASSERT_DEATH(NonVoidFunction(), "NonVoidFunction"); +} + +// Tests that functions that take parameter(s) can be used in a death test. +TEST_F(TestForDeathTest, FunctionWithParameter) { + EXPECT_DEATH(DieIf(true), "DieIf\\(\\)"); + EXPECT_DEATH(DieIfLessThan(2, 3), "DieIfLessThan"); +} + +// Tests that ASSERT_DEATH can be used outside a TEST, TEST_F, or test fixture. +TEST_F(TestForDeathTest, OutsideFixture) { + DeathTestSubroutine(); +} + +// Tests that death tests can be done inside a loop. +TEST_F(TestForDeathTest, InsideLoop) { + for (int i = 0; i < 5; i++) { + EXPECT_DEATH(DieIfLessThan(-1, i), "DieIfLessThan") << "where i == " << i; + } +} + +// Tests that a compound statement can be used in a death test. +TEST_F(TestForDeathTest, CompoundStatement) { + EXPECT_DEATH({ // NOLINT + const int x = 2; + const int y = x + 1; + DieIfLessThan(x, y); + }, + "DieIfLessThan"); +} + +// Tests that code that doesn't die causes a death test to fail. +TEST_F(TestForDeathTest, DoesNotDie) { + EXPECT_NONFATAL_FAILURE(EXPECT_DEATH(DieIf(false), "DieIf"), + "failed to die"); +} + +// Tests that a death test fails when the error message isn't expected. +TEST_F(TestForDeathTest, ErrorMessageMismatch) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_DEATH(DieIf(true), "DieIfLessThan") << "End of death test message."; + }, "died but not with expected error"); +} + +// On exit, *aborted will be true iff the EXPECT_DEATH() statement +// aborted the function. +void ExpectDeathTestHelper(bool* aborted) { + *aborted = true; + EXPECT_DEATH(DieIf(false), "DieIf"); // This assertion should fail. + *aborted = false; +} + +// Tests that EXPECT_DEATH doesn't abort the test on failure. +TEST_F(TestForDeathTest, EXPECT_DEATH) { + bool aborted = true; + EXPECT_NONFATAL_FAILURE(ExpectDeathTestHelper(&aborted), + "failed to die"); + EXPECT_FALSE(aborted); +} + +// Tests that ASSERT_DEATH does abort the test on failure. +TEST_F(TestForDeathTest, ASSERT_DEATH) { + static bool aborted; + EXPECT_FATAL_FAILURE({ // NOLINT + aborted = true; + ASSERT_DEATH(DieIf(false), "DieIf"); // This assertion should fail. + aborted = false; + }, "failed to die"); + EXPECT_TRUE(aborted); +} + +// Tests that EXPECT_DEATH evaluates the arguments exactly once. +TEST_F(TestForDeathTest, SingleEvaluation) { + int x = 3; + EXPECT_DEATH(DieIf((++x) == 4), "DieIf"); + + const char* regex = "DieIf"; + const char* regex_save = regex; + EXPECT_DEATH(DieIfLessThan(3, 4), regex++); + EXPECT_EQ(regex_save + 1, regex); +} + +// Tests that run-away death tests are reported as failures. +TEST_F(TestForDeathTest, RunawayIsFailure) { + EXPECT_NONFATAL_FAILURE(EXPECT_DEATH(static_cast(0), "Foo"), + "failed to die."); +} + +// Tests that death tests report executing 'return' in the statement as +// failure. +TEST_F(TestForDeathTest, ReturnIsFailure) { + EXPECT_FATAL_FAILURE(ASSERT_DEATH(return, "Bar"), + "illegal return in test statement."); +} + +// Tests that EXPECT_DEBUG_DEATH works as expected, that is, you can stream a +// message to it, and in debug mode it: +// 1. Asserts on death. +// 2. Has no side effect. +// +// And in opt mode, it: +// 1. Has side effects but does not assert. +TEST_F(TestForDeathTest, TestExpectDebugDeath) { + int sideeffect = 0; + + EXPECT_DEBUG_DEATH(DieInDebugElse12(&sideeffect), "death.*DieInDebugElse12") + << "Must accept a streamed message"; + +# ifdef NDEBUG + + // Checks that the assignment occurs in opt mode (sideeffect). + EXPECT_EQ(12, sideeffect); + +# else + + // Checks that the assignment does not occur in dbg mode (no sideeffect). + EXPECT_EQ(0, sideeffect); + +# endif +} + +// Tests that ASSERT_DEBUG_DEATH works as expected, that is, you can stream a +// message to it, and in debug mode it: +// 1. Asserts on death. +// 2. Has no side effect. +// +// And in opt mode, it: +// 1. Has side effects but does not assert. +TEST_F(TestForDeathTest, TestAssertDebugDeath) { + int sideeffect = 0; + + ASSERT_DEBUG_DEATH(DieInDebugElse12(&sideeffect), "death.*DieInDebugElse12") + << "Must accept a streamed message"; + +# ifdef NDEBUG + + // Checks that the assignment occurs in opt mode (sideeffect). + EXPECT_EQ(12, sideeffect); + +# else + + // Checks that the assignment does not occur in dbg mode (no sideeffect). + EXPECT_EQ(0, sideeffect); + +# endif +} + +# ifndef NDEBUG + +void ExpectDebugDeathHelper(bool* aborted) { + *aborted = true; + EXPECT_DEBUG_DEATH(return, "") << "This is expected to fail."; + *aborted = false; +} + +# if GTEST_OS_WINDOWS +TEST(PopUpDeathTest, DoesNotShowPopUpOnAbort) { + printf("This test should be considered failing if it shows " + "any pop-up dialogs.\n"); + fflush(stdout); + + EXPECT_DEATH({ + testing::GTEST_FLAG(catch_exceptions) = false; + abort(); + }, ""); +} +# endif // GTEST_OS_WINDOWS + +// Tests that EXPECT_DEBUG_DEATH in debug mode does not abort +// the function. +TEST_F(TestForDeathTest, ExpectDebugDeathDoesNotAbort) { + bool aborted = true; + EXPECT_NONFATAL_FAILURE(ExpectDebugDeathHelper(&aborted), ""); + EXPECT_FALSE(aborted); +} + +void AssertDebugDeathHelper(bool* aborted) { + *aborted = true; + ASSERT_DEBUG_DEATH(return, "") << "This is expected to fail."; + *aborted = false; +} + +// Tests that ASSERT_DEBUG_DEATH in debug mode aborts the function on +// failure. +TEST_F(TestForDeathTest, AssertDebugDeathAborts) { + static bool aborted; + aborted = false; + EXPECT_FATAL_FAILURE(AssertDebugDeathHelper(&aborted), ""); + EXPECT_TRUE(aborted); +} + +# endif // _NDEBUG + +// Tests the *_EXIT family of macros, using a variety of predicates. +static void TestExitMacros() { + EXPECT_EXIT(_exit(1), testing::ExitedWithCode(1), ""); + ASSERT_EXIT(_exit(42), testing::ExitedWithCode(42), ""); + +# if GTEST_OS_WINDOWS + + // Of all signals effects on the process exit code, only those of SIGABRT + // are documented on Windows. + // See http://msdn.microsoft.com/en-us/library/dwwzkt4c(VS.71).aspx. + EXPECT_EXIT(raise(SIGABRT), testing::ExitedWithCode(3), "") << "b_ar"; + +# else + + EXPECT_EXIT(raise(SIGKILL), testing::KilledBySignal(SIGKILL), "") << "foo"; + ASSERT_EXIT(raise(SIGUSR2), testing::KilledBySignal(SIGUSR2), "") << "bar"; + + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_EXIT(_exit(0), testing::KilledBySignal(SIGSEGV), "") + << "This failure is expected, too."; + }, "This failure is expected, too."); + +# endif // GTEST_OS_WINDOWS + + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_EXIT(raise(SIGSEGV), testing::ExitedWithCode(0), "") + << "This failure is expected."; + }, "This failure is expected."); +} + +TEST_F(TestForDeathTest, ExitMacros) { + TestExitMacros(); +} + +TEST_F(TestForDeathTest, ExitMacrosUsingFork) { + testing::GTEST_FLAG(death_test_use_fork) = true; + TestExitMacros(); +} + +TEST_F(TestForDeathTest, InvalidStyle) { + testing::GTEST_FLAG(death_test_style) = "rococo"; + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_DEATH(_exit(0), "") << "This failure is expected."; + }, "This failure is expected."); +} + +TEST_F(TestForDeathTest, DeathTestFailedOutput) { + testing::GTEST_FLAG(death_test_style) = "fast"; + EXPECT_NONFATAL_FAILURE( + EXPECT_DEATH(DieWithMessage("death\n"), + "expected message"), + "Actual msg:\n" + "[ DEATH ] death\n"); +} + +TEST_F(TestForDeathTest, DeathTestUnexpectedReturnOutput) { + testing::GTEST_FLAG(death_test_style) = "fast"; + EXPECT_NONFATAL_FAILURE( + EXPECT_DEATH({ + fprintf(stderr, "returning\n"); + fflush(stderr); + return; + }, ""), + " Result: illegal return in test statement.\n" + " Error msg:\n" + "[ DEATH ] returning\n"); +} + +TEST_F(TestForDeathTest, DeathTestBadExitCodeOutput) { + testing::GTEST_FLAG(death_test_style) = "fast"; + EXPECT_NONFATAL_FAILURE( + EXPECT_EXIT(DieWithMessage("exiting with rc 1\n"), + testing::ExitedWithCode(3), + "expected message"), + " Result: died but not with expected exit code:\n" + " Exited with exit status 1\n" + "Actual msg:\n" + "[ DEATH ] exiting with rc 1\n"); +} + +TEST_F(TestForDeathTest, DeathTestMultiLineMatchFail) { + testing::GTEST_FLAG(death_test_style) = "fast"; + EXPECT_NONFATAL_FAILURE( + EXPECT_DEATH(DieWithMessage("line 1\nline 2\nline 3\n"), + "line 1\nxyz\nline 3\n"), + "Actual msg:\n" + "[ DEATH ] line 1\n" + "[ DEATH ] line 2\n" + "[ DEATH ] line 3\n"); +} + +TEST_F(TestForDeathTest, DeathTestMultiLineMatchPass) { + testing::GTEST_FLAG(death_test_style) = "fast"; + EXPECT_DEATH(DieWithMessage("line 1\nline 2\nline 3\n"), + "line 1\nline 2\nline 3\n"); +} + +// A DeathTestFactory that returns MockDeathTests. +class MockDeathTestFactory : public DeathTestFactory { + public: + MockDeathTestFactory(); + virtual bool Create(const char* statement, + const ::testing::internal::RE* regex, + const char* file, int line, DeathTest** test); + + // Sets the parameters for subsequent calls to Create. + void SetParameters(bool create, DeathTest::TestRole role, + int status, bool passed); + + // Accessors. + int AssumeRoleCalls() const { return assume_role_calls_; } + int WaitCalls() const { return wait_calls_; } + int PassedCalls() const { return passed_args_.size(); } + bool PassedArgument(int n) const { return passed_args_[n]; } + int AbortCalls() const { return abort_args_.size(); } + DeathTest::AbortReason AbortArgument(int n) const { + return abort_args_[n]; + } + bool TestDeleted() const { return test_deleted_; } + + private: + friend class MockDeathTest; + // If true, Create will return a MockDeathTest; otherwise it returns + // NULL. + bool create_; + // The value a MockDeathTest will return from its AssumeRole method. + DeathTest::TestRole role_; + // The value a MockDeathTest will return from its Wait method. + int status_; + // The value a MockDeathTest will return from its Passed method. + bool passed_; + + // Number of times AssumeRole was called. + int assume_role_calls_; + // Number of times Wait was called. + int wait_calls_; + // The arguments to the calls to Passed since the last call to + // SetParameters. + std::vector passed_args_; + // The arguments to the calls to Abort since the last call to + // SetParameters. + std::vector abort_args_; + // True if the last MockDeathTest returned by Create has been + // deleted. + bool test_deleted_; +}; + + +// A DeathTest implementation useful in testing. It returns values set +// at its creation from its various inherited DeathTest methods, and +// reports calls to those methods to its parent MockDeathTestFactory +// object. +class MockDeathTest : public DeathTest { + public: + MockDeathTest(MockDeathTestFactory *parent, + TestRole role, int status, bool passed) : + parent_(parent), role_(role), status_(status), passed_(passed) { + } + virtual ~MockDeathTest() { + parent_->test_deleted_ = true; + } + virtual TestRole AssumeRole() { + ++parent_->assume_role_calls_; + return role_; + } + virtual int Wait() { + ++parent_->wait_calls_; + return status_; + } + virtual bool Passed(bool exit_status_ok) { + parent_->passed_args_.push_back(exit_status_ok); + return passed_; + } + virtual void Abort(AbortReason reason) { + parent_->abort_args_.push_back(reason); + } + + private: + MockDeathTestFactory* const parent_; + const TestRole role_; + const int status_; + const bool passed_; +}; + + +// MockDeathTestFactory constructor. +MockDeathTestFactory::MockDeathTestFactory() + : create_(true), + role_(DeathTest::OVERSEE_TEST), + status_(0), + passed_(true), + assume_role_calls_(0), + wait_calls_(0), + passed_args_(), + abort_args_() { +} + + +// Sets the parameters for subsequent calls to Create. +void MockDeathTestFactory::SetParameters(bool create, + DeathTest::TestRole role, + int status, bool passed) { + create_ = create; + role_ = role; + status_ = status; + passed_ = passed; + + assume_role_calls_ = 0; + wait_calls_ = 0; + passed_args_.clear(); + abort_args_.clear(); +} + + +// Sets test to NULL (if create_ is false) or to the address of a new +// MockDeathTest object with parameters taken from the last call +// to SetParameters (if create_ is true). Always returns true. +bool MockDeathTestFactory::Create(const char* /*statement*/, + const ::testing::internal::RE* /*regex*/, + const char* /*file*/, + int /*line*/, + DeathTest** test) { + test_deleted_ = false; + if (create_) { + *test = new MockDeathTest(this, role_, status_, passed_); + } else { + *test = NULL; + } + return true; +} + +// A test fixture for testing the logic of the GTEST_DEATH_TEST_ macro. +// It installs a MockDeathTestFactory that is used for the duration +// of the test case. +class MacroLogicDeathTest : public testing::Test { + protected: + static testing::internal::ReplaceDeathTestFactory* replacer_; + static MockDeathTestFactory* factory_; + + static void SetUpTestCase() { + factory_ = new MockDeathTestFactory; + replacer_ = new testing::internal::ReplaceDeathTestFactory(factory_); + } + + static void TearDownTestCase() { + delete replacer_; + replacer_ = NULL; + delete factory_; + factory_ = NULL; + } + + // Runs a death test that breaks the rules by returning. Such a death + // test cannot be run directly from a test routine that uses a + // MockDeathTest, or the remainder of the routine will not be executed. + static void RunReturningDeathTest(bool* flag) { + ASSERT_DEATH({ // NOLINT + *flag = true; + return; + }, ""); + } +}; + +testing::internal::ReplaceDeathTestFactory* MacroLogicDeathTest::replacer_ + = NULL; +MockDeathTestFactory* MacroLogicDeathTest::factory_ = NULL; + + +// Test that nothing happens when the factory doesn't return a DeathTest: +TEST_F(MacroLogicDeathTest, NothingHappens) { + bool flag = false; + factory_->SetParameters(false, DeathTest::OVERSEE_TEST, 0, true); + EXPECT_DEATH(flag = true, ""); + EXPECT_FALSE(flag); + EXPECT_EQ(0, factory_->AssumeRoleCalls()); + EXPECT_EQ(0, factory_->WaitCalls()); + EXPECT_EQ(0, factory_->PassedCalls()); + EXPECT_EQ(0, factory_->AbortCalls()); + EXPECT_FALSE(factory_->TestDeleted()); +} + +// Test that the parent process doesn't run the death test code, +// and that the Passed method returns false when the (simulated) +// child process exits with status 0: +TEST_F(MacroLogicDeathTest, ChildExitsSuccessfully) { + bool flag = false; + factory_->SetParameters(true, DeathTest::OVERSEE_TEST, 0, true); + EXPECT_DEATH(flag = true, ""); + EXPECT_FALSE(flag); + EXPECT_EQ(1, factory_->AssumeRoleCalls()); + EXPECT_EQ(1, factory_->WaitCalls()); + ASSERT_EQ(1, factory_->PassedCalls()); + EXPECT_FALSE(factory_->PassedArgument(0)); + EXPECT_EQ(0, factory_->AbortCalls()); + EXPECT_TRUE(factory_->TestDeleted()); +} + +// Tests that the Passed method was given the argument "true" when +// the (simulated) child process exits with status 1: +TEST_F(MacroLogicDeathTest, ChildExitsUnsuccessfully) { + bool flag = false; + factory_->SetParameters(true, DeathTest::OVERSEE_TEST, 1, true); + EXPECT_DEATH(flag = true, ""); + EXPECT_FALSE(flag); + EXPECT_EQ(1, factory_->AssumeRoleCalls()); + EXPECT_EQ(1, factory_->WaitCalls()); + ASSERT_EQ(1, factory_->PassedCalls()); + EXPECT_TRUE(factory_->PassedArgument(0)); + EXPECT_EQ(0, factory_->AbortCalls()); + EXPECT_TRUE(factory_->TestDeleted()); +} + +// Tests that the (simulated) child process executes the death test +// code, and is aborted with the correct AbortReason if it +// executes a return statement. +TEST_F(MacroLogicDeathTest, ChildPerformsReturn) { + bool flag = false; + factory_->SetParameters(true, DeathTest::EXECUTE_TEST, 0, true); + RunReturningDeathTest(&flag); + EXPECT_TRUE(flag); + EXPECT_EQ(1, factory_->AssumeRoleCalls()); + EXPECT_EQ(0, factory_->WaitCalls()); + EXPECT_EQ(0, factory_->PassedCalls()); + EXPECT_EQ(1, factory_->AbortCalls()); + EXPECT_EQ(DeathTest::TEST_ENCOUNTERED_RETURN_STATEMENT, + factory_->AbortArgument(0)); + EXPECT_TRUE(factory_->TestDeleted()); +} + +// Tests that the (simulated) child process is aborted with the +// correct AbortReason if it does not die. +TEST_F(MacroLogicDeathTest, ChildDoesNotDie) { + bool flag = false; + factory_->SetParameters(true, DeathTest::EXECUTE_TEST, 0, true); + EXPECT_DEATH(flag = true, ""); + EXPECT_TRUE(flag); + EXPECT_EQ(1, factory_->AssumeRoleCalls()); + EXPECT_EQ(0, factory_->WaitCalls()); + EXPECT_EQ(0, factory_->PassedCalls()); + // This time there are two calls to Abort: one since the test didn't + // die, and another from the ReturnSentinel when it's destroyed. The + // sentinel normally isn't destroyed if a test doesn't die, since + // _exit(2) is called in that case by ForkingDeathTest, but not by + // our MockDeathTest. + ASSERT_EQ(2, factory_->AbortCalls()); + EXPECT_EQ(DeathTest::TEST_DID_NOT_DIE, + factory_->AbortArgument(0)); + EXPECT_EQ(DeathTest::TEST_ENCOUNTERED_RETURN_STATEMENT, + factory_->AbortArgument(1)); + EXPECT_TRUE(factory_->TestDeleted()); +} + +// Tests that a successful death test does not register a successful +// test part. +TEST(SuccessRegistrationDeathTest, NoSuccessPart) { + EXPECT_DEATH(_exit(1), ""); + EXPECT_EQ(0, GetUnitTestImpl()->current_test_result()->total_part_count()); +} + +TEST(StreamingAssertionsDeathTest, DeathTest) { + EXPECT_DEATH(_exit(1), "") << "unexpected failure"; + ASSERT_DEATH(_exit(1), "") << "unexpected failure"; + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_DEATH(_exit(0), "") << "expected failure"; + }, "expected failure"); + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_DEATH(_exit(0), "") << "expected failure"; + }, "expected failure"); +} + +// Tests that GetLastErrnoDescription returns an empty string when the +// last error is 0 and non-empty string when it is non-zero. +TEST(GetLastErrnoDescription, GetLastErrnoDescriptionWorks) { + errno = ENOENT; + EXPECT_STRNE("", GetLastErrnoDescription().c_str()); + errno = 0; + EXPECT_STREQ("", GetLastErrnoDescription().c_str()); +} + +# if GTEST_OS_WINDOWS +TEST(AutoHandleTest, AutoHandleWorks) { + HANDLE handle = ::CreateEvent(NULL, FALSE, FALSE, NULL); + ASSERT_NE(INVALID_HANDLE_VALUE, handle); + + // Tests that the AutoHandle is correctly initialized with a handle. + testing::internal::AutoHandle auto_handle(handle); + EXPECT_EQ(handle, auto_handle.Get()); + + // Tests that Reset assigns INVALID_HANDLE_VALUE. + // Note that this cannot verify whether the original handle is closed. + auto_handle.Reset(); + EXPECT_EQ(INVALID_HANDLE_VALUE, auto_handle.Get()); + + // Tests that Reset assigns the new handle. + // Note that this cannot verify whether the original handle is closed. + handle = ::CreateEvent(NULL, FALSE, FALSE, NULL); + ASSERT_NE(INVALID_HANDLE_VALUE, handle); + auto_handle.Reset(handle); + EXPECT_EQ(handle, auto_handle.Get()); + + // Tests that AutoHandle contains INVALID_HANDLE_VALUE by default. + testing::internal::AutoHandle auto_handle2; + EXPECT_EQ(INVALID_HANDLE_VALUE, auto_handle2.Get()); +} +# endif // GTEST_OS_WINDOWS + +# if GTEST_OS_WINDOWS +typedef unsigned __int64 BiggestParsable; +typedef signed __int64 BiggestSignedParsable; +const BiggestParsable kBiggestParsableMax = ULLONG_MAX; +const BiggestSignedParsable kBiggestSignedParsableMax = LLONG_MAX; +# else +typedef unsigned long long BiggestParsable; +typedef signed long long BiggestSignedParsable; +const BiggestParsable kBiggestParsableMax = + ::std::numeric_limits::max(); +const BiggestSignedParsable kBiggestSignedParsableMax = + ::std::numeric_limits::max(); +# endif // GTEST_OS_WINDOWS + +TEST(ParseNaturalNumberTest, RejectsInvalidFormat) { + BiggestParsable result = 0; + + // Rejects non-numbers. + EXPECT_FALSE(ParseNaturalNumber("non-number string", &result)); + + // Rejects numbers with whitespace prefix. + EXPECT_FALSE(ParseNaturalNumber(" 123", &result)); + + // Rejects negative numbers. + EXPECT_FALSE(ParseNaturalNumber("-123", &result)); + + // Rejects numbers starting with a plus sign. + EXPECT_FALSE(ParseNaturalNumber("+123", &result)); + errno = 0; +} + +TEST(ParseNaturalNumberTest, RejectsOverflownNumbers) { + BiggestParsable result = 0; + + EXPECT_FALSE(ParseNaturalNumber("99999999999999999999999", &result)); + + signed char char_result = 0; + EXPECT_FALSE(ParseNaturalNumber("200", &char_result)); + errno = 0; +} + +TEST(ParseNaturalNumberTest, AcceptsValidNumbers) { + BiggestParsable result = 0; + + result = 0; + ASSERT_TRUE(ParseNaturalNumber("123", &result)); + EXPECT_EQ(123U, result); + + // Check 0 as an edge case. + result = 1; + ASSERT_TRUE(ParseNaturalNumber("0", &result)); + EXPECT_EQ(0U, result); + + result = 1; + ASSERT_TRUE(ParseNaturalNumber("00000", &result)); + EXPECT_EQ(0U, result); +} + +TEST(ParseNaturalNumberTest, AcceptsTypeLimits) { + Message msg; + msg << kBiggestParsableMax; + + BiggestParsable result = 0; + EXPECT_TRUE(ParseNaturalNumber(msg.GetString(), &result)); + EXPECT_EQ(kBiggestParsableMax, result); + + Message msg2; + msg2 << kBiggestSignedParsableMax; + + BiggestSignedParsable signed_result = 0; + EXPECT_TRUE(ParseNaturalNumber(msg2.GetString(), &signed_result)); + EXPECT_EQ(kBiggestSignedParsableMax, signed_result); + + Message msg3; + msg3 << INT_MAX; + + int int_result = 0; + EXPECT_TRUE(ParseNaturalNumber(msg3.GetString(), &int_result)); + EXPECT_EQ(INT_MAX, int_result); + + Message msg4; + msg4 << UINT_MAX; + + unsigned int uint_result = 0; + EXPECT_TRUE(ParseNaturalNumber(msg4.GetString(), &uint_result)); + EXPECT_EQ(UINT_MAX, uint_result); +} + +TEST(ParseNaturalNumberTest, WorksForShorterIntegers) { + short short_result = 0; + ASSERT_TRUE(ParseNaturalNumber("123", &short_result)); + EXPECT_EQ(123, short_result); + + signed char char_result = 0; + ASSERT_TRUE(ParseNaturalNumber("123", &char_result)); + EXPECT_EQ(123, char_result); +} + +# if GTEST_OS_WINDOWS +TEST(EnvironmentTest, HandleFitsIntoSizeT) { + // TODO(vladl@google.com): Remove this test after this condition is verified + // in a static assertion in gtest-death-test.cc in the function + // GetStatusFileDescriptor. + ASSERT_TRUE(sizeof(HANDLE) <= sizeof(size_t)); +} +# endif // GTEST_OS_WINDOWS + +// Tests that EXPECT_DEATH_IF_SUPPORTED/ASSERT_DEATH_IF_SUPPORTED trigger +// failures when death tests are available on the system. +TEST(ConditionalDeathMacrosDeathTest, ExpectsDeathWhenDeathTestsAvailable) { + EXPECT_DEATH_IF_SUPPORTED(DieInside("CondDeathTestExpectMacro"), + "death inside CondDeathTestExpectMacro"); + ASSERT_DEATH_IF_SUPPORTED(DieInside("CondDeathTestAssertMacro"), + "death inside CondDeathTestAssertMacro"); + + // Empty statement will not crash, which must trigger a failure. + EXPECT_NONFATAL_FAILURE(EXPECT_DEATH_IF_SUPPORTED(;, ""), ""); + EXPECT_FATAL_FAILURE(ASSERT_DEATH_IF_SUPPORTED(;, ""), ""); +} + +#else + +using testing::internal::CaptureStderr; +using testing::internal::GetCapturedStderr; + +// Tests that EXPECT_DEATH_IF_SUPPORTED/ASSERT_DEATH_IF_SUPPORTED are still +// defined but do not trigger failures when death tests are not available on +// the system. +TEST(ConditionalDeathMacrosTest, WarnsWhenDeathTestsNotAvailable) { + // Empty statement will not crash, but that should not trigger a failure + // when death tests are not supported. + CaptureStderr(); + EXPECT_DEATH_IF_SUPPORTED(;, ""); + std::string output = GetCapturedStderr(); + ASSERT_TRUE(NULL != strstr(output.c_str(), + "Death tests are not supported on this platform")); + ASSERT_TRUE(NULL != strstr(output.c_str(), ";")); + + // The streamed message should not be printed as there is no test failure. + CaptureStderr(); + EXPECT_DEATH_IF_SUPPORTED(;, "") << "streamed message"; + output = GetCapturedStderr(); + ASSERT_TRUE(NULL == strstr(output.c_str(), "streamed message")); + + CaptureStderr(); + ASSERT_DEATH_IF_SUPPORTED(;, ""); // NOLINT + output = GetCapturedStderr(); + ASSERT_TRUE(NULL != strstr(output.c_str(), + "Death tests are not supported on this platform")); + ASSERT_TRUE(NULL != strstr(output.c_str(), ";")); + + CaptureStderr(); + ASSERT_DEATH_IF_SUPPORTED(;, "") << "streamed message"; // NOLINT + output = GetCapturedStderr(); + ASSERT_TRUE(NULL == strstr(output.c_str(), "streamed message")); +} + +void FuncWithAssert(int* n) { + ASSERT_DEATH_IF_SUPPORTED(return;, ""); + (*n)++; +} + +// Tests that ASSERT_DEATH_IF_SUPPORTED does not return from the current +// function (as ASSERT_DEATH does) if death tests are not supported. +TEST(ConditionalDeathMacrosTest, AssertDeatDoesNotReturnhIfUnsupported) { + int n = 0; + FuncWithAssert(&n); + EXPECT_EQ(1, n); +} +#endif // GTEST_HAS_DEATH_TEST + +// Tests that the death test macros expand to code which may or may not +// be followed by operator<<, and that in either case the complete text +// comprises only a single C++ statement. +// +// The syntax should work whether death tests are available or not. +TEST(ConditionalDeathMacrosSyntaxDeathTest, SingleStatement) { + if (AlwaysFalse()) + // This would fail if executed; this is a compilation test only + ASSERT_DEATH_IF_SUPPORTED(return, ""); + + if (AlwaysTrue()) + EXPECT_DEATH_IF_SUPPORTED(_exit(1), ""); + else + // This empty "else" branch is meant to ensure that EXPECT_DEATH + // doesn't expand into an "if" statement without an "else" + ; // NOLINT + + if (AlwaysFalse()) + ASSERT_DEATH_IF_SUPPORTED(return, "") << "did not die"; + + if (AlwaysFalse()) + ; // NOLINT + else + EXPECT_DEATH_IF_SUPPORTED(_exit(1), "") << 1 << 2 << 3; +} + +// Tests that conditional death test macros expand to code which interacts +// well with switch statements. +TEST(ConditionalDeathMacrosSyntaxDeathTest, SwitchStatement) { +// Microsoft compiler usually complains about switch statements without +// case labels. We suppress that warning for this test. +#ifdef _MSC_VER +# pragma warning(push) +# pragma warning(disable: 4065) +#endif // _MSC_VER + + switch (0) + default: + ASSERT_DEATH_IF_SUPPORTED(_exit(1), "") + << "exit in default switch handler"; + + switch (0) + case 0: + EXPECT_DEATH_IF_SUPPORTED(_exit(1), "") << "exit in switch case"; + +#ifdef _MSC_VER +# pragma warning(pop) +#endif // _MSC_VER +} + +TEST(InDeathTestChildDeathTest, ReportsDeathTestCorrectlyInFastStyle) { + testing::GTEST_FLAG(death_test_style) = "fast"; + EXPECT_FALSE(InDeathTestChild()); + EXPECT_DEATH({ + fprintf(stderr, InDeathTestChild() ? "Inside" : "Outside"); + fflush(stderr); + _exit(1); + }, "Inside"); +} + +TEST(InDeathTestChildDeathTest, ReportsDeathTestCorrectlyInThreadSafeStyle) { + testing::GTEST_FLAG(death_test_style) = "threadsafe"; + EXPECT_FALSE(InDeathTestChild()); + EXPECT_DEATH({ + fprintf(stderr, InDeathTestChild() ? "Inside" : "Outside"); + fflush(stderr); + _exit(1); + }, "Inside"); +} + +// Tests that a test case whose name ends with "DeathTest" works fine +// on Windows. +TEST(NotADeathTest, Test) { + SUCCEED(); +} diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest-filepath_test.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest-filepath_test.cc new file mode 100644 index 00000000..ae9f55a0 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest-filepath_test.cc @@ -0,0 +1,680 @@ +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Authors: keith.ray@gmail.com (Keith Ray) +// +// Google Test filepath utilities +// +// This file tests classes and functions used internally by +// Google Test. They are subject to change without notice. +// +// This file is #included from gtest_unittest.cc, to avoid changing +// build or make-files for some existing Google Test clients. Do not +// #include this file anywhere else! + +#include "gtest/internal/gtest-filepath.h" +#include "gtest/gtest.h" + +// Indicates that this translation unit is part of Google Test's +// implementation. It must come before gtest-internal-inl.h is +// included, or there will be a compiler error. This trick is to +// prevent a user from accidentally including gtest-internal-inl.h in +// his code. +#define GTEST_IMPLEMENTATION_ 1 +#include "src/gtest-internal-inl.h" +#undef GTEST_IMPLEMENTATION_ + +#if GTEST_OS_WINDOWS_MOBILE +# include // NOLINT +#elif GTEST_OS_WINDOWS +# include // NOLINT +#endif // GTEST_OS_WINDOWS_MOBILE + +namespace testing { +namespace internal { +namespace { + +#if GTEST_OS_WINDOWS_MOBILE +// TODO(wan@google.com): Move these to the POSIX adapter section in +// gtest-port.h. + +// Windows CE doesn't have the remove C function. +int remove(const char* path) { + LPCWSTR wpath = String::AnsiToUtf16(path); + int ret = DeleteFile(wpath) ? 0 : -1; + delete [] wpath; + return ret; +} +// Windows CE doesn't have the _rmdir C function. +int _rmdir(const char* path) { + FilePath filepath(path); + LPCWSTR wpath = String::AnsiToUtf16( + filepath.RemoveTrailingPathSeparator().c_str()); + int ret = RemoveDirectory(wpath) ? 0 : -1; + delete [] wpath; + return ret; +} + +#else + +TEST(GetCurrentDirTest, ReturnsCurrentDir) { + const FilePath original_dir = FilePath::GetCurrentDir(); + EXPECT_FALSE(original_dir.IsEmpty()); + + posix::ChDir(GTEST_PATH_SEP_); + const FilePath cwd = FilePath::GetCurrentDir(); + posix::ChDir(original_dir.c_str()); + +# if GTEST_OS_WINDOWS + + // Skips the ":". + const char* const cwd_without_drive = strchr(cwd.c_str(), ':'); + ASSERT_TRUE(cwd_without_drive != NULL); + EXPECT_STREQ(GTEST_PATH_SEP_, cwd_without_drive + 1); + +# else + + EXPECT_EQ(GTEST_PATH_SEP_, cwd.string()); + +# endif +} + +#endif // GTEST_OS_WINDOWS_MOBILE + +TEST(IsEmptyTest, ReturnsTrueForEmptyPath) { + EXPECT_TRUE(FilePath("").IsEmpty()); +} + +TEST(IsEmptyTest, ReturnsFalseForNonEmptyPath) { + EXPECT_FALSE(FilePath("a").IsEmpty()); + EXPECT_FALSE(FilePath(".").IsEmpty()); + EXPECT_FALSE(FilePath("a/b").IsEmpty()); + EXPECT_FALSE(FilePath("a\\b\\").IsEmpty()); +} + +// RemoveDirectoryName "" -> "" +TEST(RemoveDirectoryNameTest, WhenEmptyName) { + EXPECT_EQ("", FilePath("").RemoveDirectoryName().string()); +} + +// RemoveDirectoryName "afile" -> "afile" +TEST(RemoveDirectoryNameTest, ButNoDirectory) { + EXPECT_EQ("afile", + FilePath("afile").RemoveDirectoryName().string()); +} + +// RemoveDirectoryName "/afile" -> "afile" +TEST(RemoveDirectoryNameTest, RootFileShouldGiveFileName) { + EXPECT_EQ("afile", + FilePath(GTEST_PATH_SEP_ "afile").RemoveDirectoryName().string()); +} + +// RemoveDirectoryName "adir/" -> "" +TEST(RemoveDirectoryNameTest, WhereThereIsNoFileName) { + EXPECT_EQ("", + FilePath("adir" GTEST_PATH_SEP_).RemoveDirectoryName().string()); +} + +// RemoveDirectoryName "adir/afile" -> "afile" +TEST(RemoveDirectoryNameTest, ShouldGiveFileName) { + EXPECT_EQ("afile", + FilePath("adir" GTEST_PATH_SEP_ "afile").RemoveDirectoryName().string()); +} + +// RemoveDirectoryName "adir/subdir/afile" -> "afile" +TEST(RemoveDirectoryNameTest, ShouldAlsoGiveFileName) { + EXPECT_EQ("afile", + FilePath("adir" GTEST_PATH_SEP_ "subdir" GTEST_PATH_SEP_ "afile") + .RemoveDirectoryName().string()); +} + +#if GTEST_HAS_ALT_PATH_SEP_ + +// Tests that RemoveDirectoryName() works with the alternate separator +// on Windows. + +// RemoveDirectoryName("/afile") -> "afile" +TEST(RemoveDirectoryNameTest, RootFileShouldGiveFileNameForAlternateSeparator) { + EXPECT_EQ("afile", FilePath("/afile").RemoveDirectoryName().string()); +} + +// RemoveDirectoryName("adir/") -> "" +TEST(RemoveDirectoryNameTest, WhereThereIsNoFileNameForAlternateSeparator) { + EXPECT_EQ("", FilePath("adir/").RemoveDirectoryName().string()); +} + +// RemoveDirectoryName("adir/afile") -> "afile" +TEST(RemoveDirectoryNameTest, ShouldGiveFileNameForAlternateSeparator) { + EXPECT_EQ("afile", FilePath("adir/afile").RemoveDirectoryName().string()); +} + +// RemoveDirectoryName("adir/subdir/afile") -> "afile" +TEST(RemoveDirectoryNameTest, ShouldAlsoGiveFileNameForAlternateSeparator) { + EXPECT_EQ("afile", + FilePath("adir/subdir/afile").RemoveDirectoryName().string()); +} + +#endif + +// RemoveFileName "" -> "./" +TEST(RemoveFileNameTest, EmptyName) { +#if GTEST_OS_WINDOWS_MOBILE + // On Windows CE, we use the root as the current directory. + EXPECT_EQ(GTEST_PATH_SEP_, FilePath("").RemoveFileName().string()); +#else + EXPECT_EQ("." GTEST_PATH_SEP_, FilePath("").RemoveFileName().string()); +#endif +} + +// RemoveFileName "adir/" -> "adir/" +TEST(RemoveFileNameTest, ButNoFile) { + EXPECT_EQ("adir" GTEST_PATH_SEP_, + FilePath("adir" GTEST_PATH_SEP_).RemoveFileName().string()); +} + +// RemoveFileName "adir/afile" -> "adir/" +TEST(RemoveFileNameTest, GivesDirName) { + EXPECT_EQ("adir" GTEST_PATH_SEP_, + FilePath("adir" GTEST_PATH_SEP_ "afile").RemoveFileName().string()); +} + +// RemoveFileName "adir/subdir/afile" -> "adir/subdir/" +TEST(RemoveFileNameTest, GivesDirAndSubDirName) { + EXPECT_EQ("adir" GTEST_PATH_SEP_ "subdir" GTEST_PATH_SEP_, + FilePath("adir" GTEST_PATH_SEP_ "subdir" GTEST_PATH_SEP_ "afile") + .RemoveFileName().string()); +} + +// RemoveFileName "/afile" -> "/" +TEST(RemoveFileNameTest, GivesRootDir) { + EXPECT_EQ(GTEST_PATH_SEP_, + FilePath(GTEST_PATH_SEP_ "afile").RemoveFileName().string()); +} + +#if GTEST_HAS_ALT_PATH_SEP_ + +// Tests that RemoveFileName() works with the alternate separator on +// Windows. + +// RemoveFileName("adir/") -> "adir/" +TEST(RemoveFileNameTest, ButNoFileForAlternateSeparator) { + EXPECT_EQ("adir" GTEST_PATH_SEP_, + FilePath("adir/").RemoveFileName().string()); +} + +// RemoveFileName("adir/afile") -> "adir/" +TEST(RemoveFileNameTest, GivesDirNameForAlternateSeparator) { + EXPECT_EQ("adir" GTEST_PATH_SEP_, + FilePath("adir/afile").RemoveFileName().string()); +} + +// RemoveFileName("adir/subdir/afile") -> "adir/subdir/" +TEST(RemoveFileNameTest, GivesDirAndSubDirNameForAlternateSeparator) { + EXPECT_EQ("adir" GTEST_PATH_SEP_ "subdir" GTEST_PATH_SEP_, + FilePath("adir/subdir/afile").RemoveFileName().string()); +} + +// RemoveFileName("/afile") -> "\" +TEST(RemoveFileNameTest, GivesRootDirForAlternateSeparator) { + EXPECT_EQ(GTEST_PATH_SEP_, FilePath("/afile").RemoveFileName().string()); +} + +#endif + +TEST(MakeFileNameTest, GenerateWhenNumberIsZero) { + FilePath actual = FilePath::MakeFileName(FilePath("foo"), FilePath("bar"), + 0, "xml"); + EXPECT_EQ("foo" GTEST_PATH_SEP_ "bar.xml", actual.string()); +} + +TEST(MakeFileNameTest, GenerateFileNameNumberGtZero) { + FilePath actual = FilePath::MakeFileName(FilePath("foo"), FilePath("bar"), + 12, "xml"); + EXPECT_EQ("foo" GTEST_PATH_SEP_ "bar_12.xml", actual.string()); +} + +TEST(MakeFileNameTest, GenerateFileNameWithSlashNumberIsZero) { + FilePath actual = FilePath::MakeFileName(FilePath("foo" GTEST_PATH_SEP_), + FilePath("bar"), 0, "xml"); + EXPECT_EQ("foo" GTEST_PATH_SEP_ "bar.xml", actual.string()); +} + +TEST(MakeFileNameTest, GenerateFileNameWithSlashNumberGtZero) { + FilePath actual = FilePath::MakeFileName(FilePath("foo" GTEST_PATH_SEP_), + FilePath("bar"), 12, "xml"); + EXPECT_EQ("foo" GTEST_PATH_SEP_ "bar_12.xml", actual.string()); +} + +TEST(MakeFileNameTest, GenerateWhenNumberIsZeroAndDirIsEmpty) { + FilePath actual = FilePath::MakeFileName(FilePath(""), FilePath("bar"), + 0, "xml"); + EXPECT_EQ("bar.xml", actual.string()); +} + +TEST(MakeFileNameTest, GenerateWhenNumberIsNotZeroAndDirIsEmpty) { + FilePath actual = FilePath::MakeFileName(FilePath(""), FilePath("bar"), + 14, "xml"); + EXPECT_EQ("bar_14.xml", actual.string()); +} + +TEST(ConcatPathsTest, WorksWhenDirDoesNotEndWithPathSep) { + FilePath actual = FilePath::ConcatPaths(FilePath("foo"), + FilePath("bar.xml")); + EXPECT_EQ("foo" GTEST_PATH_SEP_ "bar.xml", actual.string()); +} + +TEST(ConcatPathsTest, WorksWhenPath1EndsWithPathSep) { + FilePath actual = FilePath::ConcatPaths(FilePath("foo" GTEST_PATH_SEP_), + FilePath("bar.xml")); + EXPECT_EQ("foo" GTEST_PATH_SEP_ "bar.xml", actual.string()); +} + +TEST(ConcatPathsTest, Path1BeingEmpty) { + FilePath actual = FilePath::ConcatPaths(FilePath(""), + FilePath("bar.xml")); + EXPECT_EQ("bar.xml", actual.string()); +} + +TEST(ConcatPathsTest, Path2BeingEmpty) { + FilePath actual = FilePath::ConcatPaths(FilePath("foo"), FilePath("")); + EXPECT_EQ("foo" GTEST_PATH_SEP_, actual.string()); +} + +TEST(ConcatPathsTest, BothPathBeingEmpty) { + FilePath actual = FilePath::ConcatPaths(FilePath(""), + FilePath("")); + EXPECT_EQ("", actual.string()); +} + +TEST(ConcatPathsTest, Path1ContainsPathSep) { + FilePath actual = FilePath::ConcatPaths(FilePath("foo" GTEST_PATH_SEP_ "bar"), + FilePath("foobar.xml")); + EXPECT_EQ("foo" GTEST_PATH_SEP_ "bar" GTEST_PATH_SEP_ "foobar.xml", + actual.string()); +} + +TEST(ConcatPathsTest, Path2ContainsPathSep) { + FilePath actual = FilePath::ConcatPaths( + FilePath("foo" GTEST_PATH_SEP_), + FilePath("bar" GTEST_PATH_SEP_ "bar.xml")); + EXPECT_EQ("foo" GTEST_PATH_SEP_ "bar" GTEST_PATH_SEP_ "bar.xml", + actual.string()); +} + +TEST(ConcatPathsTest, Path2EndsWithPathSep) { + FilePath actual = FilePath::ConcatPaths(FilePath("foo"), + FilePath("bar" GTEST_PATH_SEP_)); + EXPECT_EQ("foo" GTEST_PATH_SEP_ "bar" GTEST_PATH_SEP_, actual.string()); +} + +// RemoveTrailingPathSeparator "" -> "" +TEST(RemoveTrailingPathSeparatorTest, EmptyString) { + EXPECT_EQ("", FilePath("").RemoveTrailingPathSeparator().string()); +} + +// RemoveTrailingPathSeparator "foo" -> "foo" +TEST(RemoveTrailingPathSeparatorTest, FileNoSlashString) { + EXPECT_EQ("foo", FilePath("foo").RemoveTrailingPathSeparator().string()); +} + +// RemoveTrailingPathSeparator "foo/" -> "foo" +TEST(RemoveTrailingPathSeparatorTest, ShouldRemoveTrailingSeparator) { + EXPECT_EQ("foo", + FilePath("foo" GTEST_PATH_SEP_).RemoveTrailingPathSeparator().string()); +#if GTEST_HAS_ALT_PATH_SEP_ + EXPECT_EQ("foo", FilePath("foo/").RemoveTrailingPathSeparator().string()); +#endif +} + +// RemoveTrailingPathSeparator "foo/bar/" -> "foo/bar/" +TEST(RemoveTrailingPathSeparatorTest, ShouldRemoveLastSeparator) { + EXPECT_EQ("foo" GTEST_PATH_SEP_ "bar", + FilePath("foo" GTEST_PATH_SEP_ "bar" GTEST_PATH_SEP_) + .RemoveTrailingPathSeparator().string()); +} + +// RemoveTrailingPathSeparator "foo/bar" -> "foo/bar" +TEST(RemoveTrailingPathSeparatorTest, ShouldReturnUnmodified) { + EXPECT_EQ("foo" GTEST_PATH_SEP_ "bar", + FilePath("foo" GTEST_PATH_SEP_ "bar") + .RemoveTrailingPathSeparator().string()); +} + +TEST(DirectoryTest, RootDirectoryExists) { +#if GTEST_OS_WINDOWS // We are on Windows. + char current_drive[_MAX_PATH]; // NOLINT + current_drive[0] = static_cast(_getdrive() + 'A' - 1); + current_drive[1] = ':'; + current_drive[2] = '\\'; + current_drive[3] = '\0'; + EXPECT_TRUE(FilePath(current_drive).DirectoryExists()); +#else + EXPECT_TRUE(FilePath("/").DirectoryExists()); +#endif // GTEST_OS_WINDOWS +} + +#if GTEST_OS_WINDOWS +TEST(DirectoryTest, RootOfWrongDriveDoesNotExists) { + const int saved_drive_ = _getdrive(); + // Find a drive that doesn't exist. Start with 'Z' to avoid common ones. + for (char drive = 'Z'; drive >= 'A'; drive--) + if (_chdrive(drive - 'A' + 1) == -1) { + char non_drive[_MAX_PATH]; // NOLINT + non_drive[0] = drive; + non_drive[1] = ':'; + non_drive[2] = '\\'; + non_drive[3] = '\0'; + EXPECT_FALSE(FilePath(non_drive).DirectoryExists()); + break; + } + _chdrive(saved_drive_); +} +#endif // GTEST_OS_WINDOWS + +#if !GTEST_OS_WINDOWS_MOBILE +// Windows CE _does_ consider an empty directory to exist. +TEST(DirectoryTest, EmptyPathDirectoryDoesNotExist) { + EXPECT_FALSE(FilePath("").DirectoryExists()); +} +#endif // !GTEST_OS_WINDOWS_MOBILE + +TEST(DirectoryTest, CurrentDirectoryExists) { +#if GTEST_OS_WINDOWS // We are on Windows. +# ifndef _WIN32_CE // Windows CE doesn't have a current directory. + + EXPECT_TRUE(FilePath(".").DirectoryExists()); + EXPECT_TRUE(FilePath(".\\").DirectoryExists()); + +# endif // _WIN32_CE +#else + EXPECT_TRUE(FilePath(".").DirectoryExists()); + EXPECT_TRUE(FilePath("./").DirectoryExists()); +#endif // GTEST_OS_WINDOWS +} + +// "foo/bar" == foo//bar" == "foo///bar" +TEST(NormalizeTest, MultipleConsecutiveSepaparatorsInMidstring) { + EXPECT_EQ("foo" GTEST_PATH_SEP_ "bar", + FilePath("foo" GTEST_PATH_SEP_ "bar").string()); + EXPECT_EQ("foo" GTEST_PATH_SEP_ "bar", + FilePath("foo" GTEST_PATH_SEP_ GTEST_PATH_SEP_ "bar").string()); + EXPECT_EQ("foo" GTEST_PATH_SEP_ "bar", + FilePath("foo" GTEST_PATH_SEP_ GTEST_PATH_SEP_ + GTEST_PATH_SEP_ "bar").string()); +} + +// "/bar" == //bar" == "///bar" +TEST(NormalizeTest, MultipleConsecutiveSepaparatorsAtStringStart) { + EXPECT_EQ(GTEST_PATH_SEP_ "bar", + FilePath(GTEST_PATH_SEP_ "bar").string()); + EXPECT_EQ(GTEST_PATH_SEP_ "bar", + FilePath(GTEST_PATH_SEP_ GTEST_PATH_SEP_ "bar").string()); + EXPECT_EQ(GTEST_PATH_SEP_ "bar", + FilePath(GTEST_PATH_SEP_ GTEST_PATH_SEP_ GTEST_PATH_SEP_ "bar").string()); +} + +// "foo/" == foo//" == "foo///" +TEST(NormalizeTest, MultipleConsecutiveSepaparatorsAtStringEnd) { + EXPECT_EQ("foo" GTEST_PATH_SEP_, + FilePath("foo" GTEST_PATH_SEP_).string()); + EXPECT_EQ("foo" GTEST_PATH_SEP_, + FilePath("foo" GTEST_PATH_SEP_ GTEST_PATH_SEP_).string()); + EXPECT_EQ("foo" GTEST_PATH_SEP_, + FilePath("foo" GTEST_PATH_SEP_ GTEST_PATH_SEP_ GTEST_PATH_SEP_).string()); +} + +#if GTEST_HAS_ALT_PATH_SEP_ + +// Tests that separators at the end of the string are normalized +// regardless of their combination (e.g. "foo\" =="foo/\" == +// "foo\\/"). +TEST(NormalizeTest, MixAlternateSeparatorAtStringEnd) { + EXPECT_EQ("foo" GTEST_PATH_SEP_, + FilePath("foo/").string()); + EXPECT_EQ("foo" GTEST_PATH_SEP_, + FilePath("foo" GTEST_PATH_SEP_ "/").string()); + EXPECT_EQ("foo" GTEST_PATH_SEP_, + FilePath("foo//" GTEST_PATH_SEP_).string()); +} + +#endif + +TEST(AssignmentOperatorTest, DefaultAssignedToNonDefault) { + FilePath default_path; + FilePath non_default_path("path"); + non_default_path = default_path; + EXPECT_EQ("", non_default_path.string()); + EXPECT_EQ("", default_path.string()); // RHS var is unchanged. +} + +TEST(AssignmentOperatorTest, NonDefaultAssignedToDefault) { + FilePath non_default_path("path"); + FilePath default_path; + default_path = non_default_path; + EXPECT_EQ("path", default_path.string()); + EXPECT_EQ("path", non_default_path.string()); // RHS var is unchanged. +} + +TEST(AssignmentOperatorTest, ConstAssignedToNonConst) { + const FilePath const_default_path("const_path"); + FilePath non_default_path("path"); + non_default_path = const_default_path; + EXPECT_EQ("const_path", non_default_path.string()); +} + +class DirectoryCreationTest : public Test { + protected: + virtual void SetUp() { + testdata_path_.Set(FilePath( + TempDir() + GetCurrentExecutableName().string() + + "_directory_creation" GTEST_PATH_SEP_ "test" GTEST_PATH_SEP_)); + testdata_file_.Set(testdata_path_.RemoveTrailingPathSeparator()); + + unique_file0_.Set(FilePath::MakeFileName(testdata_path_, FilePath("unique"), + 0, "txt")); + unique_file1_.Set(FilePath::MakeFileName(testdata_path_, FilePath("unique"), + 1, "txt")); + + remove(testdata_file_.c_str()); + remove(unique_file0_.c_str()); + remove(unique_file1_.c_str()); + posix::RmDir(testdata_path_.c_str()); + } + + virtual void TearDown() { + remove(testdata_file_.c_str()); + remove(unique_file0_.c_str()); + remove(unique_file1_.c_str()); + posix::RmDir(testdata_path_.c_str()); + } + + std::string TempDir() const { +#if GTEST_OS_WINDOWS_MOBILE + return "\\temp\\"; +#elif GTEST_OS_WINDOWS + const char* temp_dir = posix::GetEnv("TEMP"); + if (temp_dir == NULL || temp_dir[0] == '\0') + return "\\temp\\"; + else if (temp_dir[strlen(temp_dir) - 1] == '\\') + return temp_dir; + else + return std::string(temp_dir) + "\\"; +#elif GTEST_OS_LINUX_ANDROID + return "/sdcard/"; +#else + return "/tmp/"; +#endif // GTEST_OS_WINDOWS_MOBILE + } + + void CreateTextFile(const char* filename) { + FILE* f = posix::FOpen(filename, "w"); + fprintf(f, "text\n"); + fclose(f); + } + + // Strings representing a directory and a file, with identical paths + // except for the trailing separator character that distinquishes + // a directory named 'test' from a file named 'test'. Example names: + FilePath testdata_path_; // "/tmp/directory_creation/test/" + FilePath testdata_file_; // "/tmp/directory_creation/test" + FilePath unique_file0_; // "/tmp/directory_creation/test/unique.txt" + FilePath unique_file1_; // "/tmp/directory_creation/test/unique_1.txt" +}; + +TEST_F(DirectoryCreationTest, CreateDirectoriesRecursively) { + EXPECT_FALSE(testdata_path_.DirectoryExists()) << testdata_path_.string(); + EXPECT_TRUE(testdata_path_.CreateDirectoriesRecursively()); + EXPECT_TRUE(testdata_path_.DirectoryExists()); +} + +TEST_F(DirectoryCreationTest, CreateDirectoriesForAlreadyExistingPath) { + EXPECT_FALSE(testdata_path_.DirectoryExists()) << testdata_path_.string(); + EXPECT_TRUE(testdata_path_.CreateDirectoriesRecursively()); + // Call 'create' again... should still succeed. + EXPECT_TRUE(testdata_path_.CreateDirectoriesRecursively()); +} + +TEST_F(DirectoryCreationTest, CreateDirectoriesAndUniqueFilename) { + FilePath file_path(FilePath::GenerateUniqueFileName(testdata_path_, + FilePath("unique"), "txt")); + EXPECT_EQ(unique_file0_.string(), file_path.string()); + EXPECT_FALSE(file_path.FileOrDirectoryExists()); // file not there + + testdata_path_.CreateDirectoriesRecursively(); + EXPECT_FALSE(file_path.FileOrDirectoryExists()); // file still not there + CreateTextFile(file_path.c_str()); + EXPECT_TRUE(file_path.FileOrDirectoryExists()); + + FilePath file_path2(FilePath::GenerateUniqueFileName(testdata_path_, + FilePath("unique"), "txt")); + EXPECT_EQ(unique_file1_.string(), file_path2.string()); + EXPECT_FALSE(file_path2.FileOrDirectoryExists()); // file not there + CreateTextFile(file_path2.c_str()); + EXPECT_TRUE(file_path2.FileOrDirectoryExists()); +} + +TEST_F(DirectoryCreationTest, CreateDirectoriesFail) { + // force a failure by putting a file where we will try to create a directory. + CreateTextFile(testdata_file_.c_str()); + EXPECT_TRUE(testdata_file_.FileOrDirectoryExists()); + EXPECT_FALSE(testdata_file_.DirectoryExists()); + EXPECT_FALSE(testdata_file_.CreateDirectoriesRecursively()); +} + +TEST(NoDirectoryCreationTest, CreateNoDirectoriesForDefaultXmlFile) { + const FilePath test_detail_xml("test_detail.xml"); + EXPECT_FALSE(test_detail_xml.CreateDirectoriesRecursively()); +} + +TEST(FilePathTest, DefaultConstructor) { + FilePath fp; + EXPECT_EQ("", fp.string()); +} + +TEST(FilePathTest, CharAndCopyConstructors) { + const FilePath fp("spicy"); + EXPECT_EQ("spicy", fp.string()); + + const FilePath fp_copy(fp); + EXPECT_EQ("spicy", fp_copy.string()); +} + +TEST(FilePathTest, StringConstructor) { + const FilePath fp(std::string("cider")); + EXPECT_EQ("cider", fp.string()); +} + +TEST(FilePathTest, Set) { + const FilePath apple("apple"); + FilePath mac("mac"); + mac.Set(apple); // Implement Set() since overloading operator= is forbidden. + EXPECT_EQ("apple", mac.string()); + EXPECT_EQ("apple", apple.string()); +} + +TEST(FilePathTest, ToString) { + const FilePath file("drink"); + EXPECT_EQ("drink", file.string()); +} + +TEST(FilePathTest, RemoveExtension) { + EXPECT_EQ("app", FilePath("app.cc").RemoveExtension("cc").string()); + EXPECT_EQ("app", FilePath("app.exe").RemoveExtension("exe").string()); + EXPECT_EQ("APP", FilePath("APP.EXE").RemoveExtension("exe").string()); +} + +TEST(FilePathTest, RemoveExtensionWhenThereIsNoExtension) { + EXPECT_EQ("app", FilePath("app").RemoveExtension("exe").string()); +} + +TEST(FilePathTest, IsDirectory) { + EXPECT_FALSE(FilePath("cola").IsDirectory()); + EXPECT_TRUE(FilePath("koala" GTEST_PATH_SEP_).IsDirectory()); +#if GTEST_HAS_ALT_PATH_SEP_ + EXPECT_TRUE(FilePath("koala/").IsDirectory()); +#endif +} + +TEST(FilePathTest, IsAbsolutePath) { + EXPECT_FALSE(FilePath("is" GTEST_PATH_SEP_ "relative").IsAbsolutePath()); + EXPECT_FALSE(FilePath("").IsAbsolutePath()); +#if GTEST_OS_WINDOWS + EXPECT_TRUE(FilePath("c:\\" GTEST_PATH_SEP_ "is_not" + GTEST_PATH_SEP_ "relative").IsAbsolutePath()); + EXPECT_FALSE(FilePath("c:foo" GTEST_PATH_SEP_ "bar").IsAbsolutePath()); + EXPECT_TRUE(FilePath("c:/" GTEST_PATH_SEP_ "is_not" + GTEST_PATH_SEP_ "relative").IsAbsolutePath()); +#else + EXPECT_TRUE(FilePath(GTEST_PATH_SEP_ "is_not" GTEST_PATH_SEP_ "relative") + .IsAbsolutePath()); +#endif // GTEST_OS_WINDOWS +} + +TEST(FilePathTest, IsRootDirectory) { +#if GTEST_OS_WINDOWS + EXPECT_TRUE(FilePath("a:\\").IsRootDirectory()); + EXPECT_TRUE(FilePath("Z:/").IsRootDirectory()); + EXPECT_TRUE(FilePath("e://").IsRootDirectory()); + EXPECT_FALSE(FilePath("").IsRootDirectory()); + EXPECT_FALSE(FilePath("b:").IsRootDirectory()); + EXPECT_FALSE(FilePath("b:a").IsRootDirectory()); + EXPECT_FALSE(FilePath("8:/").IsRootDirectory()); + EXPECT_FALSE(FilePath("c|/").IsRootDirectory()); +#else + EXPECT_TRUE(FilePath("/").IsRootDirectory()); + EXPECT_TRUE(FilePath("//").IsRootDirectory()); + EXPECT_FALSE(FilePath("").IsRootDirectory()); + EXPECT_FALSE(FilePath("\\").IsRootDirectory()); + EXPECT_FALSE(FilePath("/x").IsRootDirectory()); +#endif +} + +} // namespace +} // namespace internal +} // namespace testing diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest-linked_ptr_test.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest-linked_ptr_test.cc new file mode 100644 index 00000000..6fcf5124 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest-linked_ptr_test.cc @@ -0,0 +1,154 @@ +// Copyright 2003, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Authors: Dan Egnor (egnor@google.com) +// Ported to Windows: Vadim Berman (vadimb@google.com) + +#include "gtest/internal/gtest-linked_ptr.h" + +#include +#include "gtest/gtest.h" + +namespace { + +using testing::Message; +using testing::internal::linked_ptr; + +int num; +Message* history = NULL; + +// Class which tracks allocation/deallocation +class A { + public: + A(): mynum(num++) { *history << "A" << mynum << " ctor\n"; } + virtual ~A() { *history << "A" << mynum << " dtor\n"; } + virtual void Use() { *history << "A" << mynum << " use\n"; } + protected: + int mynum; +}; + +// Subclass +class B : public A { + public: + B() { *history << "B" << mynum << " ctor\n"; } + ~B() { *history << "B" << mynum << " dtor\n"; } + virtual void Use() { *history << "B" << mynum << " use\n"; } +}; + +class LinkedPtrTest : public testing::Test { + public: + LinkedPtrTest() { + num = 0; + history = new Message; + } + + virtual ~LinkedPtrTest() { + delete history; + history = NULL; + } +}; + +TEST_F(LinkedPtrTest, GeneralTest) { + { + linked_ptr a0, a1, a2; + // Use explicit function call notation here to suppress self-assign warning. + a0.operator=(a0); + a1 = a2; + ASSERT_EQ(a0.get(), static_cast(NULL)); + ASSERT_EQ(a1.get(), static_cast(NULL)); + ASSERT_EQ(a2.get(), static_cast(NULL)); + ASSERT_TRUE(a0 == NULL); + ASSERT_TRUE(a1 == NULL); + ASSERT_TRUE(a2 == NULL); + + { + linked_ptr a3(new A); + a0 = a3; + ASSERT_TRUE(a0 == a3); + ASSERT_TRUE(a0 != NULL); + ASSERT_TRUE(a0.get() == a3); + ASSERT_TRUE(a0 == a3.get()); + linked_ptr a4(a0); + a1 = a4; + linked_ptr a5(new A); + ASSERT_TRUE(a5.get() != a3); + ASSERT_TRUE(a5 != a3.get()); + a2 = a5; + linked_ptr b0(new B); + linked_ptr a6(b0); + ASSERT_TRUE(b0 == a6); + ASSERT_TRUE(a6 == b0); + ASSERT_TRUE(b0 != NULL); + a5 = b0; + a5 = b0; + a3->Use(); + a4->Use(); + a5->Use(); + a6->Use(); + b0->Use(); + (*b0).Use(); + b0.get()->Use(); + } + + a0->Use(); + a1->Use(); + a2->Use(); + + a1 = a2; + a2.reset(new A); + a0.reset(); + + linked_ptr a7; + } + + ASSERT_STREQ( + "A0 ctor\n" + "A1 ctor\n" + "A2 ctor\n" + "B2 ctor\n" + "A0 use\n" + "A0 use\n" + "B2 use\n" + "B2 use\n" + "B2 use\n" + "B2 use\n" + "B2 use\n" + "B2 dtor\n" + "A2 dtor\n" + "A0 use\n" + "A0 use\n" + "A1 use\n" + "A3 ctor\n" + "A0 dtor\n" + "A3 dtor\n" + "A1 dtor\n", + history->GetString().c_str()); +} + +} // Unnamed namespace diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest-listener_test.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest-listener_test.cc new file mode 100644 index 00000000..99662cff --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest-listener_test.cc @@ -0,0 +1,310 @@ +// Copyright 2009 Google Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: vladl@google.com (Vlad Losev) +// +// The Google C++ Testing Framework (Google Test) +// +// This file verifies Google Test event listeners receive events at the +// right times. + +#include "gtest/gtest.h" +#include + +using ::testing::AddGlobalTestEnvironment; +using ::testing::Environment; +using ::testing::InitGoogleTest; +using ::testing::Test; +using ::testing::TestCase; +using ::testing::TestEventListener; +using ::testing::TestInfo; +using ::testing::TestPartResult; +using ::testing::UnitTest; + +// Used by tests to register their events. +std::vector* g_events = NULL; + +namespace testing { +namespace internal { + +class EventRecordingListener : public TestEventListener { + public: + explicit EventRecordingListener(const char* name) : name_(name) {} + + protected: + virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) { + g_events->push_back(GetFullMethodName("OnTestProgramStart")); + } + + virtual void OnTestIterationStart(const UnitTest& /*unit_test*/, + int iteration) { + Message message; + message << GetFullMethodName("OnTestIterationStart") + << "(" << iteration << ")"; + g_events->push_back(message.GetString()); + } + + virtual void OnEnvironmentsSetUpStart(const UnitTest& /*unit_test*/) { + g_events->push_back(GetFullMethodName("OnEnvironmentsSetUpStart")); + } + + virtual void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) { + g_events->push_back(GetFullMethodName("OnEnvironmentsSetUpEnd")); + } + + virtual void OnTestCaseStart(const TestCase& /*test_case*/) { + g_events->push_back(GetFullMethodName("OnTestCaseStart")); + } + + virtual void OnTestStart(const TestInfo& /*test_info*/) { + g_events->push_back(GetFullMethodName("OnTestStart")); + } + + virtual void OnTestPartResult(const TestPartResult& /*test_part_result*/) { + g_events->push_back(GetFullMethodName("OnTestPartResult")); + } + + virtual void OnTestEnd(const TestInfo& /*test_info*/) { + g_events->push_back(GetFullMethodName("OnTestEnd")); + } + + virtual void OnTestCaseEnd(const TestCase& /*test_case*/) { + g_events->push_back(GetFullMethodName("OnTestCaseEnd")); + } + + virtual void OnEnvironmentsTearDownStart(const UnitTest& /*unit_test*/) { + g_events->push_back(GetFullMethodName("OnEnvironmentsTearDownStart")); + } + + virtual void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) { + g_events->push_back(GetFullMethodName("OnEnvironmentsTearDownEnd")); + } + + virtual void OnTestIterationEnd(const UnitTest& /*unit_test*/, + int iteration) { + Message message; + message << GetFullMethodName("OnTestIterationEnd") + << "(" << iteration << ")"; + g_events->push_back(message.GetString()); + } + + virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) { + g_events->push_back(GetFullMethodName("OnTestProgramEnd")); + } + + private: + std::string GetFullMethodName(const char* name) { + return name_ + "." + name; + } + + std::string name_; +}; + +class EnvironmentInvocationCatcher : public Environment { + protected: + virtual void SetUp() { + g_events->push_back("Environment::SetUp"); + } + + virtual void TearDown() { + g_events->push_back("Environment::TearDown"); + } +}; + +class ListenerTest : public Test { + protected: + static void SetUpTestCase() { + g_events->push_back("ListenerTest::SetUpTestCase"); + } + + static void TearDownTestCase() { + g_events->push_back("ListenerTest::TearDownTestCase"); + } + + virtual void SetUp() { + g_events->push_back("ListenerTest::SetUp"); + } + + virtual void TearDown() { + g_events->push_back("ListenerTest::TearDown"); + } +}; + +TEST_F(ListenerTest, DoesFoo) { + // Test execution order within a test case is not guaranteed so we are not + // recording the test name. + g_events->push_back("ListenerTest::* Test Body"); + SUCCEED(); // Triggers OnTestPartResult. +} + +TEST_F(ListenerTest, DoesBar) { + g_events->push_back("ListenerTest::* Test Body"); + SUCCEED(); // Triggers OnTestPartResult. +} + +} // namespace internal + +} // namespace testing + +using ::testing::internal::EnvironmentInvocationCatcher; +using ::testing::internal::EventRecordingListener; + +void VerifyResults(const std::vector& data, + const char* const* expected_data, + int expected_data_size) { + const int actual_size = data.size(); + // If the following assertion fails, a new entry will be appended to + // data. Hence we save data.size() first. + EXPECT_EQ(expected_data_size, actual_size); + + // Compares the common prefix. + const int shorter_size = expected_data_size <= actual_size ? + expected_data_size : actual_size; + int i = 0; + for (; i < shorter_size; ++i) { + ASSERT_STREQ(expected_data[i], data[i].c_str()) + << "at position " << i; + } + + // Prints extra elements in the actual data. + for (; i < actual_size; ++i) { + printf(" Actual event #%d: %s\n", i, data[i].c_str()); + } +} + +int main(int argc, char **argv) { + std::vector events; + g_events = &events; + InitGoogleTest(&argc, argv); + + UnitTest::GetInstance()->listeners().Append( + new EventRecordingListener("1st")); + UnitTest::GetInstance()->listeners().Append( + new EventRecordingListener("2nd")); + + AddGlobalTestEnvironment(new EnvironmentInvocationCatcher); + + GTEST_CHECK_(events.size() == 0) + << "AddGlobalTestEnvironment should not generate any events itself."; + + ::testing::GTEST_FLAG(repeat) = 2; + int ret_val = RUN_ALL_TESTS(); + + const char* const expected_events[] = { + "1st.OnTestProgramStart", + "2nd.OnTestProgramStart", + "1st.OnTestIterationStart(0)", + "2nd.OnTestIterationStart(0)", + "1st.OnEnvironmentsSetUpStart", + "2nd.OnEnvironmentsSetUpStart", + "Environment::SetUp", + "2nd.OnEnvironmentsSetUpEnd", + "1st.OnEnvironmentsSetUpEnd", + "1st.OnTestCaseStart", + "2nd.OnTestCaseStart", + "ListenerTest::SetUpTestCase", + "1st.OnTestStart", + "2nd.OnTestStart", + "ListenerTest::SetUp", + "ListenerTest::* Test Body", + "1st.OnTestPartResult", + "2nd.OnTestPartResult", + "ListenerTest::TearDown", + "2nd.OnTestEnd", + "1st.OnTestEnd", + "1st.OnTestStart", + "2nd.OnTestStart", + "ListenerTest::SetUp", + "ListenerTest::* Test Body", + "1st.OnTestPartResult", + "2nd.OnTestPartResult", + "ListenerTest::TearDown", + "2nd.OnTestEnd", + "1st.OnTestEnd", + "ListenerTest::TearDownTestCase", + "2nd.OnTestCaseEnd", + "1st.OnTestCaseEnd", + "1st.OnEnvironmentsTearDownStart", + "2nd.OnEnvironmentsTearDownStart", + "Environment::TearDown", + "2nd.OnEnvironmentsTearDownEnd", + "1st.OnEnvironmentsTearDownEnd", + "2nd.OnTestIterationEnd(0)", + "1st.OnTestIterationEnd(0)", + "1st.OnTestIterationStart(1)", + "2nd.OnTestIterationStart(1)", + "1st.OnEnvironmentsSetUpStart", + "2nd.OnEnvironmentsSetUpStart", + "Environment::SetUp", + "2nd.OnEnvironmentsSetUpEnd", + "1st.OnEnvironmentsSetUpEnd", + "1st.OnTestCaseStart", + "2nd.OnTestCaseStart", + "ListenerTest::SetUpTestCase", + "1st.OnTestStart", + "2nd.OnTestStart", + "ListenerTest::SetUp", + "ListenerTest::* Test Body", + "1st.OnTestPartResult", + "2nd.OnTestPartResult", + "ListenerTest::TearDown", + "2nd.OnTestEnd", + "1st.OnTestEnd", + "1st.OnTestStart", + "2nd.OnTestStart", + "ListenerTest::SetUp", + "ListenerTest::* Test Body", + "1st.OnTestPartResult", + "2nd.OnTestPartResult", + "ListenerTest::TearDown", + "2nd.OnTestEnd", + "1st.OnTestEnd", + "ListenerTest::TearDownTestCase", + "2nd.OnTestCaseEnd", + "1st.OnTestCaseEnd", + "1st.OnEnvironmentsTearDownStart", + "2nd.OnEnvironmentsTearDownStart", + "Environment::TearDown", + "2nd.OnEnvironmentsTearDownEnd", + "1st.OnEnvironmentsTearDownEnd", + "2nd.OnTestIterationEnd(1)", + "1st.OnTestIterationEnd(1)", + "2nd.OnTestProgramEnd", + "1st.OnTestProgramEnd" + }; + VerifyResults(events, + expected_events, + sizeof(expected_events)/sizeof(expected_events[0])); + + // We need to check manually for ad hoc test failures that happen after + // RUN_ALL_TESTS finishes. + if (UnitTest::GetInstance()->Failed()) + ret_val = 1; + + return ret_val; +} diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest-message_test.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest-message_test.cc new file mode 100644 index 00000000..175238ef --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest-message_test.cc @@ -0,0 +1,159 @@ +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) +// +// Tests for the Message class. + +#include "gtest/gtest-message.h" + +#include "gtest/gtest.h" + +namespace { + +using ::testing::Message; + +// Tests the testing::Message class + +// Tests the default constructor. +TEST(MessageTest, DefaultConstructor) { + const Message msg; + EXPECT_EQ("", msg.GetString()); +} + +// Tests the copy constructor. +TEST(MessageTest, CopyConstructor) { + const Message msg1("Hello"); + const Message msg2(msg1); + EXPECT_EQ("Hello", msg2.GetString()); +} + +// Tests constructing a Message from a C-string. +TEST(MessageTest, ConstructsFromCString) { + Message msg("Hello"); + EXPECT_EQ("Hello", msg.GetString()); +} + +// Tests streaming a float. +TEST(MessageTest, StreamsFloat) { + const std::string s = (Message() << 1.23456F << " " << 2.34567F).GetString(); + // Both numbers should be printed with enough precision. + EXPECT_PRED_FORMAT2(testing::IsSubstring, "1.234560", s.c_str()); + EXPECT_PRED_FORMAT2(testing::IsSubstring, " 2.345669", s.c_str()); +} + +// Tests streaming a double. +TEST(MessageTest, StreamsDouble) { + const std::string s = (Message() << 1260570880.4555497 << " " + << 1260572265.1954534).GetString(); + // Both numbers should be printed with enough precision. + EXPECT_PRED_FORMAT2(testing::IsSubstring, "1260570880.45", s.c_str()); + EXPECT_PRED_FORMAT2(testing::IsSubstring, " 1260572265.19", s.c_str()); +} + +// Tests streaming a non-char pointer. +TEST(MessageTest, StreamsPointer) { + int n = 0; + int* p = &n; + EXPECT_NE("(null)", (Message() << p).GetString()); +} + +// Tests streaming a NULL non-char pointer. +TEST(MessageTest, StreamsNullPointer) { + int* p = NULL; + EXPECT_EQ("(null)", (Message() << p).GetString()); +} + +// Tests streaming a C string. +TEST(MessageTest, StreamsCString) { + EXPECT_EQ("Foo", (Message() << "Foo").GetString()); +} + +// Tests streaming a NULL C string. +TEST(MessageTest, StreamsNullCString) { + char* p = NULL; + EXPECT_EQ("(null)", (Message() << p).GetString()); +} + +// Tests streaming std::string. +TEST(MessageTest, StreamsString) { + const ::std::string str("Hello"); + EXPECT_EQ("Hello", (Message() << str).GetString()); +} + +// Tests that we can output strings containing embedded NULs. +TEST(MessageTest, StreamsStringWithEmbeddedNUL) { + const char char_array_with_nul[] = + "Here's a NUL\0 and some more string"; + const ::std::string string_with_nul(char_array_with_nul, + sizeof(char_array_with_nul) - 1); + EXPECT_EQ("Here's a NUL\\0 and some more string", + (Message() << string_with_nul).GetString()); +} + +// Tests streaming a NUL char. +TEST(MessageTest, StreamsNULChar) { + EXPECT_EQ("\\0", (Message() << '\0').GetString()); +} + +// Tests streaming int. +TEST(MessageTest, StreamsInt) { + EXPECT_EQ("123", (Message() << 123).GetString()); +} + +// Tests that basic IO manipulators (endl, ends, and flush) can be +// streamed to Message. +TEST(MessageTest, StreamsBasicIoManip) { + EXPECT_EQ("Line 1.\nA NUL char \\0 in line 2.", + (Message() << "Line 1." << std::endl + << "A NUL char " << std::ends << std::flush + << " in line 2.").GetString()); +} + +// Tests Message::GetString() +TEST(MessageTest, GetString) { + Message msg; + msg << 1 << " lamb"; + EXPECT_EQ("1 lamb", msg.GetString()); +} + +// Tests streaming a Message object to an ostream. +TEST(MessageTest, StreamsToOStream) { + Message msg("Hello"); + ::std::stringstream ss; + ss << msg; + EXPECT_EQ("Hello", testing::internal::StringStreamToString(&ss)); +} + +// Tests that a Message object doesn't take up too much stack space. +TEST(MessageTest, DoesNotTakeUpMuchStackSpace) { + EXPECT_LE(sizeof(Message), 16U); +} + +} // namespace diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest-options_test.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest-options_test.cc new file mode 100644 index 00000000..5586dc3b --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest-options_test.cc @@ -0,0 +1,215 @@ +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Authors: keith.ray@gmail.com (Keith Ray) +// +// Google Test UnitTestOptions tests +// +// This file tests classes and functions used internally by +// Google Test. They are subject to change without notice. +// +// This file is #included from gtest.cc, to avoid changing build or +// make-files on Windows and other platforms. Do not #include this file +// anywhere else! + +#include "gtest/gtest.h" + +#if GTEST_OS_WINDOWS_MOBILE +# include +#elif GTEST_OS_WINDOWS +# include +#endif // GTEST_OS_WINDOWS_MOBILE + +// Indicates that this translation unit is part of Google Test's +// implementation. It must come before gtest-internal-inl.h is +// included, or there will be a compiler error. This trick is to +// prevent a user from accidentally including gtest-internal-inl.h in +// his code. +#define GTEST_IMPLEMENTATION_ 1 +#include "src/gtest-internal-inl.h" +#undef GTEST_IMPLEMENTATION_ + +namespace testing { +namespace internal { +namespace { + +// Turns the given relative path into an absolute path. +FilePath GetAbsolutePathOf(const FilePath& relative_path) { + return FilePath::ConcatPaths(FilePath::GetCurrentDir(), relative_path); +} + +// Testing UnitTestOptions::GetOutputFormat/GetOutputFile. + +TEST(XmlOutputTest, GetOutputFormatDefault) { + GTEST_FLAG(output) = ""; + EXPECT_STREQ("", UnitTestOptions::GetOutputFormat().c_str()); +} + +TEST(XmlOutputTest, GetOutputFormat) { + GTEST_FLAG(output) = "xml:filename"; + EXPECT_STREQ("xml", UnitTestOptions::GetOutputFormat().c_str()); +} + +TEST(XmlOutputTest, GetOutputFileDefault) { + GTEST_FLAG(output) = ""; + EXPECT_EQ(GetAbsolutePathOf(FilePath("test_detail.xml")).string(), + UnitTestOptions::GetAbsolutePathToOutputFile()); +} + +TEST(XmlOutputTest, GetOutputFileSingleFile) { + GTEST_FLAG(output) = "xml:filename.abc"; + EXPECT_EQ(GetAbsolutePathOf(FilePath("filename.abc")).string(), + UnitTestOptions::GetAbsolutePathToOutputFile()); +} + +TEST(XmlOutputTest, GetOutputFileFromDirectoryPath) { + GTEST_FLAG(output) = "xml:path" GTEST_PATH_SEP_; + const std::string expected_output_file = + GetAbsolutePathOf( + FilePath(std::string("path") + GTEST_PATH_SEP_ + + GetCurrentExecutableName().string() + ".xml")).string(); + const std::string& output_file = + UnitTestOptions::GetAbsolutePathToOutputFile(); +#if GTEST_OS_WINDOWS + EXPECT_STRCASEEQ(expected_output_file.c_str(), output_file.c_str()); +#else + EXPECT_EQ(expected_output_file, output_file.c_str()); +#endif +} + +TEST(OutputFileHelpersTest, GetCurrentExecutableName) { + const std::string exe_str = GetCurrentExecutableName().string(); +#if GTEST_OS_WINDOWS + const bool success = + _strcmpi("gtest-options_test", exe_str.c_str()) == 0 || + _strcmpi("gtest-options-ex_test", exe_str.c_str()) == 0 || + _strcmpi("gtest_all_test", exe_str.c_str()) == 0 || + _strcmpi("gtest_dll_test", exe_str.c_str()) == 0; +#else + // TODO(wan@google.com): remove the hard-coded "lt-" prefix when + // Chandler Carruth's libtool replacement is ready. + const bool success = + exe_str == "gtest-options_test" || + exe_str == "gtest_all_test" || + exe_str == "lt-gtest_all_test" || + exe_str == "gtest_dll_test"; +#endif // GTEST_OS_WINDOWS + if (!success) + FAIL() << "GetCurrentExecutableName() returns " << exe_str; +} + +class XmlOutputChangeDirTest : public Test { + protected: + virtual void SetUp() { + original_working_dir_ = FilePath::GetCurrentDir(); + posix::ChDir(".."); + // This will make the test fail if run from the root directory. + EXPECT_NE(original_working_dir_.string(), + FilePath::GetCurrentDir().string()); + } + + virtual void TearDown() { + posix::ChDir(original_working_dir_.string().c_str()); + } + + FilePath original_working_dir_; +}; + +TEST_F(XmlOutputChangeDirTest, PreserveOriginalWorkingDirWithDefault) { + GTEST_FLAG(output) = ""; + EXPECT_EQ(FilePath::ConcatPaths(original_working_dir_, + FilePath("test_detail.xml")).string(), + UnitTestOptions::GetAbsolutePathToOutputFile()); +} + +TEST_F(XmlOutputChangeDirTest, PreserveOriginalWorkingDirWithDefaultXML) { + GTEST_FLAG(output) = "xml"; + EXPECT_EQ(FilePath::ConcatPaths(original_working_dir_, + FilePath("test_detail.xml")).string(), + UnitTestOptions::GetAbsolutePathToOutputFile()); +} + +TEST_F(XmlOutputChangeDirTest, PreserveOriginalWorkingDirWithRelativeFile) { + GTEST_FLAG(output) = "xml:filename.abc"; + EXPECT_EQ(FilePath::ConcatPaths(original_working_dir_, + FilePath("filename.abc")).string(), + UnitTestOptions::GetAbsolutePathToOutputFile()); +} + +TEST_F(XmlOutputChangeDirTest, PreserveOriginalWorkingDirWithRelativePath) { + GTEST_FLAG(output) = "xml:path" GTEST_PATH_SEP_; + const std::string expected_output_file = + FilePath::ConcatPaths( + original_working_dir_, + FilePath(std::string("path") + GTEST_PATH_SEP_ + + GetCurrentExecutableName().string() + ".xml")).string(); + const std::string& output_file = + UnitTestOptions::GetAbsolutePathToOutputFile(); +#if GTEST_OS_WINDOWS + EXPECT_STRCASEEQ(expected_output_file.c_str(), output_file.c_str()); +#else + EXPECT_EQ(expected_output_file, output_file.c_str()); +#endif +} + +TEST_F(XmlOutputChangeDirTest, PreserveOriginalWorkingDirWithAbsoluteFile) { +#if GTEST_OS_WINDOWS + GTEST_FLAG(output) = "xml:c:\\tmp\\filename.abc"; + EXPECT_EQ(FilePath("c:\\tmp\\filename.abc").string(), + UnitTestOptions::GetAbsolutePathToOutputFile()); +#else + GTEST_FLAG(output) ="xml:/tmp/filename.abc"; + EXPECT_EQ(FilePath("/tmp/filename.abc").string(), + UnitTestOptions::GetAbsolutePathToOutputFile()); +#endif +} + +TEST_F(XmlOutputChangeDirTest, PreserveOriginalWorkingDirWithAbsolutePath) { +#if GTEST_OS_WINDOWS + const std::string path = "c:\\tmp\\"; +#else + const std::string path = "/tmp/"; +#endif + + GTEST_FLAG(output) = "xml:" + path; + const std::string expected_output_file = + path + GetCurrentExecutableName().string() + ".xml"; + const std::string& output_file = + UnitTestOptions::GetAbsolutePathToOutputFile(); + +#if GTEST_OS_WINDOWS + EXPECT_STRCASEEQ(expected_output_file.c_str(), output_file.c_str()); +#else + EXPECT_EQ(expected_output_file, output_file.c_str()); +#endif +} + +} // namespace +} // namespace internal +} // namespace testing diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest-param-test2_test.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest-param-test2_test.cc new file mode 100644 index 00000000..4a782fe7 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest-param-test2_test.cc @@ -0,0 +1,65 @@ +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: vladl@google.com (Vlad Losev) +// +// Tests for Google Test itself. This verifies that the basic constructs of +// Google Test work. + +#include "gtest/gtest.h" + +#include "test/gtest-param-test_test.h" + +#if GTEST_HAS_PARAM_TEST + +using ::testing::Values; +using ::testing::internal::ParamGenerator; + +// Tests that generators defined in a different translation unit +// are functional. The test using extern_gen is defined +// in gtest-param-test_test.cc. +ParamGenerator extern_gen = Values(33); + +// Tests that a parameterized test case can be defined in one translation unit +// and instantiated in another. The test is defined in gtest-param-test_test.cc +// and ExternalInstantiationTest fixture class is defined in +// gtest-param-test_test.h. +INSTANTIATE_TEST_CASE_P(MultiplesOf33, + ExternalInstantiationTest, + Values(33, 66)); + +// Tests that a parameterized test case can be instantiated +// in multiple translation units. Another instantiation is defined +// in gtest-param-test_test.cc and InstantiationInMultipleTranslaionUnitsTest +// fixture is defined in gtest-param-test_test.h +INSTANTIATE_TEST_CASE_P(Sequence2, + InstantiationInMultipleTranslaionUnitsTest, + Values(42*3, 42*4, 42*5)); + +#endif // GTEST_HAS_PARAM_TEST diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest-param-test_test.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest-param-test_test.cc new file mode 100644 index 00000000..7b6f7e24 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest-param-test_test.cc @@ -0,0 +1,897 @@ +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: vladl@google.com (Vlad Losev) +// +// Tests for Google Test itself. This file verifies that the parameter +// generators objects produce correct parameter sequences and that +// Google Test runtime instantiates correct tests from those sequences. + +#include "gtest/gtest.h" + +#if GTEST_HAS_PARAM_TEST + +# include +# include +# include +# include +# include +# include + +// To include gtest-internal-inl.h. +# define GTEST_IMPLEMENTATION_ 1 +# include "src/gtest-internal-inl.h" // for UnitTestOptions +# undef GTEST_IMPLEMENTATION_ + +# include "test/gtest-param-test_test.h" + +using ::std::vector; +using ::std::sort; + +using ::testing::AddGlobalTestEnvironment; +using ::testing::Bool; +using ::testing::Message; +using ::testing::Range; +using ::testing::TestWithParam; +using ::testing::Values; +using ::testing::ValuesIn; + +# if GTEST_HAS_COMBINE +using ::testing::Combine; +using ::std::tr1::get; +using ::std::tr1::make_tuple; +using ::std::tr1::tuple; +# endif // GTEST_HAS_COMBINE + +using ::testing::internal::ParamGenerator; +using ::testing::internal::UnitTestOptions; + +// Prints a value to a string. +// +// TODO(wan@google.com): remove PrintValue() when we move matchers and +// EXPECT_THAT() from Google Mock to Google Test. At that time, we +// can write EXPECT_THAT(x, Eq(y)) to compare two tuples x and y, as +// EXPECT_THAT() and the matchers know how to print tuples. +template +::std::string PrintValue(const T& value) { + ::std::stringstream stream; + stream << value; + return stream.str(); +} + +# if GTEST_HAS_COMBINE + +// These overloads allow printing tuples in our tests. We cannot +// define an operator<< for tuples, as that definition needs to be in +// the std namespace in order to be picked up by Google Test via +// Argument-Dependent Lookup, yet defining anything in the std +// namespace in non-STL code is undefined behavior. + +template +::std::string PrintValue(const tuple& value) { + ::std::stringstream stream; + stream << "(" << get<0>(value) << ", " << get<1>(value) << ")"; + return stream.str(); +} + +template +::std::string PrintValue(const tuple& value) { + ::std::stringstream stream; + stream << "(" << get<0>(value) << ", " << get<1>(value) + << ", "<< get<2>(value) << ")"; + return stream.str(); +} + +template +::std::string PrintValue( + const tuple& value) { + ::std::stringstream stream; + stream << "(" << get<0>(value) << ", " << get<1>(value) + << ", "<< get<2>(value) << ", " << get<3>(value) + << ", "<< get<4>(value) << ", " << get<5>(value) + << ", "<< get<6>(value) << ", " << get<7>(value) + << ", "<< get<8>(value) << ", " << get<9>(value) << ")"; + return stream.str(); +} + +# endif // GTEST_HAS_COMBINE + +// Verifies that a sequence generated by the generator and accessed +// via the iterator object matches the expected one using Google Test +// assertions. +template +void VerifyGenerator(const ParamGenerator& generator, + const T (&expected_values)[N]) { + typename ParamGenerator::iterator it = generator.begin(); + for (size_t i = 0; i < N; ++i) { + ASSERT_FALSE(it == generator.end()) + << "At element " << i << " when accessing via an iterator " + << "created with the copy constructor.\n"; + // We cannot use EXPECT_EQ() here as the values may be tuples, + // which don't support <<. + EXPECT_TRUE(expected_values[i] == *it) + << "where i is " << i + << ", expected_values[i] is " << PrintValue(expected_values[i]) + << ", *it is " << PrintValue(*it) + << ", and 'it' is an iterator created with the copy constructor.\n"; + it++; + } + EXPECT_TRUE(it == generator.end()) + << "At the presumed end of sequence when accessing via an iterator " + << "created with the copy constructor.\n"; + + // Test the iterator assignment. The following lines verify that + // the sequence accessed via an iterator initialized via the + // assignment operator (as opposed to a copy constructor) matches + // just the same. + it = generator.begin(); + for (size_t i = 0; i < N; ++i) { + ASSERT_FALSE(it == generator.end()) + << "At element " << i << " when accessing via an iterator " + << "created with the assignment operator.\n"; + EXPECT_TRUE(expected_values[i] == *it) + << "where i is " << i + << ", expected_values[i] is " << PrintValue(expected_values[i]) + << ", *it is " << PrintValue(*it) + << ", and 'it' is an iterator created with the copy constructor.\n"; + it++; + } + EXPECT_TRUE(it == generator.end()) + << "At the presumed end of sequence when accessing via an iterator " + << "created with the assignment operator.\n"; +} + +template +void VerifyGeneratorIsEmpty(const ParamGenerator& generator) { + typename ParamGenerator::iterator it = generator.begin(); + EXPECT_TRUE(it == generator.end()); + + it = generator.begin(); + EXPECT_TRUE(it == generator.end()); +} + +// Generator tests. They test that each of the provided generator functions +// generates an expected sequence of values. The general test pattern +// instantiates a generator using one of the generator functions, +// checks the sequence produced by the generator using its iterator API, +// and then resets the iterator back to the beginning of the sequence +// and checks the sequence again. + +// Tests that iterators produced by generator functions conform to the +// ForwardIterator concept. +TEST(IteratorTest, ParamIteratorConformsToForwardIteratorConcept) { + const ParamGenerator gen = Range(0, 10); + ParamGenerator::iterator it = gen.begin(); + + // Verifies that iterator initialization works as expected. + ParamGenerator::iterator it2 = it; + EXPECT_TRUE(*it == *it2) << "Initialized iterators must point to the " + << "element same as its source points to"; + + // Verifies that iterator assignment works as expected. + it++; + EXPECT_FALSE(*it == *it2); + it2 = it; + EXPECT_TRUE(*it == *it2) << "Assigned iterators must point to the " + << "element same as its source points to"; + + // Verifies that prefix operator++() returns *this. + EXPECT_EQ(&it, &(++it)) << "Result of the prefix operator++ must be " + << "refer to the original object"; + + // Verifies that the result of the postfix operator++ points to the value + // pointed to by the original iterator. + int original_value = *it; // Have to compute it outside of macro call to be + // unaffected by the parameter evaluation order. + EXPECT_EQ(original_value, *(it++)); + + // Verifies that prefix and postfix operator++() advance an iterator + // all the same. + it2 = it; + it++; + ++it2; + EXPECT_TRUE(*it == *it2); +} + +// Tests that Range() generates the expected sequence. +TEST(RangeTest, IntRangeWithDefaultStep) { + const ParamGenerator gen = Range(0, 3); + const int expected_values[] = {0, 1, 2}; + VerifyGenerator(gen, expected_values); +} + +// Edge case. Tests that Range() generates the single element sequence +// as expected when provided with range limits that are equal. +TEST(RangeTest, IntRangeSingleValue) { + const ParamGenerator gen = Range(0, 1); + const int expected_values[] = {0}; + VerifyGenerator(gen, expected_values); +} + +// Edge case. Tests that Range() with generates empty sequence when +// supplied with an empty range. +TEST(RangeTest, IntRangeEmpty) { + const ParamGenerator gen = Range(0, 0); + VerifyGeneratorIsEmpty(gen); +} + +// Tests that Range() with custom step (greater then one) generates +// the expected sequence. +TEST(RangeTest, IntRangeWithCustomStep) { + const ParamGenerator gen = Range(0, 9, 3); + const int expected_values[] = {0, 3, 6}; + VerifyGenerator(gen, expected_values); +} + +// Tests that Range() with custom step (greater then one) generates +// the expected sequence when the last element does not fall on the +// upper range limit. Sequences generated by Range() must not have +// elements beyond the range limits. +TEST(RangeTest, IntRangeWithCustomStepOverUpperBound) { + const ParamGenerator gen = Range(0, 4, 3); + const int expected_values[] = {0, 3}; + VerifyGenerator(gen, expected_values); +} + +// Verifies that Range works with user-defined types that define +// copy constructor, operator=(), operator+(), and operator<(). +class DogAdder { + public: + explicit DogAdder(const char* a_value) : value_(a_value) {} + DogAdder(const DogAdder& other) : value_(other.value_.c_str()) {} + + DogAdder operator=(const DogAdder& other) { + if (this != &other) + value_ = other.value_; + return *this; + } + DogAdder operator+(const DogAdder& other) const { + Message msg; + msg << value_.c_str() << other.value_.c_str(); + return DogAdder(msg.GetString().c_str()); + } + bool operator<(const DogAdder& other) const { + return value_ < other.value_; + } + const std::string& value() const { return value_; } + + private: + std::string value_; +}; + +TEST(RangeTest, WorksWithACustomType) { + const ParamGenerator gen = + Range(DogAdder("cat"), DogAdder("catdogdog"), DogAdder("dog")); + ParamGenerator::iterator it = gen.begin(); + + ASSERT_FALSE(it == gen.end()); + EXPECT_STREQ("cat", it->value().c_str()); + + ASSERT_FALSE(++it == gen.end()); + EXPECT_STREQ("catdog", it->value().c_str()); + + EXPECT_TRUE(++it == gen.end()); +} + +class IntWrapper { + public: + explicit IntWrapper(int a_value) : value_(a_value) {} + IntWrapper(const IntWrapper& other) : value_(other.value_) {} + + IntWrapper operator=(const IntWrapper& other) { + value_ = other.value_; + return *this; + } + // operator+() adds a different type. + IntWrapper operator+(int other) const { return IntWrapper(value_ + other); } + bool operator<(const IntWrapper& other) const { + return value_ < other.value_; + } + int value() const { return value_; } + + private: + int value_; +}; + +TEST(RangeTest, WorksWithACustomTypeWithDifferentIncrementType) { + const ParamGenerator gen = Range(IntWrapper(0), IntWrapper(2)); + ParamGenerator::iterator it = gen.begin(); + + ASSERT_FALSE(it == gen.end()); + EXPECT_EQ(0, it->value()); + + ASSERT_FALSE(++it == gen.end()); + EXPECT_EQ(1, it->value()); + + EXPECT_TRUE(++it == gen.end()); +} + +// Tests that ValuesIn() with an array parameter generates +// the expected sequence. +TEST(ValuesInTest, ValuesInArray) { + int array[] = {3, 5, 8}; + const ParamGenerator gen = ValuesIn(array); + VerifyGenerator(gen, array); +} + +// Tests that ValuesIn() with a const array parameter generates +// the expected sequence. +TEST(ValuesInTest, ValuesInConstArray) { + const int array[] = {3, 5, 8}; + const ParamGenerator gen = ValuesIn(array); + VerifyGenerator(gen, array); +} + +// Edge case. Tests that ValuesIn() with an array parameter containing a +// single element generates the single element sequence. +TEST(ValuesInTest, ValuesInSingleElementArray) { + int array[] = {42}; + const ParamGenerator gen = ValuesIn(array); + VerifyGenerator(gen, array); +} + +// Tests that ValuesIn() generates the expected sequence for an STL +// container (vector). +TEST(ValuesInTest, ValuesInVector) { + typedef ::std::vector ContainerType; + ContainerType values; + values.push_back(3); + values.push_back(5); + values.push_back(8); + const ParamGenerator gen = ValuesIn(values); + + const int expected_values[] = {3, 5, 8}; + VerifyGenerator(gen, expected_values); +} + +// Tests that ValuesIn() generates the expected sequence. +TEST(ValuesInTest, ValuesInIteratorRange) { + typedef ::std::vector ContainerType; + ContainerType values; + values.push_back(3); + values.push_back(5); + values.push_back(8); + const ParamGenerator gen = ValuesIn(values.begin(), values.end()); + + const int expected_values[] = {3, 5, 8}; + VerifyGenerator(gen, expected_values); +} + +// Edge case. Tests that ValuesIn() provided with an iterator range specifying a +// single value generates a single-element sequence. +TEST(ValuesInTest, ValuesInSingleElementIteratorRange) { + typedef ::std::vector ContainerType; + ContainerType values; + values.push_back(42); + const ParamGenerator gen = ValuesIn(values.begin(), values.end()); + + const int expected_values[] = {42}; + VerifyGenerator(gen, expected_values); +} + +// Edge case. Tests that ValuesIn() provided with an empty iterator range +// generates an empty sequence. +TEST(ValuesInTest, ValuesInEmptyIteratorRange) { + typedef ::std::vector ContainerType; + ContainerType values; + const ParamGenerator gen = ValuesIn(values.begin(), values.end()); + + VerifyGeneratorIsEmpty(gen); +} + +// Tests that the Values() generates the expected sequence. +TEST(ValuesTest, ValuesWorks) { + const ParamGenerator gen = Values(3, 5, 8); + + const int expected_values[] = {3, 5, 8}; + VerifyGenerator(gen, expected_values); +} + +// Tests that Values() generates the expected sequences from elements of +// different types convertible to ParamGenerator's parameter type. +TEST(ValuesTest, ValuesWorksForValuesOfCompatibleTypes) { + const ParamGenerator gen = Values(3, 5.0f, 8.0); + + const double expected_values[] = {3.0, 5.0, 8.0}; + VerifyGenerator(gen, expected_values); +} + +TEST(ValuesTest, ValuesWorksForMaxLengthList) { + const ParamGenerator gen = Values( + 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, + 110, 120, 130, 140, 150, 160, 170, 180, 190, 200, + 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, + 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, + 410, 420, 430, 440, 450, 460, 470, 480, 490, 500); + + const int expected_values[] = { + 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, + 110, 120, 130, 140, 150, 160, 170, 180, 190, 200, + 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, + 310, 320, 330, 340, 350, 360, 370, 380, 390, 400, + 410, 420, 430, 440, 450, 460, 470, 480, 490, 500}; + VerifyGenerator(gen, expected_values); +} + +// Edge case test. Tests that single-parameter Values() generates the sequence +// with the single value. +TEST(ValuesTest, ValuesWithSingleParameter) { + const ParamGenerator gen = Values(42); + + const int expected_values[] = {42}; + VerifyGenerator(gen, expected_values); +} + +// Tests that Bool() generates sequence (false, true). +TEST(BoolTest, BoolWorks) { + const ParamGenerator gen = Bool(); + + const bool expected_values[] = {false, true}; + VerifyGenerator(gen, expected_values); +} + +# if GTEST_HAS_COMBINE + +// Tests that Combine() with two parameters generates the expected sequence. +TEST(CombineTest, CombineWithTwoParameters) { + const char* foo = "foo"; + const char* bar = "bar"; + const ParamGenerator > gen = + Combine(Values(foo, bar), Values(3, 4)); + + tuple expected_values[] = { + make_tuple(foo, 3), make_tuple(foo, 4), + make_tuple(bar, 3), make_tuple(bar, 4)}; + VerifyGenerator(gen, expected_values); +} + +// Tests that Combine() with three parameters generates the expected sequence. +TEST(CombineTest, CombineWithThreeParameters) { + const ParamGenerator > gen = Combine(Values(0, 1), + Values(3, 4), + Values(5, 6)); + tuple expected_values[] = { + make_tuple(0, 3, 5), make_tuple(0, 3, 6), + make_tuple(0, 4, 5), make_tuple(0, 4, 6), + make_tuple(1, 3, 5), make_tuple(1, 3, 6), + make_tuple(1, 4, 5), make_tuple(1, 4, 6)}; + VerifyGenerator(gen, expected_values); +} + +// Tests that the Combine() with the first parameter generating a single value +// sequence generates a sequence with the number of elements equal to the +// number of elements in the sequence generated by the second parameter. +TEST(CombineTest, CombineWithFirstParameterSingleValue) { + const ParamGenerator > gen = Combine(Values(42), + Values(0, 1)); + + tuple expected_values[] = {make_tuple(42, 0), make_tuple(42, 1)}; + VerifyGenerator(gen, expected_values); +} + +// Tests that the Combine() with the second parameter generating a single value +// sequence generates a sequence with the number of elements equal to the +// number of elements in the sequence generated by the first parameter. +TEST(CombineTest, CombineWithSecondParameterSingleValue) { + const ParamGenerator > gen = Combine(Values(0, 1), + Values(42)); + + tuple expected_values[] = {make_tuple(0, 42), make_tuple(1, 42)}; + VerifyGenerator(gen, expected_values); +} + +// Tests that when the first parameter produces an empty sequence, +// Combine() produces an empty sequence, too. +TEST(CombineTest, CombineWithFirstParameterEmptyRange) { + const ParamGenerator > gen = Combine(Range(0, 0), + Values(0, 1)); + VerifyGeneratorIsEmpty(gen); +} + +// Tests that when the second parameter produces an empty sequence, +// Combine() produces an empty sequence, too. +TEST(CombineTest, CombineWithSecondParameterEmptyRange) { + const ParamGenerator > gen = Combine(Values(0, 1), + Range(1, 1)); + VerifyGeneratorIsEmpty(gen); +} + +// Edge case. Tests that combine works with the maximum number +// of parameters supported by Google Test (currently 10). +TEST(CombineTest, CombineWithMaxNumberOfParameters) { + const char* foo = "foo"; + const char* bar = "bar"; + const ParamGenerator > gen = Combine(Values(foo, bar), + Values(1), Values(2), + Values(3), Values(4), + Values(5), Values(6), + Values(7), Values(8), + Values(9)); + + tuple + expected_values[] = {make_tuple(foo, 1, 2, 3, 4, 5, 6, 7, 8, 9), + make_tuple(bar, 1, 2, 3, 4, 5, 6, 7, 8, 9)}; + VerifyGenerator(gen, expected_values); +} + +# endif // GTEST_HAS_COMBINE + +// Tests that an generator produces correct sequence after being +// assigned from another generator. +TEST(ParamGeneratorTest, AssignmentWorks) { + ParamGenerator gen = Values(1, 2); + const ParamGenerator gen2 = Values(3, 4); + gen = gen2; + + const int expected_values[] = {3, 4}; + VerifyGenerator(gen, expected_values); +} + +// This test verifies that the tests are expanded and run as specified: +// one test per element from the sequence produced by the generator +// specified in INSTANTIATE_TEST_CASE_P. It also verifies that the test's +// fixture constructor, SetUp(), and TearDown() have run and have been +// supplied with the correct parameters. + +// The use of environment object allows detection of the case where no test +// case functionality is run at all. In this case TestCaseTearDown will not +// be able to detect missing tests, naturally. +template +class TestGenerationEnvironment : public ::testing::Environment { + public: + static TestGenerationEnvironment* Instance() { + static TestGenerationEnvironment* instance = new TestGenerationEnvironment; + return instance; + } + + void FixtureConstructorExecuted() { fixture_constructor_count_++; } + void SetUpExecuted() { set_up_count_++; } + void TearDownExecuted() { tear_down_count_++; } + void TestBodyExecuted() { test_body_count_++; } + + virtual void TearDown() { + // If all MultipleTestGenerationTest tests have been de-selected + // by the filter flag, the following checks make no sense. + bool perform_check = false; + + for (int i = 0; i < kExpectedCalls; ++i) { + Message msg; + msg << "TestsExpandedAndRun/" << i; + if (UnitTestOptions::FilterMatchesTest( + "TestExpansionModule/MultipleTestGenerationTest", + msg.GetString().c_str())) { + perform_check = true; + } + } + if (perform_check) { + EXPECT_EQ(kExpectedCalls, fixture_constructor_count_) + << "Fixture constructor of ParamTestGenerationTest test case " + << "has not been run as expected."; + EXPECT_EQ(kExpectedCalls, set_up_count_) + << "Fixture SetUp method of ParamTestGenerationTest test case " + << "has not been run as expected."; + EXPECT_EQ(kExpectedCalls, tear_down_count_) + << "Fixture TearDown method of ParamTestGenerationTest test case " + << "has not been run as expected."; + EXPECT_EQ(kExpectedCalls, test_body_count_) + << "Test in ParamTestGenerationTest test case " + << "has not been run as expected."; + } + } + + private: + TestGenerationEnvironment() : fixture_constructor_count_(0), set_up_count_(0), + tear_down_count_(0), test_body_count_(0) {} + + int fixture_constructor_count_; + int set_up_count_; + int tear_down_count_; + int test_body_count_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(TestGenerationEnvironment); +}; + +const int test_generation_params[] = {36, 42, 72}; + +class TestGenerationTest : public TestWithParam { + public: + enum { + PARAMETER_COUNT = + sizeof(test_generation_params)/sizeof(test_generation_params[0]) + }; + + typedef TestGenerationEnvironment Environment; + + TestGenerationTest() { + Environment::Instance()->FixtureConstructorExecuted(); + current_parameter_ = GetParam(); + } + virtual void SetUp() { + Environment::Instance()->SetUpExecuted(); + EXPECT_EQ(current_parameter_, GetParam()); + } + virtual void TearDown() { + Environment::Instance()->TearDownExecuted(); + EXPECT_EQ(current_parameter_, GetParam()); + } + + static void SetUpTestCase() { + bool all_tests_in_test_case_selected = true; + + for (int i = 0; i < PARAMETER_COUNT; ++i) { + Message test_name; + test_name << "TestsExpandedAndRun/" << i; + if ( !UnitTestOptions::FilterMatchesTest( + "TestExpansionModule/MultipleTestGenerationTest", + test_name.GetString())) { + all_tests_in_test_case_selected = false; + } + } + EXPECT_TRUE(all_tests_in_test_case_selected) + << "When running the TestGenerationTest test case all of its tests\n" + << "must be selected by the filter flag for the test case to pass.\n" + << "If not all of them are enabled, we can't reliably conclude\n" + << "that the correct number of tests have been generated."; + + collected_parameters_.clear(); + } + + static void TearDownTestCase() { + vector expected_values(test_generation_params, + test_generation_params + PARAMETER_COUNT); + // Test execution order is not guaranteed by Google Test, + // so the order of values in collected_parameters_ can be + // different and we have to sort to compare. + sort(expected_values.begin(), expected_values.end()); + sort(collected_parameters_.begin(), collected_parameters_.end()); + + EXPECT_TRUE(collected_parameters_ == expected_values); + } + + protected: + int current_parameter_; + static vector collected_parameters_; + + private: + GTEST_DISALLOW_COPY_AND_ASSIGN_(TestGenerationTest); +}; +vector TestGenerationTest::collected_parameters_; + +TEST_P(TestGenerationTest, TestsExpandedAndRun) { + Environment::Instance()->TestBodyExecuted(); + EXPECT_EQ(current_parameter_, GetParam()); + collected_parameters_.push_back(GetParam()); +} +INSTANTIATE_TEST_CASE_P(TestExpansionModule, TestGenerationTest, + ValuesIn(test_generation_params)); + +// This test verifies that the element sequence (third parameter of +// INSTANTIATE_TEST_CASE_P) is evaluated in InitGoogleTest() and neither at +// the call site of INSTANTIATE_TEST_CASE_P nor in RUN_ALL_TESTS(). For +// that, we declare param_value_ to be a static member of +// GeneratorEvaluationTest and initialize it to 0. We set it to 1 in +// main(), just before invocation of InitGoogleTest(). After calling +// InitGoogleTest(), we set the value to 2. If the sequence is evaluated +// before or after InitGoogleTest, INSTANTIATE_TEST_CASE_P will create a +// test with parameter other than 1, and the test body will fail the +// assertion. +class GeneratorEvaluationTest : public TestWithParam { + public: + static int param_value() { return param_value_; } + static void set_param_value(int param_value) { param_value_ = param_value; } + + private: + static int param_value_; +}; +int GeneratorEvaluationTest::param_value_ = 0; + +TEST_P(GeneratorEvaluationTest, GeneratorsEvaluatedInMain) { + EXPECT_EQ(1, GetParam()); +} +INSTANTIATE_TEST_CASE_P(GenEvalModule, + GeneratorEvaluationTest, + Values(GeneratorEvaluationTest::param_value())); + +// Tests that generators defined in a different translation unit are +// functional. Generator extern_gen is defined in gtest-param-test_test2.cc. +extern ParamGenerator extern_gen; +class ExternalGeneratorTest : public TestWithParam {}; +TEST_P(ExternalGeneratorTest, ExternalGenerator) { + // Sequence produced by extern_gen contains only a single value + // which we verify here. + EXPECT_EQ(GetParam(), 33); +} +INSTANTIATE_TEST_CASE_P(ExternalGeneratorModule, + ExternalGeneratorTest, + extern_gen); + +// Tests that a parameterized test case can be defined in one translation +// unit and instantiated in another. This test will be instantiated in +// gtest-param-test_test2.cc. ExternalInstantiationTest fixture class is +// defined in gtest-param-test_test.h. +TEST_P(ExternalInstantiationTest, IsMultipleOf33) { + EXPECT_EQ(0, GetParam() % 33); +} + +// Tests that a parameterized test case can be instantiated with multiple +// generators. +class MultipleInstantiationTest : public TestWithParam {}; +TEST_P(MultipleInstantiationTest, AllowsMultipleInstances) { +} +INSTANTIATE_TEST_CASE_P(Sequence1, MultipleInstantiationTest, Values(1, 2)); +INSTANTIATE_TEST_CASE_P(Sequence2, MultipleInstantiationTest, Range(3, 5)); + +// Tests that a parameterized test case can be instantiated +// in multiple translation units. This test will be instantiated +// here and in gtest-param-test_test2.cc. +// InstantiationInMultipleTranslationUnitsTest fixture class +// is defined in gtest-param-test_test.h. +TEST_P(InstantiationInMultipleTranslaionUnitsTest, IsMultipleOf42) { + EXPECT_EQ(0, GetParam() % 42); +} +INSTANTIATE_TEST_CASE_P(Sequence1, + InstantiationInMultipleTranslaionUnitsTest, + Values(42, 42*2)); + +// Tests that each iteration of parameterized test runs in a separate test +// object. +class SeparateInstanceTest : public TestWithParam { + public: + SeparateInstanceTest() : count_(0) {} + + static void TearDownTestCase() { + EXPECT_GE(global_count_, 2) + << "If some (but not all) SeparateInstanceTest tests have been " + << "filtered out this test will fail. Make sure that all " + << "GeneratorEvaluationTest are selected or de-selected together " + << "by the test filter."; + } + + protected: + int count_; + static int global_count_; +}; +int SeparateInstanceTest::global_count_ = 0; + +TEST_P(SeparateInstanceTest, TestsRunInSeparateInstances) { + EXPECT_EQ(0, count_++); + global_count_++; +} +INSTANTIATE_TEST_CASE_P(FourElemSequence, SeparateInstanceTest, Range(1, 4)); + +// Tests that all instantiations of a test have named appropriately. Test +// defined with TEST_P(TestCaseName, TestName) and instantiated with +// INSTANTIATE_TEST_CASE_P(SequenceName, TestCaseName, generator) must be named +// SequenceName/TestCaseName.TestName/i, where i is the 0-based index of the +// sequence element used to instantiate the test. +class NamingTest : public TestWithParam {}; + +TEST_P(NamingTest, TestsReportCorrectNamesAndParameters) { + const ::testing::TestInfo* const test_info = + ::testing::UnitTest::GetInstance()->current_test_info(); + + EXPECT_STREQ("ZeroToFiveSequence/NamingTest", test_info->test_case_name()); + + Message index_stream; + index_stream << "TestsReportCorrectNamesAndParameters/" << GetParam(); + EXPECT_STREQ(index_stream.GetString().c_str(), test_info->name()); + + EXPECT_EQ(::testing::PrintToString(GetParam()), test_info->value_param()); +} + +INSTANTIATE_TEST_CASE_P(ZeroToFiveSequence, NamingTest, Range(0, 5)); + +// Class that cannot be streamed into an ostream. It needs to be copyable +// (and, in case of MSVC, also assignable) in order to be a test parameter +// type. Its default copy constructor and assignment operator do exactly +// what we need. +class Unstreamable { + public: + explicit Unstreamable(int value) : value_(value) {} + + private: + int value_; +}; + +class CommentTest : public TestWithParam {}; + +TEST_P(CommentTest, TestsCorrectlyReportUnstreamableParams) { + const ::testing::TestInfo* const test_info = + ::testing::UnitTest::GetInstance()->current_test_info(); + + EXPECT_EQ(::testing::PrintToString(GetParam()), test_info->value_param()); +} + +INSTANTIATE_TEST_CASE_P(InstantiationWithComments, + CommentTest, + Values(Unstreamable(1))); + +// Verify that we can create a hierarchy of test fixtures, where the base +// class fixture is not parameterized and the derived class is. In this case +// ParameterizedDerivedTest inherits from NonParameterizedBaseTest. We +// perform simple tests on both. +class NonParameterizedBaseTest : public ::testing::Test { + public: + NonParameterizedBaseTest() : n_(17) { } + protected: + int n_; +}; + +class ParameterizedDerivedTest : public NonParameterizedBaseTest, + public ::testing::WithParamInterface { + protected: + ParameterizedDerivedTest() : count_(0) { } + int count_; + static int global_count_; +}; + +int ParameterizedDerivedTest::global_count_ = 0; + +TEST_F(NonParameterizedBaseTest, FixtureIsInitialized) { + EXPECT_EQ(17, n_); +} + +TEST_P(ParameterizedDerivedTest, SeesSequence) { + EXPECT_EQ(17, n_); + EXPECT_EQ(0, count_++); + EXPECT_EQ(GetParam(), global_count_++); +} + +INSTANTIATE_TEST_CASE_P(RangeZeroToFive, ParameterizedDerivedTest, Range(0, 5)); + +#endif // GTEST_HAS_PARAM_TEST + +TEST(CompileTest, CombineIsDefinedOnlyWhenGtestHasParamTestIsDefined) { +#if GTEST_HAS_COMBINE && !GTEST_HAS_PARAM_TEST + FAIL() << "GTEST_HAS_COMBINE is defined while GTEST_HAS_PARAM_TEST is not\n" +#endif +} + +int main(int argc, char **argv) { +#if GTEST_HAS_PARAM_TEST + // Used in TestGenerationTest test case. + AddGlobalTestEnvironment(TestGenerationTest::Environment::Instance()); + // Used in GeneratorEvaluationTest test case. Tests that the updated value + // will be picked up for instantiating tests in GeneratorEvaluationTest. + GeneratorEvaluationTest::set_param_value(1); +#endif // GTEST_HAS_PARAM_TEST + + ::testing::InitGoogleTest(&argc, argv); + +#if GTEST_HAS_PARAM_TEST + // Used in GeneratorEvaluationTest test case. Tests that value updated + // here will NOT be used for instantiating tests in + // GeneratorEvaluationTest. + GeneratorEvaluationTest::set_param_value(2); +#endif // GTEST_HAS_PARAM_TEST + + return RUN_ALL_TESTS(); +} diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest-param-test_test.h b/thirdparty/protobuf-2.6.1/gtest/test/gtest-param-test_test.h new file mode 100644 index 00000000..26ea122b --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest-param-test_test.h @@ -0,0 +1,57 @@ +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Authors: vladl@google.com (Vlad Losev) +// +// The Google C++ Testing Framework (Google Test) +// +// This header file provides classes and functions used internally +// for testing Google Test itself. + +#ifndef GTEST_TEST_GTEST_PARAM_TEST_TEST_H_ +#define GTEST_TEST_GTEST_PARAM_TEST_TEST_H_ + +#include "gtest/gtest.h" + +#if GTEST_HAS_PARAM_TEST + +// Test fixture for testing definition and instantiation of a test +// in separate translation units. +class ExternalInstantiationTest : public ::testing::TestWithParam { +}; + +// Test fixture for testing instantiation of a test in multiple +// translation units. +class InstantiationInMultipleTranslaionUnitsTest + : public ::testing::TestWithParam { +}; + +#endif // GTEST_HAS_PARAM_TEST + +#endif // GTEST_TEST_GTEST_PARAM_TEST_TEST_H_ diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest-port_test.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest-port_test.cc new file mode 100644 index 00000000..43f1f201 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest-port_test.cc @@ -0,0 +1,1253 @@ +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Authors: vladl@google.com (Vlad Losev), wan@google.com (Zhanyong Wan) +// +// This file tests the internal cross-platform support utilities. + +#include "gtest/internal/gtest-port.h" + +#include + +#if GTEST_OS_MAC +# include +#endif // GTEST_OS_MAC + +#include +#include // For std::pair and std::make_pair. +#include + +#include "gtest/gtest.h" +#include "gtest/gtest-spi.h" + +// Indicates that this translation unit is part of Google Test's +// implementation. It must come before gtest-internal-inl.h is +// included, or there will be a compiler error. This trick is to +// prevent a user from accidentally including gtest-internal-inl.h in +// his code. +#define GTEST_IMPLEMENTATION_ 1 +#include "src/gtest-internal-inl.h" +#undef GTEST_IMPLEMENTATION_ + +using std::make_pair; +using std::pair; + +namespace testing { +namespace internal { + +TEST(IsXDigitTest, WorksForNarrowAscii) { + EXPECT_TRUE(IsXDigit('0')); + EXPECT_TRUE(IsXDigit('9')); + EXPECT_TRUE(IsXDigit('A')); + EXPECT_TRUE(IsXDigit('F')); + EXPECT_TRUE(IsXDigit('a')); + EXPECT_TRUE(IsXDigit('f')); + + EXPECT_FALSE(IsXDigit('-')); + EXPECT_FALSE(IsXDigit('g')); + EXPECT_FALSE(IsXDigit('G')); +} + +TEST(IsXDigitTest, ReturnsFalseForNarrowNonAscii) { + EXPECT_FALSE(IsXDigit(static_cast(0x80))); + EXPECT_FALSE(IsXDigit(static_cast('0' | 0x80))); +} + +TEST(IsXDigitTest, WorksForWideAscii) { + EXPECT_TRUE(IsXDigit(L'0')); + EXPECT_TRUE(IsXDigit(L'9')); + EXPECT_TRUE(IsXDigit(L'A')); + EXPECT_TRUE(IsXDigit(L'F')); + EXPECT_TRUE(IsXDigit(L'a')); + EXPECT_TRUE(IsXDigit(L'f')); + + EXPECT_FALSE(IsXDigit(L'-')); + EXPECT_FALSE(IsXDigit(L'g')); + EXPECT_FALSE(IsXDigit(L'G')); +} + +TEST(IsXDigitTest, ReturnsFalseForWideNonAscii) { + EXPECT_FALSE(IsXDigit(static_cast(0x80))); + EXPECT_FALSE(IsXDigit(static_cast(L'0' | 0x80))); + EXPECT_FALSE(IsXDigit(static_cast(L'0' | 0x100))); +} + +class Base { + public: + // Copy constructor and assignment operator do exactly what we need, so we + // use them. + Base() : member_(0) {} + explicit Base(int n) : member_(n) {} + virtual ~Base() {} + int member() { return member_; } + + private: + int member_; +}; + +class Derived : public Base { + public: + explicit Derived(int n) : Base(n) {} +}; + +TEST(ImplicitCastTest, ConvertsPointers) { + Derived derived(0); + EXPECT_TRUE(&derived == ::testing::internal::ImplicitCast_(&derived)); +} + +TEST(ImplicitCastTest, CanUseInheritance) { + Derived derived(1); + Base base = ::testing::internal::ImplicitCast_(derived); + EXPECT_EQ(derived.member(), base.member()); +} + +class Castable { + public: + explicit Castable(bool* converted) : converted_(converted) {} + operator Base() { + *converted_ = true; + return Base(); + } + + private: + bool* converted_; +}; + +TEST(ImplicitCastTest, CanUseNonConstCastOperator) { + bool converted = false; + Castable castable(&converted); + Base base = ::testing::internal::ImplicitCast_(castable); + EXPECT_TRUE(converted); +} + +class ConstCastable { + public: + explicit ConstCastable(bool* converted) : converted_(converted) {} + operator Base() const { + *converted_ = true; + return Base(); + } + + private: + bool* converted_; +}; + +TEST(ImplicitCastTest, CanUseConstCastOperatorOnConstValues) { + bool converted = false; + const ConstCastable const_castable(&converted); + Base base = ::testing::internal::ImplicitCast_(const_castable); + EXPECT_TRUE(converted); +} + +class ConstAndNonConstCastable { + public: + ConstAndNonConstCastable(bool* converted, bool* const_converted) + : converted_(converted), const_converted_(const_converted) {} + operator Base() { + *converted_ = true; + return Base(); + } + operator Base() const { + *const_converted_ = true; + return Base(); + } + + private: + bool* converted_; + bool* const_converted_; +}; + +TEST(ImplicitCastTest, CanSelectBetweenConstAndNonConstCasrAppropriately) { + bool converted = false; + bool const_converted = false; + ConstAndNonConstCastable castable(&converted, &const_converted); + Base base = ::testing::internal::ImplicitCast_(castable); + EXPECT_TRUE(converted); + EXPECT_FALSE(const_converted); + + converted = false; + const_converted = false; + const ConstAndNonConstCastable const_castable(&converted, &const_converted); + base = ::testing::internal::ImplicitCast_(const_castable); + EXPECT_FALSE(converted); + EXPECT_TRUE(const_converted); +} + +class To { + public: + To(bool* converted) { *converted = true; } // NOLINT +}; + +TEST(ImplicitCastTest, CanUseImplicitConstructor) { + bool converted = false; + To to = ::testing::internal::ImplicitCast_(&converted); + (void)to; + EXPECT_TRUE(converted); +} + +TEST(IteratorTraitsTest, WorksForSTLContainerIterators) { + StaticAssertTypeEq::const_iterator>::value_type>(); + StaticAssertTypeEq::iterator>::value_type>(); +} + +TEST(IteratorTraitsTest, WorksForPointerToNonConst) { + StaticAssertTypeEq::value_type>(); + StaticAssertTypeEq::value_type>(); +} + +TEST(IteratorTraitsTest, WorksForPointerToConst) { + StaticAssertTypeEq::value_type>(); + StaticAssertTypeEq::value_type>(); +} + +// Tests that the element_type typedef is available in scoped_ptr and refers +// to the parameter type. +TEST(ScopedPtrTest, DefinesElementType) { + StaticAssertTypeEq::element_type>(); +} + +// TODO(vladl@google.com): Implement THE REST of scoped_ptr tests. + +TEST(GtestCheckSyntaxTest, BehavesLikeASingleStatement) { + if (AlwaysFalse()) + GTEST_CHECK_(false) << "This should never be executed; " + "It's a compilation test only."; + + if (AlwaysTrue()) + GTEST_CHECK_(true); + else + ; // NOLINT + + if (AlwaysFalse()) + ; // NOLINT + else + GTEST_CHECK_(true) << ""; +} + +TEST(GtestCheckSyntaxTest, WorksWithSwitch) { + switch (0) { + case 1: + break; + default: + GTEST_CHECK_(true); + } + + switch (0) + case 0: + GTEST_CHECK_(true) << "Check failed in switch case"; +} + +// Verifies behavior of FormatFileLocation. +TEST(FormatFileLocationTest, FormatsFileLocation) { + EXPECT_PRED_FORMAT2(IsSubstring, "foo.cc", FormatFileLocation("foo.cc", 42)); + EXPECT_PRED_FORMAT2(IsSubstring, "42", FormatFileLocation("foo.cc", 42)); +} + +TEST(FormatFileLocationTest, FormatsUnknownFile) { + EXPECT_PRED_FORMAT2( + IsSubstring, "unknown file", FormatFileLocation(NULL, 42)); + EXPECT_PRED_FORMAT2(IsSubstring, "42", FormatFileLocation(NULL, 42)); +} + +TEST(FormatFileLocationTest, FormatsUknownLine) { + EXPECT_EQ("foo.cc:", FormatFileLocation("foo.cc", -1)); +} + +TEST(FormatFileLocationTest, FormatsUknownFileAndLine) { + EXPECT_EQ("unknown file:", FormatFileLocation(NULL, -1)); +} + +// Verifies behavior of FormatCompilerIndependentFileLocation. +TEST(FormatCompilerIndependentFileLocationTest, FormatsFileLocation) { + EXPECT_EQ("foo.cc:42", FormatCompilerIndependentFileLocation("foo.cc", 42)); +} + +TEST(FormatCompilerIndependentFileLocationTest, FormatsUknownFile) { + EXPECT_EQ("unknown file:42", + FormatCompilerIndependentFileLocation(NULL, 42)); +} + +TEST(FormatCompilerIndependentFileLocationTest, FormatsUknownLine) { + EXPECT_EQ("foo.cc", FormatCompilerIndependentFileLocation("foo.cc", -1)); +} + +TEST(FormatCompilerIndependentFileLocationTest, FormatsUknownFileAndLine) { + EXPECT_EQ("unknown file", FormatCompilerIndependentFileLocation(NULL, -1)); +} + +#if GTEST_OS_MAC || GTEST_OS_QNX +void* ThreadFunc(void* data) { + pthread_mutex_t* mutex = static_cast(data); + pthread_mutex_lock(mutex); + pthread_mutex_unlock(mutex); + return NULL; +} + +TEST(GetThreadCountTest, ReturnsCorrectValue) { + EXPECT_EQ(1U, GetThreadCount()); + pthread_mutex_t mutex; + pthread_attr_t attr; + pthread_t thread_id; + + // TODO(vladl@google.com): turn mutex into internal::Mutex for automatic + // destruction. + pthread_mutex_init(&mutex, NULL); + pthread_mutex_lock(&mutex); + ASSERT_EQ(0, pthread_attr_init(&attr)); + ASSERT_EQ(0, pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE)); + + const int status = pthread_create(&thread_id, &attr, &ThreadFunc, &mutex); + ASSERT_EQ(0, pthread_attr_destroy(&attr)); + ASSERT_EQ(0, status); + EXPECT_EQ(2U, GetThreadCount()); + pthread_mutex_unlock(&mutex); + + void* dummy; + ASSERT_EQ(0, pthread_join(thread_id, &dummy)); + +# if GTEST_OS_MAC + + // MacOS X may not immediately report the updated thread count after + // joining a thread, causing flakiness in this test. To counter that, we + // wait for up to .5 seconds for the OS to report the correct value. + for (int i = 0; i < 5; ++i) { + if (GetThreadCount() == 1) + break; + + SleepMilliseconds(100); + } + +# endif // GTEST_OS_MAC + + EXPECT_EQ(1U, GetThreadCount()); + pthread_mutex_destroy(&mutex); +} +#else +TEST(GetThreadCountTest, ReturnsZeroWhenUnableToCountThreads) { + EXPECT_EQ(0U, GetThreadCount()); +} +#endif // GTEST_OS_MAC || GTEST_OS_QNX + +TEST(GtestCheckDeathTest, DiesWithCorrectOutputOnFailure) { + const bool a_false_condition = false; + const char regex[] = +#ifdef _MSC_VER + "gtest-port_test\\.cc\\(\\d+\\):" +#elif GTEST_USES_POSIX_RE + "gtest-port_test\\.cc:[0-9]+" +#else + "gtest-port_test\\.cc:\\d+" +#endif // _MSC_VER + ".*a_false_condition.*Extra info.*"; + + EXPECT_DEATH_IF_SUPPORTED(GTEST_CHECK_(a_false_condition) << "Extra info", + regex); +} + +#if GTEST_HAS_DEATH_TEST + +TEST(GtestCheckDeathTest, LivesSilentlyOnSuccess) { + EXPECT_EXIT({ + GTEST_CHECK_(true) << "Extra info"; + ::std::cerr << "Success\n"; + exit(0); }, + ::testing::ExitedWithCode(0), "Success"); +} + +#endif // GTEST_HAS_DEATH_TEST + +// Verifies that Google Test choose regular expression engine appropriate to +// the platform. The test will produce compiler errors in case of failure. +// For simplicity, we only cover the most important platforms here. +TEST(RegexEngineSelectionTest, SelectsCorrectRegexEngine) { +#if GTEST_HAS_POSIX_RE + + EXPECT_TRUE(GTEST_USES_POSIX_RE); + +#else + + EXPECT_TRUE(GTEST_USES_SIMPLE_RE); + +#endif +} + +#if GTEST_USES_POSIX_RE + +# if GTEST_HAS_TYPED_TEST + +template +class RETest : public ::testing::Test {}; + +// Defines StringTypes as the list of all string types that class RE +// supports. +typedef testing::Types< + ::std::string, +# if GTEST_HAS_GLOBAL_STRING + ::string, +# endif // GTEST_HAS_GLOBAL_STRING + const char*> StringTypes; + +TYPED_TEST_CASE(RETest, StringTypes); + +// Tests RE's implicit constructors. +TYPED_TEST(RETest, ImplicitConstructorWorks) { + const RE empty(TypeParam("")); + EXPECT_STREQ("", empty.pattern()); + + const RE simple(TypeParam("hello")); + EXPECT_STREQ("hello", simple.pattern()); + + const RE normal(TypeParam(".*(\\w+)")); + EXPECT_STREQ(".*(\\w+)", normal.pattern()); +} + +// Tests that RE's constructors reject invalid regular expressions. +TYPED_TEST(RETest, RejectsInvalidRegex) { + EXPECT_NONFATAL_FAILURE({ + const RE invalid(TypeParam("?")); + }, "\"?\" is not a valid POSIX Extended regular expression."); +} + +// Tests RE::FullMatch(). +TYPED_TEST(RETest, FullMatchWorks) { + const RE empty(TypeParam("")); + EXPECT_TRUE(RE::FullMatch(TypeParam(""), empty)); + EXPECT_FALSE(RE::FullMatch(TypeParam("a"), empty)); + + const RE re(TypeParam("a.*z")); + EXPECT_TRUE(RE::FullMatch(TypeParam("az"), re)); + EXPECT_TRUE(RE::FullMatch(TypeParam("axyz"), re)); + EXPECT_FALSE(RE::FullMatch(TypeParam("baz"), re)); + EXPECT_FALSE(RE::FullMatch(TypeParam("azy"), re)); +} + +// Tests RE::PartialMatch(). +TYPED_TEST(RETest, PartialMatchWorks) { + const RE empty(TypeParam("")); + EXPECT_TRUE(RE::PartialMatch(TypeParam(""), empty)); + EXPECT_TRUE(RE::PartialMatch(TypeParam("a"), empty)); + + const RE re(TypeParam("a.*z")); + EXPECT_TRUE(RE::PartialMatch(TypeParam("az"), re)); + EXPECT_TRUE(RE::PartialMatch(TypeParam("axyz"), re)); + EXPECT_TRUE(RE::PartialMatch(TypeParam("baz"), re)); + EXPECT_TRUE(RE::PartialMatch(TypeParam("azy"), re)); + EXPECT_FALSE(RE::PartialMatch(TypeParam("zza"), re)); +} + +# endif // GTEST_HAS_TYPED_TEST + +#elif GTEST_USES_SIMPLE_RE + +TEST(IsInSetTest, NulCharIsNotInAnySet) { + EXPECT_FALSE(IsInSet('\0', "")); + EXPECT_FALSE(IsInSet('\0', "\0")); + EXPECT_FALSE(IsInSet('\0', "a")); +} + +TEST(IsInSetTest, WorksForNonNulChars) { + EXPECT_FALSE(IsInSet('a', "Ab")); + EXPECT_FALSE(IsInSet('c', "")); + + EXPECT_TRUE(IsInSet('b', "bcd")); + EXPECT_TRUE(IsInSet('b', "ab")); +} + +TEST(IsAsciiDigitTest, IsFalseForNonDigit) { + EXPECT_FALSE(IsAsciiDigit('\0')); + EXPECT_FALSE(IsAsciiDigit(' ')); + EXPECT_FALSE(IsAsciiDigit('+')); + EXPECT_FALSE(IsAsciiDigit('-')); + EXPECT_FALSE(IsAsciiDigit('.')); + EXPECT_FALSE(IsAsciiDigit('a')); +} + +TEST(IsAsciiDigitTest, IsTrueForDigit) { + EXPECT_TRUE(IsAsciiDigit('0')); + EXPECT_TRUE(IsAsciiDigit('1')); + EXPECT_TRUE(IsAsciiDigit('5')); + EXPECT_TRUE(IsAsciiDigit('9')); +} + +TEST(IsAsciiPunctTest, IsFalseForNonPunct) { + EXPECT_FALSE(IsAsciiPunct('\0')); + EXPECT_FALSE(IsAsciiPunct(' ')); + EXPECT_FALSE(IsAsciiPunct('\n')); + EXPECT_FALSE(IsAsciiPunct('a')); + EXPECT_FALSE(IsAsciiPunct('0')); +} + +TEST(IsAsciiPunctTest, IsTrueForPunct) { + for (const char* p = "^-!\"#$%&'()*+,./:;<=>?@[\\]_`{|}~"; *p; p++) { + EXPECT_PRED1(IsAsciiPunct, *p); + } +} + +TEST(IsRepeatTest, IsFalseForNonRepeatChar) { + EXPECT_FALSE(IsRepeat('\0')); + EXPECT_FALSE(IsRepeat(' ')); + EXPECT_FALSE(IsRepeat('a')); + EXPECT_FALSE(IsRepeat('1')); + EXPECT_FALSE(IsRepeat('-')); +} + +TEST(IsRepeatTest, IsTrueForRepeatChar) { + EXPECT_TRUE(IsRepeat('?')); + EXPECT_TRUE(IsRepeat('*')); + EXPECT_TRUE(IsRepeat('+')); +} + +TEST(IsAsciiWhiteSpaceTest, IsFalseForNonWhiteSpace) { + EXPECT_FALSE(IsAsciiWhiteSpace('\0')); + EXPECT_FALSE(IsAsciiWhiteSpace('a')); + EXPECT_FALSE(IsAsciiWhiteSpace('1')); + EXPECT_FALSE(IsAsciiWhiteSpace('+')); + EXPECT_FALSE(IsAsciiWhiteSpace('_')); +} + +TEST(IsAsciiWhiteSpaceTest, IsTrueForWhiteSpace) { + EXPECT_TRUE(IsAsciiWhiteSpace(' ')); + EXPECT_TRUE(IsAsciiWhiteSpace('\n')); + EXPECT_TRUE(IsAsciiWhiteSpace('\r')); + EXPECT_TRUE(IsAsciiWhiteSpace('\t')); + EXPECT_TRUE(IsAsciiWhiteSpace('\v')); + EXPECT_TRUE(IsAsciiWhiteSpace('\f')); +} + +TEST(IsAsciiWordCharTest, IsFalseForNonWordChar) { + EXPECT_FALSE(IsAsciiWordChar('\0')); + EXPECT_FALSE(IsAsciiWordChar('+')); + EXPECT_FALSE(IsAsciiWordChar('.')); + EXPECT_FALSE(IsAsciiWordChar(' ')); + EXPECT_FALSE(IsAsciiWordChar('\n')); +} + +TEST(IsAsciiWordCharTest, IsTrueForLetter) { + EXPECT_TRUE(IsAsciiWordChar('a')); + EXPECT_TRUE(IsAsciiWordChar('b')); + EXPECT_TRUE(IsAsciiWordChar('A')); + EXPECT_TRUE(IsAsciiWordChar('Z')); +} + +TEST(IsAsciiWordCharTest, IsTrueForDigit) { + EXPECT_TRUE(IsAsciiWordChar('0')); + EXPECT_TRUE(IsAsciiWordChar('1')); + EXPECT_TRUE(IsAsciiWordChar('7')); + EXPECT_TRUE(IsAsciiWordChar('9')); +} + +TEST(IsAsciiWordCharTest, IsTrueForUnderscore) { + EXPECT_TRUE(IsAsciiWordChar('_')); +} + +TEST(IsValidEscapeTest, IsFalseForNonPrintable) { + EXPECT_FALSE(IsValidEscape('\0')); + EXPECT_FALSE(IsValidEscape('\007')); +} + +TEST(IsValidEscapeTest, IsFalseForDigit) { + EXPECT_FALSE(IsValidEscape('0')); + EXPECT_FALSE(IsValidEscape('9')); +} + +TEST(IsValidEscapeTest, IsFalseForWhiteSpace) { + EXPECT_FALSE(IsValidEscape(' ')); + EXPECT_FALSE(IsValidEscape('\n')); +} + +TEST(IsValidEscapeTest, IsFalseForSomeLetter) { + EXPECT_FALSE(IsValidEscape('a')); + EXPECT_FALSE(IsValidEscape('Z')); +} + +TEST(IsValidEscapeTest, IsTrueForPunct) { + EXPECT_TRUE(IsValidEscape('.')); + EXPECT_TRUE(IsValidEscape('-')); + EXPECT_TRUE(IsValidEscape('^')); + EXPECT_TRUE(IsValidEscape('$')); + EXPECT_TRUE(IsValidEscape('(')); + EXPECT_TRUE(IsValidEscape(']')); + EXPECT_TRUE(IsValidEscape('{')); + EXPECT_TRUE(IsValidEscape('|')); +} + +TEST(IsValidEscapeTest, IsTrueForSomeLetter) { + EXPECT_TRUE(IsValidEscape('d')); + EXPECT_TRUE(IsValidEscape('D')); + EXPECT_TRUE(IsValidEscape('s')); + EXPECT_TRUE(IsValidEscape('S')); + EXPECT_TRUE(IsValidEscape('w')); + EXPECT_TRUE(IsValidEscape('W')); +} + +TEST(AtomMatchesCharTest, EscapedPunct) { + EXPECT_FALSE(AtomMatchesChar(true, '\\', '\0')); + EXPECT_FALSE(AtomMatchesChar(true, '\\', ' ')); + EXPECT_FALSE(AtomMatchesChar(true, '_', '.')); + EXPECT_FALSE(AtomMatchesChar(true, '.', 'a')); + + EXPECT_TRUE(AtomMatchesChar(true, '\\', '\\')); + EXPECT_TRUE(AtomMatchesChar(true, '_', '_')); + EXPECT_TRUE(AtomMatchesChar(true, '+', '+')); + EXPECT_TRUE(AtomMatchesChar(true, '.', '.')); +} + +TEST(AtomMatchesCharTest, Escaped_d) { + EXPECT_FALSE(AtomMatchesChar(true, 'd', '\0')); + EXPECT_FALSE(AtomMatchesChar(true, 'd', 'a')); + EXPECT_FALSE(AtomMatchesChar(true, 'd', '.')); + + EXPECT_TRUE(AtomMatchesChar(true, 'd', '0')); + EXPECT_TRUE(AtomMatchesChar(true, 'd', '9')); +} + +TEST(AtomMatchesCharTest, Escaped_D) { + EXPECT_FALSE(AtomMatchesChar(true, 'D', '0')); + EXPECT_FALSE(AtomMatchesChar(true, 'D', '9')); + + EXPECT_TRUE(AtomMatchesChar(true, 'D', '\0')); + EXPECT_TRUE(AtomMatchesChar(true, 'D', 'a')); + EXPECT_TRUE(AtomMatchesChar(true, 'D', '-')); +} + +TEST(AtomMatchesCharTest, Escaped_s) { + EXPECT_FALSE(AtomMatchesChar(true, 's', '\0')); + EXPECT_FALSE(AtomMatchesChar(true, 's', 'a')); + EXPECT_FALSE(AtomMatchesChar(true, 's', '.')); + EXPECT_FALSE(AtomMatchesChar(true, 's', '9')); + + EXPECT_TRUE(AtomMatchesChar(true, 's', ' ')); + EXPECT_TRUE(AtomMatchesChar(true, 's', '\n')); + EXPECT_TRUE(AtomMatchesChar(true, 's', '\t')); +} + +TEST(AtomMatchesCharTest, Escaped_S) { + EXPECT_FALSE(AtomMatchesChar(true, 'S', ' ')); + EXPECT_FALSE(AtomMatchesChar(true, 'S', '\r')); + + EXPECT_TRUE(AtomMatchesChar(true, 'S', '\0')); + EXPECT_TRUE(AtomMatchesChar(true, 'S', 'a')); + EXPECT_TRUE(AtomMatchesChar(true, 'S', '9')); +} + +TEST(AtomMatchesCharTest, Escaped_w) { + EXPECT_FALSE(AtomMatchesChar(true, 'w', '\0')); + EXPECT_FALSE(AtomMatchesChar(true, 'w', '+')); + EXPECT_FALSE(AtomMatchesChar(true, 'w', ' ')); + EXPECT_FALSE(AtomMatchesChar(true, 'w', '\n')); + + EXPECT_TRUE(AtomMatchesChar(true, 'w', '0')); + EXPECT_TRUE(AtomMatchesChar(true, 'w', 'b')); + EXPECT_TRUE(AtomMatchesChar(true, 'w', 'C')); + EXPECT_TRUE(AtomMatchesChar(true, 'w', '_')); +} + +TEST(AtomMatchesCharTest, Escaped_W) { + EXPECT_FALSE(AtomMatchesChar(true, 'W', 'A')); + EXPECT_FALSE(AtomMatchesChar(true, 'W', 'b')); + EXPECT_FALSE(AtomMatchesChar(true, 'W', '9')); + EXPECT_FALSE(AtomMatchesChar(true, 'W', '_')); + + EXPECT_TRUE(AtomMatchesChar(true, 'W', '\0')); + EXPECT_TRUE(AtomMatchesChar(true, 'W', '*')); + EXPECT_TRUE(AtomMatchesChar(true, 'W', '\n')); +} + +TEST(AtomMatchesCharTest, EscapedWhiteSpace) { + EXPECT_FALSE(AtomMatchesChar(true, 'f', '\0')); + EXPECT_FALSE(AtomMatchesChar(true, 'f', '\n')); + EXPECT_FALSE(AtomMatchesChar(true, 'n', '\0')); + EXPECT_FALSE(AtomMatchesChar(true, 'n', '\r')); + EXPECT_FALSE(AtomMatchesChar(true, 'r', '\0')); + EXPECT_FALSE(AtomMatchesChar(true, 'r', 'a')); + EXPECT_FALSE(AtomMatchesChar(true, 't', '\0')); + EXPECT_FALSE(AtomMatchesChar(true, 't', 't')); + EXPECT_FALSE(AtomMatchesChar(true, 'v', '\0')); + EXPECT_FALSE(AtomMatchesChar(true, 'v', '\f')); + + EXPECT_TRUE(AtomMatchesChar(true, 'f', '\f')); + EXPECT_TRUE(AtomMatchesChar(true, 'n', '\n')); + EXPECT_TRUE(AtomMatchesChar(true, 'r', '\r')); + EXPECT_TRUE(AtomMatchesChar(true, 't', '\t')); + EXPECT_TRUE(AtomMatchesChar(true, 'v', '\v')); +} + +TEST(AtomMatchesCharTest, UnescapedDot) { + EXPECT_FALSE(AtomMatchesChar(false, '.', '\n')); + + EXPECT_TRUE(AtomMatchesChar(false, '.', '\0')); + EXPECT_TRUE(AtomMatchesChar(false, '.', '.')); + EXPECT_TRUE(AtomMatchesChar(false, '.', 'a')); + EXPECT_TRUE(AtomMatchesChar(false, '.', ' ')); +} + +TEST(AtomMatchesCharTest, UnescapedChar) { + EXPECT_FALSE(AtomMatchesChar(false, 'a', '\0')); + EXPECT_FALSE(AtomMatchesChar(false, 'a', 'b')); + EXPECT_FALSE(AtomMatchesChar(false, '$', 'a')); + + EXPECT_TRUE(AtomMatchesChar(false, '$', '$')); + EXPECT_TRUE(AtomMatchesChar(false, '5', '5')); + EXPECT_TRUE(AtomMatchesChar(false, 'Z', 'Z')); +} + +TEST(ValidateRegexTest, GeneratesFailureAndReturnsFalseForInvalid) { + EXPECT_NONFATAL_FAILURE(ASSERT_FALSE(ValidateRegex(NULL)), + "NULL is not a valid simple regular expression"); + EXPECT_NONFATAL_FAILURE( + ASSERT_FALSE(ValidateRegex("a\\")), + "Syntax error at index 1 in simple regular expression \"a\\\": "); + EXPECT_NONFATAL_FAILURE(ASSERT_FALSE(ValidateRegex("a\\")), + "'\\' cannot appear at the end"); + EXPECT_NONFATAL_FAILURE(ASSERT_FALSE(ValidateRegex("\\n\\")), + "'\\' cannot appear at the end"); + EXPECT_NONFATAL_FAILURE(ASSERT_FALSE(ValidateRegex("\\s\\hb")), + "invalid escape sequence \"\\h\""); + EXPECT_NONFATAL_FAILURE(ASSERT_FALSE(ValidateRegex("^^")), + "'^' can only appear at the beginning"); + EXPECT_NONFATAL_FAILURE(ASSERT_FALSE(ValidateRegex(".*^b")), + "'^' can only appear at the beginning"); + EXPECT_NONFATAL_FAILURE(ASSERT_FALSE(ValidateRegex("$$")), + "'$' can only appear at the end"); + EXPECT_NONFATAL_FAILURE(ASSERT_FALSE(ValidateRegex("^$a")), + "'$' can only appear at the end"); + EXPECT_NONFATAL_FAILURE(ASSERT_FALSE(ValidateRegex("a(b")), + "'(' is unsupported"); + EXPECT_NONFATAL_FAILURE(ASSERT_FALSE(ValidateRegex("ab)")), + "')' is unsupported"); + EXPECT_NONFATAL_FAILURE(ASSERT_FALSE(ValidateRegex("[ab")), + "'[' is unsupported"); + EXPECT_NONFATAL_FAILURE(ASSERT_FALSE(ValidateRegex("a{2")), + "'{' is unsupported"); + EXPECT_NONFATAL_FAILURE(ASSERT_FALSE(ValidateRegex("?")), + "'?' can only follow a repeatable token"); + EXPECT_NONFATAL_FAILURE(ASSERT_FALSE(ValidateRegex("^*")), + "'*' can only follow a repeatable token"); + EXPECT_NONFATAL_FAILURE(ASSERT_FALSE(ValidateRegex("5*+")), + "'+' can only follow a repeatable token"); +} + +TEST(ValidateRegexTest, ReturnsTrueForValid) { + EXPECT_TRUE(ValidateRegex("")); + EXPECT_TRUE(ValidateRegex("a")); + EXPECT_TRUE(ValidateRegex(".*")); + EXPECT_TRUE(ValidateRegex("^a_+")); + EXPECT_TRUE(ValidateRegex("^a\\t\\&?")); + EXPECT_TRUE(ValidateRegex("09*$")); + EXPECT_TRUE(ValidateRegex("^Z$")); + EXPECT_TRUE(ValidateRegex("a\\^Z\\$\\(\\)\\|\\[\\]\\{\\}")); +} + +TEST(MatchRepetitionAndRegexAtHeadTest, WorksForZeroOrOne) { + EXPECT_FALSE(MatchRepetitionAndRegexAtHead(false, 'a', '?', "a", "ba")); + // Repeating more than once. + EXPECT_FALSE(MatchRepetitionAndRegexAtHead(false, 'a', '?', "b", "aab")); + + // Repeating zero times. + EXPECT_TRUE(MatchRepetitionAndRegexAtHead(false, 'a', '?', "b", "ba")); + // Repeating once. + EXPECT_TRUE(MatchRepetitionAndRegexAtHead(false, 'a', '?', "b", "ab")); + EXPECT_TRUE(MatchRepetitionAndRegexAtHead(false, '#', '?', ".", "##")); +} + +TEST(MatchRepetitionAndRegexAtHeadTest, WorksForZeroOrMany) { + EXPECT_FALSE(MatchRepetitionAndRegexAtHead(false, '.', '*', "a$", "baab")); + + // Repeating zero times. + EXPECT_TRUE(MatchRepetitionAndRegexAtHead(false, '.', '*', "b", "bc")); + // Repeating once. + EXPECT_TRUE(MatchRepetitionAndRegexAtHead(false, '.', '*', "b", "abc")); + // Repeating more than once. + EXPECT_TRUE(MatchRepetitionAndRegexAtHead(true, 'w', '*', "-", "ab_1-g")); +} + +TEST(MatchRepetitionAndRegexAtHeadTest, WorksForOneOrMany) { + EXPECT_FALSE(MatchRepetitionAndRegexAtHead(false, '.', '+', "a$", "baab")); + // Repeating zero times. + EXPECT_FALSE(MatchRepetitionAndRegexAtHead(false, '.', '+', "b", "bc")); + + // Repeating once. + EXPECT_TRUE(MatchRepetitionAndRegexAtHead(false, '.', '+', "b", "abc")); + // Repeating more than once. + EXPECT_TRUE(MatchRepetitionAndRegexAtHead(true, 'w', '+', "-", "ab_1-g")); +} + +TEST(MatchRegexAtHeadTest, ReturnsTrueForEmptyRegex) { + EXPECT_TRUE(MatchRegexAtHead("", "")); + EXPECT_TRUE(MatchRegexAtHead("", "ab")); +} + +TEST(MatchRegexAtHeadTest, WorksWhenDollarIsInRegex) { + EXPECT_FALSE(MatchRegexAtHead("$", "a")); + + EXPECT_TRUE(MatchRegexAtHead("$", "")); + EXPECT_TRUE(MatchRegexAtHead("a$", "a")); +} + +TEST(MatchRegexAtHeadTest, WorksWhenRegexStartsWithEscapeSequence) { + EXPECT_FALSE(MatchRegexAtHead("\\w", "+")); + EXPECT_FALSE(MatchRegexAtHead("\\W", "ab")); + + EXPECT_TRUE(MatchRegexAtHead("\\sa", "\nab")); + EXPECT_TRUE(MatchRegexAtHead("\\d", "1a")); +} + +TEST(MatchRegexAtHeadTest, WorksWhenRegexStartsWithRepetition) { + EXPECT_FALSE(MatchRegexAtHead(".+a", "abc")); + EXPECT_FALSE(MatchRegexAtHead("a?b", "aab")); + + EXPECT_TRUE(MatchRegexAtHead(".*a", "bc12-ab")); + EXPECT_TRUE(MatchRegexAtHead("a?b", "b")); + EXPECT_TRUE(MatchRegexAtHead("a?b", "ab")); +} + +TEST(MatchRegexAtHeadTest, + WorksWhenRegexStartsWithRepetionOfEscapeSequence) { + EXPECT_FALSE(MatchRegexAtHead("\\.+a", "abc")); + EXPECT_FALSE(MatchRegexAtHead("\\s?b", " b")); + + EXPECT_TRUE(MatchRegexAtHead("\\(*a", "((((ab")); + EXPECT_TRUE(MatchRegexAtHead("\\^?b", "^b")); + EXPECT_TRUE(MatchRegexAtHead("\\\\?b", "b")); + EXPECT_TRUE(MatchRegexAtHead("\\\\?b", "\\b")); +} + +TEST(MatchRegexAtHeadTest, MatchesSequentially) { + EXPECT_FALSE(MatchRegexAtHead("ab.*c", "acabc")); + + EXPECT_TRUE(MatchRegexAtHead("ab.*c", "ab-fsc")); +} + +TEST(MatchRegexAnywhereTest, ReturnsFalseWhenStringIsNull) { + EXPECT_FALSE(MatchRegexAnywhere("", NULL)); +} + +TEST(MatchRegexAnywhereTest, WorksWhenRegexStartsWithCaret) { + EXPECT_FALSE(MatchRegexAnywhere("^a", "ba")); + EXPECT_FALSE(MatchRegexAnywhere("^$", "a")); + + EXPECT_TRUE(MatchRegexAnywhere("^a", "ab")); + EXPECT_TRUE(MatchRegexAnywhere("^", "ab")); + EXPECT_TRUE(MatchRegexAnywhere("^$", "")); +} + +TEST(MatchRegexAnywhereTest, ReturnsFalseWhenNoMatch) { + EXPECT_FALSE(MatchRegexAnywhere("a", "bcde123")); + EXPECT_FALSE(MatchRegexAnywhere("a.+a", "--aa88888888")); +} + +TEST(MatchRegexAnywhereTest, ReturnsTrueWhenMatchingPrefix) { + EXPECT_TRUE(MatchRegexAnywhere("\\w+", "ab1_ - 5")); + EXPECT_TRUE(MatchRegexAnywhere(".*=", "=")); + EXPECT_TRUE(MatchRegexAnywhere("x.*ab?.*bc", "xaaabc")); +} + +TEST(MatchRegexAnywhereTest, ReturnsTrueWhenMatchingNonPrefix) { + EXPECT_TRUE(MatchRegexAnywhere("\\w+", "$$$ ab1_ - 5")); + EXPECT_TRUE(MatchRegexAnywhere("\\.+=", "= ...=")); +} + +// Tests RE's implicit constructors. +TEST(RETest, ImplicitConstructorWorks) { + const RE empty(""); + EXPECT_STREQ("", empty.pattern()); + + const RE simple("hello"); + EXPECT_STREQ("hello", simple.pattern()); +} + +// Tests that RE's constructors reject invalid regular expressions. +TEST(RETest, RejectsInvalidRegex) { + EXPECT_NONFATAL_FAILURE({ + const RE normal(NULL); + }, "NULL is not a valid simple regular expression"); + + EXPECT_NONFATAL_FAILURE({ + const RE normal(".*(\\w+"); + }, "'(' is unsupported"); + + EXPECT_NONFATAL_FAILURE({ + const RE invalid("^?"); + }, "'?' can only follow a repeatable token"); +} + +// Tests RE::FullMatch(). +TEST(RETest, FullMatchWorks) { + const RE empty(""); + EXPECT_TRUE(RE::FullMatch("", empty)); + EXPECT_FALSE(RE::FullMatch("a", empty)); + + const RE re1("a"); + EXPECT_TRUE(RE::FullMatch("a", re1)); + + const RE re("a.*z"); + EXPECT_TRUE(RE::FullMatch("az", re)); + EXPECT_TRUE(RE::FullMatch("axyz", re)); + EXPECT_FALSE(RE::FullMatch("baz", re)); + EXPECT_FALSE(RE::FullMatch("azy", re)); +} + +// Tests RE::PartialMatch(). +TEST(RETest, PartialMatchWorks) { + const RE empty(""); + EXPECT_TRUE(RE::PartialMatch("", empty)); + EXPECT_TRUE(RE::PartialMatch("a", empty)); + + const RE re("a.*z"); + EXPECT_TRUE(RE::PartialMatch("az", re)); + EXPECT_TRUE(RE::PartialMatch("axyz", re)); + EXPECT_TRUE(RE::PartialMatch("baz", re)); + EXPECT_TRUE(RE::PartialMatch("azy", re)); + EXPECT_FALSE(RE::PartialMatch("zza", re)); +} + +#endif // GTEST_USES_POSIX_RE + +#if !GTEST_OS_WINDOWS_MOBILE + +TEST(CaptureTest, CapturesStdout) { + CaptureStdout(); + fprintf(stdout, "abc"); + EXPECT_STREQ("abc", GetCapturedStdout().c_str()); + + CaptureStdout(); + fprintf(stdout, "def%cghi", '\0'); + EXPECT_EQ(::std::string("def\0ghi", 7), ::std::string(GetCapturedStdout())); +} + +TEST(CaptureTest, CapturesStderr) { + CaptureStderr(); + fprintf(stderr, "jkl"); + EXPECT_STREQ("jkl", GetCapturedStderr().c_str()); + + CaptureStderr(); + fprintf(stderr, "jkl%cmno", '\0'); + EXPECT_EQ(::std::string("jkl\0mno", 7), ::std::string(GetCapturedStderr())); +} + +// Tests that stdout and stderr capture don't interfere with each other. +TEST(CaptureTest, CapturesStdoutAndStderr) { + CaptureStdout(); + CaptureStderr(); + fprintf(stdout, "pqr"); + fprintf(stderr, "stu"); + EXPECT_STREQ("pqr", GetCapturedStdout().c_str()); + EXPECT_STREQ("stu", GetCapturedStderr().c_str()); +} + +TEST(CaptureDeathTest, CannotReenterStdoutCapture) { + CaptureStdout(); + EXPECT_DEATH_IF_SUPPORTED(CaptureStdout(), + "Only one stdout capturer can exist at a time"); + GetCapturedStdout(); + + // We cannot test stderr capturing using death tests as they use it + // themselves. +} + +#endif // !GTEST_OS_WINDOWS_MOBILE + +TEST(ThreadLocalTest, DefaultConstructorInitializesToDefaultValues) { + ThreadLocal t1; + EXPECT_EQ(0, t1.get()); + + ThreadLocal t2; + EXPECT_TRUE(t2.get() == NULL); +} + +TEST(ThreadLocalTest, SingleParamConstructorInitializesToParam) { + ThreadLocal t1(123); + EXPECT_EQ(123, t1.get()); + + int i = 0; + ThreadLocal t2(&i); + EXPECT_EQ(&i, t2.get()); +} + +class NoDefaultContructor { + public: + explicit NoDefaultContructor(const char*) {} + NoDefaultContructor(const NoDefaultContructor&) {} +}; + +TEST(ThreadLocalTest, ValueDefaultContructorIsNotRequiredForParamVersion) { + ThreadLocal bar(NoDefaultContructor("foo")); + bar.pointer(); +} + +TEST(ThreadLocalTest, GetAndPointerReturnSameValue) { + ThreadLocal thread_local_string; + + EXPECT_EQ(thread_local_string.pointer(), &(thread_local_string.get())); + + // Verifies the condition still holds after calling set. + thread_local_string.set("foo"); + EXPECT_EQ(thread_local_string.pointer(), &(thread_local_string.get())); +} + +TEST(ThreadLocalTest, PointerAndConstPointerReturnSameValue) { + ThreadLocal thread_local_string; + const ThreadLocal& const_thread_local_string = + thread_local_string; + + EXPECT_EQ(thread_local_string.pointer(), const_thread_local_string.pointer()); + + thread_local_string.set("foo"); + EXPECT_EQ(thread_local_string.pointer(), const_thread_local_string.pointer()); +} + +#if GTEST_IS_THREADSAFE + +void AddTwo(int* param) { *param += 2; } + +TEST(ThreadWithParamTest, ConstructorExecutesThreadFunc) { + int i = 40; + ThreadWithParam thread(&AddTwo, &i, NULL); + thread.Join(); + EXPECT_EQ(42, i); +} + +TEST(MutexDeathTest, AssertHeldShouldAssertWhenNotLocked) { + // AssertHeld() is flaky only in the presence of multiple threads accessing + // the lock. In this case, the test is robust. + EXPECT_DEATH_IF_SUPPORTED({ + Mutex m; + { MutexLock lock(&m); } + m.AssertHeld(); + }, + "thread .*hold"); +} + +TEST(MutexTest, AssertHeldShouldNotAssertWhenLocked) { + Mutex m; + MutexLock lock(&m); + m.AssertHeld(); +} + +class AtomicCounterWithMutex { + public: + explicit AtomicCounterWithMutex(Mutex* mutex) : + value_(0), mutex_(mutex), random_(42) {} + + void Increment() { + MutexLock lock(mutex_); + int temp = value_; + { + // Locking a mutex puts up a memory barrier, preventing reads and + // writes to value_ rearranged when observed from other threads. + // + // We cannot use Mutex and MutexLock here or rely on their memory + // barrier functionality as we are testing them here. + pthread_mutex_t memory_barrier_mutex; + GTEST_CHECK_POSIX_SUCCESS_( + pthread_mutex_init(&memory_barrier_mutex, NULL)); + GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_lock(&memory_barrier_mutex)); + + SleepMilliseconds(random_.Generate(30)); + + GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_unlock(&memory_barrier_mutex)); + GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_destroy(&memory_barrier_mutex)); + } + value_ = temp + 1; + } + int value() const { return value_; } + + private: + volatile int value_; + Mutex* const mutex_; // Protects value_. + Random random_; +}; + +void CountingThreadFunc(pair param) { + for (int i = 0; i < param.second; ++i) + param.first->Increment(); +} + +// Tests that the mutex only lets one thread at a time to lock it. +TEST(MutexTest, OnlyOneThreadCanLockAtATime) { + Mutex mutex; + AtomicCounterWithMutex locked_counter(&mutex); + + typedef ThreadWithParam > ThreadType; + const int kCycleCount = 20; + const int kThreadCount = 7; + scoped_ptr counting_threads[kThreadCount]; + Notification threads_can_start; + // Creates and runs kThreadCount threads that increment locked_counter + // kCycleCount times each. + for (int i = 0; i < kThreadCount; ++i) { + counting_threads[i].reset(new ThreadType(&CountingThreadFunc, + make_pair(&locked_counter, + kCycleCount), + &threads_can_start)); + } + threads_can_start.Notify(); + for (int i = 0; i < kThreadCount; ++i) + counting_threads[i]->Join(); + + // If the mutex lets more than one thread to increment the counter at a + // time, they are likely to encounter a race condition and have some + // increments overwritten, resulting in the lower then expected counter + // value. + EXPECT_EQ(kCycleCount * kThreadCount, locked_counter.value()); +} + +template +void RunFromThread(void (func)(T), T param) { + ThreadWithParam thread(func, param, NULL); + thread.Join(); +} + +void RetrieveThreadLocalValue( + pair*, std::string*> param) { + *param.second = param.first->get(); +} + +TEST(ThreadLocalTest, ParameterizedConstructorSetsDefault) { + ThreadLocal thread_local_string("foo"); + EXPECT_STREQ("foo", thread_local_string.get().c_str()); + + thread_local_string.set("bar"); + EXPECT_STREQ("bar", thread_local_string.get().c_str()); + + std::string result; + RunFromThread(&RetrieveThreadLocalValue, + make_pair(&thread_local_string, &result)); + EXPECT_STREQ("foo", result.c_str()); +} + +// DestructorTracker keeps track of whether its instances have been +// destroyed. +static std::vector g_destroyed; + +class DestructorTracker { + public: + DestructorTracker() : index_(GetNewIndex()) {} + DestructorTracker(const DestructorTracker& /* rhs */) + : index_(GetNewIndex()) {} + ~DestructorTracker() { + // We never access g_destroyed concurrently, so we don't need to + // protect the write operation under a mutex. + g_destroyed[index_] = true; + } + + private: + static int GetNewIndex() { + g_destroyed.push_back(false); + return g_destroyed.size() - 1; + } + const int index_; +}; + +typedef ThreadLocal* ThreadParam; + +void CallThreadLocalGet(ThreadParam thread_local_param) { + thread_local_param->get(); +} + +// Tests that when a ThreadLocal object dies in a thread, it destroys +// the managed object for that thread. +TEST(ThreadLocalTest, DestroysManagedObjectForOwnThreadWhenDying) { + g_destroyed.clear(); + + { + // The next line default constructs a DestructorTracker object as + // the default value of objects managed by thread_local_tracker. + ThreadLocal thread_local_tracker; + ASSERT_EQ(1U, g_destroyed.size()); + ASSERT_FALSE(g_destroyed[0]); + + // This creates another DestructorTracker object for the main thread. + thread_local_tracker.get(); + ASSERT_EQ(2U, g_destroyed.size()); + ASSERT_FALSE(g_destroyed[0]); + ASSERT_FALSE(g_destroyed[1]); + } + + // Now thread_local_tracker has died. It should have destroyed both the + // default value shared by all threads and the value for the main + // thread. + ASSERT_EQ(2U, g_destroyed.size()); + EXPECT_TRUE(g_destroyed[0]); + EXPECT_TRUE(g_destroyed[1]); + + g_destroyed.clear(); +} + +// Tests that when a thread exits, the thread-local object for that +// thread is destroyed. +TEST(ThreadLocalTest, DestroysManagedObjectAtThreadExit) { + g_destroyed.clear(); + + { + // The next line default constructs a DestructorTracker object as + // the default value of objects managed by thread_local_tracker. + ThreadLocal thread_local_tracker; + ASSERT_EQ(1U, g_destroyed.size()); + ASSERT_FALSE(g_destroyed[0]); + + // This creates another DestructorTracker object in the new thread. + ThreadWithParam thread( + &CallThreadLocalGet, &thread_local_tracker, NULL); + thread.Join(); + + // Now the new thread has exited. The per-thread object for it + // should have been destroyed. + ASSERT_EQ(2U, g_destroyed.size()); + ASSERT_FALSE(g_destroyed[0]); + ASSERT_TRUE(g_destroyed[1]); + } + + // Now thread_local_tracker has died. The default value should have been + // destroyed too. + ASSERT_EQ(2U, g_destroyed.size()); + EXPECT_TRUE(g_destroyed[0]); + EXPECT_TRUE(g_destroyed[1]); + + g_destroyed.clear(); +} + +TEST(ThreadLocalTest, ThreadLocalMutationsAffectOnlyCurrentThread) { + ThreadLocal thread_local_string; + thread_local_string.set("Foo"); + EXPECT_STREQ("Foo", thread_local_string.get().c_str()); + + std::string result; + RunFromThread(&RetrieveThreadLocalValue, + make_pair(&thread_local_string, &result)); + EXPECT_TRUE(result.empty()); +} + +#endif // GTEST_IS_THREADSAFE + +} // namespace internal +} // namespace testing diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest-printers_test.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest-printers_test.cc new file mode 100644 index 00000000..45610f8f --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest-printers_test.cc @@ -0,0 +1,1561 @@ +// Copyright 2007, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +// Google Test - The Google C++ Testing Framework +// +// This file tests the universal value printer. + +#include "gtest/gtest-printers.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "gtest/gtest.h" + +// hash_map and hash_set are available under Visual C++. +#if _MSC_VER +# define GTEST_HAS_HASH_MAP_ 1 // Indicates that hash_map is available. +# include // NOLINT +# define GTEST_HAS_HASH_SET_ 1 // Indicates that hash_set is available. +# include // NOLINT +#endif // GTEST_OS_WINDOWS + +// Some user-defined types for testing the universal value printer. + +// An anonymous enum type. +enum AnonymousEnum { + kAE1 = -1, + kAE2 = 1 +}; + +// An enum without a user-defined printer. +enum EnumWithoutPrinter { + kEWP1 = -2, + kEWP2 = 42 +}; + +// An enum with a << operator. +enum EnumWithStreaming { + kEWS1 = 10 +}; + +std::ostream& operator<<(std::ostream& os, EnumWithStreaming e) { + return os << (e == kEWS1 ? "kEWS1" : "invalid"); +} + +// An enum with a PrintTo() function. +enum EnumWithPrintTo { + kEWPT1 = 1 +}; + +void PrintTo(EnumWithPrintTo e, std::ostream* os) { + *os << (e == kEWPT1 ? "kEWPT1" : "invalid"); +} + +// A class implicitly convertible to BiggestInt. +class BiggestIntConvertible { + public: + operator ::testing::internal::BiggestInt() const { return 42; } +}; + +// A user-defined unprintable class template in the global namespace. +template +class UnprintableTemplateInGlobal { + public: + UnprintableTemplateInGlobal() : value_() {} + private: + T value_; +}; + +// A user-defined streamable type in the global namespace. +class StreamableInGlobal { + public: + virtual ~StreamableInGlobal() {} +}; + +inline void operator<<(::std::ostream& os, const StreamableInGlobal& /* x */) { + os << "StreamableInGlobal"; +} + +void operator<<(::std::ostream& os, const StreamableInGlobal* /* x */) { + os << "StreamableInGlobal*"; +} + +namespace foo { + +// A user-defined unprintable type in a user namespace. +class UnprintableInFoo { + public: + UnprintableInFoo() : z_(0) { memcpy(xy_, "\xEF\x12\x0\x0\x34\xAB\x0\x0", 8); } + private: + char xy_[8]; + double z_; +}; + +// A user-defined printable type in a user-chosen namespace. +struct PrintableViaPrintTo { + PrintableViaPrintTo() : value() {} + int value; +}; + +void PrintTo(const PrintableViaPrintTo& x, ::std::ostream* os) { + *os << "PrintableViaPrintTo: " << x.value; +} + +// A type with a user-defined << for printing its pointer. +struct PointerPrintable { +}; + +::std::ostream& operator<<(::std::ostream& os, + const PointerPrintable* /* x */) { + return os << "PointerPrintable*"; +} + +// A user-defined printable class template in a user-chosen namespace. +template +class PrintableViaPrintToTemplate { + public: + explicit PrintableViaPrintToTemplate(const T& a_value) : value_(a_value) {} + + const T& value() const { return value_; } + private: + T value_; +}; + +template +void PrintTo(const PrintableViaPrintToTemplate& x, ::std::ostream* os) { + *os << "PrintableViaPrintToTemplate: " << x.value(); +} + +// A user-defined streamable class template in a user namespace. +template +class StreamableTemplateInFoo { + public: + StreamableTemplateInFoo() : value_() {} + + const T& value() const { return value_; } + private: + T value_; +}; + +template +inline ::std::ostream& operator<<(::std::ostream& os, + const StreamableTemplateInFoo& x) { + return os << "StreamableTemplateInFoo: " << x.value(); +} + +} // namespace foo + +namespace testing { +namespace gtest_printers_test { + +using ::std::deque; +using ::std::list; +using ::std::make_pair; +using ::std::map; +using ::std::multimap; +using ::std::multiset; +using ::std::pair; +using ::std::set; +using ::std::vector; +using ::testing::PrintToString; +using ::testing::internal::FormatForComparisonFailureMessage; +using ::testing::internal::ImplicitCast_; +using ::testing::internal::NativeArray; +using ::testing::internal::RE; +using ::testing::internal::Strings; +using ::testing::internal::UniversalPrint; +using ::testing::internal::UniversalPrinter; +using ::testing::internal::UniversalTersePrint; +using ::testing::internal::UniversalTersePrintTupleFieldsToStrings; +using ::testing::internal::kReference; +using ::testing::internal::string; + +#if GTEST_HAS_TR1_TUPLE +using ::std::tr1::make_tuple; +using ::std::tr1::tuple; +#endif + +#if _MSC_VER +// MSVC defines the following classes in the ::stdext namespace while +// gcc defines them in the :: namespace. Note that they are not part +// of the C++ standard. +using ::stdext::hash_map; +using ::stdext::hash_set; +using ::stdext::hash_multimap; +using ::stdext::hash_multiset; +#endif + +// Prints a value to a string using the universal value printer. This +// is a helper for testing UniversalPrinter::Print() for various types. +template +string Print(const T& value) { + ::std::stringstream ss; + UniversalPrinter::Print(value, &ss); + return ss.str(); +} + +// Prints a value passed by reference to a string, using the universal +// value printer. This is a helper for testing +// UniversalPrinter::Print() for various types. +template +string PrintByRef(const T& value) { + ::std::stringstream ss; + UniversalPrinter::Print(value, &ss); + return ss.str(); +} + +// Tests printing various enum types. + +TEST(PrintEnumTest, AnonymousEnum) { + EXPECT_EQ("-1", Print(kAE1)); + EXPECT_EQ("1", Print(kAE2)); +} + +TEST(PrintEnumTest, EnumWithoutPrinter) { + EXPECT_EQ("-2", Print(kEWP1)); + EXPECT_EQ("42", Print(kEWP2)); +} + +TEST(PrintEnumTest, EnumWithStreaming) { + EXPECT_EQ("kEWS1", Print(kEWS1)); + EXPECT_EQ("invalid", Print(static_cast(0))); +} + +TEST(PrintEnumTest, EnumWithPrintTo) { + EXPECT_EQ("kEWPT1", Print(kEWPT1)); + EXPECT_EQ("invalid", Print(static_cast(0))); +} + +// Tests printing a class implicitly convertible to BiggestInt. + +TEST(PrintClassTest, BiggestIntConvertible) { + EXPECT_EQ("42", Print(BiggestIntConvertible())); +} + +// Tests printing various char types. + +// char. +TEST(PrintCharTest, PlainChar) { + EXPECT_EQ("'\\0'", Print('\0')); + EXPECT_EQ("'\\'' (39, 0x27)", Print('\'')); + EXPECT_EQ("'\"' (34, 0x22)", Print('"')); + EXPECT_EQ("'?' (63, 0x3F)", Print('?')); + EXPECT_EQ("'\\\\' (92, 0x5C)", Print('\\')); + EXPECT_EQ("'\\a' (7)", Print('\a')); + EXPECT_EQ("'\\b' (8)", Print('\b')); + EXPECT_EQ("'\\f' (12, 0xC)", Print('\f')); + EXPECT_EQ("'\\n' (10, 0xA)", Print('\n')); + EXPECT_EQ("'\\r' (13, 0xD)", Print('\r')); + EXPECT_EQ("'\\t' (9)", Print('\t')); + EXPECT_EQ("'\\v' (11, 0xB)", Print('\v')); + EXPECT_EQ("'\\x7F' (127)", Print('\x7F')); + EXPECT_EQ("'\\xFF' (255)", Print('\xFF')); + EXPECT_EQ("' ' (32, 0x20)", Print(' ')); + EXPECT_EQ("'a' (97, 0x61)", Print('a')); +} + +// signed char. +TEST(PrintCharTest, SignedChar) { + EXPECT_EQ("'\\0'", Print(static_cast('\0'))); + EXPECT_EQ("'\\xCE' (-50)", + Print(static_cast(-50))); +} + +// unsigned char. +TEST(PrintCharTest, UnsignedChar) { + EXPECT_EQ("'\\0'", Print(static_cast('\0'))); + EXPECT_EQ("'b' (98, 0x62)", + Print(static_cast('b'))); +} + +// Tests printing other simple, built-in types. + +// bool. +TEST(PrintBuiltInTypeTest, Bool) { + EXPECT_EQ("false", Print(false)); + EXPECT_EQ("true", Print(true)); +} + +// wchar_t. +TEST(PrintBuiltInTypeTest, Wchar_t) { + EXPECT_EQ("L'\\0'", Print(L'\0')); + EXPECT_EQ("L'\\'' (39, 0x27)", Print(L'\'')); + EXPECT_EQ("L'\"' (34, 0x22)", Print(L'"')); + EXPECT_EQ("L'?' (63, 0x3F)", Print(L'?')); + EXPECT_EQ("L'\\\\' (92, 0x5C)", Print(L'\\')); + EXPECT_EQ("L'\\a' (7)", Print(L'\a')); + EXPECT_EQ("L'\\b' (8)", Print(L'\b')); + EXPECT_EQ("L'\\f' (12, 0xC)", Print(L'\f')); + EXPECT_EQ("L'\\n' (10, 0xA)", Print(L'\n')); + EXPECT_EQ("L'\\r' (13, 0xD)", Print(L'\r')); + EXPECT_EQ("L'\\t' (9)", Print(L'\t')); + EXPECT_EQ("L'\\v' (11, 0xB)", Print(L'\v')); + EXPECT_EQ("L'\\x7F' (127)", Print(L'\x7F')); + EXPECT_EQ("L'\\xFF' (255)", Print(L'\xFF')); + EXPECT_EQ("L' ' (32, 0x20)", Print(L' ')); + EXPECT_EQ("L'a' (97, 0x61)", Print(L'a')); + EXPECT_EQ("L'\\x576' (1398)", Print(static_cast(0x576))); + EXPECT_EQ("L'\\xC74D' (51021)", Print(static_cast(0xC74D))); +} + +// Test that Int64 provides more storage than wchar_t. +TEST(PrintTypeSizeTest, Wchar_t) { + EXPECT_LT(sizeof(wchar_t), sizeof(testing::internal::Int64)); +} + +// Various integer types. +TEST(PrintBuiltInTypeTest, Integer) { + EXPECT_EQ("'\\xFF' (255)", Print(static_cast(255))); // uint8 + EXPECT_EQ("'\\x80' (-128)", Print(static_cast(-128))); // int8 + EXPECT_EQ("65535", Print(USHRT_MAX)); // uint16 + EXPECT_EQ("-32768", Print(SHRT_MIN)); // int16 + EXPECT_EQ("4294967295", Print(UINT_MAX)); // uint32 + EXPECT_EQ("-2147483648", Print(INT_MIN)); // int32 + EXPECT_EQ("18446744073709551615", + Print(static_cast(-1))); // uint64 + EXPECT_EQ("-9223372036854775808", + Print(static_cast(1) << 63)); // int64 +} + +// Size types. +TEST(PrintBuiltInTypeTest, Size_t) { + EXPECT_EQ("1", Print(sizeof('a'))); // size_t. +#if !GTEST_OS_WINDOWS + // Windows has no ssize_t type. + EXPECT_EQ("-2", Print(static_cast(-2))); // ssize_t. +#endif // !GTEST_OS_WINDOWS +} + +// Floating-points. +TEST(PrintBuiltInTypeTest, FloatingPoints) { + EXPECT_EQ("1.5", Print(1.5f)); // float + EXPECT_EQ("-2.5", Print(-2.5)); // double +} + +// Since ::std::stringstream::operator<<(const void *) formats the pointer +// output differently with different compilers, we have to create the expected +// output first and use it as our expectation. +static string PrintPointer(const void *p) { + ::std::stringstream expected_result_stream; + expected_result_stream << p; + return expected_result_stream.str(); +} + +// Tests printing C strings. + +// const char*. +TEST(PrintCStringTest, Const) { + const char* p = "World"; + EXPECT_EQ(PrintPointer(p) + " pointing to \"World\"", Print(p)); +} + +// char*. +TEST(PrintCStringTest, NonConst) { + char p[] = "Hi"; + EXPECT_EQ(PrintPointer(p) + " pointing to \"Hi\"", + Print(static_cast(p))); +} + +// NULL C string. +TEST(PrintCStringTest, Null) { + const char* p = NULL; + EXPECT_EQ("NULL", Print(p)); +} + +// Tests that C strings are escaped properly. +TEST(PrintCStringTest, EscapesProperly) { + const char* p = "'\"?\\\a\b\f\n\r\t\v\x7F\xFF a"; + EXPECT_EQ(PrintPointer(p) + " pointing to \"'\\\"?\\\\\\a\\b\\f" + "\\n\\r\\t\\v\\x7F\\xFF a\"", + Print(p)); +} + + + +// MSVC compiler can be configured to define whar_t as a typedef +// of unsigned short. Defining an overload for const wchar_t* in that case +// would cause pointers to unsigned shorts be printed as wide strings, +// possibly accessing more memory than intended and causing invalid +// memory accesses. MSVC defines _NATIVE_WCHAR_T_DEFINED symbol when +// wchar_t is implemented as a native type. +#if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED) + +// const wchar_t*. +TEST(PrintWideCStringTest, Const) { + const wchar_t* p = L"World"; + EXPECT_EQ(PrintPointer(p) + " pointing to L\"World\"", Print(p)); +} + +// wchar_t*. +TEST(PrintWideCStringTest, NonConst) { + wchar_t p[] = L"Hi"; + EXPECT_EQ(PrintPointer(p) + " pointing to L\"Hi\"", + Print(static_cast(p))); +} + +// NULL wide C string. +TEST(PrintWideCStringTest, Null) { + const wchar_t* p = NULL; + EXPECT_EQ("NULL", Print(p)); +} + +// Tests that wide C strings are escaped properly. +TEST(PrintWideCStringTest, EscapesProperly) { + const wchar_t s[] = {'\'', '"', '?', '\\', '\a', '\b', '\f', '\n', '\r', + '\t', '\v', 0xD3, 0x576, 0x8D3, 0xC74D, ' ', 'a', '\0'}; + EXPECT_EQ(PrintPointer(s) + " pointing to L\"'\\\"?\\\\\\a\\b\\f" + "\\n\\r\\t\\v\\xD3\\x576\\x8D3\\xC74D a\"", + Print(static_cast(s))); +} +#endif // native wchar_t + +// Tests printing pointers to other char types. + +// signed char*. +TEST(PrintCharPointerTest, SignedChar) { + signed char* p = reinterpret_cast(0x1234); + EXPECT_EQ(PrintPointer(p), Print(p)); + p = NULL; + EXPECT_EQ("NULL", Print(p)); +} + +// const signed char*. +TEST(PrintCharPointerTest, ConstSignedChar) { + signed char* p = reinterpret_cast(0x1234); + EXPECT_EQ(PrintPointer(p), Print(p)); + p = NULL; + EXPECT_EQ("NULL", Print(p)); +} + +// unsigned char*. +TEST(PrintCharPointerTest, UnsignedChar) { + unsigned char* p = reinterpret_cast(0x1234); + EXPECT_EQ(PrintPointer(p), Print(p)); + p = NULL; + EXPECT_EQ("NULL", Print(p)); +} + +// const unsigned char*. +TEST(PrintCharPointerTest, ConstUnsignedChar) { + const unsigned char* p = reinterpret_cast(0x1234); + EXPECT_EQ(PrintPointer(p), Print(p)); + p = NULL; + EXPECT_EQ("NULL", Print(p)); +} + +// Tests printing pointers to simple, built-in types. + +// bool*. +TEST(PrintPointerToBuiltInTypeTest, Bool) { + bool* p = reinterpret_cast(0xABCD); + EXPECT_EQ(PrintPointer(p), Print(p)); + p = NULL; + EXPECT_EQ("NULL", Print(p)); +} + +// void*. +TEST(PrintPointerToBuiltInTypeTest, Void) { + void* p = reinterpret_cast(0xABCD); + EXPECT_EQ(PrintPointer(p), Print(p)); + p = NULL; + EXPECT_EQ("NULL", Print(p)); +} + +// const void*. +TEST(PrintPointerToBuiltInTypeTest, ConstVoid) { + const void* p = reinterpret_cast(0xABCD); + EXPECT_EQ(PrintPointer(p), Print(p)); + p = NULL; + EXPECT_EQ("NULL", Print(p)); +} + +// Tests printing pointers to pointers. +TEST(PrintPointerToPointerTest, IntPointerPointer) { + int** p = reinterpret_cast(0xABCD); + EXPECT_EQ(PrintPointer(p), Print(p)); + p = NULL; + EXPECT_EQ("NULL", Print(p)); +} + +// Tests printing (non-member) function pointers. + +void MyFunction(int /* n */) {} + +TEST(PrintPointerTest, NonMemberFunctionPointer) { + // We cannot directly cast &MyFunction to const void* because the + // standard disallows casting between pointers to functions and + // pointers to objects, and some compilers (e.g. GCC 3.4) enforce + // this limitation. + EXPECT_EQ( + PrintPointer(reinterpret_cast( + reinterpret_cast(&MyFunction))), + Print(&MyFunction)); + int (*p)(bool) = NULL; // NOLINT + EXPECT_EQ("NULL", Print(p)); +} + +// An assertion predicate determining whether a one string is a prefix for +// another. +template +AssertionResult HasPrefix(const StringType& str, const StringType& prefix) { + if (str.find(prefix, 0) == 0) + return AssertionSuccess(); + + const bool is_wide_string = sizeof(prefix[0]) > 1; + const char* const begin_string_quote = is_wide_string ? "L\"" : "\""; + return AssertionFailure() + << begin_string_quote << prefix << "\" is not a prefix of " + << begin_string_quote << str << "\"\n"; +} + +// Tests printing member variable pointers. Although they are called +// pointers, they don't point to a location in the address space. +// Their representation is implementation-defined. Thus they will be +// printed as raw bytes. + +struct Foo { + public: + virtual ~Foo() {} + int MyMethod(char x) { return x + 1; } + virtual char MyVirtualMethod(int /* n */) { return 'a'; } + + int value; +}; + +TEST(PrintPointerTest, MemberVariablePointer) { + EXPECT_TRUE(HasPrefix(Print(&Foo::value), + Print(sizeof(&Foo::value)) + "-byte object ")); + int (Foo::*p) = NULL; // NOLINT + EXPECT_TRUE(HasPrefix(Print(p), + Print(sizeof(p)) + "-byte object ")); +} + +// Tests printing member function pointers. Although they are called +// pointers, they don't point to a location in the address space. +// Their representation is implementation-defined. Thus they will be +// printed as raw bytes. +TEST(PrintPointerTest, MemberFunctionPointer) { + EXPECT_TRUE(HasPrefix(Print(&Foo::MyMethod), + Print(sizeof(&Foo::MyMethod)) + "-byte object ")); + EXPECT_TRUE( + HasPrefix(Print(&Foo::MyVirtualMethod), + Print(sizeof((&Foo::MyVirtualMethod))) + "-byte object ")); + int (Foo::*p)(char) = NULL; // NOLINT + EXPECT_TRUE(HasPrefix(Print(p), + Print(sizeof(p)) + "-byte object ")); +} + +// Tests printing C arrays. + +// The difference between this and Print() is that it ensures that the +// argument is a reference to an array. +template +string PrintArrayHelper(T (&a)[N]) { + return Print(a); +} + +// One-dimensional array. +TEST(PrintArrayTest, OneDimensionalArray) { + int a[5] = { 1, 2, 3, 4, 5 }; + EXPECT_EQ("{ 1, 2, 3, 4, 5 }", PrintArrayHelper(a)); +} + +// Two-dimensional array. +TEST(PrintArrayTest, TwoDimensionalArray) { + int a[2][5] = { + { 1, 2, 3, 4, 5 }, + { 6, 7, 8, 9, 0 } + }; + EXPECT_EQ("{ { 1, 2, 3, 4, 5 }, { 6, 7, 8, 9, 0 } }", PrintArrayHelper(a)); +} + +// Array of const elements. +TEST(PrintArrayTest, ConstArray) { + const bool a[1] = { false }; + EXPECT_EQ("{ false }", PrintArrayHelper(a)); +} + +// char array without terminating NUL. +TEST(PrintArrayTest, CharArrayWithNoTerminatingNul) { + // Array a contains '\0' in the middle and doesn't end with '\0'. + char a[] = { 'H', '\0', 'i' }; + EXPECT_EQ("\"H\\0i\" (no terminating NUL)", PrintArrayHelper(a)); +} + +// const char array with terminating NUL. +TEST(PrintArrayTest, ConstCharArrayWithTerminatingNul) { + const char a[] = "\0Hi"; + EXPECT_EQ("\"\\0Hi\"", PrintArrayHelper(a)); +} + +// const wchar_t array without terminating NUL. +TEST(PrintArrayTest, WCharArrayWithNoTerminatingNul) { + // Array a contains '\0' in the middle and doesn't end with '\0'. + const wchar_t a[] = { L'H', L'\0', L'i' }; + EXPECT_EQ("L\"H\\0i\" (no terminating NUL)", PrintArrayHelper(a)); +} + +// wchar_t array with terminating NUL. +TEST(PrintArrayTest, WConstCharArrayWithTerminatingNul) { + const wchar_t a[] = L"\0Hi"; + EXPECT_EQ("L\"\\0Hi\"", PrintArrayHelper(a)); +} + +// Array of objects. +TEST(PrintArrayTest, ObjectArray) { + string a[3] = { "Hi", "Hello", "Ni hao" }; + EXPECT_EQ("{ \"Hi\", \"Hello\", \"Ni hao\" }", PrintArrayHelper(a)); +} + +// Array with many elements. +TEST(PrintArrayTest, BigArray) { + int a[100] = { 1, 2, 3 }; + EXPECT_EQ("{ 1, 2, 3, 0, 0, 0, 0, 0, ..., 0, 0, 0, 0, 0, 0, 0, 0 }", + PrintArrayHelper(a)); +} + +// Tests printing ::string and ::std::string. + +#if GTEST_HAS_GLOBAL_STRING +// ::string. +TEST(PrintStringTest, StringInGlobalNamespace) { + const char s[] = "'\"?\\\a\b\f\n\0\r\t\v\x7F\xFF a"; + const ::string str(s, sizeof(s)); + EXPECT_EQ("\"'\\\"?\\\\\\a\\b\\f\\n\\0\\r\\t\\v\\x7F\\xFF a\\0\"", + Print(str)); +} +#endif // GTEST_HAS_GLOBAL_STRING + +// ::std::string. +TEST(PrintStringTest, StringInStdNamespace) { + const char s[] = "'\"?\\\a\b\f\n\0\r\t\v\x7F\xFF a"; + const ::std::string str(s, sizeof(s)); + EXPECT_EQ("\"'\\\"?\\\\\\a\\b\\f\\n\\0\\r\\t\\v\\x7F\\xFF a\\0\"", + Print(str)); +} + +TEST(PrintStringTest, StringAmbiguousHex) { + // "\x6BANANA" is ambiguous, it can be interpreted as starting with either of: + // '\x6', '\x6B', or '\x6BA'. + + // a hex escaping sequence following by a decimal digit + EXPECT_EQ("\"0\\x12\" \"3\"", Print(::std::string("0\x12" "3"))); + // a hex escaping sequence following by a hex digit (lower-case) + EXPECT_EQ("\"mm\\x6\" \"bananas\"", Print(::std::string("mm\x6" "bananas"))); + // a hex escaping sequence following by a hex digit (upper-case) + EXPECT_EQ("\"NOM\\x6\" \"BANANA\"", Print(::std::string("NOM\x6" "BANANA"))); + // a hex escaping sequence following by a non-xdigit + EXPECT_EQ("\"!\\x5-!\"", Print(::std::string("!\x5-!"))); +} + +// Tests printing ::wstring and ::std::wstring. + +#if GTEST_HAS_GLOBAL_WSTRING +// ::wstring. +TEST(PrintWideStringTest, StringInGlobalNamespace) { + const wchar_t s[] = L"'\"?\\\a\b\f\n\0\r\t\v\xD3\x576\x8D3\xC74D a"; + const ::wstring str(s, sizeof(s)/sizeof(wchar_t)); + EXPECT_EQ("L\"'\\\"?\\\\\\a\\b\\f\\n\\0\\r\\t\\v" + "\\xD3\\x576\\x8D3\\xC74D a\\0\"", + Print(str)); +} +#endif // GTEST_HAS_GLOBAL_WSTRING + +#if GTEST_HAS_STD_WSTRING +// ::std::wstring. +TEST(PrintWideStringTest, StringInStdNamespace) { + const wchar_t s[] = L"'\"?\\\a\b\f\n\0\r\t\v\xD3\x576\x8D3\xC74D a"; + const ::std::wstring str(s, sizeof(s)/sizeof(wchar_t)); + EXPECT_EQ("L\"'\\\"?\\\\\\a\\b\\f\\n\\0\\r\\t\\v" + "\\xD3\\x576\\x8D3\\xC74D a\\0\"", + Print(str)); +} + +TEST(PrintWideStringTest, StringAmbiguousHex) { + // same for wide strings. + EXPECT_EQ("L\"0\\x12\" L\"3\"", Print(::std::wstring(L"0\x12" L"3"))); + EXPECT_EQ("L\"mm\\x6\" L\"bananas\"", + Print(::std::wstring(L"mm\x6" L"bananas"))); + EXPECT_EQ("L\"NOM\\x6\" L\"BANANA\"", + Print(::std::wstring(L"NOM\x6" L"BANANA"))); + EXPECT_EQ("L\"!\\x5-!\"", Print(::std::wstring(L"!\x5-!"))); +} +#endif // GTEST_HAS_STD_WSTRING + +// Tests printing types that support generic streaming (i.e. streaming +// to std::basic_ostream for any valid Char and +// CharTraits types). + +// Tests printing a non-template type that supports generic streaming. + +class AllowsGenericStreaming {}; + +template +std::basic_ostream& operator<<( + std::basic_ostream& os, + const AllowsGenericStreaming& /* a */) { + return os << "AllowsGenericStreaming"; +} + +TEST(PrintTypeWithGenericStreamingTest, NonTemplateType) { + AllowsGenericStreaming a; + EXPECT_EQ("AllowsGenericStreaming", Print(a)); +} + +// Tests printing a template type that supports generic streaming. + +template +class AllowsGenericStreamingTemplate {}; + +template +std::basic_ostream& operator<<( + std::basic_ostream& os, + const AllowsGenericStreamingTemplate& /* a */) { + return os << "AllowsGenericStreamingTemplate"; +} + +TEST(PrintTypeWithGenericStreamingTest, TemplateType) { + AllowsGenericStreamingTemplate a; + EXPECT_EQ("AllowsGenericStreamingTemplate", Print(a)); +} + +// Tests printing a type that supports generic streaming and can be +// implicitly converted to another printable type. + +template +class AllowsGenericStreamingAndImplicitConversionTemplate { + public: + operator bool() const { return false; } +}; + +template +std::basic_ostream& operator<<( + std::basic_ostream& os, + const AllowsGenericStreamingAndImplicitConversionTemplate& /* a */) { + return os << "AllowsGenericStreamingAndImplicitConversionTemplate"; +} + +TEST(PrintTypeWithGenericStreamingTest, TypeImplicitlyConvertible) { + AllowsGenericStreamingAndImplicitConversionTemplate a; + EXPECT_EQ("AllowsGenericStreamingAndImplicitConversionTemplate", Print(a)); +} + +#if GTEST_HAS_STRING_PIECE_ + +// Tests printing StringPiece. + +TEST(PrintStringPieceTest, SimpleStringPiece) { + const StringPiece sp = "Hello"; + EXPECT_EQ("\"Hello\"", Print(sp)); +} + +TEST(PrintStringPieceTest, UnprintableCharacters) { + const char str[] = "NUL (\0) and \r\t"; + const StringPiece sp(str, sizeof(str) - 1); + EXPECT_EQ("\"NUL (\\0) and \\r\\t\"", Print(sp)); +} + +#endif // GTEST_HAS_STRING_PIECE_ + +// Tests printing STL containers. + +TEST(PrintStlContainerTest, EmptyDeque) { + deque empty; + EXPECT_EQ("{}", Print(empty)); +} + +TEST(PrintStlContainerTest, NonEmptyDeque) { + deque non_empty; + non_empty.push_back(1); + non_empty.push_back(3); + EXPECT_EQ("{ 1, 3 }", Print(non_empty)); +} + +#if GTEST_HAS_HASH_MAP_ + +TEST(PrintStlContainerTest, OneElementHashMap) { + hash_map map1; + map1[1] = 'a'; + EXPECT_EQ("{ (1, 'a' (97, 0x61)) }", Print(map1)); +} + +TEST(PrintStlContainerTest, HashMultiMap) { + hash_multimap map1; + map1.insert(make_pair(5, true)); + map1.insert(make_pair(5, false)); + + // Elements of hash_multimap can be printed in any order. + const string result = Print(map1); + EXPECT_TRUE(result == "{ (5, true), (5, false) }" || + result == "{ (5, false), (5, true) }") + << " where Print(map1) returns \"" << result << "\"."; +} + +#endif // GTEST_HAS_HASH_MAP_ + +#if GTEST_HAS_HASH_SET_ + +TEST(PrintStlContainerTest, HashSet) { + hash_set set1; + set1.insert("hello"); + EXPECT_EQ("{ \"hello\" }", Print(set1)); +} + +TEST(PrintStlContainerTest, HashMultiSet) { + const int kSize = 5; + int a[kSize] = { 1, 1, 2, 5, 1 }; + hash_multiset set1(a, a + kSize); + + // Elements of hash_multiset can be printed in any order. + const string result = Print(set1); + const string expected_pattern = "{ d, d, d, d, d }"; // d means a digit. + + // Verifies the result matches the expected pattern; also extracts + // the numbers in the result. + ASSERT_EQ(expected_pattern.length(), result.length()); + std::vector numbers; + for (size_t i = 0; i != result.length(); i++) { + if (expected_pattern[i] == 'd') { + ASSERT_NE(isdigit(static_cast(result[i])), 0); + numbers.push_back(result[i] - '0'); + } else { + EXPECT_EQ(expected_pattern[i], result[i]) << " where result is " + << result; + } + } + + // Makes sure the result contains the right numbers. + std::sort(numbers.begin(), numbers.end()); + std::sort(a, a + kSize); + EXPECT_TRUE(std::equal(a, a + kSize, numbers.begin())); +} + +#endif // GTEST_HAS_HASH_SET_ + +TEST(PrintStlContainerTest, List) { + const string a[] = { + "hello", + "world" + }; + const list strings(a, a + 2); + EXPECT_EQ("{ \"hello\", \"world\" }", Print(strings)); +} + +TEST(PrintStlContainerTest, Map) { + map map1; + map1[1] = true; + map1[5] = false; + map1[3] = true; + EXPECT_EQ("{ (1, true), (3, true), (5, false) }", Print(map1)); +} + +TEST(PrintStlContainerTest, MultiMap) { + multimap map1; + // The make_pair template function would deduce the type as + // pair here, and since the key part in a multimap has to + // be constant, without a templated ctor in the pair class (as in + // libCstd on Solaris), make_pair call would fail to compile as no + // implicit conversion is found. Thus explicit typename is used + // here instead. + map1.insert(pair(true, 0)); + map1.insert(pair(true, 1)); + map1.insert(pair(false, 2)); + EXPECT_EQ("{ (false, 2), (true, 0), (true, 1) }", Print(map1)); +} + +TEST(PrintStlContainerTest, Set) { + const unsigned int a[] = { 3, 0, 5 }; + set set1(a, a + 3); + EXPECT_EQ("{ 0, 3, 5 }", Print(set1)); +} + +TEST(PrintStlContainerTest, MultiSet) { + const int a[] = { 1, 1, 2, 5, 1 }; + multiset set1(a, a + 5); + EXPECT_EQ("{ 1, 1, 1, 2, 5 }", Print(set1)); +} + +TEST(PrintStlContainerTest, Pair) { + pair p(true, 5); + EXPECT_EQ("(true, 5)", Print(p)); +} + +TEST(PrintStlContainerTest, Vector) { + vector v; + v.push_back(1); + v.push_back(2); + EXPECT_EQ("{ 1, 2 }", Print(v)); +} + +TEST(PrintStlContainerTest, LongSequence) { + const int a[100] = { 1, 2, 3 }; + const vector v(a, a + 100); + EXPECT_EQ("{ 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, " + "0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ... }", Print(v)); +} + +TEST(PrintStlContainerTest, NestedContainer) { + const int a1[] = { 1, 2 }; + const int a2[] = { 3, 4, 5 }; + const list l1(a1, a1 + 2); + const list l2(a2, a2 + 3); + + vector > v; + v.push_back(l1); + v.push_back(l2); + EXPECT_EQ("{ { 1, 2 }, { 3, 4, 5 } }", Print(v)); +} + +TEST(PrintStlContainerTest, OneDimensionalNativeArray) { + const int a[3] = { 1, 2, 3 }; + NativeArray b(a, 3, kReference); + EXPECT_EQ("{ 1, 2, 3 }", Print(b)); +} + +TEST(PrintStlContainerTest, TwoDimensionalNativeArray) { + const int a[2][3] = { { 1, 2, 3 }, { 4, 5, 6 } }; + NativeArray b(a, 2, kReference); + EXPECT_EQ("{ { 1, 2, 3 }, { 4, 5, 6 } }", Print(b)); +} + +// Tests that a class named iterator isn't treated as a container. + +struct iterator { + char x; +}; + +TEST(PrintStlContainerTest, Iterator) { + iterator it = {}; + EXPECT_EQ("1-byte object <00>", Print(it)); +} + +// Tests that a class named const_iterator isn't treated as a container. + +struct const_iterator { + char x; +}; + +TEST(PrintStlContainerTest, ConstIterator) { + const_iterator it = {}; + EXPECT_EQ("1-byte object <00>", Print(it)); +} + +#if GTEST_HAS_TR1_TUPLE +// Tests printing tuples. + +// Tuples of various arities. +TEST(PrintTupleTest, VariousSizes) { + tuple<> t0; + EXPECT_EQ("()", Print(t0)); + + tuple t1(5); + EXPECT_EQ("(5)", Print(t1)); + + tuple t2('a', true); + EXPECT_EQ("('a' (97, 0x61), true)", Print(t2)); + + tuple t3(false, 2, 3); + EXPECT_EQ("(false, 2, 3)", Print(t3)); + + tuple t4(false, 2, 3, 4); + EXPECT_EQ("(false, 2, 3, 4)", Print(t4)); + + tuple t5(false, 2, 3, 4, true); + EXPECT_EQ("(false, 2, 3, 4, true)", Print(t5)); + + tuple t6(false, 2, 3, 4, true, 6); + EXPECT_EQ("(false, 2, 3, 4, true, 6)", Print(t6)); + + tuple t7(false, 2, 3, 4, true, 6, 7); + EXPECT_EQ("(false, 2, 3, 4, true, 6, 7)", Print(t7)); + + tuple t8( + false, 2, 3, 4, true, 6, 7, true); + EXPECT_EQ("(false, 2, 3, 4, true, 6, 7, true)", Print(t8)); + + tuple t9( + false, 2, 3, 4, true, 6, 7, true, 9); + EXPECT_EQ("(false, 2, 3, 4, true, 6, 7, true, 9)", Print(t9)); + + const char* const str = "8"; + // VC++ 2010's implementation of tuple of C++0x is deficient, requiring + // an explicit type cast of NULL to be used. + tuple + t10(false, 'a', 3, 4, 5, 1.5F, -2.5, str, + ImplicitCast_(NULL), "10"); + EXPECT_EQ("(false, 'a' (97, 0x61), 3, 4, 5, 1.5, -2.5, " + PrintPointer(str) + + " pointing to \"8\", NULL, \"10\")", + Print(t10)); +} + +// Nested tuples. +TEST(PrintTupleTest, NestedTuple) { + tuple, char> nested(make_tuple(5, true), 'a'); + EXPECT_EQ("((5, true), 'a' (97, 0x61))", Print(nested)); +} + +#endif // GTEST_HAS_TR1_TUPLE + +// Tests printing user-defined unprintable types. + +// Unprintable types in the global namespace. +TEST(PrintUnprintableTypeTest, InGlobalNamespace) { + EXPECT_EQ("1-byte object <00>", + Print(UnprintableTemplateInGlobal())); +} + +// Unprintable types in a user namespace. +TEST(PrintUnprintableTypeTest, InUserNamespace) { + EXPECT_EQ("16-byte object ", + Print(::foo::UnprintableInFoo())); +} + +// Unprintable types are that too big to be printed completely. + +struct Big { + Big() { memset(array, 0, sizeof(array)); } + char array[257]; +}; + +TEST(PrintUnpritableTypeTest, BigObject) { + EXPECT_EQ("257-byte object <00-00 00-00 00-00 00-00 00-00 00-00 " + "00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 " + "00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 " + "00-00 00-00 00-00 00-00 00-00 00-00 ... 00-00 00-00 00-00 " + "00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 " + "00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 " + "00-00 00-00 00-00 00-00 00-00 00-00 00-00 00-00 00>", + Print(Big())); +} + +// Tests printing user-defined streamable types. + +// Streamable types in the global namespace. +TEST(PrintStreamableTypeTest, InGlobalNamespace) { + StreamableInGlobal x; + EXPECT_EQ("StreamableInGlobal", Print(x)); + EXPECT_EQ("StreamableInGlobal*", Print(&x)); +} + +// Printable template types in a user namespace. +TEST(PrintStreamableTypeTest, TemplateTypeInUserNamespace) { + EXPECT_EQ("StreamableTemplateInFoo: 0", + Print(::foo::StreamableTemplateInFoo())); +} + +// Tests printing user-defined types that have a PrintTo() function. +TEST(PrintPrintableTypeTest, InUserNamespace) { + EXPECT_EQ("PrintableViaPrintTo: 0", + Print(::foo::PrintableViaPrintTo())); +} + +// Tests printing a pointer to a user-defined type that has a << +// operator for its pointer. +TEST(PrintPrintableTypeTest, PointerInUserNamespace) { + ::foo::PointerPrintable x; + EXPECT_EQ("PointerPrintable*", Print(&x)); +} + +// Tests printing user-defined class template that have a PrintTo() function. +TEST(PrintPrintableTypeTest, TemplateInUserNamespace) { + EXPECT_EQ("PrintableViaPrintToTemplate: 5", + Print(::foo::PrintableViaPrintToTemplate(5))); +} + +#if GTEST_HAS_PROTOBUF_ + +// Tests printing a protocol message. +TEST(PrintProtocolMessageTest, PrintsShortDebugString) { + testing::internal::TestMessage msg; + msg.set_member("yes"); + EXPECT_EQ("", Print(msg)); +} + +// Tests printing a short proto2 message. +TEST(PrintProto2MessageTest, PrintsShortDebugStringWhenItIsShort) { + testing::internal::FooMessage msg; + msg.set_int_field(2); + msg.set_string_field("hello"); + EXPECT_PRED2(RE::FullMatch, Print(msg), + ""); +} + +// Tests printing a long proto2 message. +TEST(PrintProto2MessageTest, PrintsDebugStringWhenItIsLong) { + testing::internal::FooMessage msg; + msg.set_int_field(2); + msg.set_string_field("hello"); + msg.add_names("peter"); + msg.add_names("paul"); + msg.add_names("mary"); + EXPECT_PRED2(RE::FullMatch, Print(msg), + "<\n" + "int_field:\\s*2\n" + "string_field:\\s*\"hello\"\n" + "names:\\s*\"peter\"\n" + "names:\\s*\"paul\"\n" + "names:\\s*\"mary\"\n" + ">"); +} + +#endif // GTEST_HAS_PROTOBUF_ + +// Tests that the universal printer prints both the address and the +// value of a reference. +TEST(PrintReferenceTest, PrintsAddressAndValue) { + int n = 5; + EXPECT_EQ("@" + PrintPointer(&n) + " 5", PrintByRef(n)); + + int a[2][3] = { + { 0, 1, 2 }, + { 3, 4, 5 } + }; + EXPECT_EQ("@" + PrintPointer(a) + " { { 0, 1, 2 }, { 3, 4, 5 } }", + PrintByRef(a)); + + const ::foo::UnprintableInFoo x; + EXPECT_EQ("@" + PrintPointer(&x) + " 16-byte object " + "", + PrintByRef(x)); +} + +// Tests that the universal printer prints a function pointer passed by +// reference. +TEST(PrintReferenceTest, HandlesFunctionPointer) { + void (*fp)(int n) = &MyFunction; + const string fp_pointer_string = + PrintPointer(reinterpret_cast(&fp)); + // We cannot directly cast &MyFunction to const void* because the + // standard disallows casting between pointers to functions and + // pointers to objects, and some compilers (e.g. GCC 3.4) enforce + // this limitation. + const string fp_string = PrintPointer(reinterpret_cast( + reinterpret_cast(fp))); + EXPECT_EQ("@" + fp_pointer_string + " " + fp_string, + PrintByRef(fp)); +} + +// Tests that the universal printer prints a member function pointer +// passed by reference. +TEST(PrintReferenceTest, HandlesMemberFunctionPointer) { + int (Foo::*p)(char ch) = &Foo::MyMethod; + EXPECT_TRUE(HasPrefix( + PrintByRef(p), + "@" + PrintPointer(reinterpret_cast(&p)) + " " + + Print(sizeof(p)) + "-byte object ")); + + char (Foo::*p2)(int n) = &Foo::MyVirtualMethod; + EXPECT_TRUE(HasPrefix( + PrintByRef(p2), + "@" + PrintPointer(reinterpret_cast(&p2)) + " " + + Print(sizeof(p2)) + "-byte object ")); +} + +// Tests that the universal printer prints a member variable pointer +// passed by reference. +TEST(PrintReferenceTest, HandlesMemberVariablePointer) { + int (Foo::*p) = &Foo::value; // NOLINT + EXPECT_TRUE(HasPrefix( + PrintByRef(p), + "@" + PrintPointer(&p) + " " + Print(sizeof(p)) + "-byte object ")); +} + +// Tests that FormatForComparisonFailureMessage(), which is used to print +// an operand in a comparison assertion (e.g. ASSERT_EQ) when the assertion +// fails, formats the operand in the desired way. + +// scalar +TEST(FormatForComparisonFailureMessageTest, WorksForScalar) { + EXPECT_STREQ("123", + FormatForComparisonFailureMessage(123, 124).c_str()); +} + +// non-char pointer +TEST(FormatForComparisonFailureMessageTest, WorksForNonCharPointer) { + int n = 0; + EXPECT_EQ(PrintPointer(&n), + FormatForComparisonFailureMessage(&n, &n).c_str()); +} + +// non-char array +TEST(FormatForComparisonFailureMessageTest, FormatsNonCharArrayAsPointer) { + // In expression 'array == x', 'array' is compared by pointer. + // Therefore we want to print an array operand as a pointer. + int n[] = { 1, 2, 3 }; + EXPECT_EQ(PrintPointer(n), + FormatForComparisonFailureMessage(n, n).c_str()); +} + +// Tests formatting a char pointer when it's compared with another pointer. +// In this case we want to print it as a raw pointer, as the comparision is by +// pointer. + +// char pointer vs pointer +TEST(FormatForComparisonFailureMessageTest, WorksForCharPointerVsPointer) { + // In expression 'p == x', where 'p' and 'x' are (const or not) char + // pointers, the operands are compared by pointer. Therefore we + // want to print 'p' as a pointer instead of a C string (we don't + // even know if it's supposed to point to a valid C string). + + // const char* + const char* s = "hello"; + EXPECT_EQ(PrintPointer(s), + FormatForComparisonFailureMessage(s, s).c_str()); + + // char* + char ch = 'a'; + EXPECT_EQ(PrintPointer(&ch), + FormatForComparisonFailureMessage(&ch, &ch).c_str()); +} + +// wchar_t pointer vs pointer +TEST(FormatForComparisonFailureMessageTest, WorksForWCharPointerVsPointer) { + // In expression 'p == x', where 'p' and 'x' are (const or not) char + // pointers, the operands are compared by pointer. Therefore we + // want to print 'p' as a pointer instead of a wide C string (we don't + // even know if it's supposed to point to a valid wide C string). + + // const wchar_t* + const wchar_t* s = L"hello"; + EXPECT_EQ(PrintPointer(s), + FormatForComparisonFailureMessage(s, s).c_str()); + + // wchar_t* + wchar_t ch = L'a'; + EXPECT_EQ(PrintPointer(&ch), + FormatForComparisonFailureMessage(&ch, &ch).c_str()); +} + +// Tests formatting a char pointer when it's compared to a string object. +// In this case we want to print the char pointer as a C string. + +#if GTEST_HAS_GLOBAL_STRING +// char pointer vs ::string +TEST(FormatForComparisonFailureMessageTest, WorksForCharPointerVsString) { + const char* s = "hello \"world"; + EXPECT_STREQ("\"hello \\\"world\"", // The string content should be escaped. + FormatForComparisonFailureMessage(s, ::string()).c_str()); + + // char* + char str[] = "hi\1"; + char* p = str; + EXPECT_STREQ("\"hi\\x1\"", // The string content should be escaped. + FormatForComparisonFailureMessage(p, ::string()).c_str()); +} +#endif + +// char pointer vs std::string +TEST(FormatForComparisonFailureMessageTest, WorksForCharPointerVsStdString) { + const char* s = "hello \"world"; + EXPECT_STREQ("\"hello \\\"world\"", // The string content should be escaped. + FormatForComparisonFailureMessage(s, ::std::string()).c_str()); + + // char* + char str[] = "hi\1"; + char* p = str; + EXPECT_STREQ("\"hi\\x1\"", // The string content should be escaped. + FormatForComparisonFailureMessage(p, ::std::string()).c_str()); +} + +#if GTEST_HAS_GLOBAL_WSTRING +// wchar_t pointer vs ::wstring +TEST(FormatForComparisonFailureMessageTest, WorksForWCharPointerVsWString) { + const wchar_t* s = L"hi \"world"; + EXPECT_STREQ("L\"hi \\\"world\"", // The string content should be escaped. + FormatForComparisonFailureMessage(s, ::wstring()).c_str()); + + // wchar_t* + wchar_t str[] = L"hi\1"; + wchar_t* p = str; + EXPECT_STREQ("L\"hi\\x1\"", // The string content should be escaped. + FormatForComparisonFailureMessage(p, ::wstring()).c_str()); +} +#endif + +#if GTEST_HAS_STD_WSTRING +// wchar_t pointer vs std::wstring +TEST(FormatForComparisonFailureMessageTest, WorksForWCharPointerVsStdWString) { + const wchar_t* s = L"hi \"world"; + EXPECT_STREQ("L\"hi \\\"world\"", // The string content should be escaped. + FormatForComparisonFailureMessage(s, ::std::wstring()).c_str()); + + // wchar_t* + wchar_t str[] = L"hi\1"; + wchar_t* p = str; + EXPECT_STREQ("L\"hi\\x1\"", // The string content should be escaped. + FormatForComparisonFailureMessage(p, ::std::wstring()).c_str()); +} +#endif + +// Tests formatting a char array when it's compared with a pointer or array. +// In this case we want to print the array as a row pointer, as the comparison +// is by pointer. + +// char array vs pointer +TEST(FormatForComparisonFailureMessageTest, WorksForCharArrayVsPointer) { + char str[] = "hi \"world\""; + char* p = NULL; + EXPECT_EQ(PrintPointer(str), + FormatForComparisonFailureMessage(str, p).c_str()); +} + +// char array vs char array +TEST(FormatForComparisonFailureMessageTest, WorksForCharArrayVsCharArray) { + const char str[] = "hi \"world\""; + EXPECT_EQ(PrintPointer(str), + FormatForComparisonFailureMessage(str, str).c_str()); +} + +// wchar_t array vs pointer +TEST(FormatForComparisonFailureMessageTest, WorksForWCharArrayVsPointer) { + wchar_t str[] = L"hi \"world\""; + wchar_t* p = NULL; + EXPECT_EQ(PrintPointer(str), + FormatForComparisonFailureMessage(str, p).c_str()); +} + +// wchar_t array vs wchar_t array +TEST(FormatForComparisonFailureMessageTest, WorksForWCharArrayVsWCharArray) { + const wchar_t str[] = L"hi \"world\""; + EXPECT_EQ(PrintPointer(str), + FormatForComparisonFailureMessage(str, str).c_str()); +} + +// Tests formatting a char array when it's compared with a string object. +// In this case we want to print the array as a C string. + +#if GTEST_HAS_GLOBAL_STRING +// char array vs string +TEST(FormatForComparisonFailureMessageTest, WorksForCharArrayVsString) { + const char str[] = "hi \"w\0rld\""; + EXPECT_STREQ("\"hi \\\"w\"", // The content should be escaped. + // Embedded NUL terminates the string. + FormatForComparisonFailureMessage(str, ::string()).c_str()); +} +#endif + +// char array vs std::string +TEST(FormatForComparisonFailureMessageTest, WorksForCharArrayVsStdString) { + const char str[] = "hi \"world\""; + EXPECT_STREQ("\"hi \\\"world\\\"\"", // The content should be escaped. + FormatForComparisonFailureMessage(str, ::std::string()).c_str()); +} + +#if GTEST_HAS_GLOBAL_WSTRING +// wchar_t array vs wstring +TEST(FormatForComparisonFailureMessageTest, WorksForWCharArrayVsWString) { + const wchar_t str[] = L"hi \"world\""; + EXPECT_STREQ("L\"hi \\\"world\\\"\"", // The content should be escaped. + FormatForComparisonFailureMessage(str, ::wstring()).c_str()); +} +#endif + +#if GTEST_HAS_STD_WSTRING +// wchar_t array vs std::wstring +TEST(FormatForComparisonFailureMessageTest, WorksForWCharArrayVsStdWString) { + const wchar_t str[] = L"hi \"w\0rld\""; + EXPECT_STREQ( + "L\"hi \\\"w\"", // The content should be escaped. + // Embedded NUL terminates the string. + FormatForComparisonFailureMessage(str, ::std::wstring()).c_str()); +} +#endif + +// Useful for testing PrintToString(). We cannot use EXPECT_EQ() +// there as its implementation uses PrintToString(). The caller must +// ensure that 'value' has no side effect. +#define EXPECT_PRINT_TO_STRING_(value, expected_string) \ + EXPECT_TRUE(PrintToString(value) == (expected_string)) \ + << " where " #value " prints as " << (PrintToString(value)) + +TEST(PrintToStringTest, WorksForScalar) { + EXPECT_PRINT_TO_STRING_(123, "123"); +} + +TEST(PrintToStringTest, WorksForPointerToConstChar) { + const char* p = "hello"; + EXPECT_PRINT_TO_STRING_(p, "\"hello\""); +} + +TEST(PrintToStringTest, WorksForPointerToNonConstChar) { + char s[] = "hello"; + char* p = s; + EXPECT_PRINT_TO_STRING_(p, "\"hello\""); +} + +TEST(PrintToStringTest, EscapesForPointerToConstChar) { + const char* p = "hello\n"; + EXPECT_PRINT_TO_STRING_(p, "\"hello\\n\""); +} + +TEST(PrintToStringTest, EscapesForPointerToNonConstChar) { + char s[] = "hello\1"; + char* p = s; + EXPECT_PRINT_TO_STRING_(p, "\"hello\\x1\""); +} + +TEST(PrintToStringTest, WorksForArray) { + int n[3] = { 1, 2, 3 }; + EXPECT_PRINT_TO_STRING_(n, "{ 1, 2, 3 }"); +} + +TEST(PrintToStringTest, WorksForCharArray) { + char s[] = "hello"; + EXPECT_PRINT_TO_STRING_(s, "\"hello\""); +} + +TEST(PrintToStringTest, WorksForCharArrayWithEmbeddedNul) { + const char str_with_nul[] = "hello\0 world"; + EXPECT_PRINT_TO_STRING_(str_with_nul, "\"hello\\0 world\""); + + char mutable_str_with_nul[] = "hello\0 world"; + EXPECT_PRINT_TO_STRING_(mutable_str_with_nul, "\"hello\\0 world\""); +} + +#undef EXPECT_PRINT_TO_STRING_ + +TEST(UniversalTersePrintTest, WorksForNonReference) { + ::std::stringstream ss; + UniversalTersePrint(123, &ss); + EXPECT_EQ("123", ss.str()); +} + +TEST(UniversalTersePrintTest, WorksForReference) { + const int& n = 123; + ::std::stringstream ss; + UniversalTersePrint(n, &ss); + EXPECT_EQ("123", ss.str()); +} + +TEST(UniversalTersePrintTest, WorksForCString) { + const char* s1 = "abc"; + ::std::stringstream ss1; + UniversalTersePrint(s1, &ss1); + EXPECT_EQ("\"abc\"", ss1.str()); + + char* s2 = const_cast(s1); + ::std::stringstream ss2; + UniversalTersePrint(s2, &ss2); + EXPECT_EQ("\"abc\"", ss2.str()); + + const char* s3 = NULL; + ::std::stringstream ss3; + UniversalTersePrint(s3, &ss3); + EXPECT_EQ("NULL", ss3.str()); +} + +TEST(UniversalPrintTest, WorksForNonReference) { + ::std::stringstream ss; + UniversalPrint(123, &ss); + EXPECT_EQ("123", ss.str()); +} + +TEST(UniversalPrintTest, WorksForReference) { + const int& n = 123; + ::std::stringstream ss; + UniversalPrint(n, &ss); + EXPECT_EQ("123", ss.str()); +} + +TEST(UniversalPrintTest, WorksForCString) { + const char* s1 = "abc"; + ::std::stringstream ss1; + UniversalPrint(s1, &ss1); + EXPECT_EQ(PrintPointer(s1) + " pointing to \"abc\"", string(ss1.str())); + + char* s2 = const_cast(s1); + ::std::stringstream ss2; + UniversalPrint(s2, &ss2); + EXPECT_EQ(PrintPointer(s2) + " pointing to \"abc\"", string(ss2.str())); + + const char* s3 = NULL; + ::std::stringstream ss3; + UniversalPrint(s3, &ss3); + EXPECT_EQ("NULL", ss3.str()); +} + +TEST(UniversalPrintTest, WorksForCharArray) { + const char str[] = "\"Line\0 1\"\nLine 2"; + ::std::stringstream ss1; + UniversalPrint(str, &ss1); + EXPECT_EQ("\"\\\"Line\\0 1\\\"\\nLine 2\"", ss1.str()); + + const char mutable_str[] = "\"Line\0 1\"\nLine 2"; + ::std::stringstream ss2; + UniversalPrint(mutable_str, &ss2); + EXPECT_EQ("\"\\\"Line\\0 1\\\"\\nLine 2\"", ss2.str()); +} + +#if GTEST_HAS_TR1_TUPLE + +TEST(UniversalTersePrintTupleFieldsToStringsTest, PrintsEmptyTuple) { + Strings result = UniversalTersePrintTupleFieldsToStrings(make_tuple()); + EXPECT_EQ(0u, result.size()); +} + +TEST(UniversalTersePrintTupleFieldsToStringsTest, PrintsOneTuple) { + Strings result = UniversalTersePrintTupleFieldsToStrings(make_tuple(1)); + ASSERT_EQ(1u, result.size()); + EXPECT_EQ("1", result[0]); +} + +TEST(UniversalTersePrintTupleFieldsToStringsTest, PrintsTwoTuple) { + Strings result = UniversalTersePrintTupleFieldsToStrings(make_tuple(1, 'a')); + ASSERT_EQ(2u, result.size()); + EXPECT_EQ("1", result[0]); + EXPECT_EQ("'a' (97, 0x61)", result[1]); +} + +TEST(UniversalTersePrintTupleFieldsToStringsTest, PrintsTersely) { + const int n = 1; + Strings result = UniversalTersePrintTupleFieldsToStrings( + tuple(n, "a")); + ASSERT_EQ(2u, result.size()); + EXPECT_EQ("1", result[0]); + EXPECT_EQ("\"a\"", result[1]); +} + +#endif // GTEST_HAS_TR1_TUPLE + +} // namespace gtest_printers_test +} // namespace testing diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest-test-part_test.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest-test-part_test.cc new file mode 100644 index 00000000..ca8ba933 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest-test-part_test.cc @@ -0,0 +1,208 @@ +// Copyright 2008 Google Inc. +// All Rights Reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: mheule@google.com (Markus Heule) +// + +#include "gtest/gtest-test-part.h" + +#include "gtest/gtest.h" + +using testing::Message; +using testing::Test; +using testing::TestPartResult; +using testing::TestPartResultArray; + +namespace { + +// Tests the TestPartResult class. + +// The test fixture for testing TestPartResult. +class TestPartResultTest : public Test { + protected: + TestPartResultTest() + : r1_(TestPartResult::kSuccess, "foo/bar.cc", 10, "Success!"), + r2_(TestPartResult::kNonFatalFailure, "foo/bar.cc", -1, "Failure!"), + r3_(TestPartResult::kFatalFailure, NULL, -1, "Failure!") {} + + TestPartResult r1_, r2_, r3_; +}; + + +TEST_F(TestPartResultTest, ConstructorWorks) { + Message message; + message << "something is terribly wrong"; + message << static_cast(testing::internal::kStackTraceMarker); + message << "some unimportant stack trace"; + + const TestPartResult result(TestPartResult::kNonFatalFailure, + "some_file.cc", + 42, + message.GetString().c_str()); + + EXPECT_EQ(TestPartResult::kNonFatalFailure, result.type()); + EXPECT_STREQ("some_file.cc", result.file_name()); + EXPECT_EQ(42, result.line_number()); + EXPECT_STREQ(message.GetString().c_str(), result.message()); + EXPECT_STREQ("something is terribly wrong", result.summary()); +} + +TEST_F(TestPartResultTest, ResultAccessorsWork) { + const TestPartResult success(TestPartResult::kSuccess, + "file.cc", + 42, + "message"); + EXPECT_TRUE(success.passed()); + EXPECT_FALSE(success.failed()); + EXPECT_FALSE(success.nonfatally_failed()); + EXPECT_FALSE(success.fatally_failed()); + + const TestPartResult nonfatal_failure(TestPartResult::kNonFatalFailure, + "file.cc", + 42, + "message"); + EXPECT_FALSE(nonfatal_failure.passed()); + EXPECT_TRUE(nonfatal_failure.failed()); + EXPECT_TRUE(nonfatal_failure.nonfatally_failed()); + EXPECT_FALSE(nonfatal_failure.fatally_failed()); + + const TestPartResult fatal_failure(TestPartResult::kFatalFailure, + "file.cc", + 42, + "message"); + EXPECT_FALSE(fatal_failure.passed()); + EXPECT_TRUE(fatal_failure.failed()); + EXPECT_FALSE(fatal_failure.nonfatally_failed()); + EXPECT_TRUE(fatal_failure.fatally_failed()); +} + +// Tests TestPartResult::type(). +TEST_F(TestPartResultTest, type) { + EXPECT_EQ(TestPartResult::kSuccess, r1_.type()); + EXPECT_EQ(TestPartResult::kNonFatalFailure, r2_.type()); + EXPECT_EQ(TestPartResult::kFatalFailure, r3_.type()); +} + +// Tests TestPartResult::file_name(). +TEST_F(TestPartResultTest, file_name) { + EXPECT_STREQ("foo/bar.cc", r1_.file_name()); + EXPECT_STREQ(NULL, r3_.file_name()); +} + +// Tests TestPartResult::line_number(). +TEST_F(TestPartResultTest, line_number) { + EXPECT_EQ(10, r1_.line_number()); + EXPECT_EQ(-1, r2_.line_number()); +} + +// Tests TestPartResult::message(). +TEST_F(TestPartResultTest, message) { + EXPECT_STREQ("Success!", r1_.message()); +} + +// Tests TestPartResult::passed(). +TEST_F(TestPartResultTest, Passed) { + EXPECT_TRUE(r1_.passed()); + EXPECT_FALSE(r2_.passed()); + EXPECT_FALSE(r3_.passed()); +} + +// Tests TestPartResult::failed(). +TEST_F(TestPartResultTest, Failed) { + EXPECT_FALSE(r1_.failed()); + EXPECT_TRUE(r2_.failed()); + EXPECT_TRUE(r3_.failed()); +} + +// Tests TestPartResult::fatally_failed(). +TEST_F(TestPartResultTest, FatallyFailed) { + EXPECT_FALSE(r1_.fatally_failed()); + EXPECT_FALSE(r2_.fatally_failed()); + EXPECT_TRUE(r3_.fatally_failed()); +} + +// Tests TestPartResult::nonfatally_failed(). +TEST_F(TestPartResultTest, NonfatallyFailed) { + EXPECT_FALSE(r1_.nonfatally_failed()); + EXPECT_TRUE(r2_.nonfatally_failed()); + EXPECT_FALSE(r3_.nonfatally_failed()); +} + +// Tests the TestPartResultArray class. + +class TestPartResultArrayTest : public Test { + protected: + TestPartResultArrayTest() + : r1_(TestPartResult::kNonFatalFailure, "foo/bar.cc", -1, "Failure 1"), + r2_(TestPartResult::kFatalFailure, "foo/bar.cc", -1, "Failure 2") {} + + const TestPartResult r1_, r2_; +}; + +// Tests that TestPartResultArray initially has size 0. +TEST_F(TestPartResultArrayTest, InitialSizeIsZero) { + TestPartResultArray results; + EXPECT_EQ(0, results.size()); +} + +// Tests that TestPartResultArray contains the given TestPartResult +// after one Append() operation. +TEST_F(TestPartResultArrayTest, ContainsGivenResultAfterAppend) { + TestPartResultArray results; + results.Append(r1_); + EXPECT_EQ(1, results.size()); + EXPECT_STREQ("Failure 1", results.GetTestPartResult(0).message()); +} + +// Tests that TestPartResultArray contains the given TestPartResults +// after two Append() operations. +TEST_F(TestPartResultArrayTest, ContainsGivenResultsAfterTwoAppends) { + TestPartResultArray results; + results.Append(r1_); + results.Append(r2_); + EXPECT_EQ(2, results.size()); + EXPECT_STREQ("Failure 1", results.GetTestPartResult(0).message()); + EXPECT_STREQ("Failure 2", results.GetTestPartResult(1).message()); +} + +typedef TestPartResultArrayTest TestPartResultArrayDeathTest; + +// Tests that the program dies when GetTestPartResult() is called with +// an invalid index. +TEST_F(TestPartResultArrayDeathTest, DiesWhenIndexIsOutOfBound) { + TestPartResultArray results; + results.Append(r1_); + + EXPECT_DEATH_IF_SUPPORTED(results.GetTestPartResult(-1), ""); + EXPECT_DEATH_IF_SUPPORTED(results.GetTestPartResult(1), ""); +} + +// TODO(mheule@google.com): Add a test for the class HasNewFatalFailureHelper. + +} // namespace diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest-tuple_test.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest-tuple_test.cc new file mode 100644 index 00000000..bfaa3e0a --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest-tuple_test.cc @@ -0,0 +1,320 @@ +// Copyright 2007, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +#include "gtest/internal/gtest-tuple.h" +#include +#include "gtest/gtest.h" + +namespace { + +using ::std::tr1::get; +using ::std::tr1::make_tuple; +using ::std::tr1::tuple; +using ::std::tr1::tuple_element; +using ::std::tr1::tuple_size; +using ::testing::StaticAssertTypeEq; + +// Tests that tuple_element >::type returns TK. +TEST(tuple_element_Test, ReturnsElementType) { + StaticAssertTypeEq >::type>(); + StaticAssertTypeEq >::type>(); + StaticAssertTypeEq >::type>(); +} + +// Tests that tuple_size::value gives the number of fields in tuple +// type T. +TEST(tuple_size_Test, ReturnsNumberOfFields) { + EXPECT_EQ(0, +tuple_size >::value); + EXPECT_EQ(1, +tuple_size >::value); + EXPECT_EQ(1, +tuple_size >::value); + EXPECT_EQ(1, +(tuple_size > >::value)); + EXPECT_EQ(2, +(tuple_size >::value)); + EXPECT_EQ(3, +(tuple_size >::value)); +} + +// Tests comparing a tuple with itself. +TEST(ComparisonTest, ComparesWithSelf) { + const tuple a(5, 'a', false); + + EXPECT_TRUE(a == a); + EXPECT_FALSE(a != a); +} + +// Tests comparing two tuples with the same value. +TEST(ComparisonTest, ComparesEqualTuples) { + const tuple a(5, true), b(5, true); + + EXPECT_TRUE(a == b); + EXPECT_FALSE(a != b); +} + +// Tests comparing two different tuples that have no reference fields. +TEST(ComparisonTest, ComparesUnequalTuplesWithoutReferenceFields) { + typedef tuple FooTuple; + + const FooTuple a(0, 'x'); + const FooTuple b(1, 'a'); + + EXPECT_TRUE(a != b); + EXPECT_FALSE(a == b); + + const FooTuple c(1, 'b'); + + EXPECT_TRUE(b != c); + EXPECT_FALSE(b == c); +} + +// Tests comparing two different tuples that have reference fields. +TEST(ComparisonTest, ComparesUnequalTuplesWithReferenceFields) { + typedef tuple FooTuple; + + int i = 5; + const char ch = 'a'; + const FooTuple a(i, ch); + + int j = 6; + const FooTuple b(j, ch); + + EXPECT_TRUE(a != b); + EXPECT_FALSE(a == b); + + j = 5; + const char ch2 = 'b'; + const FooTuple c(j, ch2); + + EXPECT_TRUE(b != c); + EXPECT_FALSE(b == c); +} + +// Tests that a tuple field with a reference type is an alias of the +// variable it's supposed to reference. +TEST(ReferenceFieldTest, IsAliasOfReferencedVariable) { + int n = 0; + tuple t(true, n); + + n = 1; + EXPECT_EQ(n, get<1>(t)) + << "Changing a underlying variable should update the reference field."; + + // Makes sure that the implementation doesn't do anything funny with + // the & operator for the return type of get<>(). + EXPECT_EQ(&n, &(get<1>(t))) + << "The address of a reference field should equal the address of " + << "the underlying variable."; + + get<1>(t) = 2; + EXPECT_EQ(2, n) + << "Changing a reference field should update the underlying variable."; +} + +// Tests that tuple's default constructor default initializes each field. +// This test needs to compile without generating warnings. +TEST(TupleConstructorTest, DefaultConstructorDefaultInitializesEachField) { + // The TR1 report requires that tuple's default constructor default + // initializes each field, even if it's a primitive type. If the + // implementation forgets to do this, this test will catch it by + // generating warnings about using uninitialized variables (assuming + // a decent compiler). + + tuple<> empty; + + tuple a1, b1; + b1 = a1; + EXPECT_EQ(0, get<0>(b1)); + + tuple a2, b2; + b2 = a2; + EXPECT_EQ(0, get<0>(b2)); + EXPECT_EQ(0.0, get<1>(b2)); + + tuple a3, b3; + b3 = a3; + EXPECT_EQ(0.0, get<0>(b3)); + EXPECT_EQ('\0', get<1>(b3)); + EXPECT_TRUE(get<2>(b3) == NULL); + + tuple a10, b10; + b10 = a10; + EXPECT_EQ(0, get<0>(b10)); + EXPECT_EQ(0, get<1>(b10)); + EXPECT_EQ(0, get<2>(b10)); + EXPECT_EQ(0, get<3>(b10)); + EXPECT_EQ(0, get<4>(b10)); + EXPECT_EQ(0, get<5>(b10)); + EXPECT_EQ(0, get<6>(b10)); + EXPECT_EQ(0, get<7>(b10)); + EXPECT_EQ(0, get<8>(b10)); + EXPECT_EQ(0, get<9>(b10)); +} + +// Tests constructing a tuple from its fields. +TEST(TupleConstructorTest, ConstructsFromFields) { + int n = 1; + // Reference field. + tuple a(n); + EXPECT_EQ(&n, &(get<0>(a))); + + // Non-reference fields. + tuple b(5, 'a'); + EXPECT_EQ(5, get<0>(b)); + EXPECT_EQ('a', get<1>(b)); + + // Const reference field. + const int m = 2; + tuple c(true, m); + EXPECT_TRUE(get<0>(c)); + EXPECT_EQ(&m, &(get<1>(c))); +} + +// Tests tuple's copy constructor. +TEST(TupleConstructorTest, CopyConstructor) { + tuple a(0.0, true); + tuple b(a); + + EXPECT_DOUBLE_EQ(0.0, get<0>(b)); + EXPECT_TRUE(get<1>(b)); +} + +// Tests constructing a tuple from another tuple that has a compatible +// but different type. +TEST(TupleConstructorTest, ConstructsFromDifferentTupleType) { + tuple a(0, 1, 'a'); + tuple b(a); + + EXPECT_DOUBLE_EQ(0.0, get<0>(b)); + EXPECT_EQ(1, get<1>(b)); + EXPECT_EQ('a', get<2>(b)); +} + +// Tests constructing a 2-tuple from an std::pair. +TEST(TupleConstructorTest, ConstructsFromPair) { + ::std::pair a(1, 'a'); + tuple b(a); + tuple c(a); +} + +// Tests assigning a tuple to another tuple with the same type. +TEST(TupleAssignmentTest, AssignsToSameTupleType) { + const tuple a(5, 7L); + tuple b; + b = a; + EXPECT_EQ(5, get<0>(b)); + EXPECT_EQ(7L, get<1>(b)); +} + +// Tests assigning a tuple to another tuple with a different but +// compatible type. +TEST(TupleAssignmentTest, AssignsToDifferentTupleType) { + const tuple a(1, 7L, true); + tuple b; + b = a; + EXPECT_EQ(1L, get<0>(b)); + EXPECT_EQ(7, get<1>(b)); + EXPECT_TRUE(get<2>(b)); +} + +// Tests assigning an std::pair to a 2-tuple. +TEST(TupleAssignmentTest, AssignsFromPair) { + const ::std::pair a(5, true); + tuple b; + b = a; + EXPECT_EQ(5, get<0>(b)); + EXPECT_TRUE(get<1>(b)); + + tuple c; + c = a; + EXPECT_EQ(5L, get<0>(c)); + EXPECT_TRUE(get<1>(c)); +} + +// A fixture for testing big tuples. +class BigTupleTest : public testing::Test { + protected: + typedef tuple BigTuple; + + BigTupleTest() : + a_(1, 0, 0, 0, 0, 0, 0, 0, 0, 2), + b_(1, 0, 0, 0, 0, 0, 0, 0, 0, 3) {} + + BigTuple a_, b_; +}; + +// Tests constructing big tuples. +TEST_F(BigTupleTest, Construction) { + BigTuple a; + BigTuple b(b_); +} + +// Tests that get(t) returns the N-th (0-based) field of tuple t. +TEST_F(BigTupleTest, get) { + EXPECT_EQ(1, get<0>(a_)); + EXPECT_EQ(2, get<9>(a_)); + + // Tests that get() works on a const tuple too. + const BigTuple a(a_); + EXPECT_EQ(1, get<0>(a)); + EXPECT_EQ(2, get<9>(a)); +} + +// Tests comparing big tuples. +TEST_F(BigTupleTest, Comparisons) { + EXPECT_TRUE(a_ == a_); + EXPECT_FALSE(a_ != a_); + + EXPECT_TRUE(a_ != b_); + EXPECT_FALSE(a_ == b_); +} + +TEST(MakeTupleTest, WorksForScalarTypes) { + tuple a; + a = make_tuple(true, 5); + EXPECT_TRUE(get<0>(a)); + EXPECT_EQ(5, get<1>(a)); + + tuple b; + b = make_tuple('a', 'b', 5); + EXPECT_EQ('a', get<0>(b)); + EXPECT_EQ('b', get<1>(b)); + EXPECT_EQ(5, get<2>(b)); +} + +TEST(MakeTupleTest, WorksForPointers) { + int a[] = { 1, 2, 3, 4 }; + const char* const str = "hi"; + int* const p = a; + + tuple t; + t = make_tuple(str, p); + EXPECT_EQ(str, get<0>(t)); + EXPECT_EQ(p, get<1>(t)); +} + +} // namespace diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest-typed-test2_test.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest-typed-test2_test.cc new file mode 100644 index 00000000..c284700b --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest-typed-test2_test.cc @@ -0,0 +1,45 @@ +// Copyright 2008 Google Inc. +// All Rights Reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +#include + +#include "test/gtest-typed-test_test.h" +#include "gtest/gtest.h" + +#if GTEST_HAS_TYPED_TEST_P + +// Tests that the same type-parameterized test case can be +// instantiated in different translation units linked together. +// (ContainerTest is also instantiated in gtest-typed-test_test.cc.) +INSTANTIATE_TYPED_TEST_CASE_P(Vector, ContainerTest, + testing::Types >); + +#endif // GTEST_HAS_TYPED_TEST_P diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest-typed-test_test.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest-typed-test_test.cc new file mode 100644 index 00000000..dd4ba43b --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest-typed-test_test.cc @@ -0,0 +1,360 @@ +// Copyright 2008 Google Inc. +// All Rights Reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +#include +#include + +#include "test/gtest-typed-test_test.h" +#include "gtest/gtest.h" + +using testing::Test; + +// Used for testing that SetUpTestCase()/TearDownTestCase(), fixture +// ctor/dtor, and SetUp()/TearDown() work correctly in typed tests and +// type-parameterized test. +template +class CommonTest : public Test { + // For some technical reason, SetUpTestCase() and TearDownTestCase() + // must be public. + public: + static void SetUpTestCase() { + shared_ = new T(5); + } + + static void TearDownTestCase() { + delete shared_; + shared_ = NULL; + } + + // This 'protected:' is optional. There's no harm in making all + // members of this fixture class template public. + protected: + // We used to use std::list here, but switched to std::vector since + // MSVC's doesn't compile cleanly with /W4. + typedef std::vector Vector; + typedef std::set IntSet; + + CommonTest() : value_(1) {} + + virtual ~CommonTest() { EXPECT_EQ(3, value_); } + + virtual void SetUp() { + EXPECT_EQ(1, value_); + value_++; + } + + virtual void TearDown() { + EXPECT_EQ(2, value_); + value_++; + } + + T value_; + static T* shared_; +}; + +template +T* CommonTest::shared_ = NULL; + +// This #ifdef block tests typed tests. +#if GTEST_HAS_TYPED_TEST + +using testing::Types; + +// Tests that SetUpTestCase()/TearDownTestCase(), fixture ctor/dtor, +// and SetUp()/TearDown() work correctly in typed tests + +typedef Types TwoTypes; +TYPED_TEST_CASE(CommonTest, TwoTypes); + +TYPED_TEST(CommonTest, ValuesAreCorrect) { + // Static members of the fixture class template can be visited via + // the TestFixture:: prefix. + EXPECT_EQ(5, *TestFixture::shared_); + + // Typedefs in the fixture class template can be visited via the + // "typename TestFixture::" prefix. + typename TestFixture::Vector empty; + EXPECT_EQ(0U, empty.size()); + + typename TestFixture::IntSet empty2; + EXPECT_EQ(0U, empty2.size()); + + // Non-static members of the fixture class must be visited via + // 'this', as required by C++ for class templates. + EXPECT_EQ(2, this->value_); +} + +// The second test makes sure shared_ is not deleted after the first +// test. +TYPED_TEST(CommonTest, ValuesAreStillCorrect) { + // Static members of the fixture class template can also be visited + // via 'this'. + ASSERT_TRUE(this->shared_ != NULL); + EXPECT_EQ(5, *this->shared_); + + // TypeParam can be used to refer to the type parameter. + EXPECT_EQ(static_cast(2), this->value_); +} + +// Tests that multiple TYPED_TEST_CASE's can be defined in the same +// translation unit. + +template +class TypedTest1 : public Test { +}; + +// Verifies that the second argument of TYPED_TEST_CASE can be a +// single type. +TYPED_TEST_CASE(TypedTest1, int); +TYPED_TEST(TypedTest1, A) {} + +template +class TypedTest2 : public Test { +}; + +// Verifies that the second argument of TYPED_TEST_CASE can be a +// Types<...> type list. +TYPED_TEST_CASE(TypedTest2, Types); + +// This also verifies that tests from different typed test cases can +// share the same name. +TYPED_TEST(TypedTest2, A) {} + +// Tests that a typed test case can be defined in a namespace. + +namespace library1 { + +template +class NumericTest : public Test { +}; + +typedef Types NumericTypes; +TYPED_TEST_CASE(NumericTest, NumericTypes); + +TYPED_TEST(NumericTest, DefaultIsZero) { + EXPECT_EQ(0, TypeParam()); +} + +} // namespace library1 + +#endif // GTEST_HAS_TYPED_TEST + +// This #ifdef block tests type-parameterized tests. +#if GTEST_HAS_TYPED_TEST_P + +using testing::Types; +using testing::internal::TypedTestCasePState; + +// Tests TypedTestCasePState. + +class TypedTestCasePStateTest : public Test { + protected: + virtual void SetUp() { + state_.AddTestName("foo.cc", 0, "FooTest", "A"); + state_.AddTestName("foo.cc", 0, "FooTest", "B"); + state_.AddTestName("foo.cc", 0, "FooTest", "C"); + } + + TypedTestCasePState state_; +}; + +TEST_F(TypedTestCasePStateTest, SucceedsForMatchingList) { + const char* tests = "A, B, C"; + EXPECT_EQ(tests, + state_.VerifyRegisteredTestNames("foo.cc", 1, tests)); +} + +// Makes sure that the order of the tests and spaces around the names +// don't matter. +TEST_F(TypedTestCasePStateTest, IgnoresOrderAndSpaces) { + const char* tests = "A,C, B"; + EXPECT_EQ(tests, + state_.VerifyRegisteredTestNames("foo.cc", 1, tests)); +} + +typedef TypedTestCasePStateTest TypedTestCasePStateDeathTest; + +TEST_F(TypedTestCasePStateDeathTest, DetectsDuplicates) { + EXPECT_DEATH_IF_SUPPORTED( + state_.VerifyRegisteredTestNames("foo.cc", 1, "A, B, A, C"), + "foo\\.cc.1.?: Test A is listed more than once\\."); +} + +TEST_F(TypedTestCasePStateDeathTest, DetectsExtraTest) { + EXPECT_DEATH_IF_SUPPORTED( + state_.VerifyRegisteredTestNames("foo.cc", 1, "A, B, C, D"), + "foo\\.cc.1.?: No test named D can be found in this test case\\."); +} + +TEST_F(TypedTestCasePStateDeathTest, DetectsMissedTest) { + EXPECT_DEATH_IF_SUPPORTED( + state_.VerifyRegisteredTestNames("foo.cc", 1, "A, C"), + "foo\\.cc.1.?: You forgot to list test B\\."); +} + +// Tests that defining a test for a parameterized test case generates +// a run-time error if the test case has been registered. +TEST_F(TypedTestCasePStateDeathTest, DetectsTestAfterRegistration) { + state_.VerifyRegisteredTestNames("foo.cc", 1, "A, B, C"); + EXPECT_DEATH_IF_SUPPORTED( + state_.AddTestName("foo.cc", 2, "FooTest", "D"), + "foo\\.cc.2.?: Test D must be defined before REGISTER_TYPED_TEST_CASE_P" + "\\(FooTest, \\.\\.\\.\\)\\."); +} + +// Tests that SetUpTestCase()/TearDownTestCase(), fixture ctor/dtor, +// and SetUp()/TearDown() work correctly in type-parameterized tests. + +template +class DerivedTest : public CommonTest { +}; + +TYPED_TEST_CASE_P(DerivedTest); + +TYPED_TEST_P(DerivedTest, ValuesAreCorrect) { + // Static members of the fixture class template can be visited via + // the TestFixture:: prefix. + EXPECT_EQ(5, *TestFixture::shared_); + + // Non-static members of the fixture class must be visited via + // 'this', as required by C++ for class templates. + EXPECT_EQ(2, this->value_); +} + +// The second test makes sure shared_ is not deleted after the first +// test. +TYPED_TEST_P(DerivedTest, ValuesAreStillCorrect) { + // Static members of the fixture class template can also be visited + // via 'this'. + ASSERT_TRUE(this->shared_ != NULL); + EXPECT_EQ(5, *this->shared_); + EXPECT_EQ(2, this->value_); +} + +REGISTER_TYPED_TEST_CASE_P(DerivedTest, + ValuesAreCorrect, ValuesAreStillCorrect); + +typedef Types MyTwoTypes; +INSTANTIATE_TYPED_TEST_CASE_P(My, DerivedTest, MyTwoTypes); + +// Tests that multiple TYPED_TEST_CASE_P's can be defined in the same +// translation unit. + +template +class TypedTestP1 : public Test { +}; + +TYPED_TEST_CASE_P(TypedTestP1); + +// For testing that the code between TYPED_TEST_CASE_P() and +// TYPED_TEST_P() is not enclosed in a namespace. +typedef int IntAfterTypedTestCaseP; + +TYPED_TEST_P(TypedTestP1, A) {} +TYPED_TEST_P(TypedTestP1, B) {} + +// For testing that the code between TYPED_TEST_P() and +// REGISTER_TYPED_TEST_CASE_P() is not enclosed in a namespace. +typedef int IntBeforeRegisterTypedTestCaseP; + +REGISTER_TYPED_TEST_CASE_P(TypedTestP1, A, B); + +template +class TypedTestP2 : public Test { +}; + +TYPED_TEST_CASE_P(TypedTestP2); + +// This also verifies that tests from different type-parameterized +// test cases can share the same name. +TYPED_TEST_P(TypedTestP2, A) {} + +REGISTER_TYPED_TEST_CASE_P(TypedTestP2, A); + +// Verifies that the code between TYPED_TEST_CASE_P() and +// REGISTER_TYPED_TEST_CASE_P() is not enclosed in a namespace. +IntAfterTypedTestCaseP after = 0; +IntBeforeRegisterTypedTestCaseP before = 0; + +// Verifies that the last argument of INSTANTIATE_TYPED_TEST_CASE_P() +// can be either a single type or a Types<...> type list. +INSTANTIATE_TYPED_TEST_CASE_P(Int, TypedTestP1, int); +INSTANTIATE_TYPED_TEST_CASE_P(Int, TypedTestP2, Types); + +// Tests that the same type-parameterized test case can be +// instantiated more than once in the same translation unit. +INSTANTIATE_TYPED_TEST_CASE_P(Double, TypedTestP2, Types); + +// Tests that the same type-parameterized test case can be +// instantiated in different translation units linked together. +// (ContainerTest is also instantiated in gtest-typed-test_test.cc.) +typedef Types, std::set > MyContainers; +INSTANTIATE_TYPED_TEST_CASE_P(My, ContainerTest, MyContainers); + +// Tests that a type-parameterized test case can be defined and +// instantiated in a namespace. + +namespace library2 { + +template +class NumericTest : public Test { +}; + +TYPED_TEST_CASE_P(NumericTest); + +TYPED_TEST_P(NumericTest, DefaultIsZero) { + EXPECT_EQ(0, TypeParam()); +} + +TYPED_TEST_P(NumericTest, ZeroIsLessThanOne) { + EXPECT_LT(TypeParam(0), TypeParam(1)); +} + +REGISTER_TYPED_TEST_CASE_P(NumericTest, + DefaultIsZero, ZeroIsLessThanOne); +typedef Types NumericTypes; +INSTANTIATE_TYPED_TEST_CASE_P(My, NumericTest, NumericTypes); + +} // namespace library2 + +#endif // GTEST_HAS_TYPED_TEST_P + +#if !defined(GTEST_HAS_TYPED_TEST) && !defined(GTEST_HAS_TYPED_TEST_P) + +// Google Test may not support type-parameterized tests with some +// compilers. If we use conditional compilation to compile out all +// code referring to the gtest_main library, MSVC linker will not link +// that library at all and consequently complain about missing entry +// point defined in that library (fatal error LNK1561: entry point +// must be defined). This dummy test keeps gtest_main linked in. +TEST(DummyTest, TypedTestsAreNotSupportedOnThisPlatform) {} + +#endif // #if !defined(GTEST_HAS_TYPED_TEST) && !defined(GTEST_HAS_TYPED_TEST_P) diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest-typed-test_test.h b/thirdparty/protobuf-2.6.1/gtest/test/gtest-typed-test_test.h new file mode 100644 index 00000000..41d75704 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest-typed-test_test.h @@ -0,0 +1,66 @@ +// Copyright 2008 Google Inc. +// All Rights Reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +#ifndef GTEST_TEST_GTEST_TYPED_TEST_TEST_H_ +#define GTEST_TEST_GTEST_TYPED_TEST_TEST_H_ + +#include "gtest/gtest.h" + +#if GTEST_HAS_TYPED_TEST_P + +using testing::Test; + +// For testing that the same type-parameterized test case can be +// instantiated in different translation units linked together. +// ContainerTest will be instantiated in both gtest-typed-test_test.cc +// and gtest-typed-test2_test.cc. + +template +class ContainerTest : public Test { +}; + +TYPED_TEST_CASE_P(ContainerTest); + +TYPED_TEST_P(ContainerTest, CanBeDefaultConstructed) { + TypeParam container; +} + +TYPED_TEST_P(ContainerTest, InitialSizeIsZero) { + TypeParam container; + EXPECT_EQ(0U, container.size()); +} + +REGISTER_TYPED_TEST_CASE_P(ContainerTest, + CanBeDefaultConstructed, InitialSizeIsZero); + +#endif // GTEST_HAS_TYPED_TEST_P + +#endif // GTEST_TEST_GTEST_TYPED_TEST_TEST_H_ diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest-unittest-api_test.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest-unittest-api_test.cc new file mode 100644 index 00000000..07083e51 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest-unittest-api_test.cc @@ -0,0 +1,341 @@ +// Copyright 2009 Google Inc. All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: vladl@google.com (Vlad Losev) +// +// The Google C++ Testing Framework (Google Test) +// +// This file contains tests verifying correctness of data provided via +// UnitTest's public methods. + +#include "gtest/gtest.h" + +#include // For strcmp. +#include + +using ::testing::InitGoogleTest; + +namespace testing { +namespace internal { + +template +struct LessByName { + bool operator()(const T* a, const T* b) { + return strcmp(a->name(), b->name()) < 0; + } +}; + +class UnitTestHelper { + public: + // Returns the array of pointers to all test cases sorted by the test case + // name. The caller is responsible for deleting the array. + static TestCase const** const GetSortedTestCases() { + UnitTest& unit_test = *UnitTest::GetInstance(); + TestCase const** const test_cases = + new const TestCase*[unit_test.total_test_case_count()]; + + for (int i = 0; i < unit_test.total_test_case_count(); ++i) + test_cases[i] = unit_test.GetTestCase(i); + + std::sort(test_cases, + test_cases + unit_test.total_test_case_count(), + LessByName()); + return test_cases; + } + + // Returns the test case by its name. The caller doesn't own the returned + // pointer. + static const TestCase* FindTestCase(const char* name) { + UnitTest& unit_test = *UnitTest::GetInstance(); + for (int i = 0; i < unit_test.total_test_case_count(); ++i) { + const TestCase* test_case = unit_test.GetTestCase(i); + if (0 == strcmp(test_case->name(), name)) + return test_case; + } + return NULL; + } + + // Returns the array of pointers to all tests in a particular test case + // sorted by the test name. The caller is responsible for deleting the + // array. + static TestInfo const** const GetSortedTests(const TestCase* test_case) { + TestInfo const** const tests = + new const TestInfo*[test_case->total_test_count()]; + + for (int i = 0; i < test_case->total_test_count(); ++i) + tests[i] = test_case->GetTestInfo(i); + + std::sort(tests, tests + test_case->total_test_count(), + LessByName()); + return tests; + } +}; + +#if GTEST_HAS_TYPED_TEST +template class TestCaseWithCommentTest : public Test {}; +TYPED_TEST_CASE(TestCaseWithCommentTest, Types); +TYPED_TEST(TestCaseWithCommentTest, Dummy) {} + +const int kTypedTestCases = 1; +const int kTypedTests = 1; +#else +const int kTypedTestCases = 0; +const int kTypedTests = 0; +#endif // GTEST_HAS_TYPED_TEST + +// We can only test the accessors that do not change value while tests run. +// Since tests can be run in any order, the values the accessors that track +// test execution (such as failed_test_count) can not be predicted. +TEST(ApiTest, UnitTestImmutableAccessorsWork) { + UnitTest* unit_test = UnitTest::GetInstance(); + + ASSERT_EQ(2 + kTypedTestCases, unit_test->total_test_case_count()); + EXPECT_EQ(1 + kTypedTestCases, unit_test->test_case_to_run_count()); + EXPECT_EQ(2, unit_test->disabled_test_count()); + EXPECT_EQ(5 + kTypedTests, unit_test->total_test_count()); + EXPECT_EQ(3 + kTypedTests, unit_test->test_to_run_count()); + + const TestCase** const test_cases = UnitTestHelper::GetSortedTestCases(); + + EXPECT_STREQ("ApiTest", test_cases[0]->name()); + EXPECT_STREQ("DISABLED_Test", test_cases[1]->name()); +#if GTEST_HAS_TYPED_TEST + EXPECT_STREQ("TestCaseWithCommentTest/0", test_cases[2]->name()); +#endif // GTEST_HAS_TYPED_TEST + + delete[] test_cases; + + // The following lines initiate actions to verify certain methods in + // FinalSuccessChecker::TearDown. + + // Records a test property to verify TestResult::GetTestProperty(). + RecordProperty("key", "value"); +} + +AssertionResult IsNull(const char* str) { + if (str != NULL) { + return testing::AssertionFailure() << "argument is " << str; + } + return AssertionSuccess(); +} + +TEST(ApiTest, TestCaseImmutableAccessorsWork) { + const TestCase* test_case = UnitTestHelper::FindTestCase("ApiTest"); + ASSERT_TRUE(test_case != NULL); + + EXPECT_STREQ("ApiTest", test_case->name()); + EXPECT_TRUE(IsNull(test_case->type_param())); + EXPECT_TRUE(test_case->should_run()); + EXPECT_EQ(1, test_case->disabled_test_count()); + EXPECT_EQ(3, test_case->test_to_run_count()); + ASSERT_EQ(4, test_case->total_test_count()); + + const TestInfo** tests = UnitTestHelper::GetSortedTests(test_case); + + EXPECT_STREQ("DISABLED_Dummy1", tests[0]->name()); + EXPECT_STREQ("ApiTest", tests[0]->test_case_name()); + EXPECT_TRUE(IsNull(tests[0]->value_param())); + EXPECT_TRUE(IsNull(tests[0]->type_param())); + EXPECT_FALSE(tests[0]->should_run()); + + EXPECT_STREQ("TestCaseDisabledAccessorsWork", tests[1]->name()); + EXPECT_STREQ("ApiTest", tests[1]->test_case_name()); + EXPECT_TRUE(IsNull(tests[1]->value_param())); + EXPECT_TRUE(IsNull(tests[1]->type_param())); + EXPECT_TRUE(tests[1]->should_run()); + + EXPECT_STREQ("TestCaseImmutableAccessorsWork", tests[2]->name()); + EXPECT_STREQ("ApiTest", tests[2]->test_case_name()); + EXPECT_TRUE(IsNull(tests[2]->value_param())); + EXPECT_TRUE(IsNull(tests[2]->type_param())); + EXPECT_TRUE(tests[2]->should_run()); + + EXPECT_STREQ("UnitTestImmutableAccessorsWork", tests[3]->name()); + EXPECT_STREQ("ApiTest", tests[3]->test_case_name()); + EXPECT_TRUE(IsNull(tests[3]->value_param())); + EXPECT_TRUE(IsNull(tests[3]->type_param())); + EXPECT_TRUE(tests[3]->should_run()); + + delete[] tests; + tests = NULL; + +#if GTEST_HAS_TYPED_TEST + test_case = UnitTestHelper::FindTestCase("TestCaseWithCommentTest/0"); + ASSERT_TRUE(test_case != NULL); + + EXPECT_STREQ("TestCaseWithCommentTest/0", test_case->name()); + EXPECT_STREQ(GetTypeName().c_str(), test_case->type_param()); + EXPECT_TRUE(test_case->should_run()); + EXPECT_EQ(0, test_case->disabled_test_count()); + EXPECT_EQ(1, test_case->test_to_run_count()); + ASSERT_EQ(1, test_case->total_test_count()); + + tests = UnitTestHelper::GetSortedTests(test_case); + + EXPECT_STREQ("Dummy", tests[0]->name()); + EXPECT_STREQ("TestCaseWithCommentTest/0", tests[0]->test_case_name()); + EXPECT_TRUE(IsNull(tests[0]->value_param())); + EXPECT_STREQ(GetTypeName().c_str(), tests[0]->type_param()); + EXPECT_TRUE(tests[0]->should_run()); + + delete[] tests; +#endif // GTEST_HAS_TYPED_TEST +} + +TEST(ApiTest, TestCaseDisabledAccessorsWork) { + const TestCase* test_case = UnitTestHelper::FindTestCase("DISABLED_Test"); + ASSERT_TRUE(test_case != NULL); + + EXPECT_STREQ("DISABLED_Test", test_case->name()); + EXPECT_TRUE(IsNull(test_case->type_param())); + EXPECT_FALSE(test_case->should_run()); + EXPECT_EQ(1, test_case->disabled_test_count()); + EXPECT_EQ(0, test_case->test_to_run_count()); + ASSERT_EQ(1, test_case->total_test_count()); + + const TestInfo* const test_info = test_case->GetTestInfo(0); + EXPECT_STREQ("Dummy2", test_info->name()); + EXPECT_STREQ("DISABLED_Test", test_info->test_case_name()); + EXPECT_TRUE(IsNull(test_info->value_param())); + EXPECT_TRUE(IsNull(test_info->type_param())); + EXPECT_FALSE(test_info->should_run()); +} + +// These two tests are here to provide support for testing +// test_case_to_run_count, disabled_test_count, and test_to_run_count. +TEST(ApiTest, DISABLED_Dummy1) {} +TEST(DISABLED_Test, Dummy2) {} + +class FinalSuccessChecker : public Environment { + protected: + virtual void TearDown() { + UnitTest* unit_test = UnitTest::GetInstance(); + + EXPECT_EQ(1 + kTypedTestCases, unit_test->successful_test_case_count()); + EXPECT_EQ(3 + kTypedTests, unit_test->successful_test_count()); + EXPECT_EQ(0, unit_test->failed_test_case_count()); + EXPECT_EQ(0, unit_test->failed_test_count()); + EXPECT_TRUE(unit_test->Passed()); + EXPECT_FALSE(unit_test->Failed()); + ASSERT_EQ(2 + kTypedTestCases, unit_test->total_test_case_count()); + + const TestCase** const test_cases = UnitTestHelper::GetSortedTestCases(); + + EXPECT_STREQ("ApiTest", test_cases[0]->name()); + EXPECT_TRUE(IsNull(test_cases[0]->type_param())); + EXPECT_TRUE(test_cases[0]->should_run()); + EXPECT_EQ(1, test_cases[0]->disabled_test_count()); + ASSERT_EQ(4, test_cases[0]->total_test_count()); + EXPECT_EQ(3, test_cases[0]->successful_test_count()); + EXPECT_EQ(0, test_cases[0]->failed_test_count()); + EXPECT_TRUE(test_cases[0]->Passed()); + EXPECT_FALSE(test_cases[0]->Failed()); + + EXPECT_STREQ("DISABLED_Test", test_cases[1]->name()); + EXPECT_TRUE(IsNull(test_cases[1]->type_param())); + EXPECT_FALSE(test_cases[1]->should_run()); + EXPECT_EQ(1, test_cases[1]->disabled_test_count()); + ASSERT_EQ(1, test_cases[1]->total_test_count()); + EXPECT_EQ(0, test_cases[1]->successful_test_count()); + EXPECT_EQ(0, test_cases[1]->failed_test_count()); + +#if GTEST_HAS_TYPED_TEST + EXPECT_STREQ("TestCaseWithCommentTest/0", test_cases[2]->name()); + EXPECT_STREQ(GetTypeName().c_str(), test_cases[2]->type_param()); + EXPECT_TRUE(test_cases[2]->should_run()); + EXPECT_EQ(0, test_cases[2]->disabled_test_count()); + ASSERT_EQ(1, test_cases[2]->total_test_count()); + EXPECT_EQ(1, test_cases[2]->successful_test_count()); + EXPECT_EQ(0, test_cases[2]->failed_test_count()); + EXPECT_TRUE(test_cases[2]->Passed()); + EXPECT_FALSE(test_cases[2]->Failed()); +#endif // GTEST_HAS_TYPED_TEST + + const TestCase* test_case = UnitTestHelper::FindTestCase("ApiTest"); + const TestInfo** tests = UnitTestHelper::GetSortedTests(test_case); + EXPECT_STREQ("DISABLED_Dummy1", tests[0]->name()); + EXPECT_STREQ("ApiTest", tests[0]->test_case_name()); + EXPECT_FALSE(tests[0]->should_run()); + + EXPECT_STREQ("TestCaseDisabledAccessorsWork", tests[1]->name()); + EXPECT_STREQ("ApiTest", tests[1]->test_case_name()); + EXPECT_TRUE(IsNull(tests[1]->value_param())); + EXPECT_TRUE(IsNull(tests[1]->type_param())); + EXPECT_TRUE(tests[1]->should_run()); + EXPECT_TRUE(tests[1]->result()->Passed()); + EXPECT_EQ(0, tests[1]->result()->test_property_count()); + + EXPECT_STREQ("TestCaseImmutableAccessorsWork", tests[2]->name()); + EXPECT_STREQ("ApiTest", tests[2]->test_case_name()); + EXPECT_TRUE(IsNull(tests[2]->value_param())); + EXPECT_TRUE(IsNull(tests[2]->type_param())); + EXPECT_TRUE(tests[2]->should_run()); + EXPECT_TRUE(tests[2]->result()->Passed()); + EXPECT_EQ(0, tests[2]->result()->test_property_count()); + + EXPECT_STREQ("UnitTestImmutableAccessorsWork", tests[3]->name()); + EXPECT_STREQ("ApiTest", tests[3]->test_case_name()); + EXPECT_TRUE(IsNull(tests[3]->value_param())); + EXPECT_TRUE(IsNull(tests[3]->type_param())); + EXPECT_TRUE(tests[3]->should_run()); + EXPECT_TRUE(tests[3]->result()->Passed()); + EXPECT_EQ(1, tests[3]->result()->test_property_count()); + const TestProperty& property = tests[3]->result()->GetTestProperty(0); + EXPECT_STREQ("key", property.key()); + EXPECT_STREQ("value", property.value()); + + delete[] tests; + +#if GTEST_HAS_TYPED_TEST + test_case = UnitTestHelper::FindTestCase("TestCaseWithCommentTest/0"); + tests = UnitTestHelper::GetSortedTests(test_case); + + EXPECT_STREQ("Dummy", tests[0]->name()); + EXPECT_STREQ("TestCaseWithCommentTest/0", tests[0]->test_case_name()); + EXPECT_TRUE(IsNull(tests[0]->value_param())); + EXPECT_STREQ(GetTypeName().c_str(), tests[0]->type_param()); + EXPECT_TRUE(tests[0]->should_run()); + EXPECT_TRUE(tests[0]->result()->Passed()); + EXPECT_EQ(0, tests[0]->result()->test_property_count()); + + delete[] tests; +#endif // GTEST_HAS_TYPED_TEST + delete[] test_cases; + } +}; + +} // namespace internal +} // namespace testing + +int main(int argc, char **argv) { + InitGoogleTest(&argc, argv); + + AddGlobalTestEnvironment(new testing::internal::FinalSuccessChecker()); + + return RUN_ALL_TESTS(); +} diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_all_test.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest_all_test.cc new file mode 100644 index 00000000..955aa628 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_all_test.cc @@ -0,0 +1,47 @@ +// Copyright 2009, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) +// +// Tests for Google C++ Testing Framework (Google Test) +// +// Sometimes it's desirable to build most of Google Test's own tests +// by compiling a single file. This file serves this purpose. +#include "test/gtest-filepath_test.cc" +#include "test/gtest-linked_ptr_test.cc" +#include "test/gtest-message_test.cc" +#include "test/gtest-options_test.cc" +#include "test/gtest-port_test.cc" +#include "test/gtest_pred_impl_unittest.cc" +#include "test/gtest_prod_test.cc" +#include "test/gtest-test-part_test.cc" +#include "test/gtest-typed-test_test.cc" +#include "test/gtest-typed-test2_test.cc" +#include "test/gtest_unittest.cc" +#include "test/production.cc" diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_break_on_failure_unittest.py b/thirdparty/protobuf-2.6.1/gtest/test/gtest_break_on_failure_unittest.py new file mode 100644 index 00000000..c8191833 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_break_on_failure_unittest.py @@ -0,0 +1,218 @@ +#!/usr/bin/env python +# +# Copyright 2006, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Unit test for Google Test's break-on-failure mode. + +A user can ask Google Test to seg-fault when an assertion fails, using +either the GTEST_BREAK_ON_FAILURE environment variable or the +--gtest_break_on_failure flag. This script tests such functionality +by invoking gtest_break_on_failure_unittest_ (a program written with +Google Test) with different environments and command line flags. +""" + +__author__ = 'wan@google.com (Zhanyong Wan)' + +import gtest_test_utils +import os +import sys + + +# Constants. + +IS_WINDOWS = os.name == 'nt' + +# The environment variable for enabling/disabling the break-on-failure mode. +BREAK_ON_FAILURE_ENV_VAR = 'GTEST_BREAK_ON_FAILURE' + +# The command line flag for enabling/disabling the break-on-failure mode. +BREAK_ON_FAILURE_FLAG = 'gtest_break_on_failure' + +# The environment variable for enabling/disabling the throw-on-failure mode. +THROW_ON_FAILURE_ENV_VAR = 'GTEST_THROW_ON_FAILURE' + +# The environment variable for enabling/disabling the catch-exceptions mode. +CATCH_EXCEPTIONS_ENV_VAR = 'GTEST_CATCH_EXCEPTIONS' + +# Path to the gtest_break_on_failure_unittest_ program. +EXE_PATH = gtest_test_utils.GetTestExecutablePath( + 'gtest_break_on_failure_unittest_') + + +# Utilities. + + +environ = os.environ.copy() + + +def SetEnvVar(env_var, value): + """Sets an environment variable to a given value; unsets it when the + given value is None. + """ + + if value is not None: + environ[env_var] = value + elif env_var in environ: + del environ[env_var] + + +def Run(command): + """Runs a command; returns 1 if it was killed by a signal, or 0 otherwise.""" + + p = gtest_test_utils.Subprocess(command, env=environ) + if p.terminated_by_signal: + return 1 + else: + return 0 + + +# The tests. + + +class GTestBreakOnFailureUnitTest(gtest_test_utils.TestCase): + """Tests using the GTEST_BREAK_ON_FAILURE environment variable or + the --gtest_break_on_failure flag to turn assertion failures into + segmentation faults. + """ + + def RunAndVerify(self, env_var_value, flag_value, expect_seg_fault): + """Runs gtest_break_on_failure_unittest_ and verifies that it does + (or does not) have a seg-fault. + + Args: + env_var_value: value of the GTEST_BREAK_ON_FAILURE environment + variable; None if the variable should be unset. + flag_value: value of the --gtest_break_on_failure flag; + None if the flag should not be present. + expect_seg_fault: 1 if the program is expected to generate a seg-fault; + 0 otherwise. + """ + + SetEnvVar(BREAK_ON_FAILURE_ENV_VAR, env_var_value) + + if env_var_value is None: + env_var_value_msg = ' is not set' + else: + env_var_value_msg = '=' + env_var_value + + if flag_value is None: + flag = '' + elif flag_value == '0': + flag = '--%s=0' % BREAK_ON_FAILURE_FLAG + else: + flag = '--%s' % BREAK_ON_FAILURE_FLAG + + command = [EXE_PATH] + if flag: + command.append(flag) + + if expect_seg_fault: + should_or_not = 'should' + else: + should_or_not = 'should not' + + has_seg_fault = Run(command) + + SetEnvVar(BREAK_ON_FAILURE_ENV_VAR, None) + + msg = ('when %s%s, an assertion failure in "%s" %s cause a seg-fault.' % + (BREAK_ON_FAILURE_ENV_VAR, env_var_value_msg, ' '.join(command), + should_or_not)) + self.assert_(has_seg_fault == expect_seg_fault, msg) + + def testDefaultBehavior(self): + """Tests the behavior of the default mode.""" + + self.RunAndVerify(env_var_value=None, + flag_value=None, + expect_seg_fault=0) + + def testEnvVar(self): + """Tests using the GTEST_BREAK_ON_FAILURE environment variable.""" + + self.RunAndVerify(env_var_value='0', + flag_value=None, + expect_seg_fault=0) + self.RunAndVerify(env_var_value='1', + flag_value=None, + expect_seg_fault=1) + + def testFlag(self): + """Tests using the --gtest_break_on_failure flag.""" + + self.RunAndVerify(env_var_value=None, + flag_value='0', + expect_seg_fault=0) + self.RunAndVerify(env_var_value=None, + flag_value='1', + expect_seg_fault=1) + + def testFlagOverridesEnvVar(self): + """Tests that the flag overrides the environment variable.""" + + self.RunAndVerify(env_var_value='0', + flag_value='0', + expect_seg_fault=0) + self.RunAndVerify(env_var_value='0', + flag_value='1', + expect_seg_fault=1) + self.RunAndVerify(env_var_value='1', + flag_value='0', + expect_seg_fault=0) + self.RunAndVerify(env_var_value='1', + flag_value='1', + expect_seg_fault=1) + + def testBreakOnFailureOverridesThrowOnFailure(self): + """Tests that gtest_break_on_failure overrides gtest_throw_on_failure.""" + + SetEnvVar(THROW_ON_FAILURE_ENV_VAR, '1') + try: + self.RunAndVerify(env_var_value=None, + flag_value='1', + expect_seg_fault=1) + finally: + SetEnvVar(THROW_ON_FAILURE_ENV_VAR, None) + + if IS_WINDOWS: + def testCatchExceptionsDoesNotInterfere(self): + """Tests that gtest_catch_exceptions doesn't interfere.""" + + SetEnvVar(CATCH_EXCEPTIONS_ENV_VAR, '1') + try: + self.RunAndVerify(env_var_value='1', + flag_value='1', + expect_seg_fault=1) + finally: + SetEnvVar(CATCH_EXCEPTIONS_ENV_VAR, None) + + +if __name__ == '__main__': + gtest_test_utils.Main() diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_break_on_failure_unittest_.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest_break_on_failure_unittest_.cc new file mode 100644 index 00000000..dd07478c --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_break_on_failure_unittest_.cc @@ -0,0 +1,88 @@ +// Copyright 2006, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +// Unit test for Google Test's break-on-failure mode. +// +// A user can ask Google Test to seg-fault when an assertion fails, using +// either the GTEST_BREAK_ON_FAILURE environment variable or the +// --gtest_break_on_failure flag. This file is used for testing such +// functionality. +// +// This program will be invoked from a Python unit test. It is +// expected to fail. Don't run it directly. + +#include "gtest/gtest.h" + +#if GTEST_OS_WINDOWS +# include +# include +#endif + +namespace { + +// A test that's expected to fail. +TEST(Foo, Bar) { + EXPECT_EQ(2, 3); +} + +#if GTEST_HAS_SEH && !GTEST_OS_WINDOWS_MOBILE +// On Windows Mobile global exception handlers are not supported. +LONG WINAPI ExitWithExceptionCode( + struct _EXCEPTION_POINTERS* exception_pointers) { + exit(exception_pointers->ExceptionRecord->ExceptionCode); +} +#endif + +} // namespace + +int main(int argc, char **argv) { +#if GTEST_OS_WINDOWS + // Suppresses display of the Windows error dialog upon encountering + // a general protection fault (segment violation). + SetErrorMode(SEM_NOGPFAULTERRORBOX | SEM_FAILCRITICALERRORS); + +# if GTEST_HAS_SEH && !GTEST_OS_WINDOWS_MOBILE + + // The default unhandled exception filter does not always exit + // with the exception code as exit code - for example it exits with + // 0 for EXCEPTION_ACCESS_VIOLATION and 1 for EXCEPTION_BREAKPOINT + // if the application is compiled in debug mode. Thus we use our own + // filter which always exits with the exception code for unhandled + // exceptions. + SetUnhandledExceptionFilter(ExitWithExceptionCode); + +# endif +#endif + + testing::InitGoogleTest(&argc, argv); + + return RUN_ALL_TESTS(); +} diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_catch_exceptions_test.py b/thirdparty/protobuf-2.6.1/gtest/test/gtest_catch_exceptions_test.py new file mode 100644 index 00000000..d7ef10eb --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_catch_exceptions_test.py @@ -0,0 +1,223 @@ +#!/usr/bin/env python +# +# Copyright 2010 Google Inc. All Rights Reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Tests Google Test's exception catching behavior. + +This script invokes gtest_catch_exceptions_test_ and +gtest_catch_exceptions_ex_test_ (programs written with +Google Test) and verifies their output. +""" + +__author__ = 'vladl@google.com (Vlad Losev)' + +import os + +import gtest_test_utils + +# Constants. +FLAG_PREFIX = '--gtest_' +LIST_TESTS_FLAG = FLAG_PREFIX + 'list_tests' +NO_CATCH_EXCEPTIONS_FLAG = FLAG_PREFIX + 'catch_exceptions=0' +FILTER_FLAG = FLAG_PREFIX + 'filter' + +# Path to the gtest_catch_exceptions_ex_test_ binary, compiled with +# exceptions enabled. +EX_EXE_PATH = gtest_test_utils.GetTestExecutablePath( + 'gtest_catch_exceptions_ex_test_') + +# Path to the gtest_catch_exceptions_test_ binary, compiled with +# exceptions disabled. +EXE_PATH = gtest_test_utils.GetTestExecutablePath( + 'gtest_catch_exceptions_no_ex_test_') + +TEST_LIST = gtest_test_utils.Subprocess([EXE_PATH, LIST_TESTS_FLAG]).output + +SUPPORTS_SEH_EXCEPTIONS = 'ThrowsSehException' in TEST_LIST + +if SUPPORTS_SEH_EXCEPTIONS: + BINARY_OUTPUT = gtest_test_utils.Subprocess([EXE_PATH]).output + +EX_BINARY_OUTPUT = gtest_test_utils.Subprocess([EX_EXE_PATH]).output + +# The tests. +if SUPPORTS_SEH_EXCEPTIONS: + # pylint:disable-msg=C6302 + class CatchSehExceptionsTest(gtest_test_utils.TestCase): + """Tests exception-catching behavior.""" + + + def TestSehExceptions(self, test_output): + self.assert_('SEH exception with code 0x2a thrown ' + 'in the test fixture\'s constructor' + in test_output) + self.assert_('SEH exception with code 0x2a thrown ' + 'in the test fixture\'s destructor' + in test_output) + self.assert_('SEH exception with code 0x2a thrown in SetUpTestCase()' + in test_output) + self.assert_('SEH exception with code 0x2a thrown in TearDownTestCase()' + in test_output) + self.assert_('SEH exception with code 0x2a thrown in SetUp()' + in test_output) + self.assert_('SEH exception with code 0x2a thrown in TearDown()' + in test_output) + self.assert_('SEH exception with code 0x2a thrown in the test body' + in test_output) + + def testCatchesSehExceptionsWithCxxExceptionsEnabled(self): + self.TestSehExceptions(EX_BINARY_OUTPUT) + + def testCatchesSehExceptionsWithCxxExceptionsDisabled(self): + self.TestSehExceptions(BINARY_OUTPUT) + + +class CatchCxxExceptionsTest(gtest_test_utils.TestCase): + """Tests C++ exception-catching behavior. + + Tests in this test case verify that: + * C++ exceptions are caught and logged as C++ (not SEH) exceptions + * Exception thrown affect the remainder of the test work flow in the + expected manner. + """ + + def testCatchesCxxExceptionsInFixtureConstructor(self): + self.assert_('C++ exception with description ' + '"Standard C++ exception" thrown ' + 'in the test fixture\'s constructor' + in EX_BINARY_OUTPUT) + self.assert_('unexpected' not in EX_BINARY_OUTPUT, + 'This failure belongs in this test only if ' + '"CxxExceptionInConstructorTest" (no quotes) ' + 'appears on the same line as words "called unexpectedly"') + + if ('CxxExceptionInDestructorTest.ThrowsExceptionInDestructor' in + EX_BINARY_OUTPUT): + + def testCatchesCxxExceptionsInFixtureDestructor(self): + self.assert_('C++ exception with description ' + '"Standard C++ exception" thrown ' + 'in the test fixture\'s destructor' + in EX_BINARY_OUTPUT) + self.assert_('CxxExceptionInDestructorTest::TearDownTestCase() ' + 'called as expected.' + in EX_BINARY_OUTPUT) + + def testCatchesCxxExceptionsInSetUpTestCase(self): + self.assert_('C++ exception with description "Standard C++ exception"' + ' thrown in SetUpTestCase()' + in EX_BINARY_OUTPUT) + self.assert_('CxxExceptionInConstructorTest::TearDownTestCase() ' + 'called as expected.' + in EX_BINARY_OUTPUT) + self.assert_('CxxExceptionInSetUpTestCaseTest constructor ' + 'called as expected.' + in EX_BINARY_OUTPUT) + self.assert_('CxxExceptionInSetUpTestCaseTest destructor ' + 'called as expected.' + in EX_BINARY_OUTPUT) + self.assert_('CxxExceptionInSetUpTestCaseTest::SetUp() ' + 'called as expected.' + in EX_BINARY_OUTPUT) + self.assert_('CxxExceptionInSetUpTestCaseTest::TearDown() ' + 'called as expected.' + in EX_BINARY_OUTPUT) + self.assert_('CxxExceptionInSetUpTestCaseTest test body ' + 'called as expected.' + in EX_BINARY_OUTPUT) + + def testCatchesCxxExceptionsInTearDownTestCase(self): + self.assert_('C++ exception with description "Standard C++ exception"' + ' thrown in TearDownTestCase()' + in EX_BINARY_OUTPUT) + + def testCatchesCxxExceptionsInSetUp(self): + self.assert_('C++ exception with description "Standard C++ exception"' + ' thrown in SetUp()' + in EX_BINARY_OUTPUT) + self.assert_('CxxExceptionInSetUpTest::TearDownTestCase() ' + 'called as expected.' + in EX_BINARY_OUTPUT) + self.assert_('CxxExceptionInSetUpTest destructor ' + 'called as expected.' + in EX_BINARY_OUTPUT) + self.assert_('CxxExceptionInSetUpTest::TearDown() ' + 'called as expected.' + in EX_BINARY_OUTPUT) + self.assert_('unexpected' not in EX_BINARY_OUTPUT, + 'This failure belongs in this test only if ' + '"CxxExceptionInSetUpTest" (no quotes) ' + 'appears on the same line as words "called unexpectedly"') + + def testCatchesCxxExceptionsInTearDown(self): + self.assert_('C++ exception with description "Standard C++ exception"' + ' thrown in TearDown()' + in EX_BINARY_OUTPUT) + self.assert_('CxxExceptionInTearDownTest::TearDownTestCase() ' + 'called as expected.' + in EX_BINARY_OUTPUT) + self.assert_('CxxExceptionInTearDownTest destructor ' + 'called as expected.' + in EX_BINARY_OUTPUT) + + def testCatchesCxxExceptionsInTestBody(self): + self.assert_('C++ exception with description "Standard C++ exception"' + ' thrown in the test body' + in EX_BINARY_OUTPUT) + self.assert_('CxxExceptionInTestBodyTest::TearDownTestCase() ' + 'called as expected.' + in EX_BINARY_OUTPUT) + self.assert_('CxxExceptionInTestBodyTest destructor ' + 'called as expected.' + in EX_BINARY_OUTPUT) + self.assert_('CxxExceptionInTestBodyTest::TearDown() ' + 'called as expected.' + in EX_BINARY_OUTPUT) + + def testCatchesNonStdCxxExceptions(self): + self.assert_('Unknown C++ exception thrown in the test body' + in EX_BINARY_OUTPUT) + + def testUnhandledCxxExceptionsAbortTheProgram(self): + # Filters out SEH exception tests on Windows. Unhandled SEH exceptions + # cause tests to show pop-up windows there. + FITLER_OUT_SEH_TESTS_FLAG = FILTER_FLAG + '=-*Seh*' + # By default, Google Test doesn't catch the exceptions. + uncaught_exceptions_ex_binary_output = gtest_test_utils.Subprocess( + [EX_EXE_PATH, + NO_CATCH_EXCEPTIONS_FLAG, + FITLER_OUT_SEH_TESTS_FLAG]).output + + self.assert_('Unhandled C++ exception terminating the program' + in uncaught_exceptions_ex_binary_output) + self.assert_('unexpected' not in uncaught_exceptions_ex_binary_output) + + +if __name__ == '__main__': + gtest_test_utils.Main() diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_catch_exceptions_test_.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest_catch_exceptions_test_.cc new file mode 100644 index 00000000..d0fc82c9 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_catch_exceptions_test_.cc @@ -0,0 +1,311 @@ +// Copyright 2010, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: vladl@google.com (Vlad Losev) +// +// Tests for Google Test itself. Tests in this file throw C++ or SEH +// exceptions, and the output is verified by gtest_catch_exceptions_test.py. + +#include "gtest/gtest.h" + +#include // NOLINT +#include // For exit(). + +#if GTEST_HAS_SEH +# include +#endif + +#if GTEST_HAS_EXCEPTIONS +# include // For set_terminate(). +# include +#endif + +using testing::Test; + +#if GTEST_HAS_SEH + +class SehExceptionInConstructorTest : public Test { + public: + SehExceptionInConstructorTest() { RaiseException(42, 0, 0, NULL); } +}; + +TEST_F(SehExceptionInConstructorTest, ThrowsExceptionInConstructor) {} + +class SehExceptionInDestructorTest : public Test { + public: + ~SehExceptionInDestructorTest() { RaiseException(42, 0, 0, NULL); } +}; + +TEST_F(SehExceptionInDestructorTest, ThrowsExceptionInDestructor) {} + +class SehExceptionInSetUpTestCaseTest : public Test { + public: + static void SetUpTestCase() { RaiseException(42, 0, 0, NULL); } +}; + +TEST_F(SehExceptionInSetUpTestCaseTest, ThrowsExceptionInSetUpTestCase) {} + +class SehExceptionInTearDownTestCaseTest : public Test { + public: + static void TearDownTestCase() { RaiseException(42, 0, 0, NULL); } +}; + +TEST_F(SehExceptionInTearDownTestCaseTest, ThrowsExceptionInTearDownTestCase) {} + +class SehExceptionInSetUpTest : public Test { + protected: + virtual void SetUp() { RaiseException(42, 0, 0, NULL); } +}; + +TEST_F(SehExceptionInSetUpTest, ThrowsExceptionInSetUp) {} + +class SehExceptionInTearDownTest : public Test { + protected: + virtual void TearDown() { RaiseException(42, 0, 0, NULL); } +}; + +TEST_F(SehExceptionInTearDownTest, ThrowsExceptionInTearDown) {} + +TEST(SehExceptionTest, ThrowsSehException) { + RaiseException(42, 0, 0, NULL); +} + +#endif // GTEST_HAS_SEH + +#if GTEST_HAS_EXCEPTIONS + +class CxxExceptionInConstructorTest : public Test { + public: + CxxExceptionInConstructorTest() { + // Without this macro VC++ complains about unreachable code at the end of + // the constructor. + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_( + throw std::runtime_error("Standard C++ exception")); + } + + static void TearDownTestCase() { + printf("%s", + "CxxExceptionInConstructorTest::TearDownTestCase() " + "called as expected.\n"); + } + + protected: + ~CxxExceptionInConstructorTest() { + ADD_FAILURE() << "CxxExceptionInConstructorTest destructor " + << "called unexpectedly."; + } + + virtual void SetUp() { + ADD_FAILURE() << "CxxExceptionInConstructorTest::SetUp() " + << "called unexpectedly."; + } + + virtual void TearDown() { + ADD_FAILURE() << "CxxExceptionInConstructorTest::TearDown() " + << "called unexpectedly."; + } +}; + +TEST_F(CxxExceptionInConstructorTest, ThrowsExceptionInConstructor) { + ADD_FAILURE() << "CxxExceptionInConstructorTest test body " + << "called unexpectedly."; +} + +// Exceptions in destructors are not supported in C++11. +#if !defined(__GXX_EXPERIMENTAL_CXX0X__) && __cplusplus < 201103L +class CxxExceptionInDestructorTest : public Test { + public: + static void TearDownTestCase() { + printf("%s", + "CxxExceptionInDestructorTest::TearDownTestCase() " + "called as expected.\n"); + } + + protected: + ~CxxExceptionInDestructorTest() { + GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_( + throw std::runtime_error("Standard C++ exception")); + } +}; + +TEST_F(CxxExceptionInDestructorTest, ThrowsExceptionInDestructor) {} +#endif // C++11 mode + +class CxxExceptionInSetUpTestCaseTest : public Test { + public: + CxxExceptionInSetUpTestCaseTest() { + printf("%s", + "CxxExceptionInSetUpTestCaseTest constructor " + "called as expected.\n"); + } + + static void SetUpTestCase() { + throw std::runtime_error("Standard C++ exception"); + } + + static void TearDownTestCase() { + printf("%s", + "CxxExceptionInSetUpTestCaseTest::TearDownTestCase() " + "called as expected.\n"); + } + + protected: + ~CxxExceptionInSetUpTestCaseTest() { + printf("%s", + "CxxExceptionInSetUpTestCaseTest destructor " + "called as expected.\n"); + } + + virtual void SetUp() { + printf("%s", + "CxxExceptionInSetUpTestCaseTest::SetUp() " + "called as expected.\n"); + } + + virtual void TearDown() { + printf("%s", + "CxxExceptionInSetUpTestCaseTest::TearDown() " + "called as expected.\n"); + } +}; + +TEST_F(CxxExceptionInSetUpTestCaseTest, ThrowsExceptionInSetUpTestCase) { + printf("%s", + "CxxExceptionInSetUpTestCaseTest test body " + "called as expected.\n"); +} + +class CxxExceptionInTearDownTestCaseTest : public Test { + public: + static void TearDownTestCase() { + throw std::runtime_error("Standard C++ exception"); + } +}; + +TEST_F(CxxExceptionInTearDownTestCaseTest, ThrowsExceptionInTearDownTestCase) {} + +class CxxExceptionInSetUpTest : public Test { + public: + static void TearDownTestCase() { + printf("%s", + "CxxExceptionInSetUpTest::TearDownTestCase() " + "called as expected.\n"); + } + + protected: + ~CxxExceptionInSetUpTest() { + printf("%s", + "CxxExceptionInSetUpTest destructor " + "called as expected.\n"); + } + + virtual void SetUp() { throw std::runtime_error("Standard C++ exception"); } + + virtual void TearDown() { + printf("%s", + "CxxExceptionInSetUpTest::TearDown() " + "called as expected.\n"); + } +}; + +TEST_F(CxxExceptionInSetUpTest, ThrowsExceptionInSetUp) { + ADD_FAILURE() << "CxxExceptionInSetUpTest test body " + << "called unexpectedly."; +} + +class CxxExceptionInTearDownTest : public Test { + public: + static void TearDownTestCase() { + printf("%s", + "CxxExceptionInTearDownTest::TearDownTestCase() " + "called as expected.\n"); + } + + protected: + ~CxxExceptionInTearDownTest() { + printf("%s", + "CxxExceptionInTearDownTest destructor " + "called as expected.\n"); + } + + virtual void TearDown() { + throw std::runtime_error("Standard C++ exception"); + } +}; + +TEST_F(CxxExceptionInTearDownTest, ThrowsExceptionInTearDown) {} + +class CxxExceptionInTestBodyTest : public Test { + public: + static void TearDownTestCase() { + printf("%s", + "CxxExceptionInTestBodyTest::TearDownTestCase() " + "called as expected.\n"); + } + + protected: + ~CxxExceptionInTestBodyTest() { + printf("%s", + "CxxExceptionInTestBodyTest destructor " + "called as expected.\n"); + } + + virtual void TearDown() { + printf("%s", + "CxxExceptionInTestBodyTest::TearDown() " + "called as expected.\n"); + } +}; + +TEST_F(CxxExceptionInTestBodyTest, ThrowsStdCxxException) { + throw std::runtime_error("Standard C++ exception"); +} + +TEST(CxxExceptionTest, ThrowsNonStdCxxException) { + throw "C-string"; +} + +// This terminate handler aborts the program using exit() rather than abort(). +// This avoids showing pop-ups on Windows systems and core dumps on Unix-like +// ones. +void TerminateHandler() { + fprintf(stderr, "%s\n", "Unhandled C++ exception terminating the program."); + fflush(NULL); + exit(3); +} + +#endif // GTEST_HAS_EXCEPTIONS + +int main(int argc, char** argv) { +#if GTEST_HAS_EXCEPTIONS + std::set_terminate(&TerminateHandler); +#endif + testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_color_test.py b/thirdparty/protobuf-2.6.1/gtest/test/gtest_color_test.py new file mode 100644 index 00000000..d02a53ed --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_color_test.py @@ -0,0 +1,130 @@ +#!/usr/bin/env python +# +# Copyright 2008, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Verifies that Google Test correctly determines whether to use colors.""" + +__author__ = 'wan@google.com (Zhanyong Wan)' + +import os +import gtest_test_utils + + +IS_WINDOWS = os.name = 'nt' + +COLOR_ENV_VAR = 'GTEST_COLOR' +COLOR_FLAG = 'gtest_color' +COMMAND = gtest_test_utils.GetTestExecutablePath('gtest_color_test_') + + +def SetEnvVar(env_var, value): + """Sets the env variable to 'value'; unsets it when 'value' is None.""" + + if value is not None: + os.environ[env_var] = value + elif env_var in os.environ: + del os.environ[env_var] + + +def UsesColor(term, color_env_var, color_flag): + """Runs gtest_color_test_ and returns its exit code.""" + + SetEnvVar('TERM', term) + SetEnvVar(COLOR_ENV_VAR, color_env_var) + + if color_flag is None: + args = [] + else: + args = ['--%s=%s' % (COLOR_FLAG, color_flag)] + p = gtest_test_utils.Subprocess([COMMAND] + args) + return not p.exited or p.exit_code + + +class GTestColorTest(gtest_test_utils.TestCase): + def testNoEnvVarNoFlag(self): + """Tests the case when there's neither GTEST_COLOR nor --gtest_color.""" + + if not IS_WINDOWS: + self.assert_(not UsesColor('dumb', None, None)) + self.assert_(not UsesColor('emacs', None, None)) + self.assert_(not UsesColor('xterm-mono', None, None)) + self.assert_(not UsesColor('unknown', None, None)) + self.assert_(not UsesColor(None, None, None)) + self.assert_(UsesColor('linux', None, None)) + self.assert_(UsesColor('cygwin', None, None)) + self.assert_(UsesColor('xterm', None, None)) + self.assert_(UsesColor('xterm-color', None, None)) + self.assert_(UsesColor('xterm-256color', None, None)) + + def testFlagOnly(self): + """Tests the case when there's --gtest_color but not GTEST_COLOR.""" + + self.assert_(not UsesColor('dumb', None, 'no')) + self.assert_(not UsesColor('xterm-color', None, 'no')) + if not IS_WINDOWS: + self.assert_(not UsesColor('emacs', None, 'auto')) + self.assert_(UsesColor('xterm', None, 'auto')) + self.assert_(UsesColor('dumb', None, 'yes')) + self.assert_(UsesColor('xterm', None, 'yes')) + + def testEnvVarOnly(self): + """Tests the case when there's GTEST_COLOR but not --gtest_color.""" + + self.assert_(not UsesColor('dumb', 'no', None)) + self.assert_(not UsesColor('xterm-color', 'no', None)) + if not IS_WINDOWS: + self.assert_(not UsesColor('dumb', 'auto', None)) + self.assert_(UsesColor('xterm-color', 'auto', None)) + self.assert_(UsesColor('dumb', 'yes', None)) + self.assert_(UsesColor('xterm-color', 'yes', None)) + + def testEnvVarAndFlag(self): + """Tests the case when there are both GTEST_COLOR and --gtest_color.""" + + self.assert_(not UsesColor('xterm-color', 'no', 'no')) + self.assert_(UsesColor('dumb', 'no', 'yes')) + self.assert_(UsesColor('xterm-color', 'no', 'auto')) + + def testAliasesOfYesAndNo(self): + """Tests using aliases in specifying --gtest_color.""" + + self.assert_(UsesColor('dumb', None, 'true')) + self.assert_(UsesColor('dumb', None, 'YES')) + self.assert_(UsesColor('dumb', None, 'T')) + self.assert_(UsesColor('dumb', None, '1')) + + self.assert_(not UsesColor('xterm', None, 'f')) + self.assert_(not UsesColor('xterm', None, 'false')) + self.assert_(not UsesColor('xterm', None, '0')) + self.assert_(not UsesColor('xterm', None, 'unknown')) + + +if __name__ == '__main__': + gtest_test_utils.Main() diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_color_test_.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest_color_test_.cc new file mode 100644 index 00000000..f61ebb89 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_color_test_.cc @@ -0,0 +1,71 @@ +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +// A helper program for testing how Google Test determines whether to use +// colors in the output. It prints "YES" and returns 1 if Google Test +// decides to use colors, and prints "NO" and returns 0 otherwise. + +#include + +#include "gtest/gtest.h" + +// Indicates that this translation unit is part of Google Test's +// implementation. It must come before gtest-internal-inl.h is +// included, or there will be a compiler error. This trick is to +// prevent a user from accidentally including gtest-internal-inl.h in +// his code. +#define GTEST_IMPLEMENTATION_ 1 +#include "src/gtest-internal-inl.h" +#undef GTEST_IMPLEMENTATION_ + +using testing::internal::ShouldUseColor; + +// The purpose of this is to ensure that the UnitTest singleton is +// created before main() is entered, and thus that ShouldUseColor() +// works the same way as in a real Google-Test-based test. We don't actual +// run the TEST itself. +TEST(GTestColorTest, Dummy) { +} + +int main(int argc, char** argv) { + testing::InitGoogleTest(&argc, argv); + + if (ShouldUseColor(true)) { + // Google Test decides to use colors in the output (assuming it + // goes to a TTY). + printf("YES\n"); + return 1; + } else { + // Google Test decides not to use colors in the output. + printf("NO\n"); + return 0; + } +} diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_env_var_test.py b/thirdparty/protobuf-2.6.1/gtest/test/gtest_env_var_test.py new file mode 100644 index 00000000..ac24337f --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_env_var_test.py @@ -0,0 +1,103 @@ +#!/usr/bin/env python +# +# Copyright 2008, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Verifies that Google Test correctly parses environment variables.""" + +__author__ = 'wan@google.com (Zhanyong Wan)' + +import os +import gtest_test_utils + + +IS_WINDOWS = os.name == 'nt' +IS_LINUX = os.name == 'posix' and os.uname()[0] == 'Linux' + +COMMAND = gtest_test_utils.GetTestExecutablePath('gtest_env_var_test_') + +environ = os.environ.copy() + + +def AssertEq(expected, actual): + if expected != actual: + print 'Expected: %s' % (expected,) + print ' Actual: %s' % (actual,) + raise AssertionError + + +def SetEnvVar(env_var, value): + """Sets the env variable to 'value'; unsets it when 'value' is None.""" + + if value is not None: + environ[env_var] = value + elif env_var in environ: + del environ[env_var] + + +def GetFlag(flag): + """Runs gtest_env_var_test_ and returns its output.""" + + args = [COMMAND] + if flag is not None: + args += [flag] + return gtest_test_utils.Subprocess(args, env=environ).output + + +def TestFlag(flag, test_val, default_val): + """Verifies that the given flag is affected by the corresponding env var.""" + + env_var = 'GTEST_' + flag.upper() + SetEnvVar(env_var, test_val) + AssertEq(test_val, GetFlag(flag)) + SetEnvVar(env_var, None) + AssertEq(default_val, GetFlag(flag)) + + +class GTestEnvVarTest(gtest_test_utils.TestCase): + def testEnvVarAffectsFlag(self): + """Tests that environment variable should affect the corresponding flag.""" + + TestFlag('break_on_failure', '1', '0') + TestFlag('color', 'yes', 'auto') + TestFlag('filter', 'FooTest.Bar', '*') + TestFlag('output', 'xml:tmp/foo.xml', '') + TestFlag('print_time', '0', '1') + TestFlag('repeat', '999', '1') + TestFlag('throw_on_failure', '1', '0') + TestFlag('death_test_style', 'threadsafe', 'fast') + TestFlag('catch_exceptions', '0', '1') + + if IS_LINUX: + TestFlag('death_test_use_fork', '1', '0') + TestFlag('stack_trace_depth', '0', '100') + + +if __name__ == '__main__': + gtest_test_utils.Main() diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_env_var_test_.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest_env_var_test_.cc new file mode 100644 index 00000000..539afc96 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_env_var_test_.cc @@ -0,0 +1,126 @@ +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +// A helper program for testing that Google Test parses the environment +// variables correctly. + +#include "gtest/gtest.h" + +#include + +#define GTEST_IMPLEMENTATION_ 1 +#include "src/gtest-internal-inl.h" +#undef GTEST_IMPLEMENTATION_ + +using ::std::cout; + +namespace testing { + +// The purpose of this is to make the test more realistic by ensuring +// that the UnitTest singleton is created before main() is entered. +// We don't actual run the TEST itself. +TEST(GTestEnvVarTest, Dummy) { +} + +void PrintFlag(const char* flag) { + if (strcmp(flag, "break_on_failure") == 0) { + cout << GTEST_FLAG(break_on_failure); + return; + } + + if (strcmp(flag, "catch_exceptions") == 0) { + cout << GTEST_FLAG(catch_exceptions); + return; + } + + if (strcmp(flag, "color") == 0) { + cout << GTEST_FLAG(color); + return; + } + + if (strcmp(flag, "death_test_style") == 0) { + cout << GTEST_FLAG(death_test_style); + return; + } + + if (strcmp(flag, "death_test_use_fork") == 0) { + cout << GTEST_FLAG(death_test_use_fork); + return; + } + + if (strcmp(flag, "filter") == 0) { + cout << GTEST_FLAG(filter); + return; + } + + if (strcmp(flag, "output") == 0) { + cout << GTEST_FLAG(output); + return; + } + + if (strcmp(flag, "print_time") == 0) { + cout << GTEST_FLAG(print_time); + return; + } + + if (strcmp(flag, "repeat") == 0) { + cout << GTEST_FLAG(repeat); + return; + } + + if (strcmp(flag, "stack_trace_depth") == 0) { + cout << GTEST_FLAG(stack_trace_depth); + return; + } + + if (strcmp(flag, "throw_on_failure") == 0) { + cout << GTEST_FLAG(throw_on_failure); + return; + } + + cout << "Invalid flag name " << flag + << ". Valid names are break_on_failure, color, filter, etc.\n"; + exit(1); +} + +} // namespace testing + +int main(int argc, char** argv) { + testing::InitGoogleTest(&argc, argv); + + if (argc != 2) { + cout << "Usage: gtest_env_var_test_ NAME_OF_FLAG\n"; + return 1; + } + + testing::PrintFlag(argv[1]); + return 0; +} diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_environment_test.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest_environment_test.cc new file mode 100644 index 00000000..3cff19e7 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_environment_test.cc @@ -0,0 +1,192 @@ +// Copyright 2007, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) +// +// Tests using global test environments. + +#include +#include +#include "gtest/gtest.h" + +#define GTEST_IMPLEMENTATION_ 1 // Required for the next #include. +#include "src/gtest-internal-inl.h" +#undef GTEST_IMPLEMENTATION_ + +namespace testing { +GTEST_DECLARE_string_(filter); +} + +namespace { + +enum FailureType { + NO_FAILURE, NON_FATAL_FAILURE, FATAL_FAILURE +}; + +// For testing using global test environments. +class MyEnvironment : public testing::Environment { + public: + MyEnvironment() { Reset(); } + + // Depending on the value of failure_in_set_up_, SetUp() will + // generate a non-fatal failure, generate a fatal failure, or + // succeed. + virtual void SetUp() { + set_up_was_run_ = true; + + switch (failure_in_set_up_) { + case NON_FATAL_FAILURE: + ADD_FAILURE() << "Expected non-fatal failure in global set-up."; + break; + case FATAL_FAILURE: + FAIL() << "Expected fatal failure in global set-up."; + break; + default: + break; + } + } + + // Generates a non-fatal failure. + virtual void TearDown() { + tear_down_was_run_ = true; + ADD_FAILURE() << "Expected non-fatal failure in global tear-down."; + } + + // Resets the state of the environment s.t. it can be reused. + void Reset() { + failure_in_set_up_ = NO_FAILURE; + set_up_was_run_ = false; + tear_down_was_run_ = false; + } + + // We call this function to set the type of failure SetUp() should + // generate. + void set_failure_in_set_up(FailureType type) { + failure_in_set_up_ = type; + } + + // Was SetUp() run? + bool set_up_was_run() const { return set_up_was_run_; } + + // Was TearDown() run? + bool tear_down_was_run() const { return tear_down_was_run_; } + + private: + FailureType failure_in_set_up_; + bool set_up_was_run_; + bool tear_down_was_run_; +}; + +// Was the TEST run? +bool test_was_run; + +// The sole purpose of this TEST is to enable us to check whether it +// was run. +TEST(FooTest, Bar) { + test_was_run = true; +} + +// Prints the message and aborts the program if condition is false. +void Check(bool condition, const char* msg) { + if (!condition) { + printf("FAILED: %s\n", msg); + testing::internal::posix::Abort(); + } +} + +// Runs the tests. Return true iff successful. +// +// The 'failure' parameter specifies the type of failure that should +// be generated by the global set-up. +int RunAllTests(MyEnvironment* env, FailureType failure) { + env->Reset(); + env->set_failure_in_set_up(failure); + test_was_run = false; + testing::internal::GetUnitTestImpl()->ClearAdHocTestResult(); + return RUN_ALL_TESTS(); +} + +} // namespace + +int main(int argc, char **argv) { + testing::InitGoogleTest(&argc, argv); + + // Registers a global test environment, and verifies that the + // registration function returns its argument. + MyEnvironment* const env = new MyEnvironment; + Check(testing::AddGlobalTestEnvironment(env) == env, + "AddGlobalTestEnvironment() should return its argument."); + + // Verifies that RUN_ALL_TESTS() runs the tests when the global + // set-up is successful. + Check(RunAllTests(env, NO_FAILURE) != 0, + "RUN_ALL_TESTS() should return non-zero, as the global tear-down " + "should generate a failure."); + Check(test_was_run, + "The tests should run, as the global set-up should generate no " + "failure"); + Check(env->tear_down_was_run(), + "The global tear-down should run, as the global set-up was run."); + + // Verifies that RUN_ALL_TESTS() runs the tests when the global + // set-up generates no fatal failure. + Check(RunAllTests(env, NON_FATAL_FAILURE) != 0, + "RUN_ALL_TESTS() should return non-zero, as both the global set-up " + "and the global tear-down should generate a non-fatal failure."); + Check(test_was_run, + "The tests should run, as the global set-up should generate no " + "fatal failure."); + Check(env->tear_down_was_run(), + "The global tear-down should run, as the global set-up was run."); + + // Verifies that RUN_ALL_TESTS() runs no test when the global set-up + // generates a fatal failure. + Check(RunAllTests(env, FATAL_FAILURE) != 0, + "RUN_ALL_TESTS() should return non-zero, as the global set-up " + "should generate a fatal failure."); + Check(!test_was_run, + "The tests should not run, as the global set-up should generate " + "a fatal failure."); + Check(env->tear_down_was_run(), + "The global tear-down should run, as the global set-up was run."); + + // Verifies that RUN_ALL_TESTS() doesn't do global set-up or + // tear-down when there is no test to run. + testing::GTEST_FLAG(filter) = "-*"; + Check(RunAllTests(env, NO_FAILURE) == 0, + "RUN_ALL_TESTS() should return zero, as there is no test to run."); + Check(!env->set_up_was_run(), + "The global set-up should not run, as there is no test to run."); + Check(!env->tear_down_was_run(), + "The global tear-down should not run, " + "as the global set-up was not run."); + + printf("PASS\n"); + return 0; +} diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_filter_unittest.py b/thirdparty/protobuf-2.6.1/gtest/test/gtest_filter_unittest.py new file mode 100644 index 00000000..0d1a7700 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_filter_unittest.py @@ -0,0 +1,633 @@ +#!/usr/bin/env python +# +# Copyright 2005 Google Inc. All Rights Reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Unit test for Google Test test filters. + +A user can specify which test(s) in a Google Test program to run via either +the GTEST_FILTER environment variable or the --gtest_filter flag. +This script tests such functionality by invoking +gtest_filter_unittest_ (a program written with Google Test) with different +environments and command line flags. + +Note that test sharding may also influence which tests are filtered. Therefore, +we test that here also. +""" + +__author__ = 'wan@google.com (Zhanyong Wan)' + +import os +import re +import sets +import sys + +import gtest_test_utils + +# Constants. + +# Checks if this platform can pass empty environment variables to child +# processes. We set an env variable to an empty string and invoke a python +# script in a subprocess to print whether the variable is STILL in +# os.environ. We then use 'eval' to parse the child's output so that an +# exception is thrown if the input is anything other than 'True' nor 'False'. +os.environ['EMPTY_VAR'] = '' +child = gtest_test_utils.Subprocess( + [sys.executable, '-c', 'import os; print \'EMPTY_VAR\' in os.environ']) +CAN_PASS_EMPTY_ENV = eval(child.output) + + +# Check if this platform can unset environment variables in child processes. +# We set an env variable to a non-empty string, unset it, and invoke +# a python script in a subprocess to print whether the variable +# is NO LONGER in os.environ. +# We use 'eval' to parse the child's output so that an exception +# is thrown if the input is neither 'True' nor 'False'. +os.environ['UNSET_VAR'] = 'X' +del os.environ['UNSET_VAR'] +child = gtest_test_utils.Subprocess( + [sys.executable, '-c', 'import os; print \'UNSET_VAR\' not in os.environ']) +CAN_UNSET_ENV = eval(child.output) + + +# Checks if we should test with an empty filter. This doesn't +# make sense on platforms that cannot pass empty env variables (Win32) +# and on platforms that cannot unset variables (since we cannot tell +# the difference between "" and NULL -- Borland and Solaris < 5.10) +CAN_TEST_EMPTY_FILTER = (CAN_PASS_EMPTY_ENV and CAN_UNSET_ENV) + + +# The environment variable for specifying the test filters. +FILTER_ENV_VAR = 'GTEST_FILTER' + +# The environment variables for test sharding. +TOTAL_SHARDS_ENV_VAR = 'GTEST_TOTAL_SHARDS' +SHARD_INDEX_ENV_VAR = 'GTEST_SHARD_INDEX' +SHARD_STATUS_FILE_ENV_VAR = 'GTEST_SHARD_STATUS_FILE' + +# The command line flag for specifying the test filters. +FILTER_FLAG = 'gtest_filter' + +# The command line flag for including disabled tests. +ALSO_RUN_DISABED_TESTS_FLAG = 'gtest_also_run_disabled_tests' + +# Command to run the gtest_filter_unittest_ program. +COMMAND = gtest_test_utils.GetTestExecutablePath('gtest_filter_unittest_') + +# Regex for determining whether parameterized tests are enabled in the binary. +PARAM_TEST_REGEX = re.compile(r'/ParamTest') + +# Regex for parsing test case names from Google Test's output. +TEST_CASE_REGEX = re.compile(r'^\[\-+\] \d+ tests? from (\w+(/\w+)?)') + +# Regex for parsing test names from Google Test's output. +TEST_REGEX = re.compile(r'^\[\s*RUN\s*\].*\.(\w+(/\w+)?)') + +# The command line flag to tell Google Test to output the list of tests it +# will run. +LIST_TESTS_FLAG = '--gtest_list_tests' + +# Indicates whether Google Test supports death tests. +SUPPORTS_DEATH_TESTS = 'HasDeathTest' in gtest_test_utils.Subprocess( + [COMMAND, LIST_TESTS_FLAG]).output + +# Full names of all tests in gtest_filter_unittests_. +PARAM_TESTS = [ + 'SeqP/ParamTest.TestX/0', + 'SeqP/ParamTest.TestX/1', + 'SeqP/ParamTest.TestY/0', + 'SeqP/ParamTest.TestY/1', + 'SeqQ/ParamTest.TestX/0', + 'SeqQ/ParamTest.TestX/1', + 'SeqQ/ParamTest.TestY/0', + 'SeqQ/ParamTest.TestY/1', + ] + +DISABLED_TESTS = [ + 'BarTest.DISABLED_TestFour', + 'BarTest.DISABLED_TestFive', + 'BazTest.DISABLED_TestC', + 'DISABLED_FoobarTest.Test1', + 'DISABLED_FoobarTest.DISABLED_Test2', + 'DISABLED_FoobarbazTest.TestA', + ] + +if SUPPORTS_DEATH_TESTS: + DEATH_TESTS = [ + 'HasDeathTest.Test1', + 'HasDeathTest.Test2', + ] +else: + DEATH_TESTS = [] + +# All the non-disabled tests. +ACTIVE_TESTS = [ + 'FooTest.Abc', + 'FooTest.Xyz', + + 'BarTest.TestOne', + 'BarTest.TestTwo', + 'BarTest.TestThree', + + 'BazTest.TestOne', + 'BazTest.TestA', + 'BazTest.TestB', + ] + DEATH_TESTS + PARAM_TESTS + +param_tests_present = None + +# Utilities. + +environ = os.environ.copy() + + +def SetEnvVar(env_var, value): + """Sets the env variable to 'value'; unsets it when 'value' is None.""" + + if value is not None: + environ[env_var] = value + elif env_var in environ: + del environ[env_var] + + +def RunAndReturnOutput(args = None): + """Runs the test program and returns its output.""" + + return gtest_test_utils.Subprocess([COMMAND] + (args or []), + env=environ).output + + +def RunAndExtractTestList(args = None): + """Runs the test program and returns its exit code and a list of tests run.""" + + p = gtest_test_utils.Subprocess([COMMAND] + (args or []), env=environ) + tests_run = [] + test_case = '' + test = '' + for line in p.output.split('\n'): + match = TEST_CASE_REGEX.match(line) + if match is not None: + test_case = match.group(1) + else: + match = TEST_REGEX.match(line) + if match is not None: + test = match.group(1) + tests_run.append(test_case + '.' + test) + return (tests_run, p.exit_code) + + +def InvokeWithModifiedEnv(extra_env, function, *args, **kwargs): + """Runs the given function and arguments in a modified environment.""" + try: + original_env = environ.copy() + environ.update(extra_env) + return function(*args, **kwargs) + finally: + environ.clear() + environ.update(original_env) + + +def RunWithSharding(total_shards, shard_index, command): + """Runs a test program shard and returns exit code and a list of tests run.""" + + extra_env = {SHARD_INDEX_ENV_VAR: str(shard_index), + TOTAL_SHARDS_ENV_VAR: str(total_shards)} + return InvokeWithModifiedEnv(extra_env, RunAndExtractTestList, command) + +# The unit test. + + +class GTestFilterUnitTest(gtest_test_utils.TestCase): + """Tests the env variable or the command line flag to filter tests.""" + + # Utilities. + + def AssertSetEqual(self, lhs, rhs): + """Asserts that two sets are equal.""" + + for elem in lhs: + self.assert_(elem in rhs, '%s in %s' % (elem, rhs)) + + for elem in rhs: + self.assert_(elem in lhs, '%s in %s' % (elem, lhs)) + + def AssertPartitionIsValid(self, set_var, list_of_sets): + """Asserts that list_of_sets is a valid partition of set_var.""" + + full_partition = [] + for slice_var in list_of_sets: + full_partition.extend(slice_var) + self.assertEqual(len(set_var), len(full_partition)) + self.assertEqual(sets.Set(set_var), sets.Set(full_partition)) + + def AdjustForParameterizedTests(self, tests_to_run): + """Adjust tests_to_run in case value parameterized tests are disabled.""" + + global param_tests_present + if not param_tests_present: + return list(sets.Set(tests_to_run) - sets.Set(PARAM_TESTS)) + else: + return tests_to_run + + def RunAndVerify(self, gtest_filter, tests_to_run): + """Checks that the binary runs correct set of tests for a given filter.""" + + tests_to_run = self.AdjustForParameterizedTests(tests_to_run) + + # First, tests using the environment variable. + + # Windows removes empty variables from the environment when passing it + # to a new process. This means it is impossible to pass an empty filter + # into a process using the environment variable. However, we can still + # test the case when the variable is not supplied (i.e., gtest_filter is + # None). + # pylint: disable-msg=C6403 + if CAN_TEST_EMPTY_FILTER or gtest_filter != '': + SetEnvVar(FILTER_ENV_VAR, gtest_filter) + tests_run = RunAndExtractTestList()[0] + SetEnvVar(FILTER_ENV_VAR, None) + self.AssertSetEqual(tests_run, tests_to_run) + # pylint: enable-msg=C6403 + + # Next, tests using the command line flag. + + if gtest_filter is None: + args = [] + else: + args = ['--%s=%s' % (FILTER_FLAG, gtest_filter)] + + tests_run = RunAndExtractTestList(args)[0] + self.AssertSetEqual(tests_run, tests_to_run) + + def RunAndVerifyWithSharding(self, gtest_filter, total_shards, tests_to_run, + args=None, check_exit_0=False): + """Checks that binary runs correct tests for the given filter and shard. + + Runs all shards of gtest_filter_unittest_ with the given filter, and + verifies that the right set of tests were run. The union of tests run + on each shard should be identical to tests_to_run, without duplicates. + + Args: + gtest_filter: A filter to apply to the tests. + total_shards: A total number of shards to split test run into. + tests_to_run: A set of tests expected to run. + args : Arguments to pass to the to the test binary. + check_exit_0: When set to a true value, make sure that all shards + return 0. + """ + + tests_to_run = self.AdjustForParameterizedTests(tests_to_run) + + # Windows removes empty variables from the environment when passing it + # to a new process. This means it is impossible to pass an empty filter + # into a process using the environment variable. However, we can still + # test the case when the variable is not supplied (i.e., gtest_filter is + # None). + # pylint: disable-msg=C6403 + if CAN_TEST_EMPTY_FILTER or gtest_filter != '': + SetEnvVar(FILTER_ENV_VAR, gtest_filter) + partition = [] + for i in range(0, total_shards): + (tests_run, exit_code) = RunWithSharding(total_shards, i, args) + if check_exit_0: + self.assertEqual(0, exit_code) + partition.append(tests_run) + + self.AssertPartitionIsValid(tests_to_run, partition) + SetEnvVar(FILTER_ENV_VAR, None) + # pylint: enable-msg=C6403 + + def RunAndVerifyAllowingDisabled(self, gtest_filter, tests_to_run): + """Checks that the binary runs correct set of tests for the given filter. + + Runs gtest_filter_unittest_ with the given filter, and enables + disabled tests. Verifies that the right set of tests were run. + + Args: + gtest_filter: A filter to apply to the tests. + tests_to_run: A set of tests expected to run. + """ + + tests_to_run = self.AdjustForParameterizedTests(tests_to_run) + + # Construct the command line. + args = ['--%s' % ALSO_RUN_DISABED_TESTS_FLAG] + if gtest_filter is not None: + args.append('--%s=%s' % (FILTER_FLAG, gtest_filter)) + + tests_run = RunAndExtractTestList(args)[0] + self.AssertSetEqual(tests_run, tests_to_run) + + def setUp(self): + """Sets up test case. + + Determines whether value-parameterized tests are enabled in the binary and + sets the flags accordingly. + """ + + global param_tests_present + if param_tests_present is None: + param_tests_present = PARAM_TEST_REGEX.search( + RunAndReturnOutput()) is not None + + def testDefaultBehavior(self): + """Tests the behavior of not specifying the filter.""" + + self.RunAndVerify(None, ACTIVE_TESTS) + + def testDefaultBehaviorWithShards(self): + """Tests the behavior without the filter, with sharding enabled.""" + + self.RunAndVerifyWithSharding(None, 1, ACTIVE_TESTS) + self.RunAndVerifyWithSharding(None, 2, ACTIVE_TESTS) + self.RunAndVerifyWithSharding(None, len(ACTIVE_TESTS) - 1, ACTIVE_TESTS) + self.RunAndVerifyWithSharding(None, len(ACTIVE_TESTS), ACTIVE_TESTS) + self.RunAndVerifyWithSharding(None, len(ACTIVE_TESTS) + 1, ACTIVE_TESTS) + + def testEmptyFilter(self): + """Tests an empty filter.""" + + self.RunAndVerify('', []) + self.RunAndVerifyWithSharding('', 1, []) + self.RunAndVerifyWithSharding('', 2, []) + + def testBadFilter(self): + """Tests a filter that matches nothing.""" + + self.RunAndVerify('BadFilter', []) + self.RunAndVerifyAllowingDisabled('BadFilter', []) + + def testFullName(self): + """Tests filtering by full name.""" + + self.RunAndVerify('FooTest.Xyz', ['FooTest.Xyz']) + self.RunAndVerifyAllowingDisabled('FooTest.Xyz', ['FooTest.Xyz']) + self.RunAndVerifyWithSharding('FooTest.Xyz', 5, ['FooTest.Xyz']) + + def testUniversalFilters(self): + """Tests filters that match everything.""" + + self.RunAndVerify('*', ACTIVE_TESTS) + self.RunAndVerify('*.*', ACTIVE_TESTS) + self.RunAndVerifyWithSharding('*.*', len(ACTIVE_TESTS) - 3, ACTIVE_TESTS) + self.RunAndVerifyAllowingDisabled('*', ACTIVE_TESTS + DISABLED_TESTS) + self.RunAndVerifyAllowingDisabled('*.*', ACTIVE_TESTS + DISABLED_TESTS) + + def testFilterByTestCase(self): + """Tests filtering by test case name.""" + + self.RunAndVerify('FooTest.*', ['FooTest.Abc', 'FooTest.Xyz']) + + BAZ_TESTS = ['BazTest.TestOne', 'BazTest.TestA', 'BazTest.TestB'] + self.RunAndVerify('BazTest.*', BAZ_TESTS) + self.RunAndVerifyAllowingDisabled('BazTest.*', + BAZ_TESTS + ['BazTest.DISABLED_TestC']) + + def testFilterByTest(self): + """Tests filtering by test name.""" + + self.RunAndVerify('*.TestOne', ['BarTest.TestOne', 'BazTest.TestOne']) + + def testFilterDisabledTests(self): + """Select only the disabled tests to run.""" + + self.RunAndVerify('DISABLED_FoobarTest.Test1', []) + self.RunAndVerifyAllowingDisabled('DISABLED_FoobarTest.Test1', + ['DISABLED_FoobarTest.Test1']) + + self.RunAndVerify('*DISABLED_*', []) + self.RunAndVerifyAllowingDisabled('*DISABLED_*', DISABLED_TESTS) + + self.RunAndVerify('*.DISABLED_*', []) + self.RunAndVerifyAllowingDisabled('*.DISABLED_*', [ + 'BarTest.DISABLED_TestFour', + 'BarTest.DISABLED_TestFive', + 'BazTest.DISABLED_TestC', + 'DISABLED_FoobarTest.DISABLED_Test2', + ]) + + self.RunAndVerify('DISABLED_*', []) + self.RunAndVerifyAllowingDisabled('DISABLED_*', [ + 'DISABLED_FoobarTest.Test1', + 'DISABLED_FoobarTest.DISABLED_Test2', + 'DISABLED_FoobarbazTest.TestA', + ]) + + def testWildcardInTestCaseName(self): + """Tests using wildcard in the test case name.""" + + self.RunAndVerify('*a*.*', [ + 'BarTest.TestOne', + 'BarTest.TestTwo', + 'BarTest.TestThree', + + 'BazTest.TestOne', + 'BazTest.TestA', + 'BazTest.TestB', ] + DEATH_TESTS + PARAM_TESTS) + + def testWildcardInTestName(self): + """Tests using wildcard in the test name.""" + + self.RunAndVerify('*.*A*', ['FooTest.Abc', 'BazTest.TestA']) + + def testFilterWithoutDot(self): + """Tests a filter that has no '.' in it.""" + + self.RunAndVerify('*z*', [ + 'FooTest.Xyz', + + 'BazTest.TestOne', + 'BazTest.TestA', + 'BazTest.TestB', + ]) + + def testTwoPatterns(self): + """Tests filters that consist of two patterns.""" + + self.RunAndVerify('Foo*.*:*A*', [ + 'FooTest.Abc', + 'FooTest.Xyz', + + 'BazTest.TestA', + ]) + + # An empty pattern + a non-empty one + self.RunAndVerify(':*A*', ['FooTest.Abc', 'BazTest.TestA']) + + def testThreePatterns(self): + """Tests filters that consist of three patterns.""" + + self.RunAndVerify('*oo*:*A*:*One', [ + 'FooTest.Abc', + 'FooTest.Xyz', + + 'BarTest.TestOne', + + 'BazTest.TestOne', + 'BazTest.TestA', + ]) + + # The 2nd pattern is empty. + self.RunAndVerify('*oo*::*One', [ + 'FooTest.Abc', + 'FooTest.Xyz', + + 'BarTest.TestOne', + + 'BazTest.TestOne', + ]) + + # The last 2 patterns are empty. + self.RunAndVerify('*oo*::', [ + 'FooTest.Abc', + 'FooTest.Xyz', + ]) + + def testNegativeFilters(self): + self.RunAndVerify('*-BazTest.TestOne', [ + 'FooTest.Abc', + 'FooTest.Xyz', + + 'BarTest.TestOne', + 'BarTest.TestTwo', + 'BarTest.TestThree', + + 'BazTest.TestA', + 'BazTest.TestB', + ] + DEATH_TESTS + PARAM_TESTS) + + self.RunAndVerify('*-FooTest.Abc:BazTest.*', [ + 'FooTest.Xyz', + + 'BarTest.TestOne', + 'BarTest.TestTwo', + 'BarTest.TestThree', + ] + DEATH_TESTS + PARAM_TESTS) + + self.RunAndVerify('BarTest.*-BarTest.TestOne', [ + 'BarTest.TestTwo', + 'BarTest.TestThree', + ]) + + # Tests without leading '*'. + self.RunAndVerify('-FooTest.Abc:FooTest.Xyz:BazTest.*', [ + 'BarTest.TestOne', + 'BarTest.TestTwo', + 'BarTest.TestThree', + ] + DEATH_TESTS + PARAM_TESTS) + + # Value parameterized tests. + self.RunAndVerify('*/*', PARAM_TESTS) + + # Value parameterized tests filtering by the sequence name. + self.RunAndVerify('SeqP/*', [ + 'SeqP/ParamTest.TestX/0', + 'SeqP/ParamTest.TestX/1', + 'SeqP/ParamTest.TestY/0', + 'SeqP/ParamTest.TestY/1', + ]) + + # Value parameterized tests filtering by the test name. + self.RunAndVerify('*/0', [ + 'SeqP/ParamTest.TestX/0', + 'SeqP/ParamTest.TestY/0', + 'SeqQ/ParamTest.TestX/0', + 'SeqQ/ParamTest.TestY/0', + ]) + + def testFlagOverridesEnvVar(self): + """Tests that the filter flag overrides the filtering env. variable.""" + + SetEnvVar(FILTER_ENV_VAR, 'Foo*') + args = ['--%s=%s' % (FILTER_FLAG, '*One')] + tests_run = RunAndExtractTestList(args)[0] + SetEnvVar(FILTER_ENV_VAR, None) + + self.AssertSetEqual(tests_run, ['BarTest.TestOne', 'BazTest.TestOne']) + + def testShardStatusFileIsCreated(self): + """Tests that the shard file is created if specified in the environment.""" + + shard_status_file = os.path.join(gtest_test_utils.GetTempDir(), + 'shard_status_file') + self.assert_(not os.path.exists(shard_status_file)) + + extra_env = {SHARD_STATUS_FILE_ENV_VAR: shard_status_file} + try: + InvokeWithModifiedEnv(extra_env, RunAndReturnOutput) + finally: + self.assert_(os.path.exists(shard_status_file)) + os.remove(shard_status_file) + + def testShardStatusFileIsCreatedWithListTests(self): + """Tests that the shard file is created with the "list_tests" flag.""" + + shard_status_file = os.path.join(gtest_test_utils.GetTempDir(), + 'shard_status_file2') + self.assert_(not os.path.exists(shard_status_file)) + + extra_env = {SHARD_STATUS_FILE_ENV_VAR: shard_status_file} + try: + output = InvokeWithModifiedEnv(extra_env, + RunAndReturnOutput, + [LIST_TESTS_FLAG]) + finally: + # This assertion ensures that Google Test enumerated the tests as + # opposed to running them. + self.assert_('[==========]' not in output, + 'Unexpected output during test enumeration.\n' + 'Please ensure that LIST_TESTS_FLAG is assigned the\n' + 'correct flag value for listing Google Test tests.') + + self.assert_(os.path.exists(shard_status_file)) + os.remove(shard_status_file) + + if SUPPORTS_DEATH_TESTS: + def testShardingWorksWithDeathTests(self): + """Tests integration with death tests and sharding.""" + + gtest_filter = 'HasDeathTest.*:SeqP/*' + expected_tests = [ + 'HasDeathTest.Test1', + 'HasDeathTest.Test2', + + 'SeqP/ParamTest.TestX/0', + 'SeqP/ParamTest.TestX/1', + 'SeqP/ParamTest.TestY/0', + 'SeqP/ParamTest.TestY/1', + ] + + for flag in ['--gtest_death_test_style=threadsafe', + '--gtest_death_test_style=fast']: + self.RunAndVerifyWithSharding(gtest_filter, 3, expected_tests, + check_exit_0=True, args=[flag]) + self.RunAndVerifyWithSharding(gtest_filter, 5, expected_tests, + check_exit_0=True, args=[flag]) + +if __name__ == '__main__': + gtest_test_utils.Main() diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_filter_unittest_.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest_filter_unittest_.cc new file mode 100644 index 00000000..77deffc3 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_filter_unittest_.cc @@ -0,0 +1,140 @@ +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +// Unit test for Google Test test filters. +// +// A user can specify which test(s) in a Google Test program to run via +// either the GTEST_FILTER environment variable or the --gtest_filter +// flag. This is used for testing such functionality. +// +// The program will be invoked from a Python unit test. Don't run it +// directly. + +#include "gtest/gtest.h" + +namespace { + +// Test case FooTest. + +class FooTest : public testing::Test { +}; + +TEST_F(FooTest, Abc) { +} + +TEST_F(FooTest, Xyz) { + FAIL() << "Expected failure."; +} + +// Test case BarTest. + +TEST(BarTest, TestOne) { +} + +TEST(BarTest, TestTwo) { +} + +TEST(BarTest, TestThree) { +} + +TEST(BarTest, DISABLED_TestFour) { + FAIL() << "Expected failure."; +} + +TEST(BarTest, DISABLED_TestFive) { + FAIL() << "Expected failure."; +} + +// Test case BazTest. + +TEST(BazTest, TestOne) { + FAIL() << "Expected failure."; +} + +TEST(BazTest, TestA) { +} + +TEST(BazTest, TestB) { +} + +TEST(BazTest, DISABLED_TestC) { + FAIL() << "Expected failure."; +} + +// Test case HasDeathTest + +TEST(HasDeathTest, Test1) { + EXPECT_DEATH_IF_SUPPORTED(exit(1), ".*"); +} + +// We need at least two death tests to make sure that the all death tests +// aren't on the first shard. +TEST(HasDeathTest, Test2) { + EXPECT_DEATH_IF_SUPPORTED(exit(1), ".*"); +} + +// Test case FoobarTest + +TEST(DISABLED_FoobarTest, Test1) { + FAIL() << "Expected failure."; +} + +TEST(DISABLED_FoobarTest, DISABLED_Test2) { + FAIL() << "Expected failure."; +} + +// Test case FoobarbazTest + +TEST(DISABLED_FoobarbazTest, TestA) { + FAIL() << "Expected failure."; +} + +#if GTEST_HAS_PARAM_TEST +class ParamTest : public testing::TestWithParam { +}; + +TEST_P(ParamTest, TestX) { +} + +TEST_P(ParamTest, TestY) { +} + +INSTANTIATE_TEST_CASE_P(SeqP, ParamTest, testing::Values(1, 2)); +INSTANTIATE_TEST_CASE_P(SeqQ, ParamTest, testing::Values(5, 6)); +#endif // GTEST_HAS_PARAM_TEST + +} // namespace + +int main(int argc, char **argv) { + ::testing::InitGoogleTest(&argc, argv); + + return RUN_ALL_TESTS(); +} diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_help_test.py b/thirdparty/protobuf-2.6.1/gtest/test/gtest_help_test.py new file mode 100644 index 00000000..093c838d --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_help_test.py @@ -0,0 +1,172 @@ +#!/usr/bin/env python +# +# Copyright 2009, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Tests the --help flag of Google C++ Testing Framework. + +SYNOPSIS + gtest_help_test.py --build_dir=BUILD/DIR + # where BUILD/DIR contains the built gtest_help_test_ file. + gtest_help_test.py +""" + +__author__ = 'wan@google.com (Zhanyong Wan)' + +import os +import re +import gtest_test_utils + + +IS_LINUX = os.name == 'posix' and os.uname()[0] == 'Linux' +IS_WINDOWS = os.name == 'nt' + +PROGRAM_PATH = gtest_test_utils.GetTestExecutablePath('gtest_help_test_') +FLAG_PREFIX = '--gtest_' +DEATH_TEST_STYLE_FLAG = FLAG_PREFIX + 'death_test_style' +STREAM_RESULT_TO_FLAG = FLAG_PREFIX + 'stream_result_to' +UNKNOWN_FLAG = FLAG_PREFIX + 'unknown_flag_for_testing' +LIST_TESTS_FLAG = FLAG_PREFIX + 'list_tests' +INCORRECT_FLAG_VARIANTS = [re.sub('^--', '-', LIST_TESTS_FLAG), + re.sub('^--', '/', LIST_TESTS_FLAG), + re.sub('_', '-', LIST_TESTS_FLAG)] +INTERNAL_FLAG_FOR_TESTING = FLAG_PREFIX + 'internal_flag_for_testing' + +SUPPORTS_DEATH_TESTS = "DeathTest" in gtest_test_utils.Subprocess( + [PROGRAM_PATH, LIST_TESTS_FLAG]).output + +# The help message must match this regex. +HELP_REGEX = re.compile( + FLAG_PREFIX + r'list_tests.*' + + FLAG_PREFIX + r'filter=.*' + + FLAG_PREFIX + r'also_run_disabled_tests.*' + + FLAG_PREFIX + r'repeat=.*' + + FLAG_PREFIX + r'shuffle.*' + + FLAG_PREFIX + r'random_seed=.*' + + FLAG_PREFIX + r'color=.*' + + FLAG_PREFIX + r'print_time.*' + + FLAG_PREFIX + r'output=.*' + + FLAG_PREFIX + r'break_on_failure.*' + + FLAG_PREFIX + r'throw_on_failure.*' + + FLAG_PREFIX + r'catch_exceptions=0.*', + re.DOTALL) + + +def RunWithFlag(flag): + """Runs gtest_help_test_ with the given flag. + + Returns: + the exit code and the text output as a tuple. + Args: + flag: the command-line flag to pass to gtest_help_test_, or None. + """ + + if flag is None: + command = [PROGRAM_PATH] + else: + command = [PROGRAM_PATH, flag] + child = gtest_test_utils.Subprocess(command) + return child.exit_code, child.output + + +class GTestHelpTest(gtest_test_utils.TestCase): + """Tests the --help flag and its equivalent forms.""" + + def TestHelpFlag(self, flag): + """Verifies correct behavior when help flag is specified. + + The right message must be printed and the tests must + skipped when the given flag is specified. + + Args: + flag: A flag to pass to the binary or None. + """ + + exit_code, output = RunWithFlag(flag) + self.assertEquals(0, exit_code) + self.assert_(HELP_REGEX.search(output), output) + + if IS_LINUX: + self.assert_(STREAM_RESULT_TO_FLAG in output, output) + else: + self.assert_(STREAM_RESULT_TO_FLAG not in output, output) + + if SUPPORTS_DEATH_TESTS and not IS_WINDOWS: + self.assert_(DEATH_TEST_STYLE_FLAG in output, output) + else: + self.assert_(DEATH_TEST_STYLE_FLAG not in output, output) + + def TestNonHelpFlag(self, flag): + """Verifies correct behavior when no help flag is specified. + + Verifies that when no help flag is specified, the tests are run + and the help message is not printed. + + Args: + flag: A flag to pass to the binary or None. + """ + + exit_code, output = RunWithFlag(flag) + self.assert_(exit_code != 0) + self.assert_(not HELP_REGEX.search(output), output) + + def testPrintsHelpWithFullFlag(self): + self.TestHelpFlag('--help') + + def testPrintsHelpWithShortFlag(self): + self.TestHelpFlag('-h') + + def testPrintsHelpWithQuestionFlag(self): + self.TestHelpFlag('-?') + + def testPrintsHelpWithWindowsStyleQuestionFlag(self): + self.TestHelpFlag('/?') + + def testPrintsHelpWithUnrecognizedGoogleTestFlag(self): + self.TestHelpFlag(UNKNOWN_FLAG) + + def testPrintsHelpWithIncorrectFlagStyle(self): + for incorrect_flag in INCORRECT_FLAG_VARIANTS: + self.TestHelpFlag(incorrect_flag) + + def testRunsTestsWithoutHelpFlag(self): + """Verifies that when no help flag is specified, the tests are run + and the help message is not printed.""" + + self.TestNonHelpFlag(None) + + def testRunsTestsWithGtestInternalFlag(self): + """Verifies that the tests are run and no help message is printed when + a flag starting with Google Test prefix and 'internal_' is supplied.""" + + self.TestNonHelpFlag(INTERNAL_FLAG_FOR_TESTING) + + +if __name__ == '__main__': + gtest_test_utils.Main() diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_help_test_.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest_help_test_.cc new file mode 100644 index 00000000..31f78c24 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_help_test_.cc @@ -0,0 +1,46 @@ +// Copyright 2009, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +// This program is meant to be run by gtest_help_test.py. Do not run +// it directly. + +#include "gtest/gtest.h" + +// When a help flag is specified, this program should skip the tests +// and exit with 0; otherwise the following test will be executed, +// causing this program to exit with a non-zero code. +TEST(HelpFlagTest, ShouldNotBeRun) { + ASSERT_TRUE(false) << "Tests shouldn't be run when --help is specified."; +} + +#if GTEST_HAS_DEATH_TEST +TEST(DeathTest, UsedByPythonScriptToDetectSupportForDeathTestsInThisBinary) {} +#endif diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_list_tests_unittest.py b/thirdparty/protobuf-2.6.1/gtest/test/gtest_list_tests_unittest.py new file mode 100644 index 00000000..ce8c3ef0 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_list_tests_unittest.py @@ -0,0 +1,177 @@ +#!/usr/bin/env python +# +# Copyright 2006, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Unit test for Google Test's --gtest_list_tests flag. + +A user can ask Google Test to list all tests by specifying the +--gtest_list_tests flag. This script tests such functionality +by invoking gtest_list_tests_unittest_ (a program written with +Google Test) the command line flags. +""" + +__author__ = 'phanna@google.com (Patrick Hanna)' + +import gtest_test_utils + + +# Constants. + +# The command line flag for enabling/disabling listing all tests. +LIST_TESTS_FLAG = 'gtest_list_tests' + +# Path to the gtest_list_tests_unittest_ program. +EXE_PATH = gtest_test_utils.GetTestExecutablePath('gtest_list_tests_unittest_') + +# The expected output when running gtest_list_tests_unittest_ with +# --gtest_list_tests +EXPECTED_OUTPUT_NO_FILTER = """FooDeathTest. + Test1 +Foo. + Bar1 + Bar2 + DISABLED_Bar3 +Abc. + Xyz + Def +FooBar. + Baz +FooTest. + Test1 + DISABLED_Test2 + Test3 +""" + +# The expected output when running gtest_list_tests_unittest_ with +# --gtest_list_tests and --gtest_filter=Foo*. +EXPECTED_OUTPUT_FILTER_FOO = """FooDeathTest. + Test1 +Foo. + Bar1 + Bar2 + DISABLED_Bar3 +FooBar. + Baz +FooTest. + Test1 + DISABLED_Test2 + Test3 +""" + +# Utilities. + + +def Run(args): + """Runs gtest_list_tests_unittest_ and returns the list of tests printed.""" + + return gtest_test_utils.Subprocess([EXE_PATH] + args, + capture_stderr=False).output + + +# The unit test. + +class GTestListTestsUnitTest(gtest_test_utils.TestCase): + """Tests using the --gtest_list_tests flag to list all tests.""" + + def RunAndVerify(self, flag_value, expected_output, other_flag): + """Runs gtest_list_tests_unittest_ and verifies that it prints + the correct tests. + + Args: + flag_value: value of the --gtest_list_tests flag; + None if the flag should not be present. + + expected_output: the expected output after running command; + + other_flag: a different flag to be passed to command + along with gtest_list_tests; + None if the flag should not be present. + """ + + if flag_value is None: + flag = '' + flag_expression = 'not set' + elif flag_value == '0': + flag = '--%s=0' % LIST_TESTS_FLAG + flag_expression = '0' + else: + flag = '--%s' % LIST_TESTS_FLAG + flag_expression = '1' + + args = [flag] + + if other_flag is not None: + args += [other_flag] + + output = Run(args) + + msg = ('when %s is %s, the output of "%s" is "%s".' % + (LIST_TESTS_FLAG, flag_expression, ' '.join(args), output)) + + if expected_output is not None: + self.assert_(output == expected_output, msg) + else: + self.assert_(output != EXPECTED_OUTPUT_NO_FILTER, msg) + + def testDefaultBehavior(self): + """Tests the behavior of the default mode.""" + + self.RunAndVerify(flag_value=None, + expected_output=None, + other_flag=None) + + def testFlag(self): + """Tests using the --gtest_list_tests flag.""" + + self.RunAndVerify(flag_value='0', + expected_output=None, + other_flag=None) + self.RunAndVerify(flag_value='1', + expected_output=EXPECTED_OUTPUT_NO_FILTER, + other_flag=None) + + def testOverrideNonFilterFlags(self): + """Tests that --gtest_list_tests overrides the non-filter flags.""" + + self.RunAndVerify(flag_value='1', + expected_output=EXPECTED_OUTPUT_NO_FILTER, + other_flag='--gtest_break_on_failure') + + def testWithFilterFlags(self): + """Tests that --gtest_list_tests takes into account the + --gtest_filter flag.""" + + self.RunAndVerify(flag_value='1', + expected_output=EXPECTED_OUTPUT_FILTER_FOO, + other_flag='--gtest_filter=Foo*') + + +if __name__ == '__main__': + gtest_test_utils.Main() diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_list_tests_unittest_.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest_list_tests_unittest_.cc new file mode 100644 index 00000000..2b1d0780 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_list_tests_unittest_.cc @@ -0,0 +1,85 @@ +// Copyright 2006, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: phanna@google.com (Patrick Hanna) + +// Unit test for Google Test's --gtest_list_tests flag. +// +// A user can ask Google Test to list all tests that will run +// so that when using a filter, a user will know what +// tests to look for. The tests will not be run after listing. +// +// This program will be invoked from a Python unit test. +// Don't run it directly. + +#include "gtest/gtest.h" + +namespace { + +// Several different test cases and tests that will be listed. +TEST(Foo, Bar1) { +} + +TEST(Foo, Bar2) { +} + +TEST(Foo, DISABLED_Bar3) { +} + +TEST(Abc, Xyz) { +} + +TEST(Abc, Def) { +} + +TEST(FooBar, Baz) { +} + +class FooTest : public testing::Test { +}; + +TEST_F(FooTest, Test1) { +} + +TEST_F(FooTest, DISABLED_Test2) { +} + +TEST_F(FooTest, Test3) { +} + +TEST(FooDeathTest, Test1) { +} + +} // namespace + +int main(int argc, char **argv) { + ::testing::InitGoogleTest(&argc, argv); + + return RUN_ALL_TESTS(); +} diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_main_unittest.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest_main_unittest.cc new file mode 100644 index 00000000..ecd9bb87 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_main_unittest.cc @@ -0,0 +1,45 @@ +// Copyright 2006, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +#include "gtest/gtest.h" + +// Tests that we don't have to define main() when we link to +// gtest_main instead of gtest. + +namespace { + +TEST(GTestMainTest, ShouldSucceed) { +} + +} // namespace + +// We are using the main() function defined in src/gtest_main.cc, so +// we don't define it here. diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_no_test_unittest.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest_no_test_unittest.cc new file mode 100644 index 00000000..292599af --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_no_test_unittest.cc @@ -0,0 +1,56 @@ +// Copyright 2006, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Tests that a Google Test program that has no test defined can run +// successfully. +// +// Author: wan@google.com (Zhanyong Wan) + +#include "gtest/gtest.h" + +int main(int argc, char **argv) { + testing::InitGoogleTest(&argc, argv); + + // An ad-hoc assertion outside of all tests. + // + // This serves three purposes: + // + // 1. It verifies that an ad-hoc assertion can be executed even if + // no test is defined. + // 2. It verifies that a failed ad-hoc assertion causes the test + // program to fail. + // 3. We had a bug where the XML output won't be generated if an + // assertion is executed before RUN_ALL_TESTS() is called, even + // though --gtest_output=xml is specified. This makes sure the + // bug is fixed and doesn't regress. + EXPECT_EQ(1, 2); + + // The above EXPECT_EQ() should cause RUN_ALL_TESTS() to return non-zero. + return RUN_ALL_TESTS() ? 0 : 1; +} diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_output_test.py b/thirdparty/protobuf-2.6.1/gtest/test/gtest_output_test.py new file mode 100644 index 00000000..f409e2a7 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_output_test.py @@ -0,0 +1,335 @@ +#!/usr/bin/env python +# +# Copyright 2008, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Tests the text output of Google C++ Testing Framework. + +SYNOPSIS + gtest_output_test.py --build_dir=BUILD/DIR --gengolden + # where BUILD/DIR contains the built gtest_output_test_ file. + gtest_output_test.py --gengolden + gtest_output_test.py +""" + +__author__ = 'wan@google.com (Zhanyong Wan)' + +import os +import re +import sys +import gtest_test_utils + + +# The flag for generating the golden file +GENGOLDEN_FLAG = '--gengolden' +CATCH_EXCEPTIONS_ENV_VAR_NAME = 'GTEST_CATCH_EXCEPTIONS' + +IS_WINDOWS = os.name == 'nt' + +# TODO(vladl@google.com): remove the _lin suffix. +GOLDEN_NAME = 'gtest_output_test_golden_lin.txt' + +PROGRAM_PATH = gtest_test_utils.GetTestExecutablePath('gtest_output_test_') + +# At least one command we exercise must not have the +# --gtest_internal_skip_environment_and_ad_hoc_tests flag. +COMMAND_LIST_TESTS = ({}, [PROGRAM_PATH, '--gtest_list_tests']) +COMMAND_WITH_COLOR = ({}, [PROGRAM_PATH, '--gtest_color=yes']) +COMMAND_WITH_TIME = ({}, [PROGRAM_PATH, + '--gtest_print_time', + '--gtest_internal_skip_environment_and_ad_hoc_tests', + '--gtest_filter=FatalFailureTest.*:LoggingTest.*']) +COMMAND_WITH_DISABLED = ( + {}, [PROGRAM_PATH, + '--gtest_also_run_disabled_tests', + '--gtest_internal_skip_environment_and_ad_hoc_tests', + '--gtest_filter=*DISABLED_*']) +COMMAND_WITH_SHARDING = ( + {'GTEST_SHARD_INDEX': '1', 'GTEST_TOTAL_SHARDS': '2'}, + [PROGRAM_PATH, + '--gtest_internal_skip_environment_and_ad_hoc_tests', + '--gtest_filter=PassingTest.*']) + +GOLDEN_PATH = os.path.join(gtest_test_utils.GetSourceDir(), GOLDEN_NAME) + + +def ToUnixLineEnding(s): + """Changes all Windows/Mac line endings in s to UNIX line endings.""" + + return s.replace('\r\n', '\n').replace('\r', '\n') + + +def RemoveLocations(test_output): + """Removes all file location info from a Google Test program's output. + + Args: + test_output: the output of a Google Test program. + + Returns: + output with all file location info (in the form of + 'DIRECTORY/FILE_NAME:LINE_NUMBER: 'or + 'DIRECTORY\\FILE_NAME(LINE_NUMBER): ') replaced by + 'FILE_NAME:#: '. + """ + + return re.sub(r'.*[/\\](.+)(\:\d+|\(\d+\))\: ', r'\1:#: ', test_output) + + +def RemoveStackTraceDetails(output): + """Removes all stack traces from a Google Test program's output.""" + + # *? means "find the shortest string that matches". + return re.sub(r'Stack trace:(.|\n)*?\n\n', + 'Stack trace: (omitted)\n\n', output) + + +def RemoveStackTraces(output): + """Removes all traces of stack traces from a Google Test program's output.""" + + # *? means "find the shortest string that matches". + return re.sub(r'Stack trace:(.|\n)*?\n\n', '', output) + + +def RemoveTime(output): + """Removes all time information from a Google Test program's output.""" + + return re.sub(r'\(\d+ ms', '(? ms', output) + + +def RemoveTypeInfoDetails(test_output): + """Removes compiler-specific type info from Google Test program's output. + + Args: + test_output: the output of a Google Test program. + + Returns: + output with type information normalized to canonical form. + """ + + # some compilers output the name of type 'unsigned int' as 'unsigned' + return re.sub(r'unsigned int', 'unsigned', test_output) + + +def NormalizeToCurrentPlatform(test_output): + """Normalizes platform specific output details for easier comparison.""" + + if IS_WINDOWS: + # Removes the color information that is not present on Windows. + test_output = re.sub('\x1b\\[(0;3\d)?m', '', test_output) + # Changes failure message headers into the Windows format. + test_output = re.sub(r': Failure\n', r': error: ', test_output) + # Changes file(line_number) to file:line_number. + test_output = re.sub(r'((\w|\.)+)\((\d+)\):', r'\1:\3:', test_output) + + return test_output + + +def RemoveTestCounts(output): + """Removes test counts from a Google Test program's output.""" + + output = re.sub(r'\d+ tests?, listed below', + '? tests, listed below', output) + output = re.sub(r'\d+ FAILED TESTS', + '? FAILED TESTS', output) + output = re.sub(r'\d+ tests? from \d+ test cases?', + '? tests from ? test cases', output) + output = re.sub(r'\d+ tests? from ([a-zA-Z_])', + r'? tests from \1', output) + return re.sub(r'\d+ tests?\.', '? tests.', output) + + +def RemoveMatchingTests(test_output, pattern): + """Removes output of specified tests from a Google Test program's output. + + This function strips not only the beginning and the end of a test but also + all output in between. + + Args: + test_output: A string containing the test output. + pattern: A regex string that matches names of test cases or + tests to remove. + + Returns: + Contents of test_output with tests whose names match pattern removed. + """ + + test_output = re.sub( + r'.*\[ RUN \] .*%s(.|\n)*?\[( FAILED | OK )\] .*%s.*\n' % ( + pattern, pattern), + '', + test_output) + return re.sub(r'.*%s.*\n' % pattern, '', test_output) + + +def NormalizeOutput(output): + """Normalizes output (the output of gtest_output_test_.exe).""" + + output = ToUnixLineEnding(output) + output = RemoveLocations(output) + output = RemoveStackTraceDetails(output) + output = RemoveTime(output) + return output + + +def GetShellCommandOutput(env_cmd): + """Runs a command in a sub-process, and returns its output in a string. + + Args: + env_cmd: The shell command. A 2-tuple where element 0 is a dict of extra + environment variables to set, and element 1 is a string with + the command and any flags. + + Returns: + A string with the command's combined standard and diagnostic output. + """ + + # Spawns cmd in a sub-process, and gets its standard I/O file objects. + # Set and save the environment properly. + environ = os.environ.copy() + environ.update(env_cmd[0]) + p = gtest_test_utils.Subprocess(env_cmd[1], env=environ) + + return p.output + + +def GetCommandOutput(env_cmd): + """Runs a command and returns its output with all file location + info stripped off. + + Args: + env_cmd: The shell command. A 2-tuple where element 0 is a dict of extra + environment variables to set, and element 1 is a string with + the command and any flags. + """ + + # Disables exception pop-ups on Windows. + environ, cmdline = env_cmd + environ = dict(environ) # Ensures we are modifying a copy. + environ[CATCH_EXCEPTIONS_ENV_VAR_NAME] = '1' + return NormalizeOutput(GetShellCommandOutput((environ, cmdline))) + + +def GetOutputOfAllCommands(): + """Returns concatenated output from several representative commands.""" + + return (GetCommandOutput(COMMAND_WITH_COLOR) + + GetCommandOutput(COMMAND_WITH_TIME) + + GetCommandOutput(COMMAND_WITH_DISABLED) + + GetCommandOutput(COMMAND_WITH_SHARDING)) + + +test_list = GetShellCommandOutput(COMMAND_LIST_TESTS) +SUPPORTS_DEATH_TESTS = 'DeathTest' in test_list +SUPPORTS_TYPED_TESTS = 'TypedTest' in test_list +SUPPORTS_THREADS = 'ExpectFailureWithThreadsTest' in test_list +SUPPORTS_STACK_TRACES = False + +CAN_GENERATE_GOLDEN_FILE = (SUPPORTS_DEATH_TESTS and + SUPPORTS_TYPED_TESTS and + SUPPORTS_THREADS) + + +class GTestOutputTest(gtest_test_utils.TestCase): + def RemoveUnsupportedTests(self, test_output): + if not SUPPORTS_DEATH_TESTS: + test_output = RemoveMatchingTests(test_output, 'DeathTest') + if not SUPPORTS_TYPED_TESTS: + test_output = RemoveMatchingTests(test_output, 'TypedTest') + test_output = RemoveMatchingTests(test_output, 'TypedDeathTest') + test_output = RemoveMatchingTests(test_output, 'TypeParamDeathTest') + if not SUPPORTS_THREADS: + test_output = RemoveMatchingTests(test_output, + 'ExpectFailureWithThreadsTest') + test_output = RemoveMatchingTests(test_output, + 'ScopedFakeTestPartResultReporterTest') + test_output = RemoveMatchingTests(test_output, + 'WorksConcurrently') + if not SUPPORTS_STACK_TRACES: + test_output = RemoveStackTraces(test_output) + + return test_output + + def testOutput(self): + output = GetOutputOfAllCommands() + + golden_file = open(GOLDEN_PATH, 'rb') + # A mis-configured source control system can cause \r appear in EOL + # sequences when we read the golden file irrespective of an operating + # system used. Therefore, we need to strip those \r's from newlines + # unconditionally. + golden = ToUnixLineEnding(golden_file.read()) + golden_file.close() + + # We want the test to pass regardless of certain features being + # supported or not. + + # We still have to remove type name specifics in all cases. + normalized_actual = RemoveTypeInfoDetails(output) + normalized_golden = RemoveTypeInfoDetails(golden) + + if CAN_GENERATE_GOLDEN_FILE: + self.assertEqual(normalized_golden, normalized_actual) + else: + normalized_actual = NormalizeToCurrentPlatform( + RemoveTestCounts(normalized_actual)) + normalized_golden = NormalizeToCurrentPlatform( + RemoveTestCounts(self.RemoveUnsupportedTests(normalized_golden))) + + # This code is very handy when debugging golden file differences: + if os.getenv('DEBUG_GTEST_OUTPUT_TEST'): + open(os.path.join( + gtest_test_utils.GetSourceDir(), + '_gtest_output_test_normalized_actual.txt'), 'wb').write( + normalized_actual) + open(os.path.join( + gtest_test_utils.GetSourceDir(), + '_gtest_output_test_normalized_golden.txt'), 'wb').write( + normalized_golden) + + self.assertEqual(normalized_golden, normalized_actual) + + +if __name__ == '__main__': + if sys.argv[1:] == [GENGOLDEN_FLAG]: + if CAN_GENERATE_GOLDEN_FILE: + output = GetOutputOfAllCommands() + golden_file = open(GOLDEN_PATH, 'wb') + golden_file.write(output) + golden_file.close() + else: + message = ( + """Unable to write a golden file when compiled in an environment +that does not support all the required features (death tests, typed tests, +and multiple threads). Please generate the golden file using a binary built +with those features enabled.""") + + sys.stderr.write(message) + sys.exit(1) + else: + gtest_test_utils.Main() diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_output_test_.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest_output_test_.cc new file mode 100644 index 00000000..07ab633d --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_output_test_.cc @@ -0,0 +1,1034 @@ +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// The purpose of this file is to generate Google Test output under +// various conditions. The output will then be verified by +// gtest_output_test.py to ensure that Google Test generates the +// desired messages. Therefore, most tests in this file are MEANT TO +// FAIL. +// +// Author: wan@google.com (Zhanyong Wan) + +#include "gtest/gtest-spi.h" +#include "gtest/gtest.h" + +// Indicates that this translation unit is part of Google Test's +// implementation. It must come before gtest-internal-inl.h is +// included, or there will be a compiler error. This trick is to +// prevent a user from accidentally including gtest-internal-inl.h in +// his code. +#define GTEST_IMPLEMENTATION_ 1 +#include "src/gtest-internal-inl.h" +#undef GTEST_IMPLEMENTATION_ + +#include + +#if GTEST_IS_THREADSAFE +using testing::ScopedFakeTestPartResultReporter; +using testing::TestPartResultArray; + +using testing::internal::Notification; +using testing::internal::ThreadWithParam; +#endif + +namespace posix = ::testing::internal::posix; +using testing::internal::scoped_ptr; + +// Tests catching fatal failures. + +// A subroutine used by the following test. +void TestEq1(int x) { + ASSERT_EQ(1, x); +} + +// This function calls a test subroutine, catches the fatal failure it +// generates, and then returns early. +void TryTestSubroutine() { + // Calls a subrountine that yields a fatal failure. + TestEq1(2); + + // Catches the fatal failure and aborts the test. + // + // The testing::Test:: prefix is necessary when calling + // HasFatalFailure() outside of a TEST, TEST_F, or test fixture. + if (testing::Test::HasFatalFailure()) return; + + // If we get here, something is wrong. + FAIL() << "This should never be reached."; +} + +TEST(PassingTest, PassingTest1) { +} + +TEST(PassingTest, PassingTest2) { +} + +// Tests that parameters of failing parameterized tests are printed in the +// failing test summary. +class FailingParamTest : public testing::TestWithParam {}; + +TEST_P(FailingParamTest, Fails) { + EXPECT_EQ(1, GetParam()); +} + +// This generates a test which will fail. Google Test is expected to print +// its parameter when it outputs the list of all failed tests. +INSTANTIATE_TEST_CASE_P(PrintingFailingParams, + FailingParamTest, + testing::Values(2)); + +static const char kGoldenString[] = "\"Line\0 1\"\nLine 2"; + +TEST(NonfatalFailureTest, EscapesStringOperands) { + std::string actual = "actual \"string\""; + EXPECT_EQ(kGoldenString, actual); + + const char* golden = kGoldenString; + EXPECT_EQ(golden, actual); +} + +// Tests catching a fatal failure in a subroutine. +TEST(FatalFailureTest, FatalFailureInSubroutine) { + printf("(expecting a failure that x should be 1)\n"); + + TryTestSubroutine(); +} + +// Tests catching a fatal failure in a nested subroutine. +TEST(FatalFailureTest, FatalFailureInNestedSubroutine) { + printf("(expecting a failure that x should be 1)\n"); + + // Calls a subrountine that yields a fatal failure. + TryTestSubroutine(); + + // Catches the fatal failure and aborts the test. + // + // When calling HasFatalFailure() inside a TEST, TEST_F, or test + // fixture, the testing::Test:: prefix is not needed. + if (HasFatalFailure()) return; + + // If we get here, something is wrong. + FAIL() << "This should never be reached."; +} + +// Tests HasFatalFailure() after a failed EXPECT check. +TEST(FatalFailureTest, NonfatalFailureInSubroutine) { + printf("(expecting a failure on false)\n"); + EXPECT_TRUE(false); // Generates a nonfatal failure + ASSERT_FALSE(HasFatalFailure()); // This should succeed. +} + +// Tests interleaving user logging and Google Test assertions. +TEST(LoggingTest, InterleavingLoggingAndAssertions) { + static const int a[4] = { + 3, 9, 2, 6 + }; + + printf("(expecting 2 failures on (3) >= (a[i]))\n"); + for (int i = 0; i < static_cast(sizeof(a)/sizeof(*a)); i++) { + printf("i == %d\n", i); + EXPECT_GE(3, a[i]); + } +} + +// Tests the SCOPED_TRACE macro. + +// A helper function for testing SCOPED_TRACE. +void SubWithoutTrace(int n) { + EXPECT_EQ(1, n); + ASSERT_EQ(2, n); +} + +// Another helper function for testing SCOPED_TRACE. +void SubWithTrace(int n) { + SCOPED_TRACE(testing::Message() << "n = " << n); + + SubWithoutTrace(n); +} + +// Tests that SCOPED_TRACE() obeys lexical scopes. +TEST(SCOPED_TRACETest, ObeysScopes) { + printf("(expected to fail)\n"); + + // There should be no trace before SCOPED_TRACE() is invoked. + ADD_FAILURE() << "This failure is expected, and shouldn't have a trace."; + + { + SCOPED_TRACE("Expected trace"); + // After SCOPED_TRACE(), a failure in the current scope should contain + // the trace. + ADD_FAILURE() << "This failure is expected, and should have a trace."; + } + + // Once the control leaves the scope of the SCOPED_TRACE(), there + // should be no trace again. + ADD_FAILURE() << "This failure is expected, and shouldn't have a trace."; +} + +// Tests that SCOPED_TRACE works inside a loop. +TEST(SCOPED_TRACETest, WorksInLoop) { + printf("(expected to fail)\n"); + + for (int i = 1; i <= 2; i++) { + SCOPED_TRACE(testing::Message() << "i = " << i); + + SubWithoutTrace(i); + } +} + +// Tests that SCOPED_TRACE works in a subroutine. +TEST(SCOPED_TRACETest, WorksInSubroutine) { + printf("(expected to fail)\n"); + + SubWithTrace(1); + SubWithTrace(2); +} + +// Tests that SCOPED_TRACE can be nested. +TEST(SCOPED_TRACETest, CanBeNested) { + printf("(expected to fail)\n"); + + SCOPED_TRACE(""); // A trace without a message. + + SubWithTrace(2); +} + +// Tests that multiple SCOPED_TRACEs can be used in the same scope. +TEST(SCOPED_TRACETest, CanBeRepeated) { + printf("(expected to fail)\n"); + + SCOPED_TRACE("A"); + ADD_FAILURE() + << "This failure is expected, and should contain trace point A."; + + SCOPED_TRACE("B"); + ADD_FAILURE() + << "This failure is expected, and should contain trace point A and B."; + + { + SCOPED_TRACE("C"); + ADD_FAILURE() << "This failure is expected, and should " + << "contain trace point A, B, and C."; + } + + SCOPED_TRACE("D"); + ADD_FAILURE() << "This failure is expected, and should " + << "contain trace point A, B, and D."; +} + +#if GTEST_IS_THREADSAFE +// Tests that SCOPED_TRACE()s can be used concurrently from multiple +// threads. Namely, an assertion should be affected by +// SCOPED_TRACE()s in its own thread only. + +// Here's the sequence of actions that happen in the test: +// +// Thread A (main) | Thread B (spawned) +// ===============================|================================ +// spawns thread B | +// -------------------------------+-------------------------------- +// waits for n1 | SCOPED_TRACE("Trace B"); +// | generates failure #1 +// | notifies n1 +// -------------------------------+-------------------------------- +// SCOPED_TRACE("Trace A"); | waits for n2 +// generates failure #2 | +// notifies n2 | +// -------------------------------|-------------------------------- +// waits for n3 | generates failure #3 +// | trace B dies +// | generates failure #4 +// | notifies n3 +// -------------------------------|-------------------------------- +// generates failure #5 | finishes +// trace A dies | +// generates failure #6 | +// -------------------------------|-------------------------------- +// waits for thread B to finish | + +struct CheckPoints { + Notification n1; + Notification n2; + Notification n3; +}; + +static void ThreadWithScopedTrace(CheckPoints* check_points) { + { + SCOPED_TRACE("Trace B"); + ADD_FAILURE() + << "Expected failure #1 (in thread B, only trace B alive)."; + check_points->n1.Notify(); + check_points->n2.WaitForNotification(); + + ADD_FAILURE() + << "Expected failure #3 (in thread B, trace A & B both alive)."; + } // Trace B dies here. + ADD_FAILURE() + << "Expected failure #4 (in thread B, only trace A alive)."; + check_points->n3.Notify(); +} + +TEST(SCOPED_TRACETest, WorksConcurrently) { + printf("(expecting 6 failures)\n"); + + CheckPoints check_points; + ThreadWithParam thread(&ThreadWithScopedTrace, + &check_points, + NULL); + check_points.n1.WaitForNotification(); + + { + SCOPED_TRACE("Trace A"); + ADD_FAILURE() + << "Expected failure #2 (in thread A, trace A & B both alive)."; + check_points.n2.Notify(); + check_points.n3.WaitForNotification(); + + ADD_FAILURE() + << "Expected failure #5 (in thread A, only trace A alive)."; + } // Trace A dies here. + ADD_FAILURE() + << "Expected failure #6 (in thread A, no trace alive)."; + thread.Join(); +} +#endif // GTEST_IS_THREADSAFE + +TEST(DisabledTestsWarningTest, + DISABLED_AlsoRunDisabledTestsFlagSuppressesWarning) { + // This test body is intentionally empty. Its sole purpose is for + // verifying that the --gtest_also_run_disabled_tests flag + // suppresses the "YOU HAVE 12 DISABLED TESTS" warning at the end of + // the test output. +} + +// Tests using assertions outside of TEST and TEST_F. +// +// This function creates two failures intentionally. +void AdHocTest() { + printf("The non-test part of the code is expected to have 2 failures.\n\n"); + EXPECT_TRUE(false); + EXPECT_EQ(2, 3); +} + +// Runs all TESTs, all TEST_Fs, and the ad hoc test. +int RunAllTests() { + AdHocTest(); + return RUN_ALL_TESTS(); +} + +// Tests non-fatal failures in the fixture constructor. +class NonFatalFailureInFixtureConstructorTest : public testing::Test { + protected: + NonFatalFailureInFixtureConstructorTest() { + printf("(expecting 5 failures)\n"); + ADD_FAILURE() << "Expected failure #1, in the test fixture c'tor."; + } + + ~NonFatalFailureInFixtureConstructorTest() { + ADD_FAILURE() << "Expected failure #5, in the test fixture d'tor."; + } + + virtual void SetUp() { + ADD_FAILURE() << "Expected failure #2, in SetUp()."; + } + + virtual void TearDown() { + ADD_FAILURE() << "Expected failure #4, in TearDown."; + } +}; + +TEST_F(NonFatalFailureInFixtureConstructorTest, FailureInConstructor) { + ADD_FAILURE() << "Expected failure #3, in the test body."; +} + +// Tests fatal failures in the fixture constructor. +class FatalFailureInFixtureConstructorTest : public testing::Test { + protected: + FatalFailureInFixtureConstructorTest() { + printf("(expecting 2 failures)\n"); + Init(); + } + + ~FatalFailureInFixtureConstructorTest() { + ADD_FAILURE() << "Expected failure #2, in the test fixture d'tor."; + } + + virtual void SetUp() { + ADD_FAILURE() << "UNEXPECTED failure in SetUp(). " + << "We should never get here, as the test fixture c'tor " + << "had a fatal failure."; + } + + virtual void TearDown() { + ADD_FAILURE() << "UNEXPECTED failure in TearDown(). " + << "We should never get here, as the test fixture c'tor " + << "had a fatal failure."; + } + + private: + void Init() { + FAIL() << "Expected failure #1, in the test fixture c'tor."; + } +}; + +TEST_F(FatalFailureInFixtureConstructorTest, FailureInConstructor) { + ADD_FAILURE() << "UNEXPECTED failure in the test body. " + << "We should never get here, as the test fixture c'tor " + << "had a fatal failure."; +} + +// Tests non-fatal failures in SetUp(). +class NonFatalFailureInSetUpTest : public testing::Test { + protected: + virtual ~NonFatalFailureInSetUpTest() { + Deinit(); + } + + virtual void SetUp() { + printf("(expecting 4 failures)\n"); + ADD_FAILURE() << "Expected failure #1, in SetUp()."; + } + + virtual void TearDown() { + FAIL() << "Expected failure #3, in TearDown()."; + } + private: + void Deinit() { + FAIL() << "Expected failure #4, in the test fixture d'tor."; + } +}; + +TEST_F(NonFatalFailureInSetUpTest, FailureInSetUp) { + FAIL() << "Expected failure #2, in the test function."; +} + +// Tests fatal failures in SetUp(). +class FatalFailureInSetUpTest : public testing::Test { + protected: + virtual ~FatalFailureInSetUpTest() { + Deinit(); + } + + virtual void SetUp() { + printf("(expecting 3 failures)\n"); + FAIL() << "Expected failure #1, in SetUp()."; + } + + virtual void TearDown() { + FAIL() << "Expected failure #2, in TearDown()."; + } + private: + void Deinit() { + FAIL() << "Expected failure #3, in the test fixture d'tor."; + } +}; + +TEST_F(FatalFailureInSetUpTest, FailureInSetUp) { + FAIL() << "UNEXPECTED failure in the test function. " + << "We should never get here, as SetUp() failed."; +} + +TEST(AddFailureAtTest, MessageContainsSpecifiedFileAndLineNumber) { + ADD_FAILURE_AT("foo.cc", 42) << "Expected failure in foo.cc"; +} + +#if GTEST_IS_THREADSAFE + +// A unary function that may die. +void DieIf(bool should_die) { + GTEST_CHECK_(!should_die) << " - death inside DieIf()."; +} + +// Tests running death tests in a multi-threaded context. + +// Used for coordination between the main and the spawn thread. +struct SpawnThreadNotifications { + SpawnThreadNotifications() {} + + Notification spawn_thread_started; + Notification spawn_thread_ok_to_terminate; + + private: + GTEST_DISALLOW_COPY_AND_ASSIGN_(SpawnThreadNotifications); +}; + +// The function to be executed in the thread spawn by the +// MultipleThreads test (below). +static void ThreadRoutine(SpawnThreadNotifications* notifications) { + // Signals the main thread that this thread has started. + notifications->spawn_thread_started.Notify(); + + // Waits for permission to finish from the main thread. + notifications->spawn_thread_ok_to_terminate.WaitForNotification(); +} + +// This is a death-test test, but it's not named with a DeathTest +// suffix. It starts threads which might interfere with later +// death tests, so it must run after all other death tests. +class DeathTestAndMultiThreadsTest : public testing::Test { + protected: + // Starts a thread and waits for it to begin. + virtual void SetUp() { + thread_.reset(new ThreadWithParam( + &ThreadRoutine, ¬ifications_, NULL)); + notifications_.spawn_thread_started.WaitForNotification(); + } + // Tells the thread to finish, and reaps it. + // Depending on the version of the thread library in use, + // a manager thread might still be left running that will interfere + // with later death tests. This is unfortunate, but this class + // cleans up after itself as best it can. + virtual void TearDown() { + notifications_.spawn_thread_ok_to_terminate.Notify(); + } + + private: + SpawnThreadNotifications notifications_; + scoped_ptr > thread_; +}; + +#endif // GTEST_IS_THREADSAFE + +// The MixedUpTestCaseTest test case verifies that Google Test will fail a +// test if it uses a different fixture class than what other tests in +// the same test case use. It deliberately contains two fixture +// classes with the same name but defined in different namespaces. + +// The MixedUpTestCaseWithSameTestNameTest test case verifies that +// when the user defines two tests with the same test case name AND +// same test name (but in different namespaces), the second test will +// fail. + +namespace foo { + +class MixedUpTestCaseTest : public testing::Test { +}; + +TEST_F(MixedUpTestCaseTest, FirstTestFromNamespaceFoo) {} +TEST_F(MixedUpTestCaseTest, SecondTestFromNamespaceFoo) {} + +class MixedUpTestCaseWithSameTestNameTest : public testing::Test { +}; + +TEST_F(MixedUpTestCaseWithSameTestNameTest, + TheSecondTestWithThisNameShouldFail) {} + +} // namespace foo + +namespace bar { + +class MixedUpTestCaseTest : public testing::Test { +}; + +// The following two tests are expected to fail. We rely on the +// golden file to check that Google Test generates the right error message. +TEST_F(MixedUpTestCaseTest, ThisShouldFail) {} +TEST_F(MixedUpTestCaseTest, ThisShouldFailToo) {} + +class MixedUpTestCaseWithSameTestNameTest : public testing::Test { +}; + +// Expected to fail. We rely on the golden file to check that Google Test +// generates the right error message. +TEST_F(MixedUpTestCaseWithSameTestNameTest, + TheSecondTestWithThisNameShouldFail) {} + +} // namespace bar + +// The following two test cases verify that Google Test catches the user +// error of mixing TEST and TEST_F in the same test case. The first +// test case checks the scenario where TEST_F appears before TEST, and +// the second one checks where TEST appears before TEST_F. + +class TEST_F_before_TEST_in_same_test_case : public testing::Test { +}; + +TEST_F(TEST_F_before_TEST_in_same_test_case, DefinedUsingTEST_F) {} + +// Expected to fail. We rely on the golden file to check that Google Test +// generates the right error message. +TEST(TEST_F_before_TEST_in_same_test_case, DefinedUsingTESTAndShouldFail) {} + +class TEST_before_TEST_F_in_same_test_case : public testing::Test { +}; + +TEST(TEST_before_TEST_F_in_same_test_case, DefinedUsingTEST) {} + +// Expected to fail. We rely on the golden file to check that Google Test +// generates the right error message. +TEST_F(TEST_before_TEST_F_in_same_test_case, DefinedUsingTEST_FAndShouldFail) { +} + +// Used for testing EXPECT_NONFATAL_FAILURE() and EXPECT_FATAL_FAILURE(). +int global_integer = 0; + +// Tests that EXPECT_NONFATAL_FAILURE() can reference global variables. +TEST(ExpectNonfatalFailureTest, CanReferenceGlobalVariables) { + global_integer = 0; + EXPECT_NONFATAL_FAILURE({ + EXPECT_EQ(1, global_integer) << "Expected non-fatal failure."; + }, "Expected non-fatal failure."); +} + +// Tests that EXPECT_NONFATAL_FAILURE() can reference local variables +// (static or not). +TEST(ExpectNonfatalFailureTest, CanReferenceLocalVariables) { + int m = 0; + static int n; + n = 1; + EXPECT_NONFATAL_FAILURE({ + EXPECT_EQ(m, n) << "Expected non-fatal failure."; + }, "Expected non-fatal failure."); +} + +// Tests that EXPECT_NONFATAL_FAILURE() succeeds when there is exactly +// one non-fatal failure and no fatal failure. +TEST(ExpectNonfatalFailureTest, SucceedsWhenThereIsOneNonfatalFailure) { + EXPECT_NONFATAL_FAILURE({ + ADD_FAILURE() << "Expected non-fatal failure."; + }, "Expected non-fatal failure."); +} + +// Tests that EXPECT_NONFATAL_FAILURE() fails when there is no +// non-fatal failure. +TEST(ExpectNonfatalFailureTest, FailsWhenThereIsNoNonfatalFailure) { + printf("(expecting a failure)\n"); + EXPECT_NONFATAL_FAILURE({ + }, ""); +} + +// Tests that EXPECT_NONFATAL_FAILURE() fails when there are two +// non-fatal failures. +TEST(ExpectNonfatalFailureTest, FailsWhenThereAreTwoNonfatalFailures) { + printf("(expecting a failure)\n"); + EXPECT_NONFATAL_FAILURE({ + ADD_FAILURE() << "Expected non-fatal failure 1."; + ADD_FAILURE() << "Expected non-fatal failure 2."; + }, ""); +} + +// Tests that EXPECT_NONFATAL_FAILURE() fails when there is one fatal +// failure. +TEST(ExpectNonfatalFailureTest, FailsWhenThereIsOneFatalFailure) { + printf("(expecting a failure)\n"); + EXPECT_NONFATAL_FAILURE({ + FAIL() << "Expected fatal failure."; + }, ""); +} + +// Tests that EXPECT_NONFATAL_FAILURE() fails when the statement being +// tested returns. +TEST(ExpectNonfatalFailureTest, FailsWhenStatementReturns) { + printf("(expecting a failure)\n"); + EXPECT_NONFATAL_FAILURE({ + return; + }, ""); +} + +#if GTEST_HAS_EXCEPTIONS + +// Tests that EXPECT_NONFATAL_FAILURE() fails when the statement being +// tested throws. +TEST(ExpectNonfatalFailureTest, FailsWhenStatementThrows) { + printf("(expecting a failure)\n"); + try { + EXPECT_NONFATAL_FAILURE({ + throw 0; + }, ""); + } catch(int) { // NOLINT + } +} + +#endif // GTEST_HAS_EXCEPTIONS + +// Tests that EXPECT_FATAL_FAILURE() can reference global variables. +TEST(ExpectFatalFailureTest, CanReferenceGlobalVariables) { + global_integer = 0; + EXPECT_FATAL_FAILURE({ + ASSERT_EQ(1, global_integer) << "Expected fatal failure."; + }, "Expected fatal failure."); +} + +// Tests that EXPECT_FATAL_FAILURE() can reference local static +// variables. +TEST(ExpectFatalFailureTest, CanReferenceLocalStaticVariables) { + static int n; + n = 1; + EXPECT_FATAL_FAILURE({ + ASSERT_EQ(0, n) << "Expected fatal failure."; + }, "Expected fatal failure."); +} + +// Tests that EXPECT_FATAL_FAILURE() succeeds when there is exactly +// one fatal failure and no non-fatal failure. +TEST(ExpectFatalFailureTest, SucceedsWhenThereIsOneFatalFailure) { + EXPECT_FATAL_FAILURE({ + FAIL() << "Expected fatal failure."; + }, "Expected fatal failure."); +} + +// Tests that EXPECT_FATAL_FAILURE() fails when there is no fatal +// failure. +TEST(ExpectFatalFailureTest, FailsWhenThereIsNoFatalFailure) { + printf("(expecting a failure)\n"); + EXPECT_FATAL_FAILURE({ + }, ""); +} + +// A helper for generating a fatal failure. +void FatalFailure() { + FAIL() << "Expected fatal failure."; +} + +// Tests that EXPECT_FATAL_FAILURE() fails when there are two +// fatal failures. +TEST(ExpectFatalFailureTest, FailsWhenThereAreTwoFatalFailures) { + printf("(expecting a failure)\n"); + EXPECT_FATAL_FAILURE({ + FatalFailure(); + FatalFailure(); + }, ""); +} + +// Tests that EXPECT_FATAL_FAILURE() fails when there is one non-fatal +// failure. +TEST(ExpectFatalFailureTest, FailsWhenThereIsOneNonfatalFailure) { + printf("(expecting a failure)\n"); + EXPECT_FATAL_FAILURE({ + ADD_FAILURE() << "Expected non-fatal failure."; + }, ""); +} + +// Tests that EXPECT_FATAL_FAILURE() fails when the statement being +// tested returns. +TEST(ExpectFatalFailureTest, FailsWhenStatementReturns) { + printf("(expecting a failure)\n"); + EXPECT_FATAL_FAILURE({ + return; + }, ""); +} + +#if GTEST_HAS_EXCEPTIONS + +// Tests that EXPECT_FATAL_FAILURE() fails when the statement being +// tested throws. +TEST(ExpectFatalFailureTest, FailsWhenStatementThrows) { + printf("(expecting a failure)\n"); + try { + EXPECT_FATAL_FAILURE({ + throw 0; + }, ""); + } catch(int) { // NOLINT + } +} + +#endif // GTEST_HAS_EXCEPTIONS + +// This #ifdef block tests the output of typed tests. +#if GTEST_HAS_TYPED_TEST + +template +class TypedTest : public testing::Test { +}; + +TYPED_TEST_CASE(TypedTest, testing::Types); + +TYPED_TEST(TypedTest, Success) { + EXPECT_EQ(0, TypeParam()); +} + +TYPED_TEST(TypedTest, Failure) { + EXPECT_EQ(1, TypeParam()) << "Expected failure"; +} + +#endif // GTEST_HAS_TYPED_TEST + +// This #ifdef block tests the output of type-parameterized tests. +#if GTEST_HAS_TYPED_TEST_P + +template +class TypedTestP : public testing::Test { +}; + +TYPED_TEST_CASE_P(TypedTestP); + +TYPED_TEST_P(TypedTestP, Success) { + EXPECT_EQ(0U, TypeParam()); +} + +TYPED_TEST_P(TypedTestP, Failure) { + EXPECT_EQ(1U, TypeParam()) << "Expected failure"; +} + +REGISTER_TYPED_TEST_CASE_P(TypedTestP, Success, Failure); + +typedef testing::Types UnsignedTypes; +INSTANTIATE_TYPED_TEST_CASE_P(Unsigned, TypedTestP, UnsignedTypes); + +#endif // GTEST_HAS_TYPED_TEST_P + +#if GTEST_HAS_DEATH_TEST + +// We rely on the golden file to verify that tests whose test case +// name ends with DeathTest are run first. + +TEST(ADeathTest, ShouldRunFirst) { +} + +# if GTEST_HAS_TYPED_TEST + +// We rely on the golden file to verify that typed tests whose test +// case name ends with DeathTest are run first. + +template +class ATypedDeathTest : public testing::Test { +}; + +typedef testing::Types NumericTypes; +TYPED_TEST_CASE(ATypedDeathTest, NumericTypes); + +TYPED_TEST(ATypedDeathTest, ShouldRunFirst) { +} + +# endif // GTEST_HAS_TYPED_TEST + +# if GTEST_HAS_TYPED_TEST_P + + +// We rely on the golden file to verify that type-parameterized tests +// whose test case name ends with DeathTest are run first. + +template +class ATypeParamDeathTest : public testing::Test { +}; + +TYPED_TEST_CASE_P(ATypeParamDeathTest); + +TYPED_TEST_P(ATypeParamDeathTest, ShouldRunFirst) { +} + +REGISTER_TYPED_TEST_CASE_P(ATypeParamDeathTest, ShouldRunFirst); + +INSTANTIATE_TYPED_TEST_CASE_P(My, ATypeParamDeathTest, NumericTypes); + +# endif // GTEST_HAS_TYPED_TEST_P + +#endif // GTEST_HAS_DEATH_TEST + +// Tests various failure conditions of +// EXPECT_{,NON}FATAL_FAILURE{,_ON_ALL_THREADS}. +class ExpectFailureTest : public testing::Test { + public: // Must be public and not protected due to a bug in g++ 3.4.2. + enum FailureMode { + FATAL_FAILURE, + NONFATAL_FAILURE + }; + static void AddFailure(FailureMode failure) { + if (failure == FATAL_FAILURE) { + FAIL() << "Expected fatal failure."; + } else { + ADD_FAILURE() << "Expected non-fatal failure."; + } + } +}; + +TEST_F(ExpectFailureTest, ExpectFatalFailure) { + // Expected fatal failure, but succeeds. + printf("(expecting 1 failure)\n"); + EXPECT_FATAL_FAILURE(SUCCEED(), "Expected fatal failure."); + // Expected fatal failure, but got a non-fatal failure. + printf("(expecting 1 failure)\n"); + EXPECT_FATAL_FAILURE(AddFailure(NONFATAL_FAILURE), "Expected non-fatal " + "failure."); + // Wrong message. + printf("(expecting 1 failure)\n"); + EXPECT_FATAL_FAILURE(AddFailure(FATAL_FAILURE), "Some other fatal failure " + "expected."); +} + +TEST_F(ExpectFailureTest, ExpectNonFatalFailure) { + // Expected non-fatal failure, but succeeds. + printf("(expecting 1 failure)\n"); + EXPECT_NONFATAL_FAILURE(SUCCEED(), "Expected non-fatal failure."); + // Expected non-fatal failure, but got a fatal failure. + printf("(expecting 1 failure)\n"); + EXPECT_NONFATAL_FAILURE(AddFailure(FATAL_FAILURE), "Expected fatal failure."); + // Wrong message. + printf("(expecting 1 failure)\n"); + EXPECT_NONFATAL_FAILURE(AddFailure(NONFATAL_FAILURE), "Some other non-fatal " + "failure."); +} + +#if GTEST_IS_THREADSAFE + +class ExpectFailureWithThreadsTest : public ExpectFailureTest { + protected: + static void AddFailureInOtherThread(FailureMode failure) { + ThreadWithParam thread(&AddFailure, failure, NULL); + thread.Join(); + } +}; + +TEST_F(ExpectFailureWithThreadsTest, ExpectFatalFailure) { + // We only intercept the current thread. + printf("(expecting 2 failures)\n"); + EXPECT_FATAL_FAILURE(AddFailureInOtherThread(FATAL_FAILURE), + "Expected fatal failure."); +} + +TEST_F(ExpectFailureWithThreadsTest, ExpectNonFatalFailure) { + // We only intercept the current thread. + printf("(expecting 2 failures)\n"); + EXPECT_NONFATAL_FAILURE(AddFailureInOtherThread(NONFATAL_FAILURE), + "Expected non-fatal failure."); +} + +typedef ExpectFailureWithThreadsTest ScopedFakeTestPartResultReporterTest; + +// Tests that the ScopedFakeTestPartResultReporter only catches failures from +// the current thread if it is instantiated with INTERCEPT_ONLY_CURRENT_THREAD. +TEST_F(ScopedFakeTestPartResultReporterTest, InterceptOnlyCurrentThread) { + printf("(expecting 2 failures)\n"); + TestPartResultArray results; + { + ScopedFakeTestPartResultReporter reporter( + ScopedFakeTestPartResultReporter::INTERCEPT_ONLY_CURRENT_THREAD, + &results); + AddFailureInOtherThread(FATAL_FAILURE); + AddFailureInOtherThread(NONFATAL_FAILURE); + } + // The two failures should not have been intercepted. + EXPECT_EQ(0, results.size()) << "This shouldn't fail."; +} + +#endif // GTEST_IS_THREADSAFE + +TEST_F(ExpectFailureTest, ExpectFatalFailureOnAllThreads) { + // Expected fatal failure, but succeeds. + printf("(expecting 1 failure)\n"); + EXPECT_FATAL_FAILURE_ON_ALL_THREADS(SUCCEED(), "Expected fatal failure."); + // Expected fatal failure, but got a non-fatal failure. + printf("(expecting 1 failure)\n"); + EXPECT_FATAL_FAILURE_ON_ALL_THREADS(AddFailure(NONFATAL_FAILURE), + "Expected non-fatal failure."); + // Wrong message. + printf("(expecting 1 failure)\n"); + EXPECT_FATAL_FAILURE_ON_ALL_THREADS(AddFailure(FATAL_FAILURE), + "Some other fatal failure expected."); +} + +TEST_F(ExpectFailureTest, ExpectNonFatalFailureOnAllThreads) { + // Expected non-fatal failure, but succeeds. + printf("(expecting 1 failure)\n"); + EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS(SUCCEED(), "Expected non-fatal " + "failure."); + // Expected non-fatal failure, but got a fatal failure. + printf("(expecting 1 failure)\n"); + EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS(AddFailure(FATAL_FAILURE), + "Expected fatal failure."); + // Wrong message. + printf("(expecting 1 failure)\n"); + EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS(AddFailure(NONFATAL_FAILURE), + "Some other non-fatal failure."); +} + + +// Two test environments for testing testing::AddGlobalTestEnvironment(). + +class FooEnvironment : public testing::Environment { + public: + virtual void SetUp() { + printf("%s", "FooEnvironment::SetUp() called.\n"); + } + + virtual void TearDown() { + printf("%s", "FooEnvironment::TearDown() called.\n"); + FAIL() << "Expected fatal failure."; + } +}; + +class BarEnvironment : public testing::Environment { + public: + virtual void SetUp() { + printf("%s", "BarEnvironment::SetUp() called.\n"); + } + + virtual void TearDown() { + printf("%s", "BarEnvironment::TearDown() called.\n"); + ADD_FAILURE() << "Expected non-fatal failure."; + } +}; + +bool GTEST_FLAG(internal_skip_environment_and_ad_hoc_tests) = false; + +// The main function. +// +// The idea is to use Google Test to run all the tests we have defined (some +// of them are intended to fail), and then compare the test results +// with the "golden" file. +int main(int argc, char **argv) { + testing::GTEST_FLAG(print_time) = false; + + // We just run the tests, knowing some of them are intended to fail. + // We will use a separate Python script to compare the output of + // this program with the golden file. + + // It's hard to test InitGoogleTest() directly, as it has many + // global side effects. The following line serves as a sanity test + // for it. + testing::InitGoogleTest(&argc, argv); + if (argc >= 2 && + (std::string(argv[1]) == + "--gtest_internal_skip_environment_and_ad_hoc_tests")) + GTEST_FLAG(internal_skip_environment_and_ad_hoc_tests) = true; + +#if GTEST_HAS_DEATH_TEST + if (testing::internal::GTEST_FLAG(internal_run_death_test) != "") { + // Skip the usual output capturing if we're running as the child + // process of an threadsafe-style death test. +# if GTEST_OS_WINDOWS + posix::FReopen("nul:", "w", stdout); +# else + posix::FReopen("/dev/null", "w", stdout); +# endif // GTEST_OS_WINDOWS + return RUN_ALL_TESTS(); + } +#endif // GTEST_HAS_DEATH_TEST + + if (GTEST_FLAG(internal_skip_environment_and_ad_hoc_tests)) + return RUN_ALL_TESTS(); + + // Registers two global test environments. + // The golden file verifies that they are set up in the order they + // are registered, and torn down in the reverse order. + testing::AddGlobalTestEnvironment(new FooEnvironment); + testing::AddGlobalTestEnvironment(new BarEnvironment); + + return RunAllTests(); +} diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_output_test_golden_lin.txt b/thirdparty/protobuf-2.6.1/gtest/test/gtest_output_test_golden_lin.txt new file mode 100644 index 00000000..0e26d63d --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_output_test_golden_lin.txt @@ -0,0 +1,725 @@ +The non-test part of the code is expected to have 2 failures. + +gtest_output_test_.cc:#: Failure +Value of: false + Actual: false +Expected: true +gtest_output_test_.cc:#: Failure +Value of: 3 +Expected: 2 +[==========] Running 63 tests from 28 test cases. +[----------] Global test environment set-up. +FooEnvironment::SetUp() called. +BarEnvironment::SetUp() called. +[----------] 1 test from ADeathTest +[ RUN ] ADeathTest.ShouldRunFirst +[ OK ] ADeathTest.ShouldRunFirst +[----------] 1 test from ATypedDeathTest/0, where TypeParam = int +[ RUN ] ATypedDeathTest/0.ShouldRunFirst +[ OK ] ATypedDeathTest/0.ShouldRunFirst +[----------] 1 test from ATypedDeathTest/1, where TypeParam = double +[ RUN ] ATypedDeathTest/1.ShouldRunFirst +[ OK ] ATypedDeathTest/1.ShouldRunFirst +[----------] 1 test from My/ATypeParamDeathTest/0, where TypeParam = int +[ RUN ] My/ATypeParamDeathTest/0.ShouldRunFirst +[ OK ] My/ATypeParamDeathTest/0.ShouldRunFirst +[----------] 1 test from My/ATypeParamDeathTest/1, where TypeParam = double +[ RUN ] My/ATypeParamDeathTest/1.ShouldRunFirst +[ OK ] My/ATypeParamDeathTest/1.ShouldRunFirst +[----------] 2 tests from PassingTest +[ RUN ] PassingTest.PassingTest1 +[ OK ] PassingTest.PassingTest1 +[ RUN ] PassingTest.PassingTest2 +[ OK ] PassingTest.PassingTest2 +[----------] 1 test from NonfatalFailureTest +[ RUN ] NonfatalFailureTest.EscapesStringOperands +gtest_output_test_.cc:#: Failure +Value of: actual + Actual: "actual \"string\"" +Expected: kGoldenString +Which is: "\"Line" +gtest_output_test_.cc:#: Failure +Value of: actual + Actual: "actual \"string\"" +Expected: golden +Which is: "\"Line" +[ FAILED ] NonfatalFailureTest.EscapesStringOperands +[----------] 3 tests from FatalFailureTest +[ RUN ] FatalFailureTest.FatalFailureInSubroutine +(expecting a failure that x should be 1) +gtest_output_test_.cc:#: Failure +Value of: x + Actual: 2 +Expected: 1 +[ FAILED ] FatalFailureTest.FatalFailureInSubroutine +[ RUN ] FatalFailureTest.FatalFailureInNestedSubroutine +(expecting a failure that x should be 1) +gtest_output_test_.cc:#: Failure +Value of: x + Actual: 2 +Expected: 1 +[ FAILED ] FatalFailureTest.FatalFailureInNestedSubroutine +[ RUN ] FatalFailureTest.NonfatalFailureInSubroutine +(expecting a failure on false) +gtest_output_test_.cc:#: Failure +Value of: false + Actual: false +Expected: true +[ FAILED ] FatalFailureTest.NonfatalFailureInSubroutine +[----------] 1 test from LoggingTest +[ RUN ] LoggingTest.InterleavingLoggingAndAssertions +(expecting 2 failures on (3) >= (a[i])) +i == 0 +i == 1 +gtest_output_test_.cc:#: Failure +Expected: (3) >= (a[i]), actual: 3 vs 9 +i == 2 +i == 3 +gtest_output_test_.cc:#: Failure +Expected: (3) >= (a[i]), actual: 3 vs 6 +[ FAILED ] LoggingTest.InterleavingLoggingAndAssertions +[----------] 6 tests from SCOPED_TRACETest +[ RUN ] SCOPED_TRACETest.ObeysScopes +(expected to fail) +gtest_output_test_.cc:#: Failure +Failed +This failure is expected, and shouldn't have a trace. +gtest_output_test_.cc:#: Failure +Failed +This failure is expected, and should have a trace. +Google Test trace: +gtest_output_test_.cc:#: Expected trace +gtest_output_test_.cc:#: Failure +Failed +This failure is expected, and shouldn't have a trace. +[ FAILED ] SCOPED_TRACETest.ObeysScopes +[ RUN ] SCOPED_TRACETest.WorksInLoop +(expected to fail) +gtest_output_test_.cc:#: Failure +Value of: n + Actual: 1 +Expected: 2 +Google Test trace: +gtest_output_test_.cc:#: i = 1 +gtest_output_test_.cc:#: Failure +Value of: n + Actual: 2 +Expected: 1 +Google Test trace: +gtest_output_test_.cc:#: i = 2 +[ FAILED ] SCOPED_TRACETest.WorksInLoop +[ RUN ] SCOPED_TRACETest.WorksInSubroutine +(expected to fail) +gtest_output_test_.cc:#: Failure +Value of: n + Actual: 1 +Expected: 2 +Google Test trace: +gtest_output_test_.cc:#: n = 1 +gtest_output_test_.cc:#: Failure +Value of: n + Actual: 2 +Expected: 1 +Google Test trace: +gtest_output_test_.cc:#: n = 2 +[ FAILED ] SCOPED_TRACETest.WorksInSubroutine +[ RUN ] SCOPED_TRACETest.CanBeNested +(expected to fail) +gtest_output_test_.cc:#: Failure +Value of: n + Actual: 2 +Expected: 1 +Google Test trace: +gtest_output_test_.cc:#: n = 2 +gtest_output_test_.cc:#: +[ FAILED ] SCOPED_TRACETest.CanBeNested +[ RUN ] SCOPED_TRACETest.CanBeRepeated +(expected to fail) +gtest_output_test_.cc:#: Failure +Failed +This failure is expected, and should contain trace point A. +Google Test trace: +gtest_output_test_.cc:#: A +gtest_output_test_.cc:#: Failure +Failed +This failure is expected, and should contain trace point A and B. +Google Test trace: +gtest_output_test_.cc:#: B +gtest_output_test_.cc:#: A +gtest_output_test_.cc:#: Failure +Failed +This failure is expected, and should contain trace point A, B, and C. +Google Test trace: +gtest_output_test_.cc:#: C +gtest_output_test_.cc:#: B +gtest_output_test_.cc:#: A +gtest_output_test_.cc:#: Failure +Failed +This failure is expected, and should contain trace point A, B, and D. +Google Test trace: +gtest_output_test_.cc:#: D +gtest_output_test_.cc:#: B +gtest_output_test_.cc:#: A +[ FAILED ] SCOPED_TRACETest.CanBeRepeated +[ RUN ] SCOPED_TRACETest.WorksConcurrently +(expecting 6 failures) +gtest_output_test_.cc:#: Failure +Failed +Expected failure #1 (in thread B, only trace B alive). +Google Test trace: +gtest_output_test_.cc:#: Trace B +gtest_output_test_.cc:#: Failure +Failed +Expected failure #2 (in thread A, trace A & B both alive). +Google Test trace: +gtest_output_test_.cc:#: Trace A +gtest_output_test_.cc:#: Failure +Failed +Expected failure #3 (in thread B, trace A & B both alive). +Google Test trace: +gtest_output_test_.cc:#: Trace B +gtest_output_test_.cc:#: Failure +Failed +Expected failure #4 (in thread B, only trace A alive). +gtest_output_test_.cc:#: Failure +Failed +Expected failure #5 (in thread A, only trace A alive). +Google Test trace: +gtest_output_test_.cc:#: Trace A +gtest_output_test_.cc:#: Failure +Failed +Expected failure #6 (in thread A, no trace alive). +[ FAILED ] SCOPED_TRACETest.WorksConcurrently +[----------] 1 test from NonFatalFailureInFixtureConstructorTest +[ RUN ] NonFatalFailureInFixtureConstructorTest.FailureInConstructor +(expecting 5 failures) +gtest_output_test_.cc:#: Failure +Failed +Expected failure #1, in the test fixture c'tor. +gtest_output_test_.cc:#: Failure +Failed +Expected failure #2, in SetUp(). +gtest_output_test_.cc:#: Failure +Failed +Expected failure #3, in the test body. +gtest_output_test_.cc:#: Failure +Failed +Expected failure #4, in TearDown. +gtest_output_test_.cc:#: Failure +Failed +Expected failure #5, in the test fixture d'tor. +[ FAILED ] NonFatalFailureInFixtureConstructorTest.FailureInConstructor +[----------] 1 test from FatalFailureInFixtureConstructorTest +[ RUN ] FatalFailureInFixtureConstructorTest.FailureInConstructor +(expecting 2 failures) +gtest_output_test_.cc:#: Failure +Failed +Expected failure #1, in the test fixture c'tor. +gtest_output_test_.cc:#: Failure +Failed +Expected failure #2, in the test fixture d'tor. +[ FAILED ] FatalFailureInFixtureConstructorTest.FailureInConstructor +[----------] 1 test from NonFatalFailureInSetUpTest +[ RUN ] NonFatalFailureInSetUpTest.FailureInSetUp +(expecting 4 failures) +gtest_output_test_.cc:#: Failure +Failed +Expected failure #1, in SetUp(). +gtest_output_test_.cc:#: Failure +Failed +Expected failure #2, in the test function. +gtest_output_test_.cc:#: Failure +Failed +Expected failure #3, in TearDown(). +gtest_output_test_.cc:#: Failure +Failed +Expected failure #4, in the test fixture d'tor. +[ FAILED ] NonFatalFailureInSetUpTest.FailureInSetUp +[----------] 1 test from FatalFailureInSetUpTest +[ RUN ] FatalFailureInSetUpTest.FailureInSetUp +(expecting 3 failures) +gtest_output_test_.cc:#: Failure +Failed +Expected failure #1, in SetUp(). +gtest_output_test_.cc:#: Failure +Failed +Expected failure #2, in TearDown(). +gtest_output_test_.cc:#: Failure +Failed +Expected failure #3, in the test fixture d'tor. +[ FAILED ] FatalFailureInSetUpTest.FailureInSetUp +[----------] 1 test from AddFailureAtTest +[ RUN ] AddFailureAtTest.MessageContainsSpecifiedFileAndLineNumber +foo.cc:42: Failure +Failed +Expected failure in foo.cc +[ FAILED ] AddFailureAtTest.MessageContainsSpecifiedFileAndLineNumber +[----------] 4 tests from MixedUpTestCaseTest +[ RUN ] MixedUpTestCaseTest.FirstTestFromNamespaceFoo +[ OK ] MixedUpTestCaseTest.FirstTestFromNamespaceFoo +[ RUN ] MixedUpTestCaseTest.SecondTestFromNamespaceFoo +[ OK ] MixedUpTestCaseTest.SecondTestFromNamespaceFoo +[ RUN ] MixedUpTestCaseTest.ThisShouldFail +gtest.cc:#: Failure +Failed +All tests in the same test case must use the same test fixture +class. However, in test case MixedUpTestCaseTest, +you defined test FirstTestFromNamespaceFoo and test ThisShouldFail +using two different test fixture classes. This can happen if +the two classes are from different namespaces or translation +units and have the same name. You should probably rename one +of the classes to put the tests into different test cases. +[ FAILED ] MixedUpTestCaseTest.ThisShouldFail +[ RUN ] MixedUpTestCaseTest.ThisShouldFailToo +gtest.cc:#: Failure +Failed +All tests in the same test case must use the same test fixture +class. However, in test case MixedUpTestCaseTest, +you defined test FirstTestFromNamespaceFoo and test ThisShouldFailToo +using two different test fixture classes. This can happen if +the two classes are from different namespaces or translation +units and have the same name. You should probably rename one +of the classes to put the tests into different test cases. +[ FAILED ] MixedUpTestCaseTest.ThisShouldFailToo +[----------] 2 tests from MixedUpTestCaseWithSameTestNameTest +[ RUN ] MixedUpTestCaseWithSameTestNameTest.TheSecondTestWithThisNameShouldFail +[ OK ] MixedUpTestCaseWithSameTestNameTest.TheSecondTestWithThisNameShouldFail +[ RUN ] MixedUpTestCaseWithSameTestNameTest.TheSecondTestWithThisNameShouldFail +gtest.cc:#: Failure +Failed +All tests in the same test case must use the same test fixture +class. However, in test case MixedUpTestCaseWithSameTestNameTest, +you defined test TheSecondTestWithThisNameShouldFail and test TheSecondTestWithThisNameShouldFail +using two different test fixture classes. This can happen if +the two classes are from different namespaces or translation +units and have the same name. You should probably rename one +of the classes to put the tests into different test cases. +[ FAILED ] MixedUpTestCaseWithSameTestNameTest.TheSecondTestWithThisNameShouldFail +[----------] 2 tests from TEST_F_before_TEST_in_same_test_case +[ RUN ] TEST_F_before_TEST_in_same_test_case.DefinedUsingTEST_F +[ OK ] TEST_F_before_TEST_in_same_test_case.DefinedUsingTEST_F +[ RUN ] TEST_F_before_TEST_in_same_test_case.DefinedUsingTESTAndShouldFail +gtest.cc:#: Failure +Failed +All tests in the same test case must use the same test fixture +class, so mixing TEST_F and TEST in the same test case is +illegal. In test case TEST_F_before_TEST_in_same_test_case, +test DefinedUsingTEST_F is defined using TEST_F but +test DefinedUsingTESTAndShouldFail is defined using TEST. You probably +want to change the TEST to TEST_F or move it to another test +case. +[ FAILED ] TEST_F_before_TEST_in_same_test_case.DefinedUsingTESTAndShouldFail +[----------] 2 tests from TEST_before_TEST_F_in_same_test_case +[ RUN ] TEST_before_TEST_F_in_same_test_case.DefinedUsingTEST +[ OK ] TEST_before_TEST_F_in_same_test_case.DefinedUsingTEST +[ RUN ] TEST_before_TEST_F_in_same_test_case.DefinedUsingTEST_FAndShouldFail +gtest.cc:#: Failure +Failed +All tests in the same test case must use the same test fixture +class, so mixing TEST_F and TEST in the same test case is +illegal. In test case TEST_before_TEST_F_in_same_test_case, +test DefinedUsingTEST_FAndShouldFail is defined using TEST_F but +test DefinedUsingTEST is defined using TEST. You probably +want to change the TEST to TEST_F or move it to another test +case. +[ FAILED ] TEST_before_TEST_F_in_same_test_case.DefinedUsingTEST_FAndShouldFail +[----------] 8 tests from ExpectNonfatalFailureTest +[ RUN ] ExpectNonfatalFailureTest.CanReferenceGlobalVariables +[ OK ] ExpectNonfatalFailureTest.CanReferenceGlobalVariables +[ RUN ] ExpectNonfatalFailureTest.CanReferenceLocalVariables +[ OK ] ExpectNonfatalFailureTest.CanReferenceLocalVariables +[ RUN ] ExpectNonfatalFailureTest.SucceedsWhenThereIsOneNonfatalFailure +[ OK ] ExpectNonfatalFailureTest.SucceedsWhenThereIsOneNonfatalFailure +[ RUN ] ExpectNonfatalFailureTest.FailsWhenThereIsNoNonfatalFailure +(expecting a failure) +gtest.cc:#: Failure +Expected: 1 non-fatal failure + Actual: 0 failures +[ FAILED ] ExpectNonfatalFailureTest.FailsWhenThereIsNoNonfatalFailure +[ RUN ] ExpectNonfatalFailureTest.FailsWhenThereAreTwoNonfatalFailures +(expecting a failure) +gtest.cc:#: Failure +Expected: 1 non-fatal failure + Actual: 2 failures +gtest_output_test_.cc:#: Non-fatal failure: +Failed +Expected non-fatal failure 1. + +gtest_output_test_.cc:#: Non-fatal failure: +Failed +Expected non-fatal failure 2. + +[ FAILED ] ExpectNonfatalFailureTest.FailsWhenThereAreTwoNonfatalFailures +[ RUN ] ExpectNonfatalFailureTest.FailsWhenThereIsOneFatalFailure +(expecting a failure) +gtest.cc:#: Failure +Expected: 1 non-fatal failure + Actual: +gtest_output_test_.cc:#: Fatal failure: +Failed +Expected fatal failure. + +[ FAILED ] ExpectNonfatalFailureTest.FailsWhenThereIsOneFatalFailure +[ RUN ] ExpectNonfatalFailureTest.FailsWhenStatementReturns +(expecting a failure) +gtest.cc:#: Failure +Expected: 1 non-fatal failure + Actual: 0 failures +[ FAILED ] ExpectNonfatalFailureTest.FailsWhenStatementReturns +[ RUN ] ExpectNonfatalFailureTest.FailsWhenStatementThrows +(expecting a failure) +gtest.cc:#: Failure +Expected: 1 non-fatal failure + Actual: 0 failures +[ FAILED ] ExpectNonfatalFailureTest.FailsWhenStatementThrows +[----------] 8 tests from ExpectFatalFailureTest +[ RUN ] ExpectFatalFailureTest.CanReferenceGlobalVariables +[ OK ] ExpectFatalFailureTest.CanReferenceGlobalVariables +[ RUN ] ExpectFatalFailureTest.CanReferenceLocalStaticVariables +[ OK ] ExpectFatalFailureTest.CanReferenceLocalStaticVariables +[ RUN ] ExpectFatalFailureTest.SucceedsWhenThereIsOneFatalFailure +[ OK ] ExpectFatalFailureTest.SucceedsWhenThereIsOneFatalFailure +[ RUN ] ExpectFatalFailureTest.FailsWhenThereIsNoFatalFailure +(expecting a failure) +gtest.cc:#: Failure +Expected: 1 fatal failure + Actual: 0 failures +[ FAILED ] ExpectFatalFailureTest.FailsWhenThereIsNoFatalFailure +[ RUN ] ExpectFatalFailureTest.FailsWhenThereAreTwoFatalFailures +(expecting a failure) +gtest.cc:#: Failure +Expected: 1 fatal failure + Actual: 2 failures +gtest_output_test_.cc:#: Fatal failure: +Failed +Expected fatal failure. + +gtest_output_test_.cc:#: Fatal failure: +Failed +Expected fatal failure. + +[ FAILED ] ExpectFatalFailureTest.FailsWhenThereAreTwoFatalFailures +[ RUN ] ExpectFatalFailureTest.FailsWhenThereIsOneNonfatalFailure +(expecting a failure) +gtest.cc:#: Failure +Expected: 1 fatal failure + Actual: +gtest_output_test_.cc:#: Non-fatal failure: +Failed +Expected non-fatal failure. + +[ FAILED ] ExpectFatalFailureTest.FailsWhenThereIsOneNonfatalFailure +[ RUN ] ExpectFatalFailureTest.FailsWhenStatementReturns +(expecting a failure) +gtest.cc:#: Failure +Expected: 1 fatal failure + Actual: 0 failures +[ FAILED ] ExpectFatalFailureTest.FailsWhenStatementReturns +[ RUN ] ExpectFatalFailureTest.FailsWhenStatementThrows +(expecting a failure) +gtest.cc:#: Failure +Expected: 1 fatal failure + Actual: 0 failures +[ FAILED ] ExpectFatalFailureTest.FailsWhenStatementThrows +[----------] 2 tests from TypedTest/0, where TypeParam = int +[ RUN ] TypedTest/0.Success +[ OK ] TypedTest/0.Success +[ RUN ] TypedTest/0.Failure +gtest_output_test_.cc:#: Failure +Value of: TypeParam() + Actual: 0 +Expected: 1 +Expected failure +[ FAILED ] TypedTest/0.Failure, where TypeParam = int +[----------] 2 tests from Unsigned/TypedTestP/0, where TypeParam = unsigned char +[ RUN ] Unsigned/TypedTestP/0.Success +[ OK ] Unsigned/TypedTestP/0.Success +[ RUN ] Unsigned/TypedTestP/0.Failure +gtest_output_test_.cc:#: Failure +Value of: TypeParam() + Actual: '\0' +Expected: 1U +Which is: 1 +Expected failure +[ FAILED ] Unsigned/TypedTestP/0.Failure, where TypeParam = unsigned char +[----------] 2 tests from Unsigned/TypedTestP/1, where TypeParam = unsigned int +[ RUN ] Unsigned/TypedTestP/1.Success +[ OK ] Unsigned/TypedTestP/1.Success +[ RUN ] Unsigned/TypedTestP/1.Failure +gtest_output_test_.cc:#: Failure +Value of: TypeParam() + Actual: 0 +Expected: 1U +Which is: 1 +Expected failure +[ FAILED ] Unsigned/TypedTestP/1.Failure, where TypeParam = unsigned int +[----------] 4 tests from ExpectFailureTest +[ RUN ] ExpectFailureTest.ExpectFatalFailure +(expecting 1 failure) +gtest.cc:#: Failure +Expected: 1 fatal failure + Actual: +gtest_output_test_.cc:#: Success: +Succeeded + +(expecting 1 failure) +gtest.cc:#: Failure +Expected: 1 fatal failure + Actual: +gtest_output_test_.cc:#: Non-fatal failure: +Failed +Expected non-fatal failure. + +(expecting 1 failure) +gtest.cc:#: Failure +Expected: 1 fatal failure containing "Some other fatal failure expected." + Actual: +gtest_output_test_.cc:#: Fatal failure: +Failed +Expected fatal failure. + +[ FAILED ] ExpectFailureTest.ExpectFatalFailure +[ RUN ] ExpectFailureTest.ExpectNonFatalFailure +(expecting 1 failure) +gtest.cc:#: Failure +Expected: 1 non-fatal failure + Actual: +gtest_output_test_.cc:#: Success: +Succeeded + +(expecting 1 failure) +gtest.cc:#: Failure +Expected: 1 non-fatal failure + Actual: +gtest_output_test_.cc:#: Fatal failure: +Failed +Expected fatal failure. + +(expecting 1 failure) +gtest.cc:#: Failure +Expected: 1 non-fatal failure containing "Some other non-fatal failure." + Actual: +gtest_output_test_.cc:#: Non-fatal failure: +Failed +Expected non-fatal failure. + +[ FAILED ] ExpectFailureTest.ExpectNonFatalFailure +[ RUN ] ExpectFailureTest.ExpectFatalFailureOnAllThreads +(expecting 1 failure) +gtest.cc:#: Failure +Expected: 1 fatal failure + Actual: +gtest_output_test_.cc:#: Success: +Succeeded + +(expecting 1 failure) +gtest.cc:#: Failure +Expected: 1 fatal failure + Actual: +gtest_output_test_.cc:#: Non-fatal failure: +Failed +Expected non-fatal failure. + +(expecting 1 failure) +gtest.cc:#: Failure +Expected: 1 fatal failure containing "Some other fatal failure expected." + Actual: +gtest_output_test_.cc:#: Fatal failure: +Failed +Expected fatal failure. + +[ FAILED ] ExpectFailureTest.ExpectFatalFailureOnAllThreads +[ RUN ] ExpectFailureTest.ExpectNonFatalFailureOnAllThreads +(expecting 1 failure) +gtest.cc:#: Failure +Expected: 1 non-fatal failure + Actual: +gtest_output_test_.cc:#: Success: +Succeeded + +(expecting 1 failure) +gtest.cc:#: Failure +Expected: 1 non-fatal failure + Actual: +gtest_output_test_.cc:#: Fatal failure: +Failed +Expected fatal failure. + +(expecting 1 failure) +gtest.cc:#: Failure +Expected: 1 non-fatal failure containing "Some other non-fatal failure." + Actual: +gtest_output_test_.cc:#: Non-fatal failure: +Failed +Expected non-fatal failure. + +[ FAILED ] ExpectFailureTest.ExpectNonFatalFailureOnAllThreads +[----------] 2 tests from ExpectFailureWithThreadsTest +[ RUN ] ExpectFailureWithThreadsTest.ExpectFatalFailure +(expecting 2 failures) +gtest_output_test_.cc:#: Failure +Failed +Expected fatal failure. +gtest.cc:#: Failure +Expected: 1 fatal failure + Actual: 0 failures +[ FAILED ] ExpectFailureWithThreadsTest.ExpectFatalFailure +[ RUN ] ExpectFailureWithThreadsTest.ExpectNonFatalFailure +(expecting 2 failures) +gtest_output_test_.cc:#: Failure +Failed +Expected non-fatal failure. +gtest.cc:#: Failure +Expected: 1 non-fatal failure + Actual: 0 failures +[ FAILED ] ExpectFailureWithThreadsTest.ExpectNonFatalFailure +[----------] 1 test from ScopedFakeTestPartResultReporterTest +[ RUN ] ScopedFakeTestPartResultReporterTest.InterceptOnlyCurrentThread +(expecting 2 failures) +gtest_output_test_.cc:#: Failure +Failed +Expected fatal failure. +gtest_output_test_.cc:#: Failure +Failed +Expected non-fatal failure. +[ FAILED ] ScopedFakeTestPartResultReporterTest.InterceptOnlyCurrentThread +[----------] 1 test from PrintingFailingParams/FailingParamTest +[ RUN ] PrintingFailingParams/FailingParamTest.Fails/0 +gtest_output_test_.cc:#: Failure +Value of: GetParam() + Actual: 2 +Expected: 1 +[ FAILED ] PrintingFailingParams/FailingParamTest.Fails/0, where GetParam() = 2 +[----------] Global test environment tear-down +BarEnvironment::TearDown() called. +gtest_output_test_.cc:#: Failure +Failed +Expected non-fatal failure. +FooEnvironment::TearDown() called. +gtest_output_test_.cc:#: Failure +Failed +Expected fatal failure. +[==========] 63 tests from 28 test cases ran. +[ PASSED ] 21 tests. +[ FAILED ] 42 tests, listed below: +[ FAILED ] NonfatalFailureTest.EscapesStringOperands +[ FAILED ] FatalFailureTest.FatalFailureInSubroutine +[ FAILED ] FatalFailureTest.FatalFailureInNestedSubroutine +[ FAILED ] FatalFailureTest.NonfatalFailureInSubroutine +[ FAILED ] LoggingTest.InterleavingLoggingAndAssertions +[ FAILED ] SCOPED_TRACETest.ObeysScopes +[ FAILED ] SCOPED_TRACETest.WorksInLoop +[ FAILED ] SCOPED_TRACETest.WorksInSubroutine +[ FAILED ] SCOPED_TRACETest.CanBeNested +[ FAILED ] SCOPED_TRACETest.CanBeRepeated +[ FAILED ] SCOPED_TRACETest.WorksConcurrently +[ FAILED ] NonFatalFailureInFixtureConstructorTest.FailureInConstructor +[ FAILED ] FatalFailureInFixtureConstructorTest.FailureInConstructor +[ FAILED ] NonFatalFailureInSetUpTest.FailureInSetUp +[ FAILED ] FatalFailureInSetUpTest.FailureInSetUp +[ FAILED ] AddFailureAtTest.MessageContainsSpecifiedFileAndLineNumber +[ FAILED ] MixedUpTestCaseTest.ThisShouldFail +[ FAILED ] MixedUpTestCaseTest.ThisShouldFailToo +[ FAILED ] MixedUpTestCaseWithSameTestNameTest.TheSecondTestWithThisNameShouldFail +[ FAILED ] TEST_F_before_TEST_in_same_test_case.DefinedUsingTESTAndShouldFail +[ FAILED ] TEST_before_TEST_F_in_same_test_case.DefinedUsingTEST_FAndShouldFail +[ FAILED ] ExpectNonfatalFailureTest.FailsWhenThereIsNoNonfatalFailure +[ FAILED ] ExpectNonfatalFailureTest.FailsWhenThereAreTwoNonfatalFailures +[ FAILED ] ExpectNonfatalFailureTest.FailsWhenThereIsOneFatalFailure +[ FAILED ] ExpectNonfatalFailureTest.FailsWhenStatementReturns +[ FAILED ] ExpectNonfatalFailureTest.FailsWhenStatementThrows +[ FAILED ] ExpectFatalFailureTest.FailsWhenThereIsNoFatalFailure +[ FAILED ] ExpectFatalFailureTest.FailsWhenThereAreTwoFatalFailures +[ FAILED ] ExpectFatalFailureTest.FailsWhenThereIsOneNonfatalFailure +[ FAILED ] ExpectFatalFailureTest.FailsWhenStatementReturns +[ FAILED ] ExpectFatalFailureTest.FailsWhenStatementThrows +[ FAILED ] TypedTest/0.Failure, where TypeParam = int +[ FAILED ] Unsigned/TypedTestP/0.Failure, where TypeParam = unsigned char +[ FAILED ] Unsigned/TypedTestP/1.Failure, where TypeParam = unsigned int +[ FAILED ] ExpectFailureTest.ExpectFatalFailure +[ FAILED ] ExpectFailureTest.ExpectNonFatalFailure +[ FAILED ] ExpectFailureTest.ExpectFatalFailureOnAllThreads +[ FAILED ] ExpectFailureTest.ExpectNonFatalFailureOnAllThreads +[ FAILED ] ExpectFailureWithThreadsTest.ExpectFatalFailure +[ FAILED ] ExpectFailureWithThreadsTest.ExpectNonFatalFailure +[ FAILED ] ScopedFakeTestPartResultReporterTest.InterceptOnlyCurrentThread +[ FAILED ] PrintingFailingParams/FailingParamTest.Fails/0, where GetParam() = 2 + +42 FAILED TESTS + YOU HAVE 1 DISABLED TEST + +Note: Google Test filter = FatalFailureTest.*:LoggingTest.* +[==========] Running 4 tests from 2 test cases. +[----------] Global test environment set-up. +[----------] 3 tests from FatalFailureTest +[ RUN ] FatalFailureTest.FatalFailureInSubroutine +(expecting a failure that x should be 1) +gtest_output_test_.cc:#: Failure +Value of: x + Actual: 2 +Expected: 1 +[ FAILED ] FatalFailureTest.FatalFailureInSubroutine (? ms) +[ RUN ] FatalFailureTest.FatalFailureInNestedSubroutine +(expecting a failure that x should be 1) +gtest_output_test_.cc:#: Failure +Value of: x + Actual: 2 +Expected: 1 +[ FAILED ] FatalFailureTest.FatalFailureInNestedSubroutine (? ms) +[ RUN ] FatalFailureTest.NonfatalFailureInSubroutine +(expecting a failure on false) +gtest_output_test_.cc:#: Failure +Value of: false + Actual: false +Expected: true +[ FAILED ] FatalFailureTest.NonfatalFailureInSubroutine (? ms) +[----------] 3 tests from FatalFailureTest (? ms total) + +[----------] 1 test from LoggingTest +[ RUN ] LoggingTest.InterleavingLoggingAndAssertions +(expecting 2 failures on (3) >= (a[i])) +i == 0 +i == 1 +gtest_output_test_.cc:#: Failure +Expected: (3) >= (a[i]), actual: 3 vs 9 +i == 2 +i == 3 +gtest_output_test_.cc:#: Failure +Expected: (3) >= (a[i]), actual: 3 vs 6 +[ FAILED ] LoggingTest.InterleavingLoggingAndAssertions (? ms) +[----------] 1 test from LoggingTest (? ms total) + +[----------] Global test environment tear-down +[==========] 4 tests from 2 test cases ran. (? ms total) +[ PASSED ] 0 tests. +[ FAILED ] 4 tests, listed below: +[ FAILED ] FatalFailureTest.FatalFailureInSubroutine +[ FAILED ] FatalFailureTest.FatalFailureInNestedSubroutine +[ FAILED ] FatalFailureTest.NonfatalFailureInSubroutine +[ FAILED ] LoggingTest.InterleavingLoggingAndAssertions + + 4 FAILED TESTS + YOU HAVE 1 DISABLED TEST + +Note: Google Test filter = *DISABLED_* +[==========] Running 1 test from 1 test case. +[----------] Global test environment set-up. +[----------] 1 test from DisabledTestsWarningTest +[ RUN ] DisabledTestsWarningTest.DISABLED_AlsoRunDisabledTestsFlagSuppressesWarning +[ OK ] DisabledTestsWarningTest.DISABLED_AlsoRunDisabledTestsFlagSuppressesWarning +[----------] Global test environment tear-down +[==========] 1 test from 1 test case ran. +[ PASSED ] 1 test. +Note: Google Test filter = PassingTest.* +Note: This is test shard 2 of 2. +[==========] Running 1 test from 1 test case. +[----------] Global test environment set-up. +[----------] 1 test from PassingTest +[ RUN ] PassingTest.PassingTest2 +[ OK ] PassingTest.PassingTest2 +[----------] Global test environment tear-down +[==========] 1 test from 1 test case ran. +[ PASSED ] 1 test. + + YOU HAVE 1 DISABLED TEST + diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_pred_impl_unittest.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest_pred_impl_unittest.cc new file mode 100644 index 00000000..a84eff86 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_pred_impl_unittest.cc @@ -0,0 +1,2427 @@ +// Copyright 2006, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// This file is AUTOMATICALLY GENERATED on 10/31/2011 by command +// 'gen_gtest_pred_impl.py 5'. DO NOT EDIT BY HAND! + +// Regression test for gtest_pred_impl.h +// +// This file is generated by a script and quite long. If you intend to +// learn how Google Test works by reading its unit tests, read +// gtest_unittest.cc instead. +// +// This is intended as a regression test for the Google Test predicate +// assertions. We compile it as part of the gtest_unittest target +// only to keep the implementation tidy and compact, as it is quite +// involved to set up the stage for testing Google Test using Google +// Test itself. +// +// Currently, gtest_unittest takes ~11 seconds to run in the testing +// daemon. In the future, if it grows too large and needs much more +// time to finish, we should consider separating this file into a +// stand-alone regression test. + +#include + +#include "gtest/gtest.h" +#include "gtest/gtest-spi.h" + +// A user-defined data type. +struct Bool { + explicit Bool(int val) : value(val != 0) {} + + bool operator>(int n) const { return value > Bool(n).value; } + + Bool operator+(const Bool& rhs) const { return Bool(value + rhs.value); } + + bool operator==(const Bool& rhs) const { return value == rhs.value; } + + bool value; +}; + +// Enables Bool to be used in assertions. +std::ostream& operator<<(std::ostream& os, const Bool& x) { + return os << (x.value ? "true" : "false"); +} + +// Sample functions/functors for testing unary predicate assertions. + +// A unary predicate function. +template +bool PredFunction1(T1 v1) { + return v1 > 0; +} + +// The following two functions are needed to circumvent a bug in +// gcc 2.95.3, which sometimes has problem with the above template +// function. +bool PredFunction1Int(int v1) { + return v1 > 0; +} +bool PredFunction1Bool(Bool v1) { + return v1 > 0; +} + +// A unary predicate functor. +struct PredFunctor1 { + template + bool operator()(const T1& v1) { + return v1 > 0; + } +}; + +// A unary predicate-formatter function. +template +testing::AssertionResult PredFormatFunction1(const char* e1, + const T1& v1) { + if (PredFunction1(v1)) + return testing::AssertionSuccess(); + + return testing::AssertionFailure() + << e1 + << " is expected to be positive, but evaluates to " + << v1 << "."; +} + +// A unary predicate-formatter functor. +struct PredFormatFunctor1 { + template + testing::AssertionResult operator()(const char* e1, + const T1& v1) const { + return PredFormatFunction1(e1, v1); + } +}; + +// Tests for {EXPECT|ASSERT}_PRED_FORMAT1. + +class Predicate1Test : public testing::Test { + protected: + virtual void SetUp() { + expected_to_finish_ = true; + finished_ = false; + n1_ = 0; + } + + virtual void TearDown() { + // Verifies that each of the predicate's arguments was evaluated + // exactly once. + EXPECT_EQ(1, n1_) << + "The predicate assertion didn't evaluate argument 2 " + "exactly once."; + + // Verifies that the control flow in the test function is expected. + if (expected_to_finish_ && !finished_) { + FAIL() << "The predicate assertion unexpactedly aborted the test."; + } else if (!expected_to_finish_ && finished_) { + FAIL() << "The failed predicate assertion didn't abort the test " + "as expected."; + } + } + + // true iff the test function is expected to run to finish. + static bool expected_to_finish_; + + // true iff the test function did run to finish. + static bool finished_; + + static int n1_; +}; + +bool Predicate1Test::expected_to_finish_; +bool Predicate1Test::finished_; +int Predicate1Test::n1_; + +typedef Predicate1Test EXPECT_PRED_FORMAT1Test; +typedef Predicate1Test ASSERT_PRED_FORMAT1Test; +typedef Predicate1Test EXPECT_PRED1Test; +typedef Predicate1Test ASSERT_PRED1Test; + +// Tests a successful EXPECT_PRED1 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(EXPECT_PRED1Test, FunctionOnBuiltInTypeSuccess) { + EXPECT_PRED1(PredFunction1Int, + ++n1_); + finished_ = true; +} + +// Tests a successful EXPECT_PRED1 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(EXPECT_PRED1Test, FunctionOnUserTypeSuccess) { + EXPECT_PRED1(PredFunction1Bool, + Bool(++n1_)); + finished_ = true; +} + +// Tests a successful EXPECT_PRED1 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(EXPECT_PRED1Test, FunctorOnBuiltInTypeSuccess) { + EXPECT_PRED1(PredFunctor1(), + ++n1_); + finished_ = true; +} + +// Tests a successful EXPECT_PRED1 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(EXPECT_PRED1Test, FunctorOnUserTypeSuccess) { + EXPECT_PRED1(PredFunctor1(), + Bool(++n1_)); + finished_ = true; +} + +// Tests a failed EXPECT_PRED1 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(EXPECT_PRED1Test, FunctionOnBuiltInTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED1(PredFunction1Int, + n1_++); + finished_ = true; + }, ""); +} + +// Tests a failed EXPECT_PRED1 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(EXPECT_PRED1Test, FunctionOnUserTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED1(PredFunction1Bool, + Bool(n1_++)); + finished_ = true; + }, ""); +} + +// Tests a failed EXPECT_PRED1 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(EXPECT_PRED1Test, FunctorOnBuiltInTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED1(PredFunctor1(), + n1_++); + finished_ = true; + }, ""); +} + +// Tests a failed EXPECT_PRED1 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(EXPECT_PRED1Test, FunctorOnUserTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED1(PredFunctor1(), + Bool(n1_++)); + finished_ = true; + }, ""); +} + +// Tests a successful ASSERT_PRED1 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(ASSERT_PRED1Test, FunctionOnBuiltInTypeSuccess) { + ASSERT_PRED1(PredFunction1Int, + ++n1_); + finished_ = true; +} + +// Tests a successful ASSERT_PRED1 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(ASSERT_PRED1Test, FunctionOnUserTypeSuccess) { + ASSERT_PRED1(PredFunction1Bool, + Bool(++n1_)); + finished_ = true; +} + +// Tests a successful ASSERT_PRED1 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(ASSERT_PRED1Test, FunctorOnBuiltInTypeSuccess) { + ASSERT_PRED1(PredFunctor1(), + ++n1_); + finished_ = true; +} + +// Tests a successful ASSERT_PRED1 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(ASSERT_PRED1Test, FunctorOnUserTypeSuccess) { + ASSERT_PRED1(PredFunctor1(), + Bool(++n1_)); + finished_ = true; +} + +// Tests a failed ASSERT_PRED1 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(ASSERT_PRED1Test, FunctionOnBuiltInTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED1(PredFunction1Int, + n1_++); + finished_ = true; + }, ""); +} + +// Tests a failed ASSERT_PRED1 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(ASSERT_PRED1Test, FunctionOnUserTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED1(PredFunction1Bool, + Bool(n1_++)); + finished_ = true; + }, ""); +} + +// Tests a failed ASSERT_PRED1 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(ASSERT_PRED1Test, FunctorOnBuiltInTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED1(PredFunctor1(), + n1_++); + finished_ = true; + }, ""); +} + +// Tests a failed ASSERT_PRED1 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(ASSERT_PRED1Test, FunctorOnUserTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED1(PredFunctor1(), + Bool(n1_++)); + finished_ = true; + }, ""); +} + +// Tests a successful EXPECT_PRED_FORMAT1 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(EXPECT_PRED_FORMAT1Test, FunctionOnBuiltInTypeSuccess) { + EXPECT_PRED_FORMAT1(PredFormatFunction1, + ++n1_); + finished_ = true; +} + +// Tests a successful EXPECT_PRED_FORMAT1 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(EXPECT_PRED_FORMAT1Test, FunctionOnUserTypeSuccess) { + EXPECT_PRED_FORMAT1(PredFormatFunction1, + Bool(++n1_)); + finished_ = true; +} + +// Tests a successful EXPECT_PRED_FORMAT1 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(EXPECT_PRED_FORMAT1Test, FunctorOnBuiltInTypeSuccess) { + EXPECT_PRED_FORMAT1(PredFormatFunctor1(), + ++n1_); + finished_ = true; +} + +// Tests a successful EXPECT_PRED_FORMAT1 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(EXPECT_PRED_FORMAT1Test, FunctorOnUserTypeSuccess) { + EXPECT_PRED_FORMAT1(PredFormatFunctor1(), + Bool(++n1_)); + finished_ = true; +} + +// Tests a failed EXPECT_PRED_FORMAT1 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(EXPECT_PRED_FORMAT1Test, FunctionOnBuiltInTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED_FORMAT1(PredFormatFunction1, + n1_++); + finished_ = true; + }, ""); +} + +// Tests a failed EXPECT_PRED_FORMAT1 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(EXPECT_PRED_FORMAT1Test, FunctionOnUserTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED_FORMAT1(PredFormatFunction1, + Bool(n1_++)); + finished_ = true; + }, ""); +} + +// Tests a failed EXPECT_PRED_FORMAT1 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(EXPECT_PRED_FORMAT1Test, FunctorOnBuiltInTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED_FORMAT1(PredFormatFunctor1(), + n1_++); + finished_ = true; + }, ""); +} + +// Tests a failed EXPECT_PRED_FORMAT1 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(EXPECT_PRED_FORMAT1Test, FunctorOnUserTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED_FORMAT1(PredFormatFunctor1(), + Bool(n1_++)); + finished_ = true; + }, ""); +} + +// Tests a successful ASSERT_PRED_FORMAT1 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(ASSERT_PRED_FORMAT1Test, FunctionOnBuiltInTypeSuccess) { + ASSERT_PRED_FORMAT1(PredFormatFunction1, + ++n1_); + finished_ = true; +} + +// Tests a successful ASSERT_PRED_FORMAT1 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(ASSERT_PRED_FORMAT1Test, FunctionOnUserTypeSuccess) { + ASSERT_PRED_FORMAT1(PredFormatFunction1, + Bool(++n1_)); + finished_ = true; +} + +// Tests a successful ASSERT_PRED_FORMAT1 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(ASSERT_PRED_FORMAT1Test, FunctorOnBuiltInTypeSuccess) { + ASSERT_PRED_FORMAT1(PredFormatFunctor1(), + ++n1_); + finished_ = true; +} + +// Tests a successful ASSERT_PRED_FORMAT1 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(ASSERT_PRED_FORMAT1Test, FunctorOnUserTypeSuccess) { + ASSERT_PRED_FORMAT1(PredFormatFunctor1(), + Bool(++n1_)); + finished_ = true; +} + +// Tests a failed ASSERT_PRED_FORMAT1 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(ASSERT_PRED_FORMAT1Test, FunctionOnBuiltInTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED_FORMAT1(PredFormatFunction1, + n1_++); + finished_ = true; + }, ""); +} + +// Tests a failed ASSERT_PRED_FORMAT1 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(ASSERT_PRED_FORMAT1Test, FunctionOnUserTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED_FORMAT1(PredFormatFunction1, + Bool(n1_++)); + finished_ = true; + }, ""); +} + +// Tests a failed ASSERT_PRED_FORMAT1 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(ASSERT_PRED_FORMAT1Test, FunctorOnBuiltInTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED_FORMAT1(PredFormatFunctor1(), + n1_++); + finished_ = true; + }, ""); +} + +// Tests a failed ASSERT_PRED_FORMAT1 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(ASSERT_PRED_FORMAT1Test, FunctorOnUserTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED_FORMAT1(PredFormatFunctor1(), + Bool(n1_++)); + finished_ = true; + }, ""); +} +// Sample functions/functors for testing binary predicate assertions. + +// A binary predicate function. +template +bool PredFunction2(T1 v1, T2 v2) { + return v1 + v2 > 0; +} + +// The following two functions are needed to circumvent a bug in +// gcc 2.95.3, which sometimes has problem with the above template +// function. +bool PredFunction2Int(int v1, int v2) { + return v1 + v2 > 0; +} +bool PredFunction2Bool(Bool v1, Bool v2) { + return v1 + v2 > 0; +} + +// A binary predicate functor. +struct PredFunctor2 { + template + bool operator()(const T1& v1, + const T2& v2) { + return v1 + v2 > 0; + } +}; + +// A binary predicate-formatter function. +template +testing::AssertionResult PredFormatFunction2(const char* e1, + const char* e2, + const T1& v1, + const T2& v2) { + if (PredFunction2(v1, v2)) + return testing::AssertionSuccess(); + + return testing::AssertionFailure() + << e1 << " + " << e2 + << " is expected to be positive, but evaluates to " + << v1 + v2 << "."; +} + +// A binary predicate-formatter functor. +struct PredFormatFunctor2 { + template + testing::AssertionResult operator()(const char* e1, + const char* e2, + const T1& v1, + const T2& v2) const { + return PredFormatFunction2(e1, e2, v1, v2); + } +}; + +// Tests for {EXPECT|ASSERT}_PRED_FORMAT2. + +class Predicate2Test : public testing::Test { + protected: + virtual void SetUp() { + expected_to_finish_ = true; + finished_ = false; + n1_ = n2_ = 0; + } + + virtual void TearDown() { + // Verifies that each of the predicate's arguments was evaluated + // exactly once. + EXPECT_EQ(1, n1_) << + "The predicate assertion didn't evaluate argument 2 " + "exactly once."; + EXPECT_EQ(1, n2_) << + "The predicate assertion didn't evaluate argument 3 " + "exactly once."; + + // Verifies that the control flow in the test function is expected. + if (expected_to_finish_ && !finished_) { + FAIL() << "The predicate assertion unexpactedly aborted the test."; + } else if (!expected_to_finish_ && finished_) { + FAIL() << "The failed predicate assertion didn't abort the test " + "as expected."; + } + } + + // true iff the test function is expected to run to finish. + static bool expected_to_finish_; + + // true iff the test function did run to finish. + static bool finished_; + + static int n1_; + static int n2_; +}; + +bool Predicate2Test::expected_to_finish_; +bool Predicate2Test::finished_; +int Predicate2Test::n1_; +int Predicate2Test::n2_; + +typedef Predicate2Test EXPECT_PRED_FORMAT2Test; +typedef Predicate2Test ASSERT_PRED_FORMAT2Test; +typedef Predicate2Test EXPECT_PRED2Test; +typedef Predicate2Test ASSERT_PRED2Test; + +// Tests a successful EXPECT_PRED2 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(EXPECT_PRED2Test, FunctionOnBuiltInTypeSuccess) { + EXPECT_PRED2(PredFunction2Int, + ++n1_, + ++n2_); + finished_ = true; +} + +// Tests a successful EXPECT_PRED2 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(EXPECT_PRED2Test, FunctionOnUserTypeSuccess) { + EXPECT_PRED2(PredFunction2Bool, + Bool(++n1_), + Bool(++n2_)); + finished_ = true; +} + +// Tests a successful EXPECT_PRED2 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(EXPECT_PRED2Test, FunctorOnBuiltInTypeSuccess) { + EXPECT_PRED2(PredFunctor2(), + ++n1_, + ++n2_); + finished_ = true; +} + +// Tests a successful EXPECT_PRED2 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(EXPECT_PRED2Test, FunctorOnUserTypeSuccess) { + EXPECT_PRED2(PredFunctor2(), + Bool(++n1_), + Bool(++n2_)); + finished_ = true; +} + +// Tests a failed EXPECT_PRED2 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(EXPECT_PRED2Test, FunctionOnBuiltInTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED2(PredFunction2Int, + n1_++, + n2_++); + finished_ = true; + }, ""); +} + +// Tests a failed EXPECT_PRED2 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(EXPECT_PRED2Test, FunctionOnUserTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED2(PredFunction2Bool, + Bool(n1_++), + Bool(n2_++)); + finished_ = true; + }, ""); +} + +// Tests a failed EXPECT_PRED2 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(EXPECT_PRED2Test, FunctorOnBuiltInTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED2(PredFunctor2(), + n1_++, + n2_++); + finished_ = true; + }, ""); +} + +// Tests a failed EXPECT_PRED2 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(EXPECT_PRED2Test, FunctorOnUserTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED2(PredFunctor2(), + Bool(n1_++), + Bool(n2_++)); + finished_ = true; + }, ""); +} + +// Tests a successful ASSERT_PRED2 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(ASSERT_PRED2Test, FunctionOnBuiltInTypeSuccess) { + ASSERT_PRED2(PredFunction2Int, + ++n1_, + ++n2_); + finished_ = true; +} + +// Tests a successful ASSERT_PRED2 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(ASSERT_PRED2Test, FunctionOnUserTypeSuccess) { + ASSERT_PRED2(PredFunction2Bool, + Bool(++n1_), + Bool(++n2_)); + finished_ = true; +} + +// Tests a successful ASSERT_PRED2 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(ASSERT_PRED2Test, FunctorOnBuiltInTypeSuccess) { + ASSERT_PRED2(PredFunctor2(), + ++n1_, + ++n2_); + finished_ = true; +} + +// Tests a successful ASSERT_PRED2 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(ASSERT_PRED2Test, FunctorOnUserTypeSuccess) { + ASSERT_PRED2(PredFunctor2(), + Bool(++n1_), + Bool(++n2_)); + finished_ = true; +} + +// Tests a failed ASSERT_PRED2 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(ASSERT_PRED2Test, FunctionOnBuiltInTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED2(PredFunction2Int, + n1_++, + n2_++); + finished_ = true; + }, ""); +} + +// Tests a failed ASSERT_PRED2 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(ASSERT_PRED2Test, FunctionOnUserTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED2(PredFunction2Bool, + Bool(n1_++), + Bool(n2_++)); + finished_ = true; + }, ""); +} + +// Tests a failed ASSERT_PRED2 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(ASSERT_PRED2Test, FunctorOnBuiltInTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED2(PredFunctor2(), + n1_++, + n2_++); + finished_ = true; + }, ""); +} + +// Tests a failed ASSERT_PRED2 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(ASSERT_PRED2Test, FunctorOnUserTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED2(PredFunctor2(), + Bool(n1_++), + Bool(n2_++)); + finished_ = true; + }, ""); +} + +// Tests a successful EXPECT_PRED_FORMAT2 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(EXPECT_PRED_FORMAT2Test, FunctionOnBuiltInTypeSuccess) { + EXPECT_PRED_FORMAT2(PredFormatFunction2, + ++n1_, + ++n2_); + finished_ = true; +} + +// Tests a successful EXPECT_PRED_FORMAT2 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(EXPECT_PRED_FORMAT2Test, FunctionOnUserTypeSuccess) { + EXPECT_PRED_FORMAT2(PredFormatFunction2, + Bool(++n1_), + Bool(++n2_)); + finished_ = true; +} + +// Tests a successful EXPECT_PRED_FORMAT2 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(EXPECT_PRED_FORMAT2Test, FunctorOnBuiltInTypeSuccess) { + EXPECT_PRED_FORMAT2(PredFormatFunctor2(), + ++n1_, + ++n2_); + finished_ = true; +} + +// Tests a successful EXPECT_PRED_FORMAT2 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(EXPECT_PRED_FORMAT2Test, FunctorOnUserTypeSuccess) { + EXPECT_PRED_FORMAT2(PredFormatFunctor2(), + Bool(++n1_), + Bool(++n2_)); + finished_ = true; +} + +// Tests a failed EXPECT_PRED_FORMAT2 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(EXPECT_PRED_FORMAT2Test, FunctionOnBuiltInTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED_FORMAT2(PredFormatFunction2, + n1_++, + n2_++); + finished_ = true; + }, ""); +} + +// Tests a failed EXPECT_PRED_FORMAT2 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(EXPECT_PRED_FORMAT2Test, FunctionOnUserTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED_FORMAT2(PredFormatFunction2, + Bool(n1_++), + Bool(n2_++)); + finished_ = true; + }, ""); +} + +// Tests a failed EXPECT_PRED_FORMAT2 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(EXPECT_PRED_FORMAT2Test, FunctorOnBuiltInTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED_FORMAT2(PredFormatFunctor2(), + n1_++, + n2_++); + finished_ = true; + }, ""); +} + +// Tests a failed EXPECT_PRED_FORMAT2 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(EXPECT_PRED_FORMAT2Test, FunctorOnUserTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED_FORMAT2(PredFormatFunctor2(), + Bool(n1_++), + Bool(n2_++)); + finished_ = true; + }, ""); +} + +// Tests a successful ASSERT_PRED_FORMAT2 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(ASSERT_PRED_FORMAT2Test, FunctionOnBuiltInTypeSuccess) { + ASSERT_PRED_FORMAT2(PredFormatFunction2, + ++n1_, + ++n2_); + finished_ = true; +} + +// Tests a successful ASSERT_PRED_FORMAT2 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(ASSERT_PRED_FORMAT2Test, FunctionOnUserTypeSuccess) { + ASSERT_PRED_FORMAT2(PredFormatFunction2, + Bool(++n1_), + Bool(++n2_)); + finished_ = true; +} + +// Tests a successful ASSERT_PRED_FORMAT2 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(ASSERT_PRED_FORMAT2Test, FunctorOnBuiltInTypeSuccess) { + ASSERT_PRED_FORMAT2(PredFormatFunctor2(), + ++n1_, + ++n2_); + finished_ = true; +} + +// Tests a successful ASSERT_PRED_FORMAT2 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(ASSERT_PRED_FORMAT2Test, FunctorOnUserTypeSuccess) { + ASSERT_PRED_FORMAT2(PredFormatFunctor2(), + Bool(++n1_), + Bool(++n2_)); + finished_ = true; +} + +// Tests a failed ASSERT_PRED_FORMAT2 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(ASSERT_PRED_FORMAT2Test, FunctionOnBuiltInTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED_FORMAT2(PredFormatFunction2, + n1_++, + n2_++); + finished_ = true; + }, ""); +} + +// Tests a failed ASSERT_PRED_FORMAT2 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(ASSERT_PRED_FORMAT2Test, FunctionOnUserTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED_FORMAT2(PredFormatFunction2, + Bool(n1_++), + Bool(n2_++)); + finished_ = true; + }, ""); +} + +// Tests a failed ASSERT_PRED_FORMAT2 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(ASSERT_PRED_FORMAT2Test, FunctorOnBuiltInTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED_FORMAT2(PredFormatFunctor2(), + n1_++, + n2_++); + finished_ = true; + }, ""); +} + +// Tests a failed ASSERT_PRED_FORMAT2 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(ASSERT_PRED_FORMAT2Test, FunctorOnUserTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED_FORMAT2(PredFormatFunctor2(), + Bool(n1_++), + Bool(n2_++)); + finished_ = true; + }, ""); +} +// Sample functions/functors for testing ternary predicate assertions. + +// A ternary predicate function. +template +bool PredFunction3(T1 v1, T2 v2, T3 v3) { + return v1 + v2 + v3 > 0; +} + +// The following two functions are needed to circumvent a bug in +// gcc 2.95.3, which sometimes has problem with the above template +// function. +bool PredFunction3Int(int v1, int v2, int v3) { + return v1 + v2 + v3 > 0; +} +bool PredFunction3Bool(Bool v1, Bool v2, Bool v3) { + return v1 + v2 + v3 > 0; +} + +// A ternary predicate functor. +struct PredFunctor3 { + template + bool operator()(const T1& v1, + const T2& v2, + const T3& v3) { + return v1 + v2 + v3 > 0; + } +}; + +// A ternary predicate-formatter function. +template +testing::AssertionResult PredFormatFunction3(const char* e1, + const char* e2, + const char* e3, + const T1& v1, + const T2& v2, + const T3& v3) { + if (PredFunction3(v1, v2, v3)) + return testing::AssertionSuccess(); + + return testing::AssertionFailure() + << e1 << " + " << e2 << " + " << e3 + << " is expected to be positive, but evaluates to " + << v1 + v2 + v3 << "."; +} + +// A ternary predicate-formatter functor. +struct PredFormatFunctor3 { + template + testing::AssertionResult operator()(const char* e1, + const char* e2, + const char* e3, + const T1& v1, + const T2& v2, + const T3& v3) const { + return PredFormatFunction3(e1, e2, e3, v1, v2, v3); + } +}; + +// Tests for {EXPECT|ASSERT}_PRED_FORMAT3. + +class Predicate3Test : public testing::Test { + protected: + virtual void SetUp() { + expected_to_finish_ = true; + finished_ = false; + n1_ = n2_ = n3_ = 0; + } + + virtual void TearDown() { + // Verifies that each of the predicate's arguments was evaluated + // exactly once. + EXPECT_EQ(1, n1_) << + "The predicate assertion didn't evaluate argument 2 " + "exactly once."; + EXPECT_EQ(1, n2_) << + "The predicate assertion didn't evaluate argument 3 " + "exactly once."; + EXPECT_EQ(1, n3_) << + "The predicate assertion didn't evaluate argument 4 " + "exactly once."; + + // Verifies that the control flow in the test function is expected. + if (expected_to_finish_ && !finished_) { + FAIL() << "The predicate assertion unexpactedly aborted the test."; + } else if (!expected_to_finish_ && finished_) { + FAIL() << "The failed predicate assertion didn't abort the test " + "as expected."; + } + } + + // true iff the test function is expected to run to finish. + static bool expected_to_finish_; + + // true iff the test function did run to finish. + static bool finished_; + + static int n1_; + static int n2_; + static int n3_; +}; + +bool Predicate3Test::expected_to_finish_; +bool Predicate3Test::finished_; +int Predicate3Test::n1_; +int Predicate3Test::n2_; +int Predicate3Test::n3_; + +typedef Predicate3Test EXPECT_PRED_FORMAT3Test; +typedef Predicate3Test ASSERT_PRED_FORMAT3Test; +typedef Predicate3Test EXPECT_PRED3Test; +typedef Predicate3Test ASSERT_PRED3Test; + +// Tests a successful EXPECT_PRED3 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(EXPECT_PRED3Test, FunctionOnBuiltInTypeSuccess) { + EXPECT_PRED3(PredFunction3Int, + ++n1_, + ++n2_, + ++n3_); + finished_ = true; +} + +// Tests a successful EXPECT_PRED3 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(EXPECT_PRED3Test, FunctionOnUserTypeSuccess) { + EXPECT_PRED3(PredFunction3Bool, + Bool(++n1_), + Bool(++n2_), + Bool(++n3_)); + finished_ = true; +} + +// Tests a successful EXPECT_PRED3 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(EXPECT_PRED3Test, FunctorOnBuiltInTypeSuccess) { + EXPECT_PRED3(PredFunctor3(), + ++n1_, + ++n2_, + ++n3_); + finished_ = true; +} + +// Tests a successful EXPECT_PRED3 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(EXPECT_PRED3Test, FunctorOnUserTypeSuccess) { + EXPECT_PRED3(PredFunctor3(), + Bool(++n1_), + Bool(++n2_), + Bool(++n3_)); + finished_ = true; +} + +// Tests a failed EXPECT_PRED3 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(EXPECT_PRED3Test, FunctionOnBuiltInTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED3(PredFunction3Int, + n1_++, + n2_++, + n3_++); + finished_ = true; + }, ""); +} + +// Tests a failed EXPECT_PRED3 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(EXPECT_PRED3Test, FunctionOnUserTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED3(PredFunction3Bool, + Bool(n1_++), + Bool(n2_++), + Bool(n3_++)); + finished_ = true; + }, ""); +} + +// Tests a failed EXPECT_PRED3 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(EXPECT_PRED3Test, FunctorOnBuiltInTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED3(PredFunctor3(), + n1_++, + n2_++, + n3_++); + finished_ = true; + }, ""); +} + +// Tests a failed EXPECT_PRED3 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(EXPECT_PRED3Test, FunctorOnUserTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED3(PredFunctor3(), + Bool(n1_++), + Bool(n2_++), + Bool(n3_++)); + finished_ = true; + }, ""); +} + +// Tests a successful ASSERT_PRED3 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(ASSERT_PRED3Test, FunctionOnBuiltInTypeSuccess) { + ASSERT_PRED3(PredFunction3Int, + ++n1_, + ++n2_, + ++n3_); + finished_ = true; +} + +// Tests a successful ASSERT_PRED3 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(ASSERT_PRED3Test, FunctionOnUserTypeSuccess) { + ASSERT_PRED3(PredFunction3Bool, + Bool(++n1_), + Bool(++n2_), + Bool(++n3_)); + finished_ = true; +} + +// Tests a successful ASSERT_PRED3 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(ASSERT_PRED3Test, FunctorOnBuiltInTypeSuccess) { + ASSERT_PRED3(PredFunctor3(), + ++n1_, + ++n2_, + ++n3_); + finished_ = true; +} + +// Tests a successful ASSERT_PRED3 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(ASSERT_PRED3Test, FunctorOnUserTypeSuccess) { + ASSERT_PRED3(PredFunctor3(), + Bool(++n1_), + Bool(++n2_), + Bool(++n3_)); + finished_ = true; +} + +// Tests a failed ASSERT_PRED3 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(ASSERT_PRED3Test, FunctionOnBuiltInTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED3(PredFunction3Int, + n1_++, + n2_++, + n3_++); + finished_ = true; + }, ""); +} + +// Tests a failed ASSERT_PRED3 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(ASSERT_PRED3Test, FunctionOnUserTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED3(PredFunction3Bool, + Bool(n1_++), + Bool(n2_++), + Bool(n3_++)); + finished_ = true; + }, ""); +} + +// Tests a failed ASSERT_PRED3 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(ASSERT_PRED3Test, FunctorOnBuiltInTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED3(PredFunctor3(), + n1_++, + n2_++, + n3_++); + finished_ = true; + }, ""); +} + +// Tests a failed ASSERT_PRED3 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(ASSERT_PRED3Test, FunctorOnUserTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED3(PredFunctor3(), + Bool(n1_++), + Bool(n2_++), + Bool(n3_++)); + finished_ = true; + }, ""); +} + +// Tests a successful EXPECT_PRED_FORMAT3 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(EXPECT_PRED_FORMAT3Test, FunctionOnBuiltInTypeSuccess) { + EXPECT_PRED_FORMAT3(PredFormatFunction3, + ++n1_, + ++n2_, + ++n3_); + finished_ = true; +} + +// Tests a successful EXPECT_PRED_FORMAT3 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(EXPECT_PRED_FORMAT3Test, FunctionOnUserTypeSuccess) { + EXPECT_PRED_FORMAT3(PredFormatFunction3, + Bool(++n1_), + Bool(++n2_), + Bool(++n3_)); + finished_ = true; +} + +// Tests a successful EXPECT_PRED_FORMAT3 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(EXPECT_PRED_FORMAT3Test, FunctorOnBuiltInTypeSuccess) { + EXPECT_PRED_FORMAT3(PredFormatFunctor3(), + ++n1_, + ++n2_, + ++n3_); + finished_ = true; +} + +// Tests a successful EXPECT_PRED_FORMAT3 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(EXPECT_PRED_FORMAT3Test, FunctorOnUserTypeSuccess) { + EXPECT_PRED_FORMAT3(PredFormatFunctor3(), + Bool(++n1_), + Bool(++n2_), + Bool(++n3_)); + finished_ = true; +} + +// Tests a failed EXPECT_PRED_FORMAT3 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(EXPECT_PRED_FORMAT3Test, FunctionOnBuiltInTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED_FORMAT3(PredFormatFunction3, + n1_++, + n2_++, + n3_++); + finished_ = true; + }, ""); +} + +// Tests a failed EXPECT_PRED_FORMAT3 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(EXPECT_PRED_FORMAT3Test, FunctionOnUserTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED_FORMAT3(PredFormatFunction3, + Bool(n1_++), + Bool(n2_++), + Bool(n3_++)); + finished_ = true; + }, ""); +} + +// Tests a failed EXPECT_PRED_FORMAT3 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(EXPECT_PRED_FORMAT3Test, FunctorOnBuiltInTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED_FORMAT3(PredFormatFunctor3(), + n1_++, + n2_++, + n3_++); + finished_ = true; + }, ""); +} + +// Tests a failed EXPECT_PRED_FORMAT3 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(EXPECT_PRED_FORMAT3Test, FunctorOnUserTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED_FORMAT3(PredFormatFunctor3(), + Bool(n1_++), + Bool(n2_++), + Bool(n3_++)); + finished_ = true; + }, ""); +} + +// Tests a successful ASSERT_PRED_FORMAT3 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(ASSERT_PRED_FORMAT3Test, FunctionOnBuiltInTypeSuccess) { + ASSERT_PRED_FORMAT3(PredFormatFunction3, + ++n1_, + ++n2_, + ++n3_); + finished_ = true; +} + +// Tests a successful ASSERT_PRED_FORMAT3 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(ASSERT_PRED_FORMAT3Test, FunctionOnUserTypeSuccess) { + ASSERT_PRED_FORMAT3(PredFormatFunction3, + Bool(++n1_), + Bool(++n2_), + Bool(++n3_)); + finished_ = true; +} + +// Tests a successful ASSERT_PRED_FORMAT3 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(ASSERT_PRED_FORMAT3Test, FunctorOnBuiltInTypeSuccess) { + ASSERT_PRED_FORMAT3(PredFormatFunctor3(), + ++n1_, + ++n2_, + ++n3_); + finished_ = true; +} + +// Tests a successful ASSERT_PRED_FORMAT3 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(ASSERT_PRED_FORMAT3Test, FunctorOnUserTypeSuccess) { + ASSERT_PRED_FORMAT3(PredFormatFunctor3(), + Bool(++n1_), + Bool(++n2_), + Bool(++n3_)); + finished_ = true; +} + +// Tests a failed ASSERT_PRED_FORMAT3 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(ASSERT_PRED_FORMAT3Test, FunctionOnBuiltInTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED_FORMAT3(PredFormatFunction3, + n1_++, + n2_++, + n3_++); + finished_ = true; + }, ""); +} + +// Tests a failed ASSERT_PRED_FORMAT3 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(ASSERT_PRED_FORMAT3Test, FunctionOnUserTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED_FORMAT3(PredFormatFunction3, + Bool(n1_++), + Bool(n2_++), + Bool(n3_++)); + finished_ = true; + }, ""); +} + +// Tests a failed ASSERT_PRED_FORMAT3 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(ASSERT_PRED_FORMAT3Test, FunctorOnBuiltInTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED_FORMAT3(PredFormatFunctor3(), + n1_++, + n2_++, + n3_++); + finished_ = true; + }, ""); +} + +// Tests a failed ASSERT_PRED_FORMAT3 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(ASSERT_PRED_FORMAT3Test, FunctorOnUserTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED_FORMAT3(PredFormatFunctor3(), + Bool(n1_++), + Bool(n2_++), + Bool(n3_++)); + finished_ = true; + }, ""); +} +// Sample functions/functors for testing 4-ary predicate assertions. + +// A 4-ary predicate function. +template +bool PredFunction4(T1 v1, T2 v2, T3 v3, T4 v4) { + return v1 + v2 + v3 + v4 > 0; +} + +// The following two functions are needed to circumvent a bug in +// gcc 2.95.3, which sometimes has problem with the above template +// function. +bool PredFunction4Int(int v1, int v2, int v3, int v4) { + return v1 + v2 + v3 + v4 > 0; +} +bool PredFunction4Bool(Bool v1, Bool v2, Bool v3, Bool v4) { + return v1 + v2 + v3 + v4 > 0; +} + +// A 4-ary predicate functor. +struct PredFunctor4 { + template + bool operator()(const T1& v1, + const T2& v2, + const T3& v3, + const T4& v4) { + return v1 + v2 + v3 + v4 > 0; + } +}; + +// A 4-ary predicate-formatter function. +template +testing::AssertionResult PredFormatFunction4(const char* e1, + const char* e2, + const char* e3, + const char* e4, + const T1& v1, + const T2& v2, + const T3& v3, + const T4& v4) { + if (PredFunction4(v1, v2, v3, v4)) + return testing::AssertionSuccess(); + + return testing::AssertionFailure() + << e1 << " + " << e2 << " + " << e3 << " + " << e4 + << " is expected to be positive, but evaluates to " + << v1 + v2 + v3 + v4 << "."; +} + +// A 4-ary predicate-formatter functor. +struct PredFormatFunctor4 { + template + testing::AssertionResult operator()(const char* e1, + const char* e2, + const char* e3, + const char* e4, + const T1& v1, + const T2& v2, + const T3& v3, + const T4& v4) const { + return PredFormatFunction4(e1, e2, e3, e4, v1, v2, v3, v4); + } +}; + +// Tests for {EXPECT|ASSERT}_PRED_FORMAT4. + +class Predicate4Test : public testing::Test { + protected: + virtual void SetUp() { + expected_to_finish_ = true; + finished_ = false; + n1_ = n2_ = n3_ = n4_ = 0; + } + + virtual void TearDown() { + // Verifies that each of the predicate's arguments was evaluated + // exactly once. + EXPECT_EQ(1, n1_) << + "The predicate assertion didn't evaluate argument 2 " + "exactly once."; + EXPECT_EQ(1, n2_) << + "The predicate assertion didn't evaluate argument 3 " + "exactly once."; + EXPECT_EQ(1, n3_) << + "The predicate assertion didn't evaluate argument 4 " + "exactly once."; + EXPECT_EQ(1, n4_) << + "The predicate assertion didn't evaluate argument 5 " + "exactly once."; + + // Verifies that the control flow in the test function is expected. + if (expected_to_finish_ && !finished_) { + FAIL() << "The predicate assertion unexpactedly aborted the test."; + } else if (!expected_to_finish_ && finished_) { + FAIL() << "The failed predicate assertion didn't abort the test " + "as expected."; + } + } + + // true iff the test function is expected to run to finish. + static bool expected_to_finish_; + + // true iff the test function did run to finish. + static bool finished_; + + static int n1_; + static int n2_; + static int n3_; + static int n4_; +}; + +bool Predicate4Test::expected_to_finish_; +bool Predicate4Test::finished_; +int Predicate4Test::n1_; +int Predicate4Test::n2_; +int Predicate4Test::n3_; +int Predicate4Test::n4_; + +typedef Predicate4Test EXPECT_PRED_FORMAT4Test; +typedef Predicate4Test ASSERT_PRED_FORMAT4Test; +typedef Predicate4Test EXPECT_PRED4Test; +typedef Predicate4Test ASSERT_PRED4Test; + +// Tests a successful EXPECT_PRED4 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(EXPECT_PRED4Test, FunctionOnBuiltInTypeSuccess) { + EXPECT_PRED4(PredFunction4Int, + ++n1_, + ++n2_, + ++n3_, + ++n4_); + finished_ = true; +} + +// Tests a successful EXPECT_PRED4 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(EXPECT_PRED4Test, FunctionOnUserTypeSuccess) { + EXPECT_PRED4(PredFunction4Bool, + Bool(++n1_), + Bool(++n2_), + Bool(++n3_), + Bool(++n4_)); + finished_ = true; +} + +// Tests a successful EXPECT_PRED4 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(EXPECT_PRED4Test, FunctorOnBuiltInTypeSuccess) { + EXPECT_PRED4(PredFunctor4(), + ++n1_, + ++n2_, + ++n3_, + ++n4_); + finished_ = true; +} + +// Tests a successful EXPECT_PRED4 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(EXPECT_PRED4Test, FunctorOnUserTypeSuccess) { + EXPECT_PRED4(PredFunctor4(), + Bool(++n1_), + Bool(++n2_), + Bool(++n3_), + Bool(++n4_)); + finished_ = true; +} + +// Tests a failed EXPECT_PRED4 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(EXPECT_PRED4Test, FunctionOnBuiltInTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED4(PredFunction4Int, + n1_++, + n2_++, + n3_++, + n4_++); + finished_ = true; + }, ""); +} + +// Tests a failed EXPECT_PRED4 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(EXPECT_PRED4Test, FunctionOnUserTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED4(PredFunction4Bool, + Bool(n1_++), + Bool(n2_++), + Bool(n3_++), + Bool(n4_++)); + finished_ = true; + }, ""); +} + +// Tests a failed EXPECT_PRED4 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(EXPECT_PRED4Test, FunctorOnBuiltInTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED4(PredFunctor4(), + n1_++, + n2_++, + n3_++, + n4_++); + finished_ = true; + }, ""); +} + +// Tests a failed EXPECT_PRED4 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(EXPECT_PRED4Test, FunctorOnUserTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED4(PredFunctor4(), + Bool(n1_++), + Bool(n2_++), + Bool(n3_++), + Bool(n4_++)); + finished_ = true; + }, ""); +} + +// Tests a successful ASSERT_PRED4 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(ASSERT_PRED4Test, FunctionOnBuiltInTypeSuccess) { + ASSERT_PRED4(PredFunction4Int, + ++n1_, + ++n2_, + ++n3_, + ++n4_); + finished_ = true; +} + +// Tests a successful ASSERT_PRED4 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(ASSERT_PRED4Test, FunctionOnUserTypeSuccess) { + ASSERT_PRED4(PredFunction4Bool, + Bool(++n1_), + Bool(++n2_), + Bool(++n3_), + Bool(++n4_)); + finished_ = true; +} + +// Tests a successful ASSERT_PRED4 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(ASSERT_PRED4Test, FunctorOnBuiltInTypeSuccess) { + ASSERT_PRED4(PredFunctor4(), + ++n1_, + ++n2_, + ++n3_, + ++n4_); + finished_ = true; +} + +// Tests a successful ASSERT_PRED4 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(ASSERT_PRED4Test, FunctorOnUserTypeSuccess) { + ASSERT_PRED4(PredFunctor4(), + Bool(++n1_), + Bool(++n2_), + Bool(++n3_), + Bool(++n4_)); + finished_ = true; +} + +// Tests a failed ASSERT_PRED4 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(ASSERT_PRED4Test, FunctionOnBuiltInTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED4(PredFunction4Int, + n1_++, + n2_++, + n3_++, + n4_++); + finished_ = true; + }, ""); +} + +// Tests a failed ASSERT_PRED4 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(ASSERT_PRED4Test, FunctionOnUserTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED4(PredFunction4Bool, + Bool(n1_++), + Bool(n2_++), + Bool(n3_++), + Bool(n4_++)); + finished_ = true; + }, ""); +} + +// Tests a failed ASSERT_PRED4 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(ASSERT_PRED4Test, FunctorOnBuiltInTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED4(PredFunctor4(), + n1_++, + n2_++, + n3_++, + n4_++); + finished_ = true; + }, ""); +} + +// Tests a failed ASSERT_PRED4 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(ASSERT_PRED4Test, FunctorOnUserTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED4(PredFunctor4(), + Bool(n1_++), + Bool(n2_++), + Bool(n3_++), + Bool(n4_++)); + finished_ = true; + }, ""); +} + +// Tests a successful EXPECT_PRED_FORMAT4 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(EXPECT_PRED_FORMAT4Test, FunctionOnBuiltInTypeSuccess) { + EXPECT_PRED_FORMAT4(PredFormatFunction4, + ++n1_, + ++n2_, + ++n3_, + ++n4_); + finished_ = true; +} + +// Tests a successful EXPECT_PRED_FORMAT4 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(EXPECT_PRED_FORMAT4Test, FunctionOnUserTypeSuccess) { + EXPECT_PRED_FORMAT4(PredFormatFunction4, + Bool(++n1_), + Bool(++n2_), + Bool(++n3_), + Bool(++n4_)); + finished_ = true; +} + +// Tests a successful EXPECT_PRED_FORMAT4 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(EXPECT_PRED_FORMAT4Test, FunctorOnBuiltInTypeSuccess) { + EXPECT_PRED_FORMAT4(PredFormatFunctor4(), + ++n1_, + ++n2_, + ++n3_, + ++n4_); + finished_ = true; +} + +// Tests a successful EXPECT_PRED_FORMAT4 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(EXPECT_PRED_FORMAT4Test, FunctorOnUserTypeSuccess) { + EXPECT_PRED_FORMAT4(PredFormatFunctor4(), + Bool(++n1_), + Bool(++n2_), + Bool(++n3_), + Bool(++n4_)); + finished_ = true; +} + +// Tests a failed EXPECT_PRED_FORMAT4 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(EXPECT_PRED_FORMAT4Test, FunctionOnBuiltInTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED_FORMAT4(PredFormatFunction4, + n1_++, + n2_++, + n3_++, + n4_++); + finished_ = true; + }, ""); +} + +// Tests a failed EXPECT_PRED_FORMAT4 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(EXPECT_PRED_FORMAT4Test, FunctionOnUserTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED_FORMAT4(PredFormatFunction4, + Bool(n1_++), + Bool(n2_++), + Bool(n3_++), + Bool(n4_++)); + finished_ = true; + }, ""); +} + +// Tests a failed EXPECT_PRED_FORMAT4 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(EXPECT_PRED_FORMAT4Test, FunctorOnBuiltInTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED_FORMAT4(PredFormatFunctor4(), + n1_++, + n2_++, + n3_++, + n4_++); + finished_ = true; + }, ""); +} + +// Tests a failed EXPECT_PRED_FORMAT4 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(EXPECT_PRED_FORMAT4Test, FunctorOnUserTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED_FORMAT4(PredFormatFunctor4(), + Bool(n1_++), + Bool(n2_++), + Bool(n3_++), + Bool(n4_++)); + finished_ = true; + }, ""); +} + +// Tests a successful ASSERT_PRED_FORMAT4 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(ASSERT_PRED_FORMAT4Test, FunctionOnBuiltInTypeSuccess) { + ASSERT_PRED_FORMAT4(PredFormatFunction4, + ++n1_, + ++n2_, + ++n3_, + ++n4_); + finished_ = true; +} + +// Tests a successful ASSERT_PRED_FORMAT4 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(ASSERT_PRED_FORMAT4Test, FunctionOnUserTypeSuccess) { + ASSERT_PRED_FORMAT4(PredFormatFunction4, + Bool(++n1_), + Bool(++n2_), + Bool(++n3_), + Bool(++n4_)); + finished_ = true; +} + +// Tests a successful ASSERT_PRED_FORMAT4 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(ASSERT_PRED_FORMAT4Test, FunctorOnBuiltInTypeSuccess) { + ASSERT_PRED_FORMAT4(PredFormatFunctor4(), + ++n1_, + ++n2_, + ++n3_, + ++n4_); + finished_ = true; +} + +// Tests a successful ASSERT_PRED_FORMAT4 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(ASSERT_PRED_FORMAT4Test, FunctorOnUserTypeSuccess) { + ASSERT_PRED_FORMAT4(PredFormatFunctor4(), + Bool(++n1_), + Bool(++n2_), + Bool(++n3_), + Bool(++n4_)); + finished_ = true; +} + +// Tests a failed ASSERT_PRED_FORMAT4 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(ASSERT_PRED_FORMAT4Test, FunctionOnBuiltInTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED_FORMAT4(PredFormatFunction4, + n1_++, + n2_++, + n3_++, + n4_++); + finished_ = true; + }, ""); +} + +// Tests a failed ASSERT_PRED_FORMAT4 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(ASSERT_PRED_FORMAT4Test, FunctionOnUserTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED_FORMAT4(PredFormatFunction4, + Bool(n1_++), + Bool(n2_++), + Bool(n3_++), + Bool(n4_++)); + finished_ = true; + }, ""); +} + +// Tests a failed ASSERT_PRED_FORMAT4 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(ASSERT_PRED_FORMAT4Test, FunctorOnBuiltInTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED_FORMAT4(PredFormatFunctor4(), + n1_++, + n2_++, + n3_++, + n4_++); + finished_ = true; + }, ""); +} + +// Tests a failed ASSERT_PRED_FORMAT4 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(ASSERT_PRED_FORMAT4Test, FunctorOnUserTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED_FORMAT4(PredFormatFunctor4(), + Bool(n1_++), + Bool(n2_++), + Bool(n3_++), + Bool(n4_++)); + finished_ = true; + }, ""); +} +// Sample functions/functors for testing 5-ary predicate assertions. + +// A 5-ary predicate function. +template +bool PredFunction5(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5) { + return v1 + v2 + v3 + v4 + v5 > 0; +} + +// The following two functions are needed to circumvent a bug in +// gcc 2.95.3, which sometimes has problem with the above template +// function. +bool PredFunction5Int(int v1, int v2, int v3, int v4, int v5) { + return v1 + v2 + v3 + v4 + v5 > 0; +} +bool PredFunction5Bool(Bool v1, Bool v2, Bool v3, Bool v4, Bool v5) { + return v1 + v2 + v3 + v4 + v5 > 0; +} + +// A 5-ary predicate functor. +struct PredFunctor5 { + template + bool operator()(const T1& v1, + const T2& v2, + const T3& v3, + const T4& v4, + const T5& v5) { + return v1 + v2 + v3 + v4 + v5 > 0; + } +}; + +// A 5-ary predicate-formatter function. +template +testing::AssertionResult PredFormatFunction5(const char* e1, + const char* e2, + const char* e3, + const char* e4, + const char* e5, + const T1& v1, + const T2& v2, + const T3& v3, + const T4& v4, + const T5& v5) { + if (PredFunction5(v1, v2, v3, v4, v5)) + return testing::AssertionSuccess(); + + return testing::AssertionFailure() + << e1 << " + " << e2 << " + " << e3 << " + " << e4 << " + " << e5 + << " is expected to be positive, but evaluates to " + << v1 + v2 + v3 + v4 + v5 << "."; +} + +// A 5-ary predicate-formatter functor. +struct PredFormatFunctor5 { + template + testing::AssertionResult operator()(const char* e1, + const char* e2, + const char* e3, + const char* e4, + const char* e5, + const T1& v1, + const T2& v2, + const T3& v3, + const T4& v4, + const T5& v5) const { + return PredFormatFunction5(e1, e2, e3, e4, e5, v1, v2, v3, v4, v5); + } +}; + +// Tests for {EXPECT|ASSERT}_PRED_FORMAT5. + +class Predicate5Test : public testing::Test { + protected: + virtual void SetUp() { + expected_to_finish_ = true; + finished_ = false; + n1_ = n2_ = n3_ = n4_ = n5_ = 0; + } + + virtual void TearDown() { + // Verifies that each of the predicate's arguments was evaluated + // exactly once. + EXPECT_EQ(1, n1_) << + "The predicate assertion didn't evaluate argument 2 " + "exactly once."; + EXPECT_EQ(1, n2_) << + "The predicate assertion didn't evaluate argument 3 " + "exactly once."; + EXPECT_EQ(1, n3_) << + "The predicate assertion didn't evaluate argument 4 " + "exactly once."; + EXPECT_EQ(1, n4_) << + "The predicate assertion didn't evaluate argument 5 " + "exactly once."; + EXPECT_EQ(1, n5_) << + "The predicate assertion didn't evaluate argument 6 " + "exactly once."; + + // Verifies that the control flow in the test function is expected. + if (expected_to_finish_ && !finished_) { + FAIL() << "The predicate assertion unexpactedly aborted the test."; + } else if (!expected_to_finish_ && finished_) { + FAIL() << "The failed predicate assertion didn't abort the test " + "as expected."; + } + } + + // true iff the test function is expected to run to finish. + static bool expected_to_finish_; + + // true iff the test function did run to finish. + static bool finished_; + + static int n1_; + static int n2_; + static int n3_; + static int n4_; + static int n5_; +}; + +bool Predicate5Test::expected_to_finish_; +bool Predicate5Test::finished_; +int Predicate5Test::n1_; +int Predicate5Test::n2_; +int Predicate5Test::n3_; +int Predicate5Test::n4_; +int Predicate5Test::n5_; + +typedef Predicate5Test EXPECT_PRED_FORMAT5Test; +typedef Predicate5Test ASSERT_PRED_FORMAT5Test; +typedef Predicate5Test EXPECT_PRED5Test; +typedef Predicate5Test ASSERT_PRED5Test; + +// Tests a successful EXPECT_PRED5 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(EXPECT_PRED5Test, FunctionOnBuiltInTypeSuccess) { + EXPECT_PRED5(PredFunction5Int, + ++n1_, + ++n2_, + ++n3_, + ++n4_, + ++n5_); + finished_ = true; +} + +// Tests a successful EXPECT_PRED5 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(EXPECT_PRED5Test, FunctionOnUserTypeSuccess) { + EXPECT_PRED5(PredFunction5Bool, + Bool(++n1_), + Bool(++n2_), + Bool(++n3_), + Bool(++n4_), + Bool(++n5_)); + finished_ = true; +} + +// Tests a successful EXPECT_PRED5 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(EXPECT_PRED5Test, FunctorOnBuiltInTypeSuccess) { + EXPECT_PRED5(PredFunctor5(), + ++n1_, + ++n2_, + ++n3_, + ++n4_, + ++n5_); + finished_ = true; +} + +// Tests a successful EXPECT_PRED5 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(EXPECT_PRED5Test, FunctorOnUserTypeSuccess) { + EXPECT_PRED5(PredFunctor5(), + Bool(++n1_), + Bool(++n2_), + Bool(++n3_), + Bool(++n4_), + Bool(++n5_)); + finished_ = true; +} + +// Tests a failed EXPECT_PRED5 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(EXPECT_PRED5Test, FunctionOnBuiltInTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED5(PredFunction5Int, + n1_++, + n2_++, + n3_++, + n4_++, + n5_++); + finished_ = true; + }, ""); +} + +// Tests a failed EXPECT_PRED5 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(EXPECT_PRED5Test, FunctionOnUserTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED5(PredFunction5Bool, + Bool(n1_++), + Bool(n2_++), + Bool(n3_++), + Bool(n4_++), + Bool(n5_++)); + finished_ = true; + }, ""); +} + +// Tests a failed EXPECT_PRED5 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(EXPECT_PRED5Test, FunctorOnBuiltInTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED5(PredFunctor5(), + n1_++, + n2_++, + n3_++, + n4_++, + n5_++); + finished_ = true; + }, ""); +} + +// Tests a failed EXPECT_PRED5 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(EXPECT_PRED5Test, FunctorOnUserTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED5(PredFunctor5(), + Bool(n1_++), + Bool(n2_++), + Bool(n3_++), + Bool(n4_++), + Bool(n5_++)); + finished_ = true; + }, ""); +} + +// Tests a successful ASSERT_PRED5 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(ASSERT_PRED5Test, FunctionOnBuiltInTypeSuccess) { + ASSERT_PRED5(PredFunction5Int, + ++n1_, + ++n2_, + ++n3_, + ++n4_, + ++n5_); + finished_ = true; +} + +// Tests a successful ASSERT_PRED5 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(ASSERT_PRED5Test, FunctionOnUserTypeSuccess) { + ASSERT_PRED5(PredFunction5Bool, + Bool(++n1_), + Bool(++n2_), + Bool(++n3_), + Bool(++n4_), + Bool(++n5_)); + finished_ = true; +} + +// Tests a successful ASSERT_PRED5 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(ASSERT_PRED5Test, FunctorOnBuiltInTypeSuccess) { + ASSERT_PRED5(PredFunctor5(), + ++n1_, + ++n2_, + ++n3_, + ++n4_, + ++n5_); + finished_ = true; +} + +// Tests a successful ASSERT_PRED5 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(ASSERT_PRED5Test, FunctorOnUserTypeSuccess) { + ASSERT_PRED5(PredFunctor5(), + Bool(++n1_), + Bool(++n2_), + Bool(++n3_), + Bool(++n4_), + Bool(++n5_)); + finished_ = true; +} + +// Tests a failed ASSERT_PRED5 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(ASSERT_PRED5Test, FunctionOnBuiltInTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED5(PredFunction5Int, + n1_++, + n2_++, + n3_++, + n4_++, + n5_++); + finished_ = true; + }, ""); +} + +// Tests a failed ASSERT_PRED5 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(ASSERT_PRED5Test, FunctionOnUserTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED5(PredFunction5Bool, + Bool(n1_++), + Bool(n2_++), + Bool(n3_++), + Bool(n4_++), + Bool(n5_++)); + finished_ = true; + }, ""); +} + +// Tests a failed ASSERT_PRED5 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(ASSERT_PRED5Test, FunctorOnBuiltInTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED5(PredFunctor5(), + n1_++, + n2_++, + n3_++, + n4_++, + n5_++); + finished_ = true; + }, ""); +} + +// Tests a failed ASSERT_PRED5 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(ASSERT_PRED5Test, FunctorOnUserTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED5(PredFunctor5(), + Bool(n1_++), + Bool(n2_++), + Bool(n3_++), + Bool(n4_++), + Bool(n5_++)); + finished_ = true; + }, ""); +} + +// Tests a successful EXPECT_PRED_FORMAT5 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(EXPECT_PRED_FORMAT5Test, FunctionOnBuiltInTypeSuccess) { + EXPECT_PRED_FORMAT5(PredFormatFunction5, + ++n1_, + ++n2_, + ++n3_, + ++n4_, + ++n5_); + finished_ = true; +} + +// Tests a successful EXPECT_PRED_FORMAT5 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(EXPECT_PRED_FORMAT5Test, FunctionOnUserTypeSuccess) { + EXPECT_PRED_FORMAT5(PredFormatFunction5, + Bool(++n1_), + Bool(++n2_), + Bool(++n3_), + Bool(++n4_), + Bool(++n5_)); + finished_ = true; +} + +// Tests a successful EXPECT_PRED_FORMAT5 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(EXPECT_PRED_FORMAT5Test, FunctorOnBuiltInTypeSuccess) { + EXPECT_PRED_FORMAT5(PredFormatFunctor5(), + ++n1_, + ++n2_, + ++n3_, + ++n4_, + ++n5_); + finished_ = true; +} + +// Tests a successful EXPECT_PRED_FORMAT5 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(EXPECT_PRED_FORMAT5Test, FunctorOnUserTypeSuccess) { + EXPECT_PRED_FORMAT5(PredFormatFunctor5(), + Bool(++n1_), + Bool(++n2_), + Bool(++n3_), + Bool(++n4_), + Bool(++n5_)); + finished_ = true; +} + +// Tests a failed EXPECT_PRED_FORMAT5 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(EXPECT_PRED_FORMAT5Test, FunctionOnBuiltInTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED_FORMAT5(PredFormatFunction5, + n1_++, + n2_++, + n3_++, + n4_++, + n5_++); + finished_ = true; + }, ""); +} + +// Tests a failed EXPECT_PRED_FORMAT5 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(EXPECT_PRED_FORMAT5Test, FunctionOnUserTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED_FORMAT5(PredFormatFunction5, + Bool(n1_++), + Bool(n2_++), + Bool(n3_++), + Bool(n4_++), + Bool(n5_++)); + finished_ = true; + }, ""); +} + +// Tests a failed EXPECT_PRED_FORMAT5 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(EXPECT_PRED_FORMAT5Test, FunctorOnBuiltInTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED_FORMAT5(PredFormatFunctor5(), + n1_++, + n2_++, + n3_++, + n4_++, + n5_++); + finished_ = true; + }, ""); +} + +// Tests a failed EXPECT_PRED_FORMAT5 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(EXPECT_PRED_FORMAT5Test, FunctorOnUserTypeFailure) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED_FORMAT5(PredFormatFunctor5(), + Bool(n1_++), + Bool(n2_++), + Bool(n3_++), + Bool(n4_++), + Bool(n5_++)); + finished_ = true; + }, ""); +} + +// Tests a successful ASSERT_PRED_FORMAT5 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(ASSERT_PRED_FORMAT5Test, FunctionOnBuiltInTypeSuccess) { + ASSERT_PRED_FORMAT5(PredFormatFunction5, + ++n1_, + ++n2_, + ++n3_, + ++n4_, + ++n5_); + finished_ = true; +} + +// Tests a successful ASSERT_PRED_FORMAT5 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(ASSERT_PRED_FORMAT5Test, FunctionOnUserTypeSuccess) { + ASSERT_PRED_FORMAT5(PredFormatFunction5, + Bool(++n1_), + Bool(++n2_), + Bool(++n3_), + Bool(++n4_), + Bool(++n5_)); + finished_ = true; +} + +// Tests a successful ASSERT_PRED_FORMAT5 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(ASSERT_PRED_FORMAT5Test, FunctorOnBuiltInTypeSuccess) { + ASSERT_PRED_FORMAT5(PredFormatFunctor5(), + ++n1_, + ++n2_, + ++n3_, + ++n4_, + ++n5_); + finished_ = true; +} + +// Tests a successful ASSERT_PRED_FORMAT5 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(ASSERT_PRED_FORMAT5Test, FunctorOnUserTypeSuccess) { + ASSERT_PRED_FORMAT5(PredFormatFunctor5(), + Bool(++n1_), + Bool(++n2_), + Bool(++n3_), + Bool(++n4_), + Bool(++n5_)); + finished_ = true; +} + +// Tests a failed ASSERT_PRED_FORMAT5 where the +// predicate-formatter is a function on a built-in type (int). +TEST_F(ASSERT_PRED_FORMAT5Test, FunctionOnBuiltInTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED_FORMAT5(PredFormatFunction5, + n1_++, + n2_++, + n3_++, + n4_++, + n5_++); + finished_ = true; + }, ""); +} + +// Tests a failed ASSERT_PRED_FORMAT5 where the +// predicate-formatter is a function on a user-defined type (Bool). +TEST_F(ASSERT_PRED_FORMAT5Test, FunctionOnUserTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED_FORMAT5(PredFormatFunction5, + Bool(n1_++), + Bool(n2_++), + Bool(n3_++), + Bool(n4_++), + Bool(n5_++)); + finished_ = true; + }, ""); +} + +// Tests a failed ASSERT_PRED_FORMAT5 where the +// predicate-formatter is a functor on a built-in type (int). +TEST_F(ASSERT_PRED_FORMAT5Test, FunctorOnBuiltInTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED_FORMAT5(PredFormatFunctor5(), + n1_++, + n2_++, + n3_++, + n4_++, + n5_++); + finished_ = true; + }, ""); +} + +// Tests a failed ASSERT_PRED_FORMAT5 where the +// predicate-formatter is a functor on a user-defined type (Bool). +TEST_F(ASSERT_PRED_FORMAT5Test, FunctorOnUserTypeFailure) { + expected_to_finish_ = false; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED_FORMAT5(PredFormatFunctor5(), + Bool(n1_++), + Bool(n2_++), + Bool(n3_++), + Bool(n4_++), + Bool(n5_++)); + finished_ = true; + }, ""); +} diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_prod_test.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest_prod_test.cc new file mode 100644 index 00000000..060abce1 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_prod_test.cc @@ -0,0 +1,57 @@ +// Copyright 2006, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) +// +// Unit test for include/gtest/gtest_prod.h. + +#include "gtest/gtest.h" +#include "test/production.h" + +// Tests that private members can be accessed from a TEST declared as +// a friend of the class. +TEST(PrivateCodeTest, CanAccessPrivateMembers) { + PrivateCode a; + EXPECT_EQ(0, a.x_); + + a.set_x(1); + EXPECT_EQ(1, a.x_); +} + +typedef testing::Test PrivateCodeFixtureTest; + +// Tests that private members can be accessed from a TEST_F declared +// as a friend of the class. +TEST_F(PrivateCodeFixtureTest, CanAccessPrivateMembers) { + PrivateCode a; + EXPECT_EQ(0, a.x_); + + a.set_x(2); + EXPECT_EQ(2, a.x_); +} diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_repeat_test.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest_repeat_test.cc new file mode 100644 index 00000000..481012ad --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_repeat_test.cc @@ -0,0 +1,253 @@ +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +// Tests the --gtest_repeat=number flag. + +#include +#include +#include "gtest/gtest.h" + +// Indicates that this translation unit is part of Google Test's +// implementation. It must come before gtest-internal-inl.h is +// included, or there will be a compiler error. This trick is to +// prevent a user from accidentally including gtest-internal-inl.h in +// his code. +#define GTEST_IMPLEMENTATION_ 1 +#include "src/gtest-internal-inl.h" +#undef GTEST_IMPLEMENTATION_ + +namespace testing { + +GTEST_DECLARE_string_(death_test_style); +GTEST_DECLARE_string_(filter); +GTEST_DECLARE_int32_(repeat); + +} // namespace testing + +using testing::GTEST_FLAG(death_test_style); +using testing::GTEST_FLAG(filter); +using testing::GTEST_FLAG(repeat); + +namespace { + +// We need this when we are testing Google Test itself and therefore +// cannot use Google Test assertions. +#define GTEST_CHECK_INT_EQ_(expected, actual) \ + do {\ + const int expected_val = (expected);\ + const int actual_val = (actual);\ + if (::testing::internal::IsTrue(expected_val != actual_val)) {\ + ::std::cout << "Value of: " #actual "\n"\ + << " Actual: " << actual_val << "\n"\ + << "Expected: " #expected "\n"\ + << "Which is: " << expected_val << "\n";\ + ::testing::internal::posix::Abort();\ + }\ + } while (::testing::internal::AlwaysFalse()) + + +// Used for verifying that global environment set-up and tear-down are +// inside the gtest_repeat loop. + +int g_environment_set_up_count = 0; +int g_environment_tear_down_count = 0; + +class MyEnvironment : public testing::Environment { + public: + MyEnvironment() {} + virtual void SetUp() { g_environment_set_up_count++; } + virtual void TearDown() { g_environment_tear_down_count++; } +}; + +// A test that should fail. + +int g_should_fail_count = 0; + +TEST(FooTest, ShouldFail) { + g_should_fail_count++; + EXPECT_EQ(0, 1) << "Expected failure."; +} + +// A test that should pass. + +int g_should_pass_count = 0; + +TEST(FooTest, ShouldPass) { + g_should_pass_count++; +} + +// A test that contains a thread-safe death test and a fast death +// test. It should pass. + +int g_death_test_count = 0; + +TEST(BarDeathTest, ThreadSafeAndFast) { + g_death_test_count++; + + GTEST_FLAG(death_test_style) = "threadsafe"; + EXPECT_DEATH_IF_SUPPORTED(::testing::internal::posix::Abort(), ""); + + GTEST_FLAG(death_test_style) = "fast"; + EXPECT_DEATH_IF_SUPPORTED(::testing::internal::posix::Abort(), ""); +} + +#if GTEST_HAS_PARAM_TEST +int g_param_test_count = 0; + +const int kNumberOfParamTests = 10; + +class MyParamTest : public testing::TestWithParam {}; + +TEST_P(MyParamTest, ShouldPass) { + // TODO(vladl@google.com): Make parameter value checking robust + // WRT order of tests. + GTEST_CHECK_INT_EQ_(g_param_test_count % kNumberOfParamTests, GetParam()); + g_param_test_count++; +} +INSTANTIATE_TEST_CASE_P(MyParamSequence, + MyParamTest, + testing::Range(0, kNumberOfParamTests)); +#endif // GTEST_HAS_PARAM_TEST + +// Resets the count for each test. +void ResetCounts() { + g_environment_set_up_count = 0; + g_environment_tear_down_count = 0; + g_should_fail_count = 0; + g_should_pass_count = 0; + g_death_test_count = 0; +#if GTEST_HAS_PARAM_TEST + g_param_test_count = 0; +#endif // GTEST_HAS_PARAM_TEST +} + +// Checks that the count for each test is expected. +void CheckCounts(int expected) { + GTEST_CHECK_INT_EQ_(expected, g_environment_set_up_count); + GTEST_CHECK_INT_EQ_(expected, g_environment_tear_down_count); + GTEST_CHECK_INT_EQ_(expected, g_should_fail_count); + GTEST_CHECK_INT_EQ_(expected, g_should_pass_count); + GTEST_CHECK_INT_EQ_(expected, g_death_test_count); +#if GTEST_HAS_PARAM_TEST + GTEST_CHECK_INT_EQ_(expected * kNumberOfParamTests, g_param_test_count); +#endif // GTEST_HAS_PARAM_TEST +} + +// Tests the behavior of Google Test when --gtest_repeat is not specified. +void TestRepeatUnspecified() { + ResetCounts(); + GTEST_CHECK_INT_EQ_(1, RUN_ALL_TESTS()); + CheckCounts(1); +} + +// Tests the behavior of Google Test when --gtest_repeat has the given value. +void TestRepeat(int repeat) { + GTEST_FLAG(repeat) = repeat; + + ResetCounts(); + GTEST_CHECK_INT_EQ_(repeat > 0 ? 1 : 0, RUN_ALL_TESTS()); + CheckCounts(repeat); +} + +// Tests using --gtest_repeat when --gtest_filter specifies an empty +// set of tests. +void TestRepeatWithEmptyFilter(int repeat) { + GTEST_FLAG(repeat) = repeat; + GTEST_FLAG(filter) = "None"; + + ResetCounts(); + GTEST_CHECK_INT_EQ_(0, RUN_ALL_TESTS()); + CheckCounts(0); +} + +// Tests using --gtest_repeat when --gtest_filter specifies a set of +// successful tests. +void TestRepeatWithFilterForSuccessfulTests(int repeat) { + GTEST_FLAG(repeat) = repeat; + GTEST_FLAG(filter) = "*-*ShouldFail"; + + ResetCounts(); + GTEST_CHECK_INT_EQ_(0, RUN_ALL_TESTS()); + GTEST_CHECK_INT_EQ_(repeat, g_environment_set_up_count); + GTEST_CHECK_INT_EQ_(repeat, g_environment_tear_down_count); + GTEST_CHECK_INT_EQ_(0, g_should_fail_count); + GTEST_CHECK_INT_EQ_(repeat, g_should_pass_count); + GTEST_CHECK_INT_EQ_(repeat, g_death_test_count); +#if GTEST_HAS_PARAM_TEST + GTEST_CHECK_INT_EQ_(repeat * kNumberOfParamTests, g_param_test_count); +#endif // GTEST_HAS_PARAM_TEST +} + +// Tests using --gtest_repeat when --gtest_filter specifies a set of +// failed tests. +void TestRepeatWithFilterForFailedTests(int repeat) { + GTEST_FLAG(repeat) = repeat; + GTEST_FLAG(filter) = "*ShouldFail"; + + ResetCounts(); + GTEST_CHECK_INT_EQ_(1, RUN_ALL_TESTS()); + GTEST_CHECK_INT_EQ_(repeat, g_environment_set_up_count); + GTEST_CHECK_INT_EQ_(repeat, g_environment_tear_down_count); + GTEST_CHECK_INT_EQ_(repeat, g_should_fail_count); + GTEST_CHECK_INT_EQ_(0, g_should_pass_count); + GTEST_CHECK_INT_EQ_(0, g_death_test_count); +#if GTEST_HAS_PARAM_TEST + GTEST_CHECK_INT_EQ_(0, g_param_test_count); +#endif // GTEST_HAS_PARAM_TEST +} + +} // namespace + +int main(int argc, char **argv) { + testing::InitGoogleTest(&argc, argv); + testing::AddGlobalTestEnvironment(new MyEnvironment); + + TestRepeatUnspecified(); + TestRepeat(0); + TestRepeat(1); + TestRepeat(5); + + TestRepeatWithEmptyFilter(2); + TestRepeatWithEmptyFilter(3); + + TestRepeatWithFilterForSuccessfulTests(3); + + TestRepeatWithFilterForFailedTests(4); + + // It would be nice to verify that the tests indeed loop forever + // when GTEST_FLAG(repeat) is negative, but this test will be quite + // complicated to write. Since this flag is for interactive + // debugging only and doesn't affect the normal test result, such a + // test would be an overkill. + + printf("PASS\n"); + return 0; +} diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_shuffle_test.py b/thirdparty/protobuf-2.6.1/gtest/test/gtest_shuffle_test.py new file mode 100644 index 00000000..30d0303d --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_shuffle_test.py @@ -0,0 +1,325 @@ +#!/usr/bin/env python +# +# Copyright 2009 Google Inc. All Rights Reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Verifies that test shuffling works.""" + +__author__ = 'wan@google.com (Zhanyong Wan)' + +import os +import gtest_test_utils + +# Command to run the gtest_shuffle_test_ program. +COMMAND = gtest_test_utils.GetTestExecutablePath('gtest_shuffle_test_') + +# The environment variables for test sharding. +TOTAL_SHARDS_ENV_VAR = 'GTEST_TOTAL_SHARDS' +SHARD_INDEX_ENV_VAR = 'GTEST_SHARD_INDEX' + +TEST_FILTER = 'A*.A:A*.B:C*' + +ALL_TESTS = [] +ACTIVE_TESTS = [] +FILTERED_TESTS = [] +SHARDED_TESTS = [] + +SHUFFLED_ALL_TESTS = [] +SHUFFLED_ACTIVE_TESTS = [] +SHUFFLED_FILTERED_TESTS = [] +SHUFFLED_SHARDED_TESTS = [] + + +def AlsoRunDisabledTestsFlag(): + return '--gtest_also_run_disabled_tests' + + +def FilterFlag(test_filter): + return '--gtest_filter=%s' % (test_filter,) + + +def RepeatFlag(n): + return '--gtest_repeat=%s' % (n,) + + +def ShuffleFlag(): + return '--gtest_shuffle' + + +def RandomSeedFlag(n): + return '--gtest_random_seed=%s' % (n,) + + +def RunAndReturnOutput(extra_env, args): + """Runs the test program and returns its output.""" + + environ_copy = os.environ.copy() + environ_copy.update(extra_env) + + return gtest_test_utils.Subprocess([COMMAND] + args, env=environ_copy).output + + +def GetTestsForAllIterations(extra_env, args): + """Runs the test program and returns a list of test lists. + + Args: + extra_env: a map from environment variables to their values + args: command line flags to pass to gtest_shuffle_test_ + + Returns: + A list where the i-th element is the list of tests run in the i-th + test iteration. + """ + + test_iterations = [] + for line in RunAndReturnOutput(extra_env, args).split('\n'): + if line.startswith('----'): + tests = [] + test_iterations.append(tests) + elif line.strip(): + tests.append(line.strip()) # 'TestCaseName.TestName' + + return test_iterations + + +def GetTestCases(tests): + """Returns a list of test cases in the given full test names. + + Args: + tests: a list of full test names + + Returns: + A list of test cases from 'tests', in their original order. + Consecutive duplicates are removed. + """ + + test_cases = [] + for test in tests: + test_case = test.split('.')[0] + if not test_case in test_cases: + test_cases.append(test_case) + + return test_cases + + +def CalculateTestLists(): + """Calculates the list of tests run under different flags.""" + + if not ALL_TESTS: + ALL_TESTS.extend( + GetTestsForAllIterations({}, [AlsoRunDisabledTestsFlag()])[0]) + + if not ACTIVE_TESTS: + ACTIVE_TESTS.extend(GetTestsForAllIterations({}, [])[0]) + + if not FILTERED_TESTS: + FILTERED_TESTS.extend( + GetTestsForAllIterations({}, [FilterFlag(TEST_FILTER)])[0]) + + if not SHARDED_TESTS: + SHARDED_TESTS.extend( + GetTestsForAllIterations({TOTAL_SHARDS_ENV_VAR: '3', + SHARD_INDEX_ENV_VAR: '1'}, + [])[0]) + + if not SHUFFLED_ALL_TESTS: + SHUFFLED_ALL_TESTS.extend(GetTestsForAllIterations( + {}, [AlsoRunDisabledTestsFlag(), ShuffleFlag(), RandomSeedFlag(1)])[0]) + + if not SHUFFLED_ACTIVE_TESTS: + SHUFFLED_ACTIVE_TESTS.extend(GetTestsForAllIterations( + {}, [ShuffleFlag(), RandomSeedFlag(1)])[0]) + + if not SHUFFLED_FILTERED_TESTS: + SHUFFLED_FILTERED_TESTS.extend(GetTestsForAllIterations( + {}, [ShuffleFlag(), RandomSeedFlag(1), FilterFlag(TEST_FILTER)])[0]) + + if not SHUFFLED_SHARDED_TESTS: + SHUFFLED_SHARDED_TESTS.extend( + GetTestsForAllIterations({TOTAL_SHARDS_ENV_VAR: '3', + SHARD_INDEX_ENV_VAR: '1'}, + [ShuffleFlag(), RandomSeedFlag(1)])[0]) + + +class GTestShuffleUnitTest(gtest_test_utils.TestCase): + """Tests test shuffling.""" + + def setUp(self): + CalculateTestLists() + + def testShufflePreservesNumberOfTests(self): + self.assertEqual(len(ALL_TESTS), len(SHUFFLED_ALL_TESTS)) + self.assertEqual(len(ACTIVE_TESTS), len(SHUFFLED_ACTIVE_TESTS)) + self.assertEqual(len(FILTERED_TESTS), len(SHUFFLED_FILTERED_TESTS)) + self.assertEqual(len(SHARDED_TESTS), len(SHUFFLED_SHARDED_TESTS)) + + def testShuffleChangesTestOrder(self): + self.assert_(SHUFFLED_ALL_TESTS != ALL_TESTS, SHUFFLED_ALL_TESTS) + self.assert_(SHUFFLED_ACTIVE_TESTS != ACTIVE_TESTS, SHUFFLED_ACTIVE_TESTS) + self.assert_(SHUFFLED_FILTERED_TESTS != FILTERED_TESTS, + SHUFFLED_FILTERED_TESTS) + self.assert_(SHUFFLED_SHARDED_TESTS != SHARDED_TESTS, + SHUFFLED_SHARDED_TESTS) + + def testShuffleChangesTestCaseOrder(self): + self.assert_(GetTestCases(SHUFFLED_ALL_TESTS) != GetTestCases(ALL_TESTS), + GetTestCases(SHUFFLED_ALL_TESTS)) + self.assert_( + GetTestCases(SHUFFLED_ACTIVE_TESTS) != GetTestCases(ACTIVE_TESTS), + GetTestCases(SHUFFLED_ACTIVE_TESTS)) + self.assert_( + GetTestCases(SHUFFLED_FILTERED_TESTS) != GetTestCases(FILTERED_TESTS), + GetTestCases(SHUFFLED_FILTERED_TESTS)) + self.assert_( + GetTestCases(SHUFFLED_SHARDED_TESTS) != GetTestCases(SHARDED_TESTS), + GetTestCases(SHUFFLED_SHARDED_TESTS)) + + def testShuffleDoesNotRepeatTest(self): + for test in SHUFFLED_ALL_TESTS: + self.assertEqual(1, SHUFFLED_ALL_TESTS.count(test), + '%s appears more than once' % (test,)) + for test in SHUFFLED_ACTIVE_TESTS: + self.assertEqual(1, SHUFFLED_ACTIVE_TESTS.count(test), + '%s appears more than once' % (test,)) + for test in SHUFFLED_FILTERED_TESTS: + self.assertEqual(1, SHUFFLED_FILTERED_TESTS.count(test), + '%s appears more than once' % (test,)) + for test in SHUFFLED_SHARDED_TESTS: + self.assertEqual(1, SHUFFLED_SHARDED_TESTS.count(test), + '%s appears more than once' % (test,)) + + def testShuffleDoesNotCreateNewTest(self): + for test in SHUFFLED_ALL_TESTS: + self.assert_(test in ALL_TESTS, '%s is an invalid test' % (test,)) + for test in SHUFFLED_ACTIVE_TESTS: + self.assert_(test in ACTIVE_TESTS, '%s is an invalid test' % (test,)) + for test in SHUFFLED_FILTERED_TESTS: + self.assert_(test in FILTERED_TESTS, '%s is an invalid test' % (test,)) + for test in SHUFFLED_SHARDED_TESTS: + self.assert_(test in SHARDED_TESTS, '%s is an invalid test' % (test,)) + + def testShuffleIncludesAllTests(self): + for test in ALL_TESTS: + self.assert_(test in SHUFFLED_ALL_TESTS, '%s is missing' % (test,)) + for test in ACTIVE_TESTS: + self.assert_(test in SHUFFLED_ACTIVE_TESTS, '%s is missing' % (test,)) + for test in FILTERED_TESTS: + self.assert_(test in SHUFFLED_FILTERED_TESTS, '%s is missing' % (test,)) + for test in SHARDED_TESTS: + self.assert_(test in SHUFFLED_SHARDED_TESTS, '%s is missing' % (test,)) + + def testShuffleLeavesDeathTestsAtFront(self): + non_death_test_found = False + for test in SHUFFLED_ACTIVE_TESTS: + if 'DeathTest.' in test: + self.assert_(not non_death_test_found, + '%s appears after a non-death test' % (test,)) + else: + non_death_test_found = True + + def _VerifyTestCasesDoNotInterleave(self, tests): + test_cases = [] + for test in tests: + [test_case, _] = test.split('.') + if test_cases and test_cases[-1] != test_case: + test_cases.append(test_case) + self.assertEqual(1, test_cases.count(test_case), + 'Test case %s is not grouped together in %s' % + (test_case, tests)) + + def testShuffleDoesNotInterleaveTestCases(self): + self._VerifyTestCasesDoNotInterleave(SHUFFLED_ALL_TESTS) + self._VerifyTestCasesDoNotInterleave(SHUFFLED_ACTIVE_TESTS) + self._VerifyTestCasesDoNotInterleave(SHUFFLED_FILTERED_TESTS) + self._VerifyTestCasesDoNotInterleave(SHUFFLED_SHARDED_TESTS) + + def testShuffleRestoresOrderAfterEachIteration(self): + # Get the test lists in all 3 iterations, using random seed 1, 2, + # and 3 respectively. Google Test picks a different seed in each + # iteration, and this test depends on the current implementation + # picking successive numbers. This dependency is not ideal, but + # makes the test much easier to write. + [tests_in_iteration1, tests_in_iteration2, tests_in_iteration3] = ( + GetTestsForAllIterations( + {}, [ShuffleFlag(), RandomSeedFlag(1), RepeatFlag(3)])) + + # Make sure running the tests with random seed 1 gets the same + # order as in iteration 1 above. + [tests_with_seed1] = GetTestsForAllIterations( + {}, [ShuffleFlag(), RandomSeedFlag(1)]) + self.assertEqual(tests_in_iteration1, tests_with_seed1) + + # Make sure running the tests with random seed 2 gets the same + # order as in iteration 2 above. Success means that Google Test + # correctly restores the test order before re-shuffling at the + # beginning of iteration 2. + [tests_with_seed2] = GetTestsForAllIterations( + {}, [ShuffleFlag(), RandomSeedFlag(2)]) + self.assertEqual(tests_in_iteration2, tests_with_seed2) + + # Make sure running the tests with random seed 3 gets the same + # order as in iteration 3 above. Success means that Google Test + # correctly restores the test order before re-shuffling at the + # beginning of iteration 3. + [tests_with_seed3] = GetTestsForAllIterations( + {}, [ShuffleFlag(), RandomSeedFlag(3)]) + self.assertEqual(tests_in_iteration3, tests_with_seed3) + + def testShuffleGeneratesNewOrderInEachIteration(self): + [tests_in_iteration1, tests_in_iteration2, tests_in_iteration3] = ( + GetTestsForAllIterations( + {}, [ShuffleFlag(), RandomSeedFlag(1), RepeatFlag(3)])) + + self.assert_(tests_in_iteration1 != tests_in_iteration2, + tests_in_iteration1) + self.assert_(tests_in_iteration1 != tests_in_iteration3, + tests_in_iteration1) + self.assert_(tests_in_iteration2 != tests_in_iteration3, + tests_in_iteration2) + + def testShuffleShardedTestsPreservesPartition(self): + # If we run M tests on N shards, the same M tests should be run in + # total, regardless of the random seeds used by the shards. + [tests1] = GetTestsForAllIterations({TOTAL_SHARDS_ENV_VAR: '3', + SHARD_INDEX_ENV_VAR: '0'}, + [ShuffleFlag(), RandomSeedFlag(1)]) + [tests2] = GetTestsForAllIterations({TOTAL_SHARDS_ENV_VAR: '3', + SHARD_INDEX_ENV_VAR: '1'}, + [ShuffleFlag(), RandomSeedFlag(20)]) + [tests3] = GetTestsForAllIterations({TOTAL_SHARDS_ENV_VAR: '3', + SHARD_INDEX_ENV_VAR: '2'}, + [ShuffleFlag(), RandomSeedFlag(25)]) + sorted_sharded_tests = tests1 + tests2 + tests3 + sorted_sharded_tests.sort() + sorted_active_tests = [] + sorted_active_tests.extend(ACTIVE_TESTS) + sorted_active_tests.sort() + self.assertEqual(sorted_active_tests, sorted_sharded_tests) + +if __name__ == '__main__': + gtest_test_utils.Main() diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_shuffle_test_.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest_shuffle_test_.cc new file mode 100644 index 00000000..6fb441bd --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_shuffle_test_.cc @@ -0,0 +1,103 @@ +// Copyright 2009, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +// Verifies that test shuffling works. + +#include "gtest/gtest.h" + +namespace { + +using ::testing::EmptyTestEventListener; +using ::testing::InitGoogleTest; +using ::testing::Message; +using ::testing::Test; +using ::testing::TestEventListeners; +using ::testing::TestInfo; +using ::testing::UnitTest; +using ::testing::internal::scoped_ptr; + +// The test methods are empty, as the sole purpose of this program is +// to print the test names before/after shuffling. + +class A : public Test {}; +TEST_F(A, A) {} +TEST_F(A, B) {} + +TEST(ADeathTest, A) {} +TEST(ADeathTest, B) {} +TEST(ADeathTest, C) {} + +TEST(B, A) {} +TEST(B, B) {} +TEST(B, C) {} +TEST(B, DISABLED_D) {} +TEST(B, DISABLED_E) {} + +TEST(BDeathTest, A) {} +TEST(BDeathTest, B) {} + +TEST(C, A) {} +TEST(C, B) {} +TEST(C, C) {} +TEST(C, DISABLED_D) {} + +TEST(CDeathTest, A) {} + +TEST(DISABLED_D, A) {} +TEST(DISABLED_D, DISABLED_B) {} + +// This printer prints the full test names only, starting each test +// iteration with a "----" marker. +class TestNamePrinter : public EmptyTestEventListener { + public: + virtual void OnTestIterationStart(const UnitTest& /* unit_test */, + int /* iteration */) { + printf("----\n"); + } + + virtual void OnTestStart(const TestInfo& test_info) { + printf("%s.%s\n", test_info.test_case_name(), test_info.name()); + } +}; + +} // namespace + +int main(int argc, char **argv) { + InitGoogleTest(&argc, argv); + + // Replaces the default printer with TestNamePrinter, which prints + // the test name only. + TestEventListeners& listeners = UnitTest::GetInstance()->listeners(); + delete listeners.Release(listeners.default_result_printer()); + listeners.Append(new TestNamePrinter); + + return RUN_ALL_TESTS(); +} diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_sole_header_test.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest_sole_header_test.cc new file mode 100644 index 00000000..ccd091a2 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_sole_header_test.cc @@ -0,0 +1,57 @@ +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: mheule@google.com (Markus Heule) +// +// This test verifies that it's possible to use Google Test by including +// the gtest.h header file alone. + +#include "gtest/gtest.h" + +namespace { + +void Subroutine() { + EXPECT_EQ(42, 42); +} + +TEST(NoFatalFailureTest, ExpectNoFatalFailure) { + EXPECT_NO_FATAL_FAILURE(;); + EXPECT_NO_FATAL_FAILURE(SUCCEED()); + EXPECT_NO_FATAL_FAILURE(Subroutine()); + EXPECT_NO_FATAL_FAILURE({ SUCCEED(); }); +} + +TEST(NoFatalFailureTest, AssertNoFatalFailure) { + ASSERT_NO_FATAL_FAILURE(;); + ASSERT_NO_FATAL_FAILURE(SUCCEED()); + ASSERT_NO_FATAL_FAILURE(Subroutine()); + ASSERT_NO_FATAL_FAILURE({ SUCCEED(); }); +} + +} // namespace diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_stress_test.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest_stress_test.cc new file mode 100644 index 00000000..e7daa430 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_stress_test.cc @@ -0,0 +1,256 @@ +// Copyright 2007, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +// Tests that SCOPED_TRACE() and various Google Test assertions can be +// used in a large number of threads concurrently. + +#include "gtest/gtest.h" + +#include +#include + +// We must define this macro in order to #include +// gtest-internal-inl.h. This is how Google Test prevents a user from +// accidentally depending on its internal implementation. +#define GTEST_IMPLEMENTATION_ 1 +#include "src/gtest-internal-inl.h" +#undef GTEST_IMPLEMENTATION_ + +#if GTEST_IS_THREADSAFE + +namespace testing { +namespace { + +using internal::Notification; +using internal::TestPropertyKeyIs; +using internal::ThreadWithParam; +using internal::scoped_ptr; + +// In order to run tests in this file, for platforms where Google Test is +// thread safe, implement ThreadWithParam. See the description of its API +// in gtest-port.h, where it is defined for already supported platforms. + +// How many threads to create? +const int kThreadCount = 50; + +std::string IdToKey(int id, const char* suffix) { + Message key; + key << "key_" << id << "_" << suffix; + return key.GetString(); +} + +std::string IdToString(int id) { + Message id_message; + id_message << id; + return id_message.GetString(); +} + +void ExpectKeyAndValueWereRecordedForId( + const std::vector& properties, + int id, const char* suffix) { + TestPropertyKeyIs matches_key(IdToKey(id, suffix).c_str()); + const std::vector::const_iterator property = + std::find_if(properties.begin(), properties.end(), matches_key); + ASSERT_TRUE(property != properties.end()) + << "expecting " << suffix << " value for id " << id; + EXPECT_STREQ(IdToString(id).c_str(), property->value()); +} + +// Calls a large number of Google Test assertions, where exactly one of them +// will fail. +void ManyAsserts(int id) { + GTEST_LOG_(INFO) << "Thread #" << id << " running..."; + + SCOPED_TRACE(Message() << "Thread #" << id); + + for (int i = 0; i < kThreadCount; i++) { + SCOPED_TRACE(Message() << "Iteration #" << i); + + // A bunch of assertions that should succeed. + EXPECT_TRUE(true); + ASSERT_FALSE(false) << "This shouldn't fail."; + EXPECT_STREQ("a", "a"); + ASSERT_LE(5, 6); + EXPECT_EQ(i, i) << "This shouldn't fail."; + + // RecordProperty() should interact safely with other threads as well. + // The shared_key forces property updates. + Test::RecordProperty(IdToKey(id, "string").c_str(), IdToString(id).c_str()); + Test::RecordProperty(IdToKey(id, "int").c_str(), id); + Test::RecordProperty("shared_key", IdToString(id).c_str()); + + // This assertion should fail kThreadCount times per thread. It + // is for testing whether Google Test can handle failed assertions in a + // multi-threaded context. + EXPECT_LT(i, 0) << "This should always fail."; + } +} + +void CheckTestFailureCount(int expected_failures) { + const TestInfo* const info = UnitTest::GetInstance()->current_test_info(); + const TestResult* const result = info->result(); + GTEST_CHECK_(expected_failures == result->total_part_count()) + << "Logged " << result->total_part_count() << " failures " + << " vs. " << expected_failures << " expected"; +} + +// Tests using SCOPED_TRACE() and Google Test assertions in many threads +// concurrently. +TEST(StressTest, CanUseScopedTraceAndAssertionsInManyThreads) { + { + scoped_ptr > threads[kThreadCount]; + Notification threads_can_start; + for (int i = 0; i != kThreadCount; i++) + threads[i].reset(new ThreadWithParam(&ManyAsserts, + i, + &threads_can_start)); + + threads_can_start.Notify(); + + // Blocks until all the threads are done. + for (int i = 0; i != kThreadCount; i++) + threads[i]->Join(); + } + + // Ensures that kThreadCount*kThreadCount failures have been reported. + const TestInfo* const info = UnitTest::GetInstance()->current_test_info(); + const TestResult* const result = info->result(); + + std::vector properties; + // We have no access to the TestResult's list of properties but we can + // copy them one by one. + for (int i = 0; i < result->test_property_count(); ++i) + properties.push_back(result->GetTestProperty(i)); + + EXPECT_EQ(kThreadCount * 2 + 1, result->test_property_count()) + << "String and int values recorded on each thread, " + << "as well as one shared_key"; + for (int i = 0; i < kThreadCount; ++i) { + ExpectKeyAndValueWereRecordedForId(properties, i, "string"); + ExpectKeyAndValueWereRecordedForId(properties, i, "int"); + } + CheckTestFailureCount(kThreadCount*kThreadCount); +} + +void FailingThread(bool is_fatal) { + if (is_fatal) + FAIL() << "Fatal failure in some other thread. " + << "(This failure is expected.)"; + else + ADD_FAILURE() << "Non-fatal failure in some other thread. " + << "(This failure is expected.)"; +} + +void GenerateFatalFailureInAnotherThread(bool is_fatal) { + ThreadWithParam thread(&FailingThread, is_fatal, NULL); + thread.Join(); +} + +TEST(NoFatalFailureTest, ExpectNoFatalFailureIgnoresFailuresInOtherThreads) { + EXPECT_NO_FATAL_FAILURE(GenerateFatalFailureInAnotherThread(true)); + // We should only have one failure (the one from + // GenerateFatalFailureInAnotherThread()), since the EXPECT_NO_FATAL_FAILURE + // should succeed. + CheckTestFailureCount(1); +} + +void AssertNoFatalFailureIgnoresFailuresInOtherThreads() { + ASSERT_NO_FATAL_FAILURE(GenerateFatalFailureInAnotherThread(true)); +} +TEST(NoFatalFailureTest, AssertNoFatalFailureIgnoresFailuresInOtherThreads) { + // Using a subroutine, to make sure, that the test continues. + AssertNoFatalFailureIgnoresFailuresInOtherThreads(); + // We should only have one failure (the one from + // GenerateFatalFailureInAnotherThread()), since the EXPECT_NO_FATAL_FAILURE + // should succeed. + CheckTestFailureCount(1); +} + +TEST(FatalFailureTest, ExpectFatalFailureIgnoresFailuresInOtherThreads) { + // This statement should fail, since the current thread doesn't generate a + // fatal failure, only another one does. + EXPECT_FATAL_FAILURE(GenerateFatalFailureInAnotherThread(true), "expected"); + CheckTestFailureCount(2); +} + +TEST(FatalFailureOnAllThreadsTest, ExpectFatalFailureOnAllThreads) { + // This statement should succeed, because failures in all threads are + // considered. + EXPECT_FATAL_FAILURE_ON_ALL_THREADS( + GenerateFatalFailureInAnotherThread(true), "expected"); + CheckTestFailureCount(0); + // We need to add a failure, because main() checks that there are failures. + // But when only this test is run, we shouldn't have any failures. + ADD_FAILURE() << "This is an expected non-fatal failure."; +} + +TEST(NonFatalFailureTest, ExpectNonFatalFailureIgnoresFailuresInOtherThreads) { + // This statement should fail, since the current thread doesn't generate a + // fatal failure, only another one does. + EXPECT_NONFATAL_FAILURE(GenerateFatalFailureInAnotherThread(false), + "expected"); + CheckTestFailureCount(2); +} + +TEST(NonFatalFailureOnAllThreadsTest, ExpectNonFatalFailureOnAllThreads) { + // This statement should succeed, because failures in all threads are + // considered. + EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS( + GenerateFatalFailureInAnotherThread(false), "expected"); + CheckTestFailureCount(0); + // We need to add a failure, because main() checks that there are failures, + // But when only this test is run, we shouldn't have any failures. + ADD_FAILURE() << "This is an expected non-fatal failure."; +} + +} // namespace +} // namespace testing + +int main(int argc, char **argv) { + testing::InitGoogleTest(&argc, argv); + + const int result = RUN_ALL_TESTS(); // Expected to fail. + GTEST_CHECK_(result == 1) << "RUN_ALL_TESTS() did not fail as expected"; + + printf("\nPASS\n"); + return 0; +} + +#else +TEST(StressTest, + DISABLED_ThreadSafetyTestsAreSkippedWhenGoogleTestIsNotThreadSafe) { +} + +int main(int argc, char **argv) { + testing::InitGoogleTest(&argc, argv); + return RUN_ALL_TESTS(); +} +#endif // GTEST_IS_THREADSAFE diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_test_utils.py b/thirdparty/protobuf-2.6.1/gtest/test/gtest_test_utils.py new file mode 100644 index 00000000..6dd8db4b --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_test_utils.py @@ -0,0 +1,305 @@ +#!/usr/bin/env python +# +# Copyright 2006, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Unit test utilities for Google C++ Testing Framework.""" + +__author__ = 'wan@google.com (Zhanyong Wan)' + +import atexit +import os +import shutil +import sys +import tempfile +import unittest +_test_module = unittest + +# Suppresses the 'Import not at the top of the file' lint complaint. +# pylint: disable-msg=C6204 +try: + import subprocess + _SUBPROCESS_MODULE_AVAILABLE = True +except: + import popen2 + _SUBPROCESS_MODULE_AVAILABLE = False +# pylint: enable-msg=C6204 + +GTEST_OUTPUT_VAR_NAME = 'GTEST_OUTPUT' + +IS_WINDOWS = os.name == 'nt' +IS_CYGWIN = os.name == 'posix' and 'CYGWIN' in os.uname()[0] + +# Here we expose a class from a particular module, depending on the +# environment. The comment suppresses the 'Invalid variable name' lint +# complaint. +TestCase = _test_module.TestCase # pylint: disable-msg=C6409 + +# Initially maps a flag to its default value. After +# _ParseAndStripGTestFlags() is called, maps a flag to its actual value. +_flag_map = {'source_dir': os.path.dirname(sys.argv[0]), + 'build_dir': os.path.dirname(sys.argv[0])} +_gtest_flags_are_parsed = False + + +def _ParseAndStripGTestFlags(argv): + """Parses and strips Google Test flags from argv. This is idempotent.""" + + # Suppresses the lint complaint about a global variable since we need it + # here to maintain module-wide state. + global _gtest_flags_are_parsed # pylint: disable-msg=W0603 + if _gtest_flags_are_parsed: + return + + _gtest_flags_are_parsed = True + for flag in _flag_map: + # The environment variable overrides the default value. + if flag.upper() in os.environ: + _flag_map[flag] = os.environ[flag.upper()] + + # The command line flag overrides the environment variable. + i = 1 # Skips the program name. + while i < len(argv): + prefix = '--' + flag + '=' + if argv[i].startswith(prefix): + _flag_map[flag] = argv[i][len(prefix):] + del argv[i] + break + else: + # We don't increment i in case we just found a --gtest_* flag + # and removed it from argv. + i += 1 + + +def GetFlag(flag): + """Returns the value of the given flag.""" + + # In case GetFlag() is called before Main(), we always call + # _ParseAndStripGTestFlags() here to make sure the --gtest_* flags + # are parsed. + _ParseAndStripGTestFlags(sys.argv) + + return _flag_map[flag] + + +def GetSourceDir(): + """Returns the absolute path of the directory where the .py files are.""" + + return os.path.abspath(GetFlag('source_dir')) + + +def GetBuildDir(): + """Returns the absolute path of the directory where the test binaries are.""" + + return os.path.abspath(GetFlag('build_dir')) + + +_temp_dir = None + +def _RemoveTempDir(): + if _temp_dir: + shutil.rmtree(_temp_dir, ignore_errors=True) + +atexit.register(_RemoveTempDir) + + +def GetTempDir(): + """Returns a directory for temporary files.""" + + global _temp_dir + if not _temp_dir: + _temp_dir = tempfile.mkdtemp() + return _temp_dir + + +def GetTestExecutablePath(executable_name, build_dir=None): + """Returns the absolute path of the test binary given its name. + + The function will print a message and abort the program if the resulting file + doesn't exist. + + Args: + executable_name: name of the test binary that the test script runs. + build_dir: directory where to look for executables, by default + the result of GetBuildDir(). + + Returns: + The absolute path of the test binary. + """ + + path = os.path.abspath(os.path.join(build_dir or GetBuildDir(), + executable_name)) + if (IS_WINDOWS or IS_CYGWIN) and not path.endswith('.exe'): + path += '.exe' + + if not os.path.exists(path): + message = ( + 'Unable to find the test binary. Please make sure to provide path\n' + 'to the binary via the --build_dir flag or the BUILD_DIR\n' + 'environment variable.') + print >> sys.stderr, message + sys.exit(1) + + return path + + +def GetExitStatus(exit_code): + """Returns the argument to exit(), or -1 if exit() wasn't called. + + Args: + exit_code: the result value of os.system(command). + """ + + if os.name == 'nt': + # On Windows, os.WEXITSTATUS() doesn't work and os.system() returns + # the argument to exit() directly. + return exit_code + else: + # On Unix, os.WEXITSTATUS() must be used to extract the exit status + # from the result of os.system(). + if os.WIFEXITED(exit_code): + return os.WEXITSTATUS(exit_code) + else: + return -1 + + +class Subprocess: + def __init__(self, command, working_dir=None, capture_stderr=True, env=None): + """Changes into a specified directory, if provided, and executes a command. + + Restores the old directory afterwards. + + Args: + command: The command to run, in the form of sys.argv. + working_dir: The directory to change into. + capture_stderr: Determines whether to capture stderr in the output member + or to discard it. + env: Dictionary with environment to pass to the subprocess. + + Returns: + An object that represents outcome of the executed process. It has the + following attributes: + terminated_by_signal True iff the child process has been terminated + by a signal. + signal Sygnal that terminated the child process. + exited True iff the child process exited normally. + exit_code The code with which the child process exited. + output Child process's stdout and stderr output + combined in a string. + """ + + # The subprocess module is the preferrable way of running programs + # since it is available and behaves consistently on all platforms, + # including Windows. But it is only available starting in python 2.4. + # In earlier python versions, we revert to the popen2 module, which is + # available in python 2.0 and later but doesn't provide required + # functionality (Popen4) under Windows. This allows us to support Mac + # OS X 10.4 Tiger, which has python 2.3 installed. + if _SUBPROCESS_MODULE_AVAILABLE: + if capture_stderr: + stderr = subprocess.STDOUT + else: + stderr = subprocess.PIPE + + p = subprocess.Popen(command, + stdout=subprocess.PIPE, stderr=stderr, + cwd=working_dir, universal_newlines=True, env=env) + # communicate returns a tuple with the file obect for the child's + # output. + self.output = p.communicate()[0] + self._return_code = p.returncode + else: + old_dir = os.getcwd() + + def _ReplaceEnvDict(dest, src): + # Changes made by os.environ.clear are not inheritable by child + # processes until Python 2.6. To produce inheritable changes we have + # to delete environment items with the del statement. + for key in dest.keys(): + del dest[key] + dest.update(src) + + # When 'env' is not None, backup the environment variables and replace + # them with the passed 'env'. When 'env' is None, we simply use the + # current 'os.environ' for compatibility with the subprocess.Popen + # semantics used above. + if env is not None: + old_environ = os.environ.copy() + _ReplaceEnvDict(os.environ, env) + + try: + if working_dir is not None: + os.chdir(working_dir) + if capture_stderr: + p = popen2.Popen4(command) + else: + p = popen2.Popen3(command) + p.tochild.close() + self.output = p.fromchild.read() + ret_code = p.wait() + finally: + os.chdir(old_dir) + + # Restore the old environment variables + # if they were replaced. + if env is not None: + _ReplaceEnvDict(os.environ, old_environ) + + # Converts ret_code to match the semantics of + # subprocess.Popen.returncode. + if os.WIFSIGNALED(ret_code): + self._return_code = -os.WTERMSIG(ret_code) + else: # os.WIFEXITED(ret_code) should return True here. + self._return_code = os.WEXITSTATUS(ret_code) + + if self._return_code < 0: + self.terminated_by_signal = True + self.exited = False + self.signal = -self._return_code + else: + self.terminated_by_signal = False + self.exited = True + self.exit_code = self._return_code + + +def Main(): + """Runs the unit test.""" + + # We must call _ParseAndStripGTestFlags() before calling + # unittest.main(). Otherwise the latter will be confused by the + # --gtest_* flags. + _ParseAndStripGTestFlags(sys.argv) + # The tested binaries should not be writing XML output files unless the + # script explicitly instructs them to. + # TODO(vladl@google.com): Move this into Subprocess when we implement + # passing environment into it as a parameter. + if GTEST_OUTPUT_VAR_NAME in os.environ: + del os.environ[GTEST_OUTPUT_VAR_NAME] + + _test_module.main() diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_throw_on_failure_ex_test.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest_throw_on_failure_ex_test.cc new file mode 100644 index 00000000..8d46c76f --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_throw_on_failure_ex_test.cc @@ -0,0 +1,92 @@ +// Copyright 2009, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +// Tests Google Test's throw-on-failure mode with exceptions enabled. + +#include "gtest/gtest.h" + +#include +#include +#include +#include + +// Prints the given failure message and exits the program with +// non-zero. We use this instead of a Google Test assertion to +// indicate a failure, as the latter is been tested and cannot be +// relied on. +void Fail(const char* msg) { + printf("FAILURE: %s\n", msg); + fflush(stdout); + exit(1); +} + +// Tests that an assertion failure throws a subclass of +// std::runtime_error. +void TestFailureThrowsRuntimeError() { + testing::GTEST_FLAG(throw_on_failure) = true; + + // A successful assertion shouldn't throw. + try { + EXPECT_EQ(3, 3); + } catch(...) { + Fail("A successful assertion wrongfully threw."); + } + + // A failed assertion should throw a subclass of std::runtime_error. + try { + EXPECT_EQ(2, 3) << "Expected failure"; + } catch(const std::runtime_error& e) { + if (strstr(e.what(), "Expected failure") != NULL) + return; + + printf("%s", + "A failed assertion did throw an exception of the right type, " + "but the message is incorrect. Instead of containing \"Expected " + "failure\", it is:\n"); + Fail(e.what()); + } catch(...) { + Fail("A failed assertion threw the wrong type of exception."); + } + Fail("A failed assertion should've thrown but didn't."); +} + +int main(int argc, char** argv) { + testing::InitGoogleTest(&argc, argv); + + // We want to ensure that people can use Google Test assertions in + // other testing frameworks, as long as they initialize Google Test + // properly and set the thrown-on-failure mode. Therefore, we don't + // use Google Test's constructs for defining and running tests + // (e.g. TEST and RUN_ALL_TESTS) here. + + TestFailureThrowsRuntimeError(); + return 0; +} diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_throw_on_failure_test.py b/thirdparty/protobuf-2.6.1/gtest/test/gtest_throw_on_failure_test.py new file mode 100644 index 00000000..5678ffea --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_throw_on_failure_test.py @@ -0,0 +1,171 @@ +#!/usr/bin/env python +# +# Copyright 2009, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Tests Google Test's throw-on-failure mode with exceptions disabled. + +This script invokes gtest_throw_on_failure_test_ (a program written with +Google Test) with different environments and command line flags. +""" + +__author__ = 'wan@google.com (Zhanyong Wan)' + +import os +import gtest_test_utils + + +# Constants. + +# The command line flag for enabling/disabling the throw-on-failure mode. +THROW_ON_FAILURE = 'gtest_throw_on_failure' + +# Path to the gtest_throw_on_failure_test_ program, compiled with +# exceptions disabled. +EXE_PATH = gtest_test_utils.GetTestExecutablePath( + 'gtest_throw_on_failure_test_') + + +# Utilities. + + +def SetEnvVar(env_var, value): + """Sets an environment variable to a given value; unsets it when the + given value is None. + """ + + env_var = env_var.upper() + if value is not None: + os.environ[env_var] = value + elif env_var in os.environ: + del os.environ[env_var] + + +def Run(command): + """Runs a command; returns True/False if its exit code is/isn't 0.""" + + print 'Running "%s". . .' % ' '.join(command) + p = gtest_test_utils.Subprocess(command) + return p.exited and p.exit_code == 0 + + +# The tests. TODO(wan@google.com): refactor the class to share common +# logic with code in gtest_break_on_failure_unittest.py. +class ThrowOnFailureTest(gtest_test_utils.TestCase): + """Tests the throw-on-failure mode.""" + + def RunAndVerify(self, env_var_value, flag_value, should_fail): + """Runs gtest_throw_on_failure_test_ and verifies that it does + (or does not) exit with a non-zero code. + + Args: + env_var_value: value of the GTEST_BREAK_ON_FAILURE environment + variable; None if the variable should be unset. + flag_value: value of the --gtest_break_on_failure flag; + None if the flag should not be present. + should_fail: True iff the program is expected to fail. + """ + + SetEnvVar(THROW_ON_FAILURE, env_var_value) + + if env_var_value is None: + env_var_value_msg = ' is not set' + else: + env_var_value_msg = '=' + env_var_value + + if flag_value is None: + flag = '' + elif flag_value == '0': + flag = '--%s=0' % THROW_ON_FAILURE + else: + flag = '--%s' % THROW_ON_FAILURE + + command = [EXE_PATH] + if flag: + command.append(flag) + + if should_fail: + should_or_not = 'should' + else: + should_or_not = 'should not' + + failed = not Run(command) + + SetEnvVar(THROW_ON_FAILURE, None) + + msg = ('when %s%s, an assertion failure in "%s" %s cause a non-zero ' + 'exit code.' % + (THROW_ON_FAILURE, env_var_value_msg, ' '.join(command), + should_or_not)) + self.assert_(failed == should_fail, msg) + + def testDefaultBehavior(self): + """Tests the behavior of the default mode.""" + + self.RunAndVerify(env_var_value=None, flag_value=None, should_fail=False) + + def testThrowOnFailureEnvVar(self): + """Tests using the GTEST_THROW_ON_FAILURE environment variable.""" + + self.RunAndVerify(env_var_value='0', + flag_value=None, + should_fail=False) + self.RunAndVerify(env_var_value='1', + flag_value=None, + should_fail=True) + + def testThrowOnFailureFlag(self): + """Tests using the --gtest_throw_on_failure flag.""" + + self.RunAndVerify(env_var_value=None, + flag_value='0', + should_fail=False) + self.RunAndVerify(env_var_value=None, + flag_value='1', + should_fail=True) + + def testThrowOnFailureFlagOverridesEnvVar(self): + """Tests that --gtest_throw_on_failure overrides GTEST_THROW_ON_FAILURE.""" + + self.RunAndVerify(env_var_value='0', + flag_value='0', + should_fail=False) + self.RunAndVerify(env_var_value='0', + flag_value='1', + should_fail=True) + self.RunAndVerify(env_var_value='1', + flag_value='0', + should_fail=False) + self.RunAndVerify(env_var_value='1', + flag_value='1', + should_fail=True) + + +if __name__ == '__main__': + gtest_test_utils.Main() diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_throw_on_failure_test_.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest_throw_on_failure_test_.cc new file mode 100644 index 00000000..2b88fe3d --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_throw_on_failure_test_.cc @@ -0,0 +1,72 @@ +// Copyright 2009, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +// Tests Google Test's throw-on-failure mode with exceptions disabled. +// +// This program must be compiled with exceptions disabled. It will be +// invoked by gtest_throw_on_failure_test.py, and is expected to exit +// with non-zero in the throw-on-failure mode or 0 otherwise. + +#include "gtest/gtest.h" + +#include // for fflush, fprintf, NULL, etc. +#include // for exit +#include // for set_terminate + +// This terminate handler aborts the program using exit() rather than abort(). +// This avoids showing pop-ups on Windows systems and core dumps on Unix-like +// ones. +void TerminateHandler() { + fprintf(stderr, "%s\n", "Unhandled C++ exception terminating the program."); + fflush(NULL); + exit(1); +} + +int main(int argc, char** argv) { +#if GTEST_HAS_EXCEPTIONS + std::set_terminate(&TerminateHandler); +#endif + testing::InitGoogleTest(&argc, argv); + + // We want to ensure that people can use Google Test assertions in + // other testing frameworks, as long as they initialize Google Test + // properly and set the throw-on-failure mode. Therefore, we don't + // use Google Test's constructs for defining and running tests + // (e.g. TEST and RUN_ALL_TESTS) here. + + // In the throw-on-failure mode with exceptions disabled, this + // assertion will cause the program to exit with a non-zero code. + EXPECT_EQ(2, 3); + + // When not in the throw-on-failure mode, the control will reach + // here. + return 0; +} diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_uninitialized_test.py b/thirdparty/protobuf-2.6.1/gtest/test/gtest_uninitialized_test.py new file mode 100644 index 00000000..6ae57eee --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_uninitialized_test.py @@ -0,0 +1,70 @@ +#!/usr/bin/env python +# +# Copyright 2008, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Verifies that Google Test warns the user when not initialized properly.""" + +__author__ = 'wan@google.com (Zhanyong Wan)' + +import gtest_test_utils + + +COMMAND = gtest_test_utils.GetTestExecutablePath('gtest_uninitialized_test_') + + +def Assert(condition): + if not condition: + raise AssertionError + + +def AssertEq(expected, actual): + if expected != actual: + print 'Expected: %s' % (expected,) + print ' Actual: %s' % (actual,) + raise AssertionError + + +def TestExitCodeAndOutput(command): + """Runs the given command and verifies its exit code and output.""" + + # Verifies that 'command' exits with code 1. + p = gtest_test_utils.Subprocess(command) + Assert(p.exited) + AssertEq(1, p.exit_code) + Assert('InitGoogleTest' in p.output) + + +class GTestUninitializedTest(gtest_test_utils.TestCase): + def testExitCodeAndOutput(self): + TestExitCodeAndOutput(COMMAND) + + +if __name__ == '__main__': + gtest_test_utils.Main() diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_uninitialized_test_.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest_uninitialized_test_.cc new file mode 100644 index 00000000..44316987 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_uninitialized_test_.cc @@ -0,0 +1,43 @@ +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) + +#include "gtest/gtest.h" + +TEST(DummyTest, Dummy) { + // This test doesn't verify anything. We just need it to create a + // realistic stage for testing the behavior of Google Test when + // RUN_ALL_TESTS() is called without testing::InitGoogleTest() being + // called first. +} + +int main() { + return RUN_ALL_TESTS(); +} diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_unittest.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest_unittest.cc new file mode 100644 index 00000000..f4f30431 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_unittest.cc @@ -0,0 +1,7240 @@ +// Copyright 2005, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) +// +// Tests for Google Test itself. This verifies that the basic constructs of +// Google Test work. + +#include "gtest/gtest.h" + +// Verifies that the command line flag variables can be accessed +// in code once has been #included. +// Do not move it after other #includes. +TEST(CommandLineFlagsTest, CanBeAccessedInCodeOnceGTestHIsIncluded) { + bool dummy = testing::GTEST_FLAG(also_run_disabled_tests) + || testing::GTEST_FLAG(break_on_failure) + || testing::GTEST_FLAG(catch_exceptions) + || testing::GTEST_FLAG(color) != "unknown" + || testing::GTEST_FLAG(filter) != "unknown" + || testing::GTEST_FLAG(list_tests) + || testing::GTEST_FLAG(output) != "unknown" + || testing::GTEST_FLAG(print_time) + || testing::GTEST_FLAG(random_seed) + || testing::GTEST_FLAG(repeat) > 0 + || testing::GTEST_FLAG(show_internal_stack_frames) + || testing::GTEST_FLAG(shuffle) + || testing::GTEST_FLAG(stack_trace_depth) > 0 + || testing::GTEST_FLAG(stream_result_to) != "unknown" + || testing::GTEST_FLAG(throw_on_failure); + EXPECT_TRUE(dummy || !dummy); // Suppresses warning that dummy is unused. +} + +#include // For INT_MAX. +#include +#include +#include + +#include +#include +#include + +#include "gtest/gtest-spi.h" + +// Indicates that this translation unit is part of Google Test's +// implementation. It must come before gtest-internal-inl.h is +// included, or there will be a compiler error. This trick is to +// prevent a user from accidentally including gtest-internal-inl.h in +// his code. +#define GTEST_IMPLEMENTATION_ 1 +#include "src/gtest-internal-inl.h" +#undef GTEST_IMPLEMENTATION_ + +namespace testing { +namespace internal { + +// Provides access to otherwise private parts of the TestEventListeners class +// that are needed to test it. +class TestEventListenersAccessor { + public: + static TestEventListener* GetRepeater(TestEventListeners* listeners) { + return listeners->repeater(); + } + + static void SetDefaultResultPrinter(TestEventListeners* listeners, + TestEventListener* listener) { + listeners->SetDefaultResultPrinter(listener); + } + static void SetDefaultXmlGenerator(TestEventListeners* listeners, + TestEventListener* listener) { + listeners->SetDefaultXmlGenerator(listener); + } + + static bool EventForwardingEnabled(const TestEventListeners& listeners) { + return listeners.EventForwardingEnabled(); + } + + static void SuppressEventForwarding(TestEventListeners* listeners) { + listeners->SuppressEventForwarding(); + } +}; + +} // namespace internal +} // namespace testing + +using testing::AssertionFailure; +using testing::AssertionResult; +using testing::AssertionSuccess; +using testing::DoubleLE; +using testing::EmptyTestEventListener; +using testing::FloatLE; +using testing::GTEST_FLAG(also_run_disabled_tests); +using testing::GTEST_FLAG(break_on_failure); +using testing::GTEST_FLAG(catch_exceptions); +using testing::GTEST_FLAG(color); +using testing::GTEST_FLAG(death_test_use_fork); +using testing::GTEST_FLAG(filter); +using testing::GTEST_FLAG(list_tests); +using testing::GTEST_FLAG(output); +using testing::GTEST_FLAG(print_time); +using testing::GTEST_FLAG(random_seed); +using testing::GTEST_FLAG(repeat); +using testing::GTEST_FLAG(show_internal_stack_frames); +using testing::GTEST_FLAG(shuffle); +using testing::GTEST_FLAG(stack_trace_depth); +using testing::GTEST_FLAG(stream_result_to); +using testing::GTEST_FLAG(throw_on_failure); +using testing::IsNotSubstring; +using testing::IsSubstring; +using testing::Message; +using testing::ScopedFakeTestPartResultReporter; +using testing::StaticAssertTypeEq; +using testing::Test; +using testing::TestCase; +using testing::TestEventListeners; +using testing::TestPartResult; +using testing::TestPartResultArray; +using testing::TestProperty; +using testing::TestResult; +using testing::TimeInMillis; +using testing::UnitTest; +using testing::kMaxStackTraceDepth; +using testing::internal::AddReference; +using testing::internal::AlwaysFalse; +using testing::internal::AlwaysTrue; +using testing::internal::AppendUserMessage; +using testing::internal::ArrayAwareFind; +using testing::internal::ArrayEq; +using testing::internal::CodePointToUtf8; +using testing::internal::CompileAssertTypesEqual; +using testing::internal::CopyArray; +using testing::internal::CountIf; +using testing::internal::EqFailure; +using testing::internal::FloatingPoint; +using testing::internal::ForEach; +using testing::internal::FormatEpochTimeInMillisAsIso8601; +using testing::internal::FormatTimeInMillisAsSeconds; +using testing::internal::GTestFlagSaver; +using testing::internal::GetCurrentOsStackTraceExceptTop; +using testing::internal::GetElementOr; +using testing::internal::GetNextRandomSeed; +using testing::internal::GetRandomSeedFromFlag; +using testing::internal::GetTestTypeId; +using testing::internal::GetTimeInMillis; +using testing::internal::GetTypeId; +using testing::internal::GetUnitTestImpl; +using testing::internal::ImplicitlyConvertible; +using testing::internal::Int32; +using testing::internal::Int32FromEnvOrDie; +using testing::internal::IsAProtocolMessage; +using testing::internal::IsContainer; +using testing::internal::IsContainerTest; +using testing::internal::IsNotContainer; +using testing::internal::NativeArray; +using testing::internal::ParseInt32Flag; +using testing::internal::RemoveConst; +using testing::internal::RemoveReference; +using testing::internal::ShouldRunTestOnShard; +using testing::internal::ShouldShard; +using testing::internal::ShouldUseColor; +using testing::internal::Shuffle; +using testing::internal::ShuffleRange; +using testing::internal::SkipPrefix; +using testing::internal::StreamableToString; +using testing::internal::String; +using testing::internal::TestEventListenersAccessor; +using testing::internal::TestResultAccessor; +using testing::internal::UInt32; +using testing::internal::WideStringToUtf8; +using testing::internal::kCopy; +using testing::internal::kMaxRandomSeed; +using testing::internal::kReference; +using testing::internal::kTestTypeIdInGoogleTest; +using testing::internal::scoped_ptr; + +#if GTEST_HAS_STREAM_REDIRECTION +using testing::internal::CaptureStdout; +using testing::internal::GetCapturedStdout; +#endif + +#if GTEST_IS_THREADSAFE +using testing::internal::ThreadWithParam; +#endif + +class TestingVector : public std::vector { +}; + +::std::ostream& operator<<(::std::ostream& os, + const TestingVector& vector) { + os << "{ "; + for (size_t i = 0; i < vector.size(); i++) { + os << vector[i] << " "; + } + os << "}"; + return os; +} + +// This line tests that we can define tests in an unnamed namespace. +namespace { + +TEST(GetRandomSeedFromFlagTest, HandlesZero) { + const int seed = GetRandomSeedFromFlag(0); + EXPECT_LE(1, seed); + EXPECT_LE(seed, static_cast(kMaxRandomSeed)); +} + +TEST(GetRandomSeedFromFlagTest, PreservesValidSeed) { + EXPECT_EQ(1, GetRandomSeedFromFlag(1)); + EXPECT_EQ(2, GetRandomSeedFromFlag(2)); + EXPECT_EQ(kMaxRandomSeed - 1, GetRandomSeedFromFlag(kMaxRandomSeed - 1)); + EXPECT_EQ(static_cast(kMaxRandomSeed), + GetRandomSeedFromFlag(kMaxRandomSeed)); +} + +TEST(GetRandomSeedFromFlagTest, NormalizesInvalidSeed) { + const int seed1 = GetRandomSeedFromFlag(-1); + EXPECT_LE(1, seed1); + EXPECT_LE(seed1, static_cast(kMaxRandomSeed)); + + const int seed2 = GetRandomSeedFromFlag(kMaxRandomSeed + 1); + EXPECT_LE(1, seed2); + EXPECT_LE(seed2, static_cast(kMaxRandomSeed)); +} + +TEST(GetNextRandomSeedTest, WorksForValidInput) { + EXPECT_EQ(2, GetNextRandomSeed(1)); + EXPECT_EQ(3, GetNextRandomSeed(2)); + EXPECT_EQ(static_cast(kMaxRandomSeed), + GetNextRandomSeed(kMaxRandomSeed - 1)); + EXPECT_EQ(1, GetNextRandomSeed(kMaxRandomSeed)); + + // We deliberately don't test GetNextRandomSeed() with invalid + // inputs, as that requires death tests, which are expensive. This + // is fine as GetNextRandomSeed() is internal and has a + // straightforward definition. +} + +static void ClearCurrentTestPartResults() { + TestResultAccessor::ClearTestPartResults( + GetUnitTestImpl()->current_test_result()); +} + +// Tests GetTypeId. + +TEST(GetTypeIdTest, ReturnsSameValueForSameType) { + EXPECT_EQ(GetTypeId(), GetTypeId()); + EXPECT_EQ(GetTypeId(), GetTypeId()); +} + +class SubClassOfTest : public Test {}; +class AnotherSubClassOfTest : public Test {}; + +TEST(GetTypeIdTest, ReturnsDifferentValuesForDifferentTypes) { + EXPECT_NE(GetTypeId(), GetTypeId()); + EXPECT_NE(GetTypeId(), GetTypeId()); + EXPECT_NE(GetTypeId(), GetTestTypeId()); + EXPECT_NE(GetTypeId(), GetTestTypeId()); + EXPECT_NE(GetTypeId(), GetTestTypeId()); + EXPECT_NE(GetTypeId(), GetTypeId()); +} + +// Verifies that GetTestTypeId() returns the same value, no matter it +// is called from inside Google Test or outside of it. +TEST(GetTestTypeIdTest, ReturnsTheSameValueInsideOrOutsideOfGoogleTest) { + EXPECT_EQ(kTestTypeIdInGoogleTest, GetTestTypeId()); +} + +// Tests FormatTimeInMillisAsSeconds(). + +TEST(FormatTimeInMillisAsSecondsTest, FormatsZero) { + EXPECT_EQ("0", FormatTimeInMillisAsSeconds(0)); +} + +TEST(FormatTimeInMillisAsSecondsTest, FormatsPositiveNumber) { + EXPECT_EQ("0.003", FormatTimeInMillisAsSeconds(3)); + EXPECT_EQ("0.01", FormatTimeInMillisAsSeconds(10)); + EXPECT_EQ("0.2", FormatTimeInMillisAsSeconds(200)); + EXPECT_EQ("1.2", FormatTimeInMillisAsSeconds(1200)); + EXPECT_EQ("3", FormatTimeInMillisAsSeconds(3000)); +} + +TEST(FormatTimeInMillisAsSecondsTest, FormatsNegativeNumber) { + EXPECT_EQ("-0.003", FormatTimeInMillisAsSeconds(-3)); + EXPECT_EQ("-0.01", FormatTimeInMillisAsSeconds(-10)); + EXPECT_EQ("-0.2", FormatTimeInMillisAsSeconds(-200)); + EXPECT_EQ("-1.2", FormatTimeInMillisAsSeconds(-1200)); + EXPECT_EQ("-3", FormatTimeInMillisAsSeconds(-3000)); +} + +// Tests FormatEpochTimeInMillisAsIso8601(). The correctness of conversion +// for particular dates below was verified in Python using +// datetime.datetime.fromutctimestamp(/1000). + +// FormatEpochTimeInMillisAsIso8601 depends on the current timezone, so we +// have to set up a particular timezone to obtain predictable results. +class FormatEpochTimeInMillisAsIso8601Test : public Test { + public: + // On Cygwin, GCC doesn't allow unqualified integer literals to exceed + // 32 bits, even when 64-bit integer types are available. We have to + // force the constants to have a 64-bit type here. + static const TimeInMillis kMillisPerSec = 1000; + + private: + virtual void SetUp() { + saved_tz_ = NULL; +#if _MSC_VER +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4996) // Temporarily disables warning 4996 + // (function or variable may be unsafe + // for getenv, function is deprecated for + // strdup). + if (getenv("TZ")) + saved_tz_ = strdup(getenv("TZ")); +# pragma warning(pop) // Restores the warning state again. +#else + if (getenv("TZ")) + saved_tz_ = strdup(getenv("TZ")); +#endif + + // Set up the time zone for FormatEpochTimeInMillisAsIso8601 to use. We + // cannot use the local time zone because the function's output depends + // on the time zone. + SetTimeZone("UTC+00"); + } + + virtual void TearDown() { + SetTimeZone(saved_tz_); + free(const_cast(saved_tz_)); + saved_tz_ = NULL; + } + + static void SetTimeZone(const char* time_zone) { + // tzset() distinguishes between the TZ variable being present and empty + // and not being present, so we have to consider the case of time_zone + // being NULL. +#if _MSC_VER + // ...Unless it's MSVC, whose standard library's _putenv doesn't + // distinguish between an empty and a missing variable. + const std::string env_var = + std::string("TZ=") + (time_zone ? time_zone : ""); + _putenv(env_var.c_str()); +# pragma warning(push) // Saves the current warning state. +# pragma warning(disable:4996) // Temporarily disables warning 4996 + // (function is deprecated). + tzset(); +# pragma warning(pop) // Restores the warning state again. +#else + if (time_zone) { + setenv(("TZ"), time_zone, 1); + } else { + unsetenv("TZ"); + } + tzset(); +#endif + } + + const char* saved_tz_; +}; + +const TimeInMillis FormatEpochTimeInMillisAsIso8601Test::kMillisPerSec; + +TEST_F(FormatEpochTimeInMillisAsIso8601Test, PrintsTwoDigitSegments) { + EXPECT_EQ("2011-10-31T18:52:42", + FormatEpochTimeInMillisAsIso8601(1320087162 * kMillisPerSec)); +} + +TEST_F(FormatEpochTimeInMillisAsIso8601Test, MillisecondsDoNotAffectResult) { + EXPECT_EQ( + "2011-10-31T18:52:42", + FormatEpochTimeInMillisAsIso8601(1320087162 * kMillisPerSec + 234)); +} + +TEST_F(FormatEpochTimeInMillisAsIso8601Test, PrintsLeadingZeroes) { + EXPECT_EQ("2011-09-03T05:07:02", + FormatEpochTimeInMillisAsIso8601(1315026422 * kMillisPerSec)); +} + +TEST_F(FormatEpochTimeInMillisAsIso8601Test, Prints24HourTime) { + EXPECT_EQ("2011-09-28T17:08:22", + FormatEpochTimeInMillisAsIso8601(1317229702 * kMillisPerSec)); +} + +TEST_F(FormatEpochTimeInMillisAsIso8601Test, PrintsEpochStart) { + EXPECT_EQ("1970-01-01T00:00:00", FormatEpochTimeInMillisAsIso8601(0)); +} + +#if GTEST_CAN_COMPARE_NULL + +# ifdef __BORLANDC__ +// Silences warnings: "Condition is always true", "Unreachable code" +# pragma option push -w-ccc -w-rch +# endif + +// Tests that GTEST_IS_NULL_LITERAL_(x) is true when x is a null +// pointer literal. +TEST(NullLiteralTest, IsTrueForNullLiterals) { + EXPECT_TRUE(GTEST_IS_NULL_LITERAL_(NULL)); + EXPECT_TRUE(GTEST_IS_NULL_LITERAL_(0)); + EXPECT_TRUE(GTEST_IS_NULL_LITERAL_(0U)); + EXPECT_TRUE(GTEST_IS_NULL_LITERAL_(0L)); + +# ifndef __BORLANDC__ + + // Some compilers may fail to detect some null pointer literals; + // as long as users of the framework don't use such literals, this + // is harmless. + EXPECT_TRUE(GTEST_IS_NULL_LITERAL_(1 - 1)); + +# endif +} + +// Tests that GTEST_IS_NULL_LITERAL_(x) is false when x is not a null +// pointer literal. +TEST(NullLiteralTest, IsFalseForNonNullLiterals) { + EXPECT_FALSE(GTEST_IS_NULL_LITERAL_(1)); + EXPECT_FALSE(GTEST_IS_NULL_LITERAL_(0.0)); + EXPECT_FALSE(GTEST_IS_NULL_LITERAL_('a')); + EXPECT_FALSE(GTEST_IS_NULL_LITERAL_(static_cast(NULL))); +} + +# ifdef __BORLANDC__ +// Restores warnings after previous "#pragma option push" suppressed them. +# pragma option pop +# endif + +#endif // GTEST_CAN_COMPARE_NULL +// +// Tests CodePointToUtf8(). + +// Tests that the NUL character L'\0' is encoded correctly. +TEST(CodePointToUtf8Test, CanEncodeNul) { + char buffer[32]; + EXPECT_STREQ("", CodePointToUtf8(L'\0', buffer)); +} + +// Tests that ASCII characters are encoded correctly. +TEST(CodePointToUtf8Test, CanEncodeAscii) { + char buffer[32]; + EXPECT_STREQ("a", CodePointToUtf8(L'a', buffer)); + EXPECT_STREQ("Z", CodePointToUtf8(L'Z', buffer)); + EXPECT_STREQ("&", CodePointToUtf8(L'&', buffer)); + EXPECT_STREQ("\x7F", CodePointToUtf8(L'\x7F', buffer)); +} + +// Tests that Unicode code-points that have 8 to 11 bits are encoded +// as 110xxxxx 10xxxxxx. +TEST(CodePointToUtf8Test, CanEncode8To11Bits) { + char buffer[32]; + // 000 1101 0011 => 110-00011 10-010011 + EXPECT_STREQ("\xC3\x93", CodePointToUtf8(L'\xD3', buffer)); + + // 101 0111 0110 => 110-10101 10-110110 + // Some compilers (e.g., GCC on MinGW) cannot handle non-ASCII codepoints + // in wide strings and wide chars. In order to accomodate them, we have to + // introduce such character constants as integers. + EXPECT_STREQ("\xD5\xB6", + CodePointToUtf8(static_cast(0x576), buffer)); +} + +// Tests that Unicode code-points that have 12 to 16 bits are encoded +// as 1110xxxx 10xxxxxx 10xxxxxx. +TEST(CodePointToUtf8Test, CanEncode12To16Bits) { + char buffer[32]; + // 0000 1000 1101 0011 => 1110-0000 10-100011 10-010011 + EXPECT_STREQ("\xE0\xA3\x93", + CodePointToUtf8(static_cast(0x8D3), buffer)); + + // 1100 0111 0100 1101 => 1110-1100 10-011101 10-001101 + EXPECT_STREQ("\xEC\x9D\x8D", + CodePointToUtf8(static_cast(0xC74D), buffer)); +} + +#if !GTEST_WIDE_STRING_USES_UTF16_ +// Tests in this group require a wchar_t to hold > 16 bits, and thus +// are skipped on Windows, Cygwin, and Symbian, where a wchar_t is +// 16-bit wide. This code may not compile on those systems. + +// Tests that Unicode code-points that have 17 to 21 bits are encoded +// as 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx. +TEST(CodePointToUtf8Test, CanEncode17To21Bits) { + char buffer[32]; + // 0 0001 0000 1000 1101 0011 => 11110-000 10-010000 10-100011 10-010011 + EXPECT_STREQ("\xF0\x90\xA3\x93", CodePointToUtf8(L'\x108D3', buffer)); + + // 0 0001 0000 0100 0000 0000 => 11110-000 10-010000 10-010000 10-000000 + EXPECT_STREQ("\xF0\x90\x90\x80", CodePointToUtf8(L'\x10400', buffer)); + + // 1 0000 1000 0110 0011 0100 => 11110-100 10-001000 10-011000 10-110100 + EXPECT_STREQ("\xF4\x88\x98\xB4", CodePointToUtf8(L'\x108634', buffer)); +} + +// Tests that encoding an invalid code-point generates the expected result. +TEST(CodePointToUtf8Test, CanEncodeInvalidCodePoint) { + char buffer[32]; + EXPECT_STREQ("(Invalid Unicode 0x1234ABCD)", + CodePointToUtf8(L'\x1234ABCD', buffer)); +} + +#endif // !GTEST_WIDE_STRING_USES_UTF16_ + +// Tests WideStringToUtf8(). + +// Tests that the NUL character L'\0' is encoded correctly. +TEST(WideStringToUtf8Test, CanEncodeNul) { + EXPECT_STREQ("", WideStringToUtf8(L"", 0).c_str()); + EXPECT_STREQ("", WideStringToUtf8(L"", -1).c_str()); +} + +// Tests that ASCII strings are encoded correctly. +TEST(WideStringToUtf8Test, CanEncodeAscii) { + EXPECT_STREQ("a", WideStringToUtf8(L"a", 1).c_str()); + EXPECT_STREQ("ab", WideStringToUtf8(L"ab", 2).c_str()); + EXPECT_STREQ("a", WideStringToUtf8(L"a", -1).c_str()); + EXPECT_STREQ("ab", WideStringToUtf8(L"ab", -1).c_str()); +} + +// Tests that Unicode code-points that have 8 to 11 bits are encoded +// as 110xxxxx 10xxxxxx. +TEST(WideStringToUtf8Test, CanEncode8To11Bits) { + // 000 1101 0011 => 110-00011 10-010011 + EXPECT_STREQ("\xC3\x93", WideStringToUtf8(L"\xD3", 1).c_str()); + EXPECT_STREQ("\xC3\x93", WideStringToUtf8(L"\xD3", -1).c_str()); + + // 101 0111 0110 => 110-10101 10-110110 + const wchar_t s[] = { 0x576, '\0' }; + EXPECT_STREQ("\xD5\xB6", WideStringToUtf8(s, 1).c_str()); + EXPECT_STREQ("\xD5\xB6", WideStringToUtf8(s, -1).c_str()); +} + +// Tests that Unicode code-points that have 12 to 16 bits are encoded +// as 1110xxxx 10xxxxxx 10xxxxxx. +TEST(WideStringToUtf8Test, CanEncode12To16Bits) { + // 0000 1000 1101 0011 => 1110-0000 10-100011 10-010011 + const wchar_t s1[] = { 0x8D3, '\0' }; + EXPECT_STREQ("\xE0\xA3\x93", WideStringToUtf8(s1, 1).c_str()); + EXPECT_STREQ("\xE0\xA3\x93", WideStringToUtf8(s1, -1).c_str()); + + // 1100 0111 0100 1101 => 1110-1100 10-011101 10-001101 + const wchar_t s2[] = { 0xC74D, '\0' }; + EXPECT_STREQ("\xEC\x9D\x8D", WideStringToUtf8(s2, 1).c_str()); + EXPECT_STREQ("\xEC\x9D\x8D", WideStringToUtf8(s2, -1).c_str()); +} + +// Tests that the conversion stops when the function encounters \0 character. +TEST(WideStringToUtf8Test, StopsOnNulCharacter) { + EXPECT_STREQ("ABC", WideStringToUtf8(L"ABC\0XYZ", 100).c_str()); +} + +// Tests that the conversion stops when the function reaches the limit +// specified by the 'length' parameter. +TEST(WideStringToUtf8Test, StopsWhenLengthLimitReached) { + EXPECT_STREQ("ABC", WideStringToUtf8(L"ABCDEF", 3).c_str()); +} + +#if !GTEST_WIDE_STRING_USES_UTF16_ +// Tests that Unicode code-points that have 17 to 21 bits are encoded +// as 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx. This code may not compile +// on the systems using UTF-16 encoding. +TEST(WideStringToUtf8Test, CanEncode17To21Bits) { + // 0 0001 0000 1000 1101 0011 => 11110-000 10-010000 10-100011 10-010011 + EXPECT_STREQ("\xF0\x90\xA3\x93", WideStringToUtf8(L"\x108D3", 1).c_str()); + EXPECT_STREQ("\xF0\x90\xA3\x93", WideStringToUtf8(L"\x108D3", -1).c_str()); + + // 1 0000 1000 0110 0011 0100 => 11110-100 10-001000 10-011000 10-110100 + EXPECT_STREQ("\xF4\x88\x98\xB4", WideStringToUtf8(L"\x108634", 1).c_str()); + EXPECT_STREQ("\xF4\x88\x98\xB4", WideStringToUtf8(L"\x108634", -1).c_str()); +} + +// Tests that encoding an invalid code-point generates the expected result. +TEST(WideStringToUtf8Test, CanEncodeInvalidCodePoint) { + EXPECT_STREQ("(Invalid Unicode 0xABCDFF)", + WideStringToUtf8(L"\xABCDFF", -1).c_str()); +} +#else // !GTEST_WIDE_STRING_USES_UTF16_ +// Tests that surrogate pairs are encoded correctly on the systems using +// UTF-16 encoding in the wide strings. +TEST(WideStringToUtf8Test, CanEncodeValidUtf16SUrrogatePairs) { + const wchar_t s[] = { 0xD801, 0xDC00, '\0' }; + EXPECT_STREQ("\xF0\x90\x90\x80", WideStringToUtf8(s, -1).c_str()); +} + +// Tests that encoding an invalid UTF-16 surrogate pair +// generates the expected result. +TEST(WideStringToUtf8Test, CanEncodeInvalidUtf16SurrogatePair) { + // Leading surrogate is at the end of the string. + const wchar_t s1[] = { 0xD800, '\0' }; + EXPECT_STREQ("\xED\xA0\x80", WideStringToUtf8(s1, -1).c_str()); + // Leading surrogate is not followed by the trailing surrogate. + const wchar_t s2[] = { 0xD800, 'M', '\0' }; + EXPECT_STREQ("\xED\xA0\x80M", WideStringToUtf8(s2, -1).c_str()); + // Trailing surrogate appearas without a leading surrogate. + const wchar_t s3[] = { 0xDC00, 'P', 'Q', 'R', '\0' }; + EXPECT_STREQ("\xED\xB0\x80PQR", WideStringToUtf8(s3, -1).c_str()); +} +#endif // !GTEST_WIDE_STRING_USES_UTF16_ + +// Tests that codepoint concatenation works correctly. +#if !GTEST_WIDE_STRING_USES_UTF16_ +TEST(WideStringToUtf8Test, ConcatenatesCodepointsCorrectly) { + const wchar_t s[] = { 0x108634, 0xC74D, '\n', 0x576, 0x8D3, 0x108634, '\0'}; + EXPECT_STREQ( + "\xF4\x88\x98\xB4" + "\xEC\x9D\x8D" + "\n" + "\xD5\xB6" + "\xE0\xA3\x93" + "\xF4\x88\x98\xB4", + WideStringToUtf8(s, -1).c_str()); +} +#else +TEST(WideStringToUtf8Test, ConcatenatesCodepointsCorrectly) { + const wchar_t s[] = { 0xC74D, '\n', 0x576, 0x8D3, '\0'}; + EXPECT_STREQ( + "\xEC\x9D\x8D" "\n" "\xD5\xB6" "\xE0\xA3\x93", + WideStringToUtf8(s, -1).c_str()); +} +#endif // !GTEST_WIDE_STRING_USES_UTF16_ + +// Tests the Random class. + +TEST(RandomDeathTest, GeneratesCrashesOnInvalidRange) { + testing::internal::Random random(42); + EXPECT_DEATH_IF_SUPPORTED( + random.Generate(0), + "Cannot generate a number in the range \\[0, 0\\)"); + EXPECT_DEATH_IF_SUPPORTED( + random.Generate(testing::internal::Random::kMaxRange + 1), + "Generation of a number in \\[0, 2147483649\\) was requested, " + "but this can only generate numbers in \\[0, 2147483648\\)"); +} + +TEST(RandomTest, GeneratesNumbersWithinRange) { + const UInt32 kRange = 10000; + testing::internal::Random random(12345); + for (int i = 0; i < 10; i++) { + EXPECT_LT(random.Generate(kRange), kRange) << " for iteration " << i; + } + + testing::internal::Random random2(testing::internal::Random::kMaxRange); + for (int i = 0; i < 10; i++) { + EXPECT_LT(random2.Generate(kRange), kRange) << " for iteration " << i; + } +} + +TEST(RandomTest, RepeatsWhenReseeded) { + const int kSeed = 123; + const int kArraySize = 10; + const UInt32 kRange = 10000; + UInt32 values[kArraySize]; + + testing::internal::Random random(kSeed); + for (int i = 0; i < kArraySize; i++) { + values[i] = random.Generate(kRange); + } + + random.Reseed(kSeed); + for (int i = 0; i < kArraySize; i++) { + EXPECT_EQ(values[i], random.Generate(kRange)) << " for iteration " << i; + } +} + +// Tests STL container utilities. + +// Tests CountIf(). + +static bool IsPositive(int n) { return n > 0; } + +TEST(ContainerUtilityTest, CountIf) { + std::vector v; + EXPECT_EQ(0, CountIf(v, IsPositive)); // Works for an empty container. + + v.push_back(-1); + v.push_back(0); + EXPECT_EQ(0, CountIf(v, IsPositive)); // Works when no value satisfies. + + v.push_back(2); + v.push_back(-10); + v.push_back(10); + EXPECT_EQ(2, CountIf(v, IsPositive)); +} + +// Tests ForEach(). + +static int g_sum = 0; +static void Accumulate(int n) { g_sum += n; } + +TEST(ContainerUtilityTest, ForEach) { + std::vector v; + g_sum = 0; + ForEach(v, Accumulate); + EXPECT_EQ(0, g_sum); // Works for an empty container; + + g_sum = 0; + v.push_back(1); + ForEach(v, Accumulate); + EXPECT_EQ(1, g_sum); // Works for a container with one element. + + g_sum = 0; + v.push_back(20); + v.push_back(300); + ForEach(v, Accumulate); + EXPECT_EQ(321, g_sum); +} + +// Tests GetElementOr(). +TEST(ContainerUtilityTest, GetElementOr) { + std::vector a; + EXPECT_EQ('x', GetElementOr(a, 0, 'x')); + + a.push_back('a'); + a.push_back('b'); + EXPECT_EQ('a', GetElementOr(a, 0, 'x')); + EXPECT_EQ('b', GetElementOr(a, 1, 'x')); + EXPECT_EQ('x', GetElementOr(a, -2, 'x')); + EXPECT_EQ('x', GetElementOr(a, 2, 'x')); +} + +TEST(ContainerUtilityDeathTest, ShuffleRange) { + std::vector a; + a.push_back(0); + a.push_back(1); + a.push_back(2); + testing::internal::Random random(1); + + EXPECT_DEATH_IF_SUPPORTED( + ShuffleRange(&random, -1, 1, &a), + "Invalid shuffle range start -1: must be in range \\[0, 3\\]"); + EXPECT_DEATH_IF_SUPPORTED( + ShuffleRange(&random, 4, 4, &a), + "Invalid shuffle range start 4: must be in range \\[0, 3\\]"); + EXPECT_DEATH_IF_SUPPORTED( + ShuffleRange(&random, 3, 2, &a), + "Invalid shuffle range finish 2: must be in range \\[3, 3\\]"); + EXPECT_DEATH_IF_SUPPORTED( + ShuffleRange(&random, 3, 4, &a), + "Invalid shuffle range finish 4: must be in range \\[3, 3\\]"); +} + +class VectorShuffleTest : public Test { + protected: + static const int kVectorSize = 20; + + VectorShuffleTest() : random_(1) { + for (int i = 0; i < kVectorSize; i++) { + vector_.push_back(i); + } + } + + static bool VectorIsCorrupt(const TestingVector& vector) { + if (kVectorSize != static_cast(vector.size())) { + return true; + } + + bool found_in_vector[kVectorSize] = { false }; + for (size_t i = 0; i < vector.size(); i++) { + const int e = vector[i]; + if (e < 0 || e >= kVectorSize || found_in_vector[e]) { + return true; + } + found_in_vector[e] = true; + } + + // Vector size is correct, elements' range is correct, no + // duplicate elements. Therefore no corruption has occurred. + return false; + } + + static bool VectorIsNotCorrupt(const TestingVector& vector) { + return !VectorIsCorrupt(vector); + } + + static bool RangeIsShuffled(const TestingVector& vector, int begin, int end) { + for (int i = begin; i < end; i++) { + if (i != vector[i]) { + return true; + } + } + return false; + } + + static bool RangeIsUnshuffled( + const TestingVector& vector, int begin, int end) { + return !RangeIsShuffled(vector, begin, end); + } + + static bool VectorIsShuffled(const TestingVector& vector) { + return RangeIsShuffled(vector, 0, static_cast(vector.size())); + } + + static bool VectorIsUnshuffled(const TestingVector& vector) { + return !VectorIsShuffled(vector); + } + + testing::internal::Random random_; + TestingVector vector_; +}; // class VectorShuffleTest + +const int VectorShuffleTest::kVectorSize; + +TEST_F(VectorShuffleTest, HandlesEmptyRange) { + // Tests an empty range at the beginning... + ShuffleRange(&random_, 0, 0, &vector_); + ASSERT_PRED1(VectorIsNotCorrupt, vector_); + ASSERT_PRED1(VectorIsUnshuffled, vector_); + + // ...in the middle... + ShuffleRange(&random_, kVectorSize/2, kVectorSize/2, &vector_); + ASSERT_PRED1(VectorIsNotCorrupt, vector_); + ASSERT_PRED1(VectorIsUnshuffled, vector_); + + // ...at the end... + ShuffleRange(&random_, kVectorSize - 1, kVectorSize - 1, &vector_); + ASSERT_PRED1(VectorIsNotCorrupt, vector_); + ASSERT_PRED1(VectorIsUnshuffled, vector_); + + // ...and past the end. + ShuffleRange(&random_, kVectorSize, kVectorSize, &vector_); + ASSERT_PRED1(VectorIsNotCorrupt, vector_); + ASSERT_PRED1(VectorIsUnshuffled, vector_); +} + +TEST_F(VectorShuffleTest, HandlesRangeOfSizeOne) { + // Tests a size one range at the beginning... + ShuffleRange(&random_, 0, 1, &vector_); + ASSERT_PRED1(VectorIsNotCorrupt, vector_); + ASSERT_PRED1(VectorIsUnshuffled, vector_); + + // ...in the middle... + ShuffleRange(&random_, kVectorSize/2, kVectorSize/2 + 1, &vector_); + ASSERT_PRED1(VectorIsNotCorrupt, vector_); + ASSERT_PRED1(VectorIsUnshuffled, vector_); + + // ...and at the end. + ShuffleRange(&random_, kVectorSize - 1, kVectorSize, &vector_); + ASSERT_PRED1(VectorIsNotCorrupt, vector_); + ASSERT_PRED1(VectorIsUnshuffled, vector_); +} + +// Because we use our own random number generator and a fixed seed, +// we can guarantee that the following "random" tests will succeed. + +TEST_F(VectorShuffleTest, ShufflesEntireVector) { + Shuffle(&random_, &vector_); + ASSERT_PRED1(VectorIsNotCorrupt, vector_); + EXPECT_FALSE(VectorIsUnshuffled(vector_)) << vector_; + + // Tests the first and last elements in particular to ensure that + // there are no off-by-one problems in our shuffle algorithm. + EXPECT_NE(0, vector_[0]); + EXPECT_NE(kVectorSize - 1, vector_[kVectorSize - 1]); +} + +TEST_F(VectorShuffleTest, ShufflesStartOfVector) { + const int kRangeSize = kVectorSize/2; + + ShuffleRange(&random_, 0, kRangeSize, &vector_); + + ASSERT_PRED1(VectorIsNotCorrupt, vector_); + EXPECT_PRED3(RangeIsShuffled, vector_, 0, kRangeSize); + EXPECT_PRED3(RangeIsUnshuffled, vector_, kRangeSize, kVectorSize); +} + +TEST_F(VectorShuffleTest, ShufflesEndOfVector) { + const int kRangeSize = kVectorSize / 2; + ShuffleRange(&random_, kRangeSize, kVectorSize, &vector_); + + ASSERT_PRED1(VectorIsNotCorrupt, vector_); + EXPECT_PRED3(RangeIsUnshuffled, vector_, 0, kRangeSize); + EXPECT_PRED3(RangeIsShuffled, vector_, kRangeSize, kVectorSize); +} + +TEST_F(VectorShuffleTest, ShufflesMiddleOfVector) { + int kRangeSize = kVectorSize/3; + ShuffleRange(&random_, kRangeSize, 2*kRangeSize, &vector_); + + ASSERT_PRED1(VectorIsNotCorrupt, vector_); + EXPECT_PRED3(RangeIsUnshuffled, vector_, 0, kRangeSize); + EXPECT_PRED3(RangeIsShuffled, vector_, kRangeSize, 2*kRangeSize); + EXPECT_PRED3(RangeIsUnshuffled, vector_, 2*kRangeSize, kVectorSize); +} + +TEST_F(VectorShuffleTest, ShufflesRepeatably) { + TestingVector vector2; + for (int i = 0; i < kVectorSize; i++) { + vector2.push_back(i); + } + + random_.Reseed(1234); + Shuffle(&random_, &vector_); + random_.Reseed(1234); + Shuffle(&random_, &vector2); + + ASSERT_PRED1(VectorIsNotCorrupt, vector_); + ASSERT_PRED1(VectorIsNotCorrupt, vector2); + + for (int i = 0; i < kVectorSize; i++) { + EXPECT_EQ(vector_[i], vector2[i]) << " where i is " << i; + } +} + +// Tests the size of the AssertHelper class. + +TEST(AssertHelperTest, AssertHelperIsSmall) { + // To avoid breaking clients that use lots of assertions in one + // function, we cannot grow the size of AssertHelper. + EXPECT_LE(sizeof(testing::internal::AssertHelper), sizeof(void*)); +} + +// Tests String::EndsWithCaseInsensitive(). +TEST(StringTest, EndsWithCaseInsensitive) { + EXPECT_TRUE(String::EndsWithCaseInsensitive("foobar", "BAR")); + EXPECT_TRUE(String::EndsWithCaseInsensitive("foobaR", "bar")); + EXPECT_TRUE(String::EndsWithCaseInsensitive("foobar", "")); + EXPECT_TRUE(String::EndsWithCaseInsensitive("", "")); + + EXPECT_FALSE(String::EndsWithCaseInsensitive("Foobar", "foo")); + EXPECT_FALSE(String::EndsWithCaseInsensitive("foobar", "Foo")); + EXPECT_FALSE(String::EndsWithCaseInsensitive("", "foo")); +} + +// C++Builder's preprocessor is buggy; it fails to expand macros that +// appear in macro parameters after wide char literals. Provide an alias +// for NULL as a workaround. +static const wchar_t* const kNull = NULL; + +// Tests String::CaseInsensitiveWideCStringEquals +TEST(StringTest, CaseInsensitiveWideCStringEquals) { + EXPECT_TRUE(String::CaseInsensitiveWideCStringEquals(NULL, NULL)); + EXPECT_FALSE(String::CaseInsensitiveWideCStringEquals(kNull, L"")); + EXPECT_FALSE(String::CaseInsensitiveWideCStringEquals(L"", kNull)); + EXPECT_FALSE(String::CaseInsensitiveWideCStringEquals(kNull, L"foobar")); + EXPECT_FALSE(String::CaseInsensitiveWideCStringEquals(L"foobar", kNull)); + EXPECT_TRUE(String::CaseInsensitiveWideCStringEquals(L"foobar", L"foobar")); + EXPECT_TRUE(String::CaseInsensitiveWideCStringEquals(L"foobar", L"FOOBAR")); + EXPECT_TRUE(String::CaseInsensitiveWideCStringEquals(L"FOOBAR", L"foobar")); +} + +// Tests that String::Format() works. +TEST(StringTest, FormatWorks) { + // Normal case: the format spec is valid, the arguments match the + // spec, and the result is < 4095 characters. + EXPECT_STREQ("Hello, 42", String::Format("%s, %d", "Hello", 42).c_str()); + + // Edge case: the result is 4095 characters. + char buffer[4096]; + const size_t kSize = sizeof(buffer); + memset(buffer, 'a', kSize - 1); + buffer[kSize - 1] = '\0'; + EXPECT_EQ(buffer, String::Format("%s", buffer)); + + // The result needs to be 4096 characters, exceeding Format()'s limit. + EXPECT_EQ("", + String::Format("x%s", buffer)); + +#if GTEST_OS_LINUX && !GTEST_OS_LINUX_ANDROID + // On Linux, invalid format spec should lead to an error message. + // In other environment (e.g. MSVC on Windows), String::Format() may + // simply ignore a bad format spec, so this assertion is run on + // Linux only. + EXPECT_EQ("", + String::Format("%")); +#endif +} + +#if GTEST_OS_WINDOWS + +// Tests String::ShowWideCString(). +TEST(StringTest, ShowWideCString) { + EXPECT_STREQ("(null)", + String::ShowWideCString(NULL).c_str()); + EXPECT_STREQ("", String::ShowWideCString(L"").c_str()); + EXPECT_STREQ("foo", String::ShowWideCString(L"foo").c_str()); +} + +# if GTEST_OS_WINDOWS_MOBILE +TEST(StringTest, AnsiAndUtf16Null) { + EXPECT_EQ(NULL, String::AnsiToUtf16(NULL)); + EXPECT_EQ(NULL, String::Utf16ToAnsi(NULL)); +} + +TEST(StringTest, AnsiAndUtf16ConvertBasic) { + const char* ansi = String::Utf16ToAnsi(L"str"); + EXPECT_STREQ("str", ansi); + delete [] ansi; + const WCHAR* utf16 = String::AnsiToUtf16("str"); + EXPECT_EQ(0, wcsncmp(L"str", utf16, 3)); + delete [] utf16; +} + +TEST(StringTest, AnsiAndUtf16ConvertPathChars) { + const char* ansi = String::Utf16ToAnsi(L".:\\ \"*?"); + EXPECT_STREQ(".:\\ \"*?", ansi); + delete [] ansi; + const WCHAR* utf16 = String::AnsiToUtf16(".:\\ \"*?"); + EXPECT_EQ(0, wcsncmp(L".:\\ \"*?", utf16, 3)); + delete [] utf16; +} +# endif // GTEST_OS_WINDOWS_MOBILE + +#endif // GTEST_OS_WINDOWS + +// Tests TestProperty construction. +TEST(TestPropertyTest, StringValue) { + TestProperty property("key", "1"); + EXPECT_STREQ("key", property.key()); + EXPECT_STREQ("1", property.value()); +} + +// Tests TestProperty replacing a value. +TEST(TestPropertyTest, ReplaceStringValue) { + TestProperty property("key", "1"); + EXPECT_STREQ("1", property.value()); + property.SetValue("2"); + EXPECT_STREQ("2", property.value()); +} + +// AddFatalFailure() and AddNonfatalFailure() must be stand-alone +// functions (i.e. their definitions cannot be inlined at the call +// sites), or C++Builder won't compile the code. +static void AddFatalFailure() { + FAIL() << "Expected fatal failure."; +} + +static void AddNonfatalFailure() { + ADD_FAILURE() << "Expected non-fatal failure."; +} + +class ScopedFakeTestPartResultReporterTest : public Test { + public: // Must be public and not protected due to a bug in g++ 3.4.2. + enum FailureMode { + FATAL_FAILURE, + NONFATAL_FAILURE + }; + static void AddFailure(FailureMode failure) { + if (failure == FATAL_FAILURE) { + AddFatalFailure(); + } else { + AddNonfatalFailure(); + } + } +}; + +// Tests that ScopedFakeTestPartResultReporter intercepts test +// failures. +TEST_F(ScopedFakeTestPartResultReporterTest, InterceptsTestFailures) { + TestPartResultArray results; + { + ScopedFakeTestPartResultReporter reporter( + ScopedFakeTestPartResultReporter::INTERCEPT_ONLY_CURRENT_THREAD, + &results); + AddFailure(NONFATAL_FAILURE); + AddFailure(FATAL_FAILURE); + } + + EXPECT_EQ(2, results.size()); + EXPECT_TRUE(results.GetTestPartResult(0).nonfatally_failed()); + EXPECT_TRUE(results.GetTestPartResult(1).fatally_failed()); +} + +TEST_F(ScopedFakeTestPartResultReporterTest, DeprecatedConstructor) { + TestPartResultArray results; + { + // Tests, that the deprecated constructor still works. + ScopedFakeTestPartResultReporter reporter(&results); + AddFailure(NONFATAL_FAILURE); + } + EXPECT_EQ(1, results.size()); +} + +#if GTEST_IS_THREADSAFE + +class ScopedFakeTestPartResultReporterWithThreadsTest + : public ScopedFakeTestPartResultReporterTest { + protected: + static void AddFailureInOtherThread(FailureMode failure) { + ThreadWithParam thread(&AddFailure, failure, NULL); + thread.Join(); + } +}; + +TEST_F(ScopedFakeTestPartResultReporterWithThreadsTest, + InterceptsTestFailuresInAllThreads) { + TestPartResultArray results; + { + ScopedFakeTestPartResultReporter reporter( + ScopedFakeTestPartResultReporter::INTERCEPT_ALL_THREADS, &results); + AddFailure(NONFATAL_FAILURE); + AddFailure(FATAL_FAILURE); + AddFailureInOtherThread(NONFATAL_FAILURE); + AddFailureInOtherThread(FATAL_FAILURE); + } + + EXPECT_EQ(4, results.size()); + EXPECT_TRUE(results.GetTestPartResult(0).nonfatally_failed()); + EXPECT_TRUE(results.GetTestPartResult(1).fatally_failed()); + EXPECT_TRUE(results.GetTestPartResult(2).nonfatally_failed()); + EXPECT_TRUE(results.GetTestPartResult(3).fatally_failed()); +} + +#endif // GTEST_IS_THREADSAFE + +// Tests EXPECT_FATAL_FAILURE{,ON_ALL_THREADS}. Makes sure that they +// work even if the failure is generated in a called function rather than +// the current context. + +typedef ScopedFakeTestPartResultReporterTest ExpectFatalFailureTest; + +TEST_F(ExpectFatalFailureTest, CatchesFatalFaliure) { + EXPECT_FATAL_FAILURE(AddFatalFailure(), "Expected fatal failure."); +} + +#if GTEST_HAS_GLOBAL_STRING +TEST_F(ExpectFatalFailureTest, AcceptsStringObject) { + EXPECT_FATAL_FAILURE(AddFatalFailure(), ::string("Expected fatal failure.")); +} +#endif + +TEST_F(ExpectFatalFailureTest, AcceptsStdStringObject) { + EXPECT_FATAL_FAILURE(AddFatalFailure(), + ::std::string("Expected fatal failure.")); +} + +TEST_F(ExpectFatalFailureTest, CatchesFatalFailureOnAllThreads) { + // We have another test below to verify that the macro catches fatal + // failures generated on another thread. + EXPECT_FATAL_FAILURE_ON_ALL_THREADS(AddFatalFailure(), + "Expected fatal failure."); +} + +#ifdef __BORLANDC__ +// Silences warnings: "Condition is always true" +# pragma option push -w-ccc +#endif + +// Tests that EXPECT_FATAL_FAILURE() can be used in a non-void +// function even when the statement in it contains ASSERT_*. + +int NonVoidFunction() { + EXPECT_FATAL_FAILURE(ASSERT_TRUE(false), ""); + EXPECT_FATAL_FAILURE_ON_ALL_THREADS(FAIL(), ""); + return 0; +} + +TEST_F(ExpectFatalFailureTest, CanBeUsedInNonVoidFunction) { + NonVoidFunction(); +} + +// Tests that EXPECT_FATAL_FAILURE(statement, ...) doesn't abort the +// current function even though 'statement' generates a fatal failure. + +void DoesNotAbortHelper(bool* aborted) { + EXPECT_FATAL_FAILURE(ASSERT_TRUE(false), ""); + EXPECT_FATAL_FAILURE_ON_ALL_THREADS(FAIL(), ""); + + *aborted = false; +} + +#ifdef __BORLANDC__ +// Restores warnings after previous "#pragma option push" suppressed them. +# pragma option pop +#endif + +TEST_F(ExpectFatalFailureTest, DoesNotAbort) { + bool aborted = true; + DoesNotAbortHelper(&aborted); + EXPECT_FALSE(aborted); +} + +// Tests that the EXPECT_FATAL_FAILURE{,_ON_ALL_THREADS} accepts a +// statement that contains a macro which expands to code containing an +// unprotected comma. + +static int global_var = 0; +#define GTEST_USE_UNPROTECTED_COMMA_ global_var++, global_var++ + +TEST_F(ExpectFatalFailureTest, AcceptsMacroThatExpandsToUnprotectedComma) { +#ifndef __BORLANDC__ + // ICE's in C++Builder. + EXPECT_FATAL_FAILURE({ + GTEST_USE_UNPROTECTED_COMMA_; + AddFatalFailure(); + }, ""); +#endif + + EXPECT_FATAL_FAILURE_ON_ALL_THREADS({ + GTEST_USE_UNPROTECTED_COMMA_; + AddFatalFailure(); + }, ""); +} + +// Tests EXPECT_NONFATAL_FAILURE{,ON_ALL_THREADS}. + +typedef ScopedFakeTestPartResultReporterTest ExpectNonfatalFailureTest; + +TEST_F(ExpectNonfatalFailureTest, CatchesNonfatalFailure) { + EXPECT_NONFATAL_FAILURE(AddNonfatalFailure(), + "Expected non-fatal failure."); +} + +#if GTEST_HAS_GLOBAL_STRING +TEST_F(ExpectNonfatalFailureTest, AcceptsStringObject) { + EXPECT_NONFATAL_FAILURE(AddNonfatalFailure(), + ::string("Expected non-fatal failure.")); +} +#endif + +TEST_F(ExpectNonfatalFailureTest, AcceptsStdStringObject) { + EXPECT_NONFATAL_FAILURE(AddNonfatalFailure(), + ::std::string("Expected non-fatal failure.")); +} + +TEST_F(ExpectNonfatalFailureTest, CatchesNonfatalFailureOnAllThreads) { + // We have another test below to verify that the macro catches + // non-fatal failures generated on another thread. + EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS(AddNonfatalFailure(), + "Expected non-fatal failure."); +} + +// Tests that the EXPECT_NONFATAL_FAILURE{,_ON_ALL_THREADS} accepts a +// statement that contains a macro which expands to code containing an +// unprotected comma. +TEST_F(ExpectNonfatalFailureTest, AcceptsMacroThatExpandsToUnprotectedComma) { + EXPECT_NONFATAL_FAILURE({ + GTEST_USE_UNPROTECTED_COMMA_; + AddNonfatalFailure(); + }, ""); + + EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS({ + GTEST_USE_UNPROTECTED_COMMA_; + AddNonfatalFailure(); + }, ""); +} + +#if GTEST_IS_THREADSAFE + +typedef ScopedFakeTestPartResultReporterWithThreadsTest + ExpectFailureWithThreadsTest; + +TEST_F(ExpectFailureWithThreadsTest, ExpectFatalFailureOnAllThreads) { + EXPECT_FATAL_FAILURE_ON_ALL_THREADS(AddFailureInOtherThread(FATAL_FAILURE), + "Expected fatal failure."); +} + +TEST_F(ExpectFailureWithThreadsTest, ExpectNonFatalFailureOnAllThreads) { + EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS( + AddFailureInOtherThread(NONFATAL_FAILURE), "Expected non-fatal failure."); +} + +#endif // GTEST_IS_THREADSAFE + +// Tests the TestProperty class. + +TEST(TestPropertyTest, ConstructorWorks) { + const TestProperty property("key", "value"); + EXPECT_STREQ("key", property.key()); + EXPECT_STREQ("value", property.value()); +} + +TEST(TestPropertyTest, SetValue) { + TestProperty property("key", "value_1"); + EXPECT_STREQ("key", property.key()); + property.SetValue("value_2"); + EXPECT_STREQ("key", property.key()); + EXPECT_STREQ("value_2", property.value()); +} + +// Tests the TestResult class + +// The test fixture for testing TestResult. +class TestResultTest : public Test { + protected: + typedef std::vector TPRVector; + + // We make use of 2 TestPartResult objects, + TestPartResult * pr1, * pr2; + + // ... and 3 TestResult objects. + TestResult * r0, * r1, * r2; + + virtual void SetUp() { + // pr1 is for success. + pr1 = new TestPartResult(TestPartResult::kSuccess, + "foo/bar.cc", + 10, + "Success!"); + + // pr2 is for fatal failure. + pr2 = new TestPartResult(TestPartResult::kFatalFailure, + "foo/bar.cc", + -1, // This line number means "unknown" + "Failure!"); + + // Creates the TestResult objects. + r0 = new TestResult(); + r1 = new TestResult(); + r2 = new TestResult(); + + // In order to test TestResult, we need to modify its internal + // state, in particular the TestPartResult vector it holds. + // test_part_results() returns a const reference to this vector. + // We cast it to a non-const object s.t. it can be modified (yes, + // this is a hack). + TPRVector* results1 = const_cast( + &TestResultAccessor::test_part_results(*r1)); + TPRVector* results2 = const_cast( + &TestResultAccessor::test_part_results(*r2)); + + // r0 is an empty TestResult. + + // r1 contains a single SUCCESS TestPartResult. + results1->push_back(*pr1); + + // r2 contains a SUCCESS, and a FAILURE. + results2->push_back(*pr1); + results2->push_back(*pr2); + } + + virtual void TearDown() { + delete pr1; + delete pr2; + + delete r0; + delete r1; + delete r2; + } + + // Helper that compares two two TestPartResults. + static void CompareTestPartResult(const TestPartResult& expected, + const TestPartResult& actual) { + EXPECT_EQ(expected.type(), actual.type()); + EXPECT_STREQ(expected.file_name(), actual.file_name()); + EXPECT_EQ(expected.line_number(), actual.line_number()); + EXPECT_STREQ(expected.summary(), actual.summary()); + EXPECT_STREQ(expected.message(), actual.message()); + EXPECT_EQ(expected.passed(), actual.passed()); + EXPECT_EQ(expected.failed(), actual.failed()); + EXPECT_EQ(expected.nonfatally_failed(), actual.nonfatally_failed()); + EXPECT_EQ(expected.fatally_failed(), actual.fatally_failed()); + } +}; + +// Tests TestResult::total_part_count(). +TEST_F(TestResultTest, total_part_count) { + ASSERT_EQ(0, r0->total_part_count()); + ASSERT_EQ(1, r1->total_part_count()); + ASSERT_EQ(2, r2->total_part_count()); +} + +// Tests TestResult::Passed(). +TEST_F(TestResultTest, Passed) { + ASSERT_TRUE(r0->Passed()); + ASSERT_TRUE(r1->Passed()); + ASSERT_FALSE(r2->Passed()); +} + +// Tests TestResult::Failed(). +TEST_F(TestResultTest, Failed) { + ASSERT_FALSE(r0->Failed()); + ASSERT_FALSE(r1->Failed()); + ASSERT_TRUE(r2->Failed()); +} + +// Tests TestResult::GetTestPartResult(). + +typedef TestResultTest TestResultDeathTest; + +TEST_F(TestResultDeathTest, GetTestPartResult) { + CompareTestPartResult(*pr1, r2->GetTestPartResult(0)); + CompareTestPartResult(*pr2, r2->GetTestPartResult(1)); + EXPECT_DEATH_IF_SUPPORTED(r2->GetTestPartResult(2), ""); + EXPECT_DEATH_IF_SUPPORTED(r2->GetTestPartResult(-1), ""); +} + +// Tests TestResult has no properties when none are added. +TEST(TestResultPropertyTest, NoPropertiesFoundWhenNoneAreAdded) { + TestResult test_result; + ASSERT_EQ(0, test_result.test_property_count()); +} + +// Tests TestResult has the expected property when added. +TEST(TestResultPropertyTest, OnePropertyFoundWhenAdded) { + TestResult test_result; + TestProperty property("key_1", "1"); + TestResultAccessor::RecordProperty(&test_result, property); + ASSERT_EQ(1, test_result.test_property_count()); + const TestProperty& actual_property = test_result.GetTestProperty(0); + EXPECT_STREQ("key_1", actual_property.key()); + EXPECT_STREQ("1", actual_property.value()); +} + +// Tests TestResult has multiple properties when added. +TEST(TestResultPropertyTest, MultiplePropertiesFoundWhenAdded) { + TestResult test_result; + TestProperty property_1("key_1", "1"); + TestProperty property_2("key_2", "2"); + TestResultAccessor::RecordProperty(&test_result, property_1); + TestResultAccessor::RecordProperty(&test_result, property_2); + ASSERT_EQ(2, test_result.test_property_count()); + const TestProperty& actual_property_1 = test_result.GetTestProperty(0); + EXPECT_STREQ("key_1", actual_property_1.key()); + EXPECT_STREQ("1", actual_property_1.value()); + + const TestProperty& actual_property_2 = test_result.GetTestProperty(1); + EXPECT_STREQ("key_2", actual_property_2.key()); + EXPECT_STREQ("2", actual_property_2.value()); +} + +// Tests TestResult::RecordProperty() overrides values for duplicate keys. +TEST(TestResultPropertyTest, OverridesValuesForDuplicateKeys) { + TestResult test_result; + TestProperty property_1_1("key_1", "1"); + TestProperty property_2_1("key_2", "2"); + TestProperty property_1_2("key_1", "12"); + TestProperty property_2_2("key_2", "22"); + TestResultAccessor::RecordProperty(&test_result, property_1_1); + TestResultAccessor::RecordProperty(&test_result, property_2_1); + TestResultAccessor::RecordProperty(&test_result, property_1_2); + TestResultAccessor::RecordProperty(&test_result, property_2_2); + + ASSERT_EQ(2, test_result.test_property_count()); + const TestProperty& actual_property_1 = test_result.GetTestProperty(0); + EXPECT_STREQ("key_1", actual_property_1.key()); + EXPECT_STREQ("12", actual_property_1.value()); + + const TestProperty& actual_property_2 = test_result.GetTestProperty(1); + EXPECT_STREQ("key_2", actual_property_2.key()); + EXPECT_STREQ("22", actual_property_2.value()); +} + +// Tests TestResult::GetTestProperty(). +TEST(TestResultPropertyDeathTest, GetTestProperty) { + TestResult test_result; + TestProperty property_1("key_1", "1"); + TestProperty property_2("key_2", "2"); + TestProperty property_3("key_3", "3"); + TestResultAccessor::RecordProperty(&test_result, property_1); + TestResultAccessor::RecordProperty(&test_result, property_2); + TestResultAccessor::RecordProperty(&test_result, property_3); + + const TestProperty& fetched_property_1 = test_result.GetTestProperty(0); + const TestProperty& fetched_property_2 = test_result.GetTestProperty(1); + const TestProperty& fetched_property_3 = test_result.GetTestProperty(2); + + EXPECT_STREQ("key_1", fetched_property_1.key()); + EXPECT_STREQ("1", fetched_property_1.value()); + + EXPECT_STREQ("key_2", fetched_property_2.key()); + EXPECT_STREQ("2", fetched_property_2.value()); + + EXPECT_STREQ("key_3", fetched_property_3.key()); + EXPECT_STREQ("3", fetched_property_3.value()); + + EXPECT_DEATH_IF_SUPPORTED(test_result.GetTestProperty(3), ""); + EXPECT_DEATH_IF_SUPPORTED(test_result.GetTestProperty(-1), ""); +} + +// When a property using a reserved key is supplied to this function, it tests +// that a non-fatal failure is added, a fatal failure is not added, and that the +// property is not recorded. +void ExpectNonFatalFailureRecordingPropertyWithReservedKey(const char* key) { + TestResult test_result; + TestProperty property(key, "1"); + EXPECT_NONFATAL_FAILURE( + TestResultAccessor::RecordProperty(&test_result, property), + "Reserved key"); + ASSERT_EQ(0, test_result.test_property_count()) << "Not recorded"; +} + +// Attempting to recording a property with the Reserved literal "name" +// should add a non-fatal failure and the property should not be recorded. +TEST(TestResultPropertyTest, AddFailureWhenUsingReservedKeyCalledName) { + ExpectNonFatalFailureRecordingPropertyWithReservedKey("name"); +} + +// Attempting to recording a property with the Reserved literal "status" +// should add a non-fatal failure and the property should not be recorded. +TEST(TestResultPropertyTest, AddFailureWhenUsingReservedKeyCalledStatus) { + ExpectNonFatalFailureRecordingPropertyWithReservedKey("status"); +} + +// Attempting to recording a property with the Reserved literal "time" +// should add a non-fatal failure and the property should not be recorded. +TEST(TestResultPropertyTest, AddFailureWhenUsingReservedKeyCalledTime) { + ExpectNonFatalFailureRecordingPropertyWithReservedKey("time"); +} + +// Attempting to recording a property with the Reserved literal "classname" +// should add a non-fatal failure and the property should not be recorded. +TEST(TestResultPropertyTest, AddFailureWhenUsingReservedKeyCalledClassname) { + ExpectNonFatalFailureRecordingPropertyWithReservedKey("classname"); +} + +// Tests that GTestFlagSaver works on Windows and Mac. + +class GTestFlagSaverTest : public Test { + protected: + // Saves the Google Test flags such that we can restore them later, and + // then sets them to their default values. This will be called + // before the first test in this test case is run. + static void SetUpTestCase() { + saver_ = new GTestFlagSaver; + + GTEST_FLAG(also_run_disabled_tests) = false; + GTEST_FLAG(break_on_failure) = false; + GTEST_FLAG(catch_exceptions) = false; + GTEST_FLAG(death_test_use_fork) = false; + GTEST_FLAG(color) = "auto"; + GTEST_FLAG(filter) = ""; + GTEST_FLAG(list_tests) = false; + GTEST_FLAG(output) = ""; + GTEST_FLAG(print_time) = true; + GTEST_FLAG(random_seed) = 0; + GTEST_FLAG(repeat) = 1; + GTEST_FLAG(shuffle) = false; + GTEST_FLAG(stack_trace_depth) = kMaxStackTraceDepth; + GTEST_FLAG(stream_result_to) = ""; + GTEST_FLAG(throw_on_failure) = false; + } + + // Restores the Google Test flags that the tests have modified. This will + // be called after the last test in this test case is run. + static void TearDownTestCase() { + delete saver_; + saver_ = NULL; + } + + // Verifies that the Google Test flags have their default values, and then + // modifies each of them. + void VerifyAndModifyFlags() { + EXPECT_FALSE(GTEST_FLAG(also_run_disabled_tests)); + EXPECT_FALSE(GTEST_FLAG(break_on_failure)); + EXPECT_FALSE(GTEST_FLAG(catch_exceptions)); + EXPECT_STREQ("auto", GTEST_FLAG(color).c_str()); + EXPECT_FALSE(GTEST_FLAG(death_test_use_fork)); + EXPECT_STREQ("", GTEST_FLAG(filter).c_str()); + EXPECT_FALSE(GTEST_FLAG(list_tests)); + EXPECT_STREQ("", GTEST_FLAG(output).c_str()); + EXPECT_TRUE(GTEST_FLAG(print_time)); + EXPECT_EQ(0, GTEST_FLAG(random_seed)); + EXPECT_EQ(1, GTEST_FLAG(repeat)); + EXPECT_FALSE(GTEST_FLAG(shuffle)); + EXPECT_EQ(kMaxStackTraceDepth, GTEST_FLAG(stack_trace_depth)); + EXPECT_STREQ("", GTEST_FLAG(stream_result_to).c_str()); + EXPECT_FALSE(GTEST_FLAG(throw_on_failure)); + + GTEST_FLAG(also_run_disabled_tests) = true; + GTEST_FLAG(break_on_failure) = true; + GTEST_FLAG(catch_exceptions) = true; + GTEST_FLAG(color) = "no"; + GTEST_FLAG(death_test_use_fork) = true; + GTEST_FLAG(filter) = "abc"; + GTEST_FLAG(list_tests) = true; + GTEST_FLAG(output) = "xml:foo.xml"; + GTEST_FLAG(print_time) = false; + GTEST_FLAG(random_seed) = 1; + GTEST_FLAG(repeat) = 100; + GTEST_FLAG(shuffle) = true; + GTEST_FLAG(stack_trace_depth) = 1; + GTEST_FLAG(stream_result_to) = "localhost:1234"; + GTEST_FLAG(throw_on_failure) = true; + } + + private: + // For saving Google Test flags during this test case. + static GTestFlagSaver* saver_; +}; + +GTestFlagSaver* GTestFlagSaverTest::saver_ = NULL; + +// Google Test doesn't guarantee the order of tests. The following two +// tests are designed to work regardless of their order. + +// Modifies the Google Test flags in the test body. +TEST_F(GTestFlagSaverTest, ModifyGTestFlags) { + VerifyAndModifyFlags(); +} + +// Verifies that the Google Test flags in the body of the previous test were +// restored to their original values. +TEST_F(GTestFlagSaverTest, VerifyGTestFlags) { + VerifyAndModifyFlags(); +} + +// Sets an environment variable with the given name to the given +// value. If the value argument is "", unsets the environment +// variable. The caller must ensure that both arguments are not NULL. +static void SetEnv(const char* name, const char* value) { +#if GTEST_OS_WINDOWS_MOBILE + // Environment variables are not supported on Windows CE. + return; +#elif defined(__BORLANDC__) || defined(__SunOS_5_8) || defined(__SunOS_5_9) + // C++Builder's putenv only stores a pointer to its parameter; we have to + // ensure that the string remains valid as long as it might be needed. + // We use an std::map to do so. + static std::map added_env; + + // Because putenv stores a pointer to the string buffer, we can't delete the + // previous string (if present) until after it's replaced. + std::string *prev_env = NULL; + if (added_env.find(name) != added_env.end()) { + prev_env = added_env[name]; + } + added_env[name] = new std::string( + (Message() << name << "=" << value).GetString()); + + // The standard signature of putenv accepts a 'char*' argument. Other + // implementations, like C++Builder's, accept a 'const char*'. + // We cast away the 'const' since that would work for both variants. + putenv(const_cast(added_env[name]->c_str())); + delete prev_env; +#elif GTEST_OS_WINDOWS // If we are on Windows proper. + _putenv((Message() << name << "=" << value).GetString().c_str()); +#else + if (*value == '\0') { + unsetenv(name); + } else { + setenv(name, value, 1); + } +#endif // GTEST_OS_WINDOWS_MOBILE +} + +#if !GTEST_OS_WINDOWS_MOBILE +// Environment variables are not supported on Windows CE. + +using testing::internal::Int32FromGTestEnv; + +// Tests Int32FromGTestEnv(). + +// Tests that Int32FromGTestEnv() returns the default value when the +// environment variable is not set. +TEST(Int32FromGTestEnvTest, ReturnsDefaultWhenVariableIsNotSet) { + SetEnv(GTEST_FLAG_PREFIX_UPPER_ "TEMP", ""); + EXPECT_EQ(10, Int32FromGTestEnv("temp", 10)); +} + +// Tests that Int32FromGTestEnv() returns the default value when the +// environment variable overflows as an Int32. +TEST(Int32FromGTestEnvTest, ReturnsDefaultWhenValueOverflows) { + printf("(expecting 2 warnings)\n"); + + SetEnv(GTEST_FLAG_PREFIX_UPPER_ "TEMP", "12345678987654321"); + EXPECT_EQ(20, Int32FromGTestEnv("temp", 20)); + + SetEnv(GTEST_FLAG_PREFIX_UPPER_ "TEMP", "-12345678987654321"); + EXPECT_EQ(30, Int32FromGTestEnv("temp", 30)); +} + +// Tests that Int32FromGTestEnv() returns the default value when the +// environment variable does not represent a valid decimal integer. +TEST(Int32FromGTestEnvTest, ReturnsDefaultWhenValueIsInvalid) { + printf("(expecting 2 warnings)\n"); + + SetEnv(GTEST_FLAG_PREFIX_UPPER_ "TEMP", "A1"); + EXPECT_EQ(40, Int32FromGTestEnv("temp", 40)); + + SetEnv(GTEST_FLAG_PREFIX_UPPER_ "TEMP", "12X"); + EXPECT_EQ(50, Int32FromGTestEnv("temp", 50)); +} + +// Tests that Int32FromGTestEnv() parses and returns the value of the +// environment variable when it represents a valid decimal integer in +// the range of an Int32. +TEST(Int32FromGTestEnvTest, ParsesAndReturnsValidValue) { + SetEnv(GTEST_FLAG_PREFIX_UPPER_ "TEMP", "123"); + EXPECT_EQ(123, Int32FromGTestEnv("temp", 0)); + + SetEnv(GTEST_FLAG_PREFIX_UPPER_ "TEMP", "-321"); + EXPECT_EQ(-321, Int32FromGTestEnv("temp", 0)); +} +#endif // !GTEST_OS_WINDOWS_MOBILE + +// Tests ParseInt32Flag(). + +// Tests that ParseInt32Flag() returns false and doesn't change the +// output value when the flag has wrong format +TEST(ParseInt32FlagTest, ReturnsFalseForInvalidFlag) { + Int32 value = 123; + EXPECT_FALSE(ParseInt32Flag("--a=100", "b", &value)); + EXPECT_EQ(123, value); + + EXPECT_FALSE(ParseInt32Flag("a=100", "a", &value)); + EXPECT_EQ(123, value); +} + +// Tests that ParseInt32Flag() returns false and doesn't change the +// output value when the flag overflows as an Int32. +TEST(ParseInt32FlagTest, ReturnsDefaultWhenValueOverflows) { + printf("(expecting 2 warnings)\n"); + + Int32 value = 123; + EXPECT_FALSE(ParseInt32Flag("--abc=12345678987654321", "abc", &value)); + EXPECT_EQ(123, value); + + EXPECT_FALSE(ParseInt32Flag("--abc=-12345678987654321", "abc", &value)); + EXPECT_EQ(123, value); +} + +// Tests that ParseInt32Flag() returns false and doesn't change the +// output value when the flag does not represent a valid decimal +// integer. +TEST(ParseInt32FlagTest, ReturnsDefaultWhenValueIsInvalid) { + printf("(expecting 2 warnings)\n"); + + Int32 value = 123; + EXPECT_FALSE(ParseInt32Flag("--abc=A1", "abc", &value)); + EXPECT_EQ(123, value); + + EXPECT_FALSE(ParseInt32Flag("--abc=12X", "abc", &value)); + EXPECT_EQ(123, value); +} + +// Tests that ParseInt32Flag() parses the value of the flag and +// returns true when the flag represents a valid decimal integer in +// the range of an Int32. +TEST(ParseInt32FlagTest, ParsesAndReturnsValidValue) { + Int32 value = 123; + EXPECT_TRUE(ParseInt32Flag("--" GTEST_FLAG_PREFIX_ "abc=456", "abc", &value)); + EXPECT_EQ(456, value); + + EXPECT_TRUE(ParseInt32Flag("--" GTEST_FLAG_PREFIX_ "abc=-789", + "abc", &value)); + EXPECT_EQ(-789, value); +} + +// Tests that Int32FromEnvOrDie() parses the value of the var or +// returns the correct default. +// Environment variables are not supported on Windows CE. +#if !GTEST_OS_WINDOWS_MOBILE +TEST(Int32FromEnvOrDieTest, ParsesAndReturnsValidValue) { + EXPECT_EQ(333, Int32FromEnvOrDie(GTEST_FLAG_PREFIX_UPPER_ "UnsetVar", 333)); + SetEnv(GTEST_FLAG_PREFIX_UPPER_ "UnsetVar", "123"); + EXPECT_EQ(123, Int32FromEnvOrDie(GTEST_FLAG_PREFIX_UPPER_ "UnsetVar", 333)); + SetEnv(GTEST_FLAG_PREFIX_UPPER_ "UnsetVar", "-123"); + EXPECT_EQ(-123, Int32FromEnvOrDie(GTEST_FLAG_PREFIX_UPPER_ "UnsetVar", 333)); +} +#endif // !GTEST_OS_WINDOWS_MOBILE + +// Tests that Int32FromEnvOrDie() aborts with an error message +// if the variable is not an Int32. +TEST(Int32FromEnvOrDieDeathTest, AbortsOnFailure) { + SetEnv(GTEST_FLAG_PREFIX_UPPER_ "VAR", "xxx"); + EXPECT_DEATH_IF_SUPPORTED( + Int32FromEnvOrDie(GTEST_FLAG_PREFIX_UPPER_ "VAR", 123), + ".*"); +} + +// Tests that Int32FromEnvOrDie() aborts with an error message +// if the variable cannot be represnted by an Int32. +TEST(Int32FromEnvOrDieDeathTest, AbortsOnInt32Overflow) { + SetEnv(GTEST_FLAG_PREFIX_UPPER_ "VAR", "1234567891234567891234"); + EXPECT_DEATH_IF_SUPPORTED( + Int32FromEnvOrDie(GTEST_FLAG_PREFIX_UPPER_ "VAR", 123), + ".*"); +} + +// Tests that ShouldRunTestOnShard() selects all tests +// where there is 1 shard. +TEST(ShouldRunTestOnShardTest, IsPartitionWhenThereIsOneShard) { + EXPECT_TRUE(ShouldRunTestOnShard(1, 0, 0)); + EXPECT_TRUE(ShouldRunTestOnShard(1, 0, 1)); + EXPECT_TRUE(ShouldRunTestOnShard(1, 0, 2)); + EXPECT_TRUE(ShouldRunTestOnShard(1, 0, 3)); + EXPECT_TRUE(ShouldRunTestOnShard(1, 0, 4)); +} + +class ShouldShardTest : public testing::Test { + protected: + virtual void SetUp() { + index_var_ = GTEST_FLAG_PREFIX_UPPER_ "INDEX"; + total_var_ = GTEST_FLAG_PREFIX_UPPER_ "TOTAL"; + } + + virtual void TearDown() { + SetEnv(index_var_, ""); + SetEnv(total_var_, ""); + } + + const char* index_var_; + const char* total_var_; +}; + +// Tests that sharding is disabled if neither of the environment variables +// are set. +TEST_F(ShouldShardTest, ReturnsFalseWhenNeitherEnvVarIsSet) { + SetEnv(index_var_, ""); + SetEnv(total_var_, ""); + + EXPECT_FALSE(ShouldShard(total_var_, index_var_, false)); + EXPECT_FALSE(ShouldShard(total_var_, index_var_, true)); +} + +// Tests that sharding is not enabled if total_shards == 1. +TEST_F(ShouldShardTest, ReturnsFalseWhenTotalShardIsOne) { + SetEnv(index_var_, "0"); + SetEnv(total_var_, "1"); + EXPECT_FALSE(ShouldShard(total_var_, index_var_, false)); + EXPECT_FALSE(ShouldShard(total_var_, index_var_, true)); +} + +// Tests that sharding is enabled if total_shards > 1 and +// we are not in a death test subprocess. +// Environment variables are not supported on Windows CE. +#if !GTEST_OS_WINDOWS_MOBILE +TEST_F(ShouldShardTest, WorksWhenShardEnvVarsAreValid) { + SetEnv(index_var_, "4"); + SetEnv(total_var_, "22"); + EXPECT_TRUE(ShouldShard(total_var_, index_var_, false)); + EXPECT_FALSE(ShouldShard(total_var_, index_var_, true)); + + SetEnv(index_var_, "8"); + SetEnv(total_var_, "9"); + EXPECT_TRUE(ShouldShard(total_var_, index_var_, false)); + EXPECT_FALSE(ShouldShard(total_var_, index_var_, true)); + + SetEnv(index_var_, "0"); + SetEnv(total_var_, "9"); + EXPECT_TRUE(ShouldShard(total_var_, index_var_, false)); + EXPECT_FALSE(ShouldShard(total_var_, index_var_, true)); +} +#endif // !GTEST_OS_WINDOWS_MOBILE + +// Tests that we exit in error if the sharding values are not valid. + +typedef ShouldShardTest ShouldShardDeathTest; + +TEST_F(ShouldShardDeathTest, AbortsWhenShardingEnvVarsAreInvalid) { + SetEnv(index_var_, "4"); + SetEnv(total_var_, "4"); + EXPECT_DEATH_IF_SUPPORTED(ShouldShard(total_var_, index_var_, false), ".*"); + + SetEnv(index_var_, "4"); + SetEnv(total_var_, "-2"); + EXPECT_DEATH_IF_SUPPORTED(ShouldShard(total_var_, index_var_, false), ".*"); + + SetEnv(index_var_, "5"); + SetEnv(total_var_, ""); + EXPECT_DEATH_IF_SUPPORTED(ShouldShard(total_var_, index_var_, false), ".*"); + + SetEnv(index_var_, ""); + SetEnv(total_var_, "5"); + EXPECT_DEATH_IF_SUPPORTED(ShouldShard(total_var_, index_var_, false), ".*"); +} + +// Tests that ShouldRunTestOnShard is a partition when 5 +// shards are used. +TEST(ShouldRunTestOnShardTest, IsPartitionWhenThereAreFiveShards) { + // Choose an arbitrary number of tests and shards. + const int num_tests = 17; + const int num_shards = 5; + + // Check partitioning: each test should be on exactly 1 shard. + for (int test_id = 0; test_id < num_tests; test_id++) { + int prev_selected_shard_index = -1; + for (int shard_index = 0; shard_index < num_shards; shard_index++) { + if (ShouldRunTestOnShard(num_shards, shard_index, test_id)) { + if (prev_selected_shard_index < 0) { + prev_selected_shard_index = shard_index; + } else { + ADD_FAILURE() << "Shard " << prev_selected_shard_index << " and " + << shard_index << " are both selected to run test " << test_id; + } + } + } + } + + // Check balance: This is not required by the sharding protocol, but is a + // desirable property for performance. + for (int shard_index = 0; shard_index < num_shards; shard_index++) { + int num_tests_on_shard = 0; + for (int test_id = 0; test_id < num_tests; test_id++) { + num_tests_on_shard += + ShouldRunTestOnShard(num_shards, shard_index, test_id); + } + EXPECT_GE(num_tests_on_shard, num_tests / num_shards); + } +} + +// For the same reason we are not explicitly testing everything in the +// Test class, there are no separate tests for the following classes +// (except for some trivial cases): +// +// TestCase, UnitTest, UnitTestResultPrinter. +// +// Similarly, there are no separate tests for the following macros: +// +// TEST, TEST_F, RUN_ALL_TESTS + +TEST(UnitTestTest, CanGetOriginalWorkingDir) { + ASSERT_TRUE(UnitTest::GetInstance()->original_working_dir() != NULL); + EXPECT_STRNE(UnitTest::GetInstance()->original_working_dir(), ""); +} + +TEST(UnitTestTest, ReturnsPlausibleTimestamp) { + EXPECT_LT(0, UnitTest::GetInstance()->start_timestamp()); + EXPECT_LE(UnitTest::GetInstance()->start_timestamp(), GetTimeInMillis()); +} + +// This group of tests is for predicate assertions (ASSERT_PRED*, etc) +// of various arities. They do not attempt to be exhaustive. Rather, +// view them as smoke tests that can be easily reviewed and verified. +// A more complete set of tests for predicate assertions can be found +// in gtest_pred_impl_unittest.cc. + +// First, some predicates and predicate-formatters needed by the tests. + +// Returns true iff the argument is an even number. +bool IsEven(int n) { + return (n % 2) == 0; +} + +// A functor that returns true iff the argument is an even number. +struct IsEvenFunctor { + bool operator()(int n) { return IsEven(n); } +}; + +// A predicate-formatter function that asserts the argument is an even +// number. +AssertionResult AssertIsEven(const char* expr, int n) { + if (IsEven(n)) { + return AssertionSuccess(); + } + + Message msg; + msg << expr << " evaluates to " << n << ", which is not even."; + return AssertionFailure(msg); +} + +// A predicate function that returns AssertionResult for use in +// EXPECT/ASSERT_TRUE/FALSE. +AssertionResult ResultIsEven(int n) { + if (IsEven(n)) + return AssertionSuccess() << n << " is even"; + else + return AssertionFailure() << n << " is odd"; +} + +// A predicate function that returns AssertionResult but gives no +// explanation why it succeeds. Needed for testing that +// EXPECT/ASSERT_FALSE handles such functions correctly. +AssertionResult ResultIsEvenNoExplanation(int n) { + if (IsEven(n)) + return AssertionSuccess(); + else + return AssertionFailure() << n << " is odd"; +} + +// A predicate-formatter functor that asserts the argument is an even +// number. +struct AssertIsEvenFunctor { + AssertionResult operator()(const char* expr, int n) { + return AssertIsEven(expr, n); + } +}; + +// Returns true iff the sum of the arguments is an even number. +bool SumIsEven2(int n1, int n2) { + return IsEven(n1 + n2); +} + +// A functor that returns true iff the sum of the arguments is an even +// number. +struct SumIsEven3Functor { + bool operator()(int n1, int n2, int n3) { + return IsEven(n1 + n2 + n3); + } +}; + +// A predicate-formatter function that asserts the sum of the +// arguments is an even number. +AssertionResult AssertSumIsEven4( + const char* e1, const char* e2, const char* e3, const char* e4, + int n1, int n2, int n3, int n4) { + const int sum = n1 + n2 + n3 + n4; + if (IsEven(sum)) { + return AssertionSuccess(); + } + + Message msg; + msg << e1 << " + " << e2 << " + " << e3 << " + " << e4 + << " (" << n1 << " + " << n2 << " + " << n3 << " + " << n4 + << ") evaluates to " << sum << ", which is not even."; + return AssertionFailure(msg); +} + +// A predicate-formatter functor that asserts the sum of the arguments +// is an even number. +struct AssertSumIsEven5Functor { + AssertionResult operator()( + const char* e1, const char* e2, const char* e3, const char* e4, + const char* e5, int n1, int n2, int n3, int n4, int n5) { + const int sum = n1 + n2 + n3 + n4 + n5; + if (IsEven(sum)) { + return AssertionSuccess(); + } + + Message msg; + msg << e1 << " + " << e2 << " + " << e3 << " + " << e4 << " + " << e5 + << " (" + << n1 << " + " << n2 << " + " << n3 << " + " << n4 << " + " << n5 + << ") evaluates to " << sum << ", which is not even."; + return AssertionFailure(msg); + } +}; + + +// Tests unary predicate assertions. + +// Tests unary predicate assertions that don't use a custom formatter. +TEST(Pred1Test, WithoutFormat) { + // Success cases. + EXPECT_PRED1(IsEvenFunctor(), 2) << "This failure is UNEXPECTED!"; + ASSERT_PRED1(IsEven, 4); + + // Failure cases. + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED1(IsEven, 5) << "This failure is expected."; + }, "This failure is expected."); + EXPECT_FATAL_FAILURE(ASSERT_PRED1(IsEvenFunctor(), 5), + "evaluates to false"); +} + +// Tests unary predicate assertions that use a custom formatter. +TEST(Pred1Test, WithFormat) { + // Success cases. + EXPECT_PRED_FORMAT1(AssertIsEven, 2); + ASSERT_PRED_FORMAT1(AssertIsEvenFunctor(), 4) + << "This failure is UNEXPECTED!"; + + // Failure cases. + const int n = 5; + EXPECT_NONFATAL_FAILURE(EXPECT_PRED_FORMAT1(AssertIsEvenFunctor(), n), + "n evaluates to 5, which is not even."); + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED_FORMAT1(AssertIsEven, 5) << "This failure is expected."; + }, "This failure is expected."); +} + +// Tests that unary predicate assertions evaluates their arguments +// exactly once. +TEST(Pred1Test, SingleEvaluationOnFailure) { + // A success case. + static int n = 0; + EXPECT_PRED1(IsEven, n++); + EXPECT_EQ(1, n) << "The argument is not evaluated exactly once."; + + // A failure case. + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED_FORMAT1(AssertIsEvenFunctor(), n++) + << "This failure is expected."; + }, "This failure is expected."); + EXPECT_EQ(2, n) << "The argument is not evaluated exactly once."; +} + + +// Tests predicate assertions whose arity is >= 2. + +// Tests predicate assertions that don't use a custom formatter. +TEST(PredTest, WithoutFormat) { + // Success cases. + ASSERT_PRED2(SumIsEven2, 2, 4) << "This failure is UNEXPECTED!"; + EXPECT_PRED3(SumIsEven3Functor(), 4, 6, 8); + + // Failure cases. + const int n1 = 1; + const int n2 = 2; + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED2(SumIsEven2, n1, n2) << "This failure is expected."; + }, "This failure is expected."); + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED3(SumIsEven3Functor(), 1, 2, 4); + }, "evaluates to false"); +} + +// Tests predicate assertions that use a custom formatter. +TEST(PredTest, WithFormat) { + // Success cases. + ASSERT_PRED_FORMAT4(AssertSumIsEven4, 4, 6, 8, 10) << + "This failure is UNEXPECTED!"; + EXPECT_PRED_FORMAT5(AssertSumIsEven5Functor(), 2, 4, 6, 8, 10); + + // Failure cases. + const int n1 = 1; + const int n2 = 2; + const int n3 = 4; + const int n4 = 6; + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED_FORMAT4(AssertSumIsEven4, n1, n2, n3, n4); + }, "evaluates to 13, which is not even."); + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED_FORMAT5(AssertSumIsEven5Functor(), 1, 2, 4, 6, 8) + << "This failure is expected."; + }, "This failure is expected."); +} + +// Tests that predicate assertions evaluates their arguments +// exactly once. +TEST(PredTest, SingleEvaluationOnFailure) { + // A success case. + int n1 = 0; + int n2 = 0; + EXPECT_PRED2(SumIsEven2, n1++, n2++); + EXPECT_EQ(1, n1) << "Argument 1 is not evaluated exactly once."; + EXPECT_EQ(1, n2) << "Argument 2 is not evaluated exactly once."; + + // Another success case. + n1 = n2 = 0; + int n3 = 0; + int n4 = 0; + int n5 = 0; + ASSERT_PRED_FORMAT5(AssertSumIsEven5Functor(), + n1++, n2++, n3++, n4++, n5++) + << "This failure is UNEXPECTED!"; + EXPECT_EQ(1, n1) << "Argument 1 is not evaluated exactly once."; + EXPECT_EQ(1, n2) << "Argument 2 is not evaluated exactly once."; + EXPECT_EQ(1, n3) << "Argument 3 is not evaluated exactly once."; + EXPECT_EQ(1, n4) << "Argument 4 is not evaluated exactly once."; + EXPECT_EQ(1, n5) << "Argument 5 is not evaluated exactly once."; + + // A failure case. + n1 = n2 = n3 = 0; + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED3(SumIsEven3Functor(), ++n1, n2++, n3++) + << "This failure is expected."; + }, "This failure is expected."); + EXPECT_EQ(1, n1) << "Argument 1 is not evaluated exactly once."; + EXPECT_EQ(1, n2) << "Argument 2 is not evaluated exactly once."; + EXPECT_EQ(1, n3) << "Argument 3 is not evaluated exactly once."; + + // Another failure case. + n1 = n2 = n3 = n4 = 0; + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED_FORMAT4(AssertSumIsEven4, ++n1, n2++, n3++, n4++); + }, "evaluates to 1, which is not even."); + EXPECT_EQ(1, n1) << "Argument 1 is not evaluated exactly once."; + EXPECT_EQ(1, n2) << "Argument 2 is not evaluated exactly once."; + EXPECT_EQ(1, n3) << "Argument 3 is not evaluated exactly once."; + EXPECT_EQ(1, n4) << "Argument 4 is not evaluated exactly once."; +} + + +// Some helper functions for testing using overloaded/template +// functions with ASSERT_PREDn and EXPECT_PREDn. + +bool IsPositive(double x) { + return x > 0; +} + +template +bool IsNegative(T x) { + return x < 0; +} + +template +bool GreaterThan(T1 x1, T2 x2) { + return x1 > x2; +} + +// Tests that overloaded functions can be used in *_PRED* as long as +// their types are explicitly specified. +TEST(PredicateAssertionTest, AcceptsOverloadedFunction) { + // C++Builder requires C-style casts rather than static_cast. + EXPECT_PRED1((bool (*)(int))(IsPositive), 5); // NOLINT + ASSERT_PRED1((bool (*)(double))(IsPositive), 6.0); // NOLINT +} + +// Tests that template functions can be used in *_PRED* as long as +// their types are explicitly specified. +TEST(PredicateAssertionTest, AcceptsTemplateFunction) { + EXPECT_PRED1(IsNegative, -5); + // Makes sure that we can handle templates with more than one + // parameter. + ASSERT_PRED2((GreaterThan), 5, 0); +} + + +// Some helper functions for testing using overloaded/template +// functions with ASSERT_PRED_FORMATn and EXPECT_PRED_FORMATn. + +AssertionResult IsPositiveFormat(const char* /* expr */, int n) { + return n > 0 ? AssertionSuccess() : + AssertionFailure(Message() << "Failure"); +} + +AssertionResult IsPositiveFormat(const char* /* expr */, double x) { + return x > 0 ? AssertionSuccess() : + AssertionFailure(Message() << "Failure"); +} + +template +AssertionResult IsNegativeFormat(const char* /* expr */, T x) { + return x < 0 ? AssertionSuccess() : + AssertionFailure(Message() << "Failure"); +} + +template +AssertionResult EqualsFormat(const char* /* expr1 */, const char* /* expr2 */, + const T1& x1, const T2& x2) { + return x1 == x2 ? AssertionSuccess() : + AssertionFailure(Message() << "Failure"); +} + +// Tests that overloaded functions can be used in *_PRED_FORMAT* +// without explicitly specifying their types. +TEST(PredicateFormatAssertionTest, AcceptsOverloadedFunction) { + EXPECT_PRED_FORMAT1(IsPositiveFormat, 5); + ASSERT_PRED_FORMAT1(IsPositiveFormat, 6.0); +} + +// Tests that template functions can be used in *_PRED_FORMAT* without +// explicitly specifying their types. +TEST(PredicateFormatAssertionTest, AcceptsTemplateFunction) { + EXPECT_PRED_FORMAT1(IsNegativeFormat, -5); + ASSERT_PRED_FORMAT2(EqualsFormat, 3, 3); +} + + +// Tests string assertions. + +// Tests ASSERT_STREQ with non-NULL arguments. +TEST(StringAssertionTest, ASSERT_STREQ) { + const char * const p1 = "good"; + ASSERT_STREQ(p1, p1); + + // Let p2 have the same content as p1, but be at a different address. + const char p2[] = "good"; + ASSERT_STREQ(p1, p2); + + EXPECT_FATAL_FAILURE(ASSERT_STREQ("bad", "good"), + "Expected: \"bad\""); +} + +// Tests ASSERT_STREQ with NULL arguments. +TEST(StringAssertionTest, ASSERT_STREQ_Null) { + ASSERT_STREQ(static_cast(NULL), NULL); + EXPECT_FATAL_FAILURE(ASSERT_STREQ(NULL, "non-null"), + "non-null"); +} + +// Tests ASSERT_STREQ with NULL arguments. +TEST(StringAssertionTest, ASSERT_STREQ_Null2) { + EXPECT_FATAL_FAILURE(ASSERT_STREQ("non-null", NULL), + "non-null"); +} + +// Tests ASSERT_STRNE. +TEST(StringAssertionTest, ASSERT_STRNE) { + ASSERT_STRNE("hi", "Hi"); + ASSERT_STRNE("Hi", NULL); + ASSERT_STRNE(NULL, "Hi"); + ASSERT_STRNE("", NULL); + ASSERT_STRNE(NULL, ""); + ASSERT_STRNE("", "Hi"); + ASSERT_STRNE("Hi", ""); + EXPECT_FATAL_FAILURE(ASSERT_STRNE("Hi", "Hi"), + "\"Hi\" vs \"Hi\""); +} + +// Tests ASSERT_STRCASEEQ. +TEST(StringAssertionTest, ASSERT_STRCASEEQ) { + ASSERT_STRCASEEQ("hi", "Hi"); + ASSERT_STRCASEEQ(static_cast(NULL), NULL); + + ASSERT_STRCASEEQ("", ""); + EXPECT_FATAL_FAILURE(ASSERT_STRCASEEQ("Hi", "hi2"), + "(ignoring case)"); +} + +// Tests ASSERT_STRCASENE. +TEST(StringAssertionTest, ASSERT_STRCASENE) { + ASSERT_STRCASENE("hi1", "Hi2"); + ASSERT_STRCASENE("Hi", NULL); + ASSERT_STRCASENE(NULL, "Hi"); + ASSERT_STRCASENE("", NULL); + ASSERT_STRCASENE(NULL, ""); + ASSERT_STRCASENE("", "Hi"); + ASSERT_STRCASENE("Hi", ""); + EXPECT_FATAL_FAILURE(ASSERT_STRCASENE("Hi", "hi"), + "(ignoring case)"); +} + +// Tests *_STREQ on wide strings. +TEST(StringAssertionTest, STREQ_Wide) { + // NULL strings. + ASSERT_STREQ(static_cast(NULL), NULL); + + // Empty strings. + ASSERT_STREQ(L"", L""); + + // Non-null vs NULL. + EXPECT_NONFATAL_FAILURE(EXPECT_STREQ(L"non-null", NULL), + "non-null"); + + // Equal strings. + EXPECT_STREQ(L"Hi", L"Hi"); + + // Unequal strings. + EXPECT_NONFATAL_FAILURE(EXPECT_STREQ(L"abc", L"Abc"), + "Abc"); + + // Strings containing wide characters. + EXPECT_NONFATAL_FAILURE(EXPECT_STREQ(L"abc\x8119", L"abc\x8120"), + "abc"); + + // The streaming variation. + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_STREQ(L"abc\x8119", L"abc\x8121") << "Expected failure"; + }, "Expected failure"); +} + +// Tests *_STRNE on wide strings. +TEST(StringAssertionTest, STRNE_Wide) { + // NULL strings. + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_STRNE(static_cast(NULL), NULL); + }, ""); + + // Empty strings. + EXPECT_NONFATAL_FAILURE(EXPECT_STRNE(L"", L""), + "L\"\""); + + // Non-null vs NULL. + ASSERT_STRNE(L"non-null", NULL); + + // Equal strings. + EXPECT_NONFATAL_FAILURE(EXPECT_STRNE(L"Hi", L"Hi"), + "L\"Hi\""); + + // Unequal strings. + EXPECT_STRNE(L"abc", L"Abc"); + + // Strings containing wide characters. + EXPECT_NONFATAL_FAILURE(EXPECT_STRNE(L"abc\x8119", L"abc\x8119"), + "abc"); + + // The streaming variation. + ASSERT_STRNE(L"abc\x8119", L"abc\x8120") << "This shouldn't happen"; +} + +// Tests for ::testing::IsSubstring(). + +// Tests that IsSubstring() returns the correct result when the input +// argument type is const char*. +TEST(IsSubstringTest, ReturnsCorrectResultForCString) { + EXPECT_FALSE(IsSubstring("", "", NULL, "a")); + EXPECT_FALSE(IsSubstring("", "", "b", NULL)); + EXPECT_FALSE(IsSubstring("", "", "needle", "haystack")); + + EXPECT_TRUE(IsSubstring("", "", static_cast(NULL), NULL)); + EXPECT_TRUE(IsSubstring("", "", "needle", "two needles")); +} + +// Tests that IsSubstring() returns the correct result when the input +// argument type is const wchar_t*. +TEST(IsSubstringTest, ReturnsCorrectResultForWideCString) { + EXPECT_FALSE(IsSubstring("", "", kNull, L"a")); + EXPECT_FALSE(IsSubstring("", "", L"b", kNull)); + EXPECT_FALSE(IsSubstring("", "", L"needle", L"haystack")); + + EXPECT_TRUE(IsSubstring("", "", static_cast(NULL), NULL)); + EXPECT_TRUE(IsSubstring("", "", L"needle", L"two needles")); +} + +// Tests that IsSubstring() generates the correct message when the input +// argument type is const char*. +TEST(IsSubstringTest, GeneratesCorrectMessageForCString) { + EXPECT_STREQ("Value of: needle_expr\n" + " Actual: \"needle\"\n" + "Expected: a substring of haystack_expr\n" + "Which is: \"haystack\"", + IsSubstring("needle_expr", "haystack_expr", + "needle", "haystack").failure_message()); +} + +// Tests that IsSubstring returns the correct result when the input +// argument type is ::std::string. +TEST(IsSubstringTest, ReturnsCorrectResultsForStdString) { + EXPECT_TRUE(IsSubstring("", "", std::string("hello"), "ahellob")); + EXPECT_FALSE(IsSubstring("", "", "hello", std::string("world"))); +} + +#if GTEST_HAS_STD_WSTRING +// Tests that IsSubstring returns the correct result when the input +// argument type is ::std::wstring. +TEST(IsSubstringTest, ReturnsCorrectResultForStdWstring) { + EXPECT_TRUE(IsSubstring("", "", ::std::wstring(L"needle"), L"two needles")); + EXPECT_FALSE(IsSubstring("", "", L"needle", ::std::wstring(L"haystack"))); +} + +// Tests that IsSubstring() generates the correct message when the input +// argument type is ::std::wstring. +TEST(IsSubstringTest, GeneratesCorrectMessageForWstring) { + EXPECT_STREQ("Value of: needle_expr\n" + " Actual: L\"needle\"\n" + "Expected: a substring of haystack_expr\n" + "Which is: L\"haystack\"", + IsSubstring( + "needle_expr", "haystack_expr", + ::std::wstring(L"needle"), L"haystack").failure_message()); +} + +#endif // GTEST_HAS_STD_WSTRING + +// Tests for ::testing::IsNotSubstring(). + +// Tests that IsNotSubstring() returns the correct result when the input +// argument type is const char*. +TEST(IsNotSubstringTest, ReturnsCorrectResultForCString) { + EXPECT_TRUE(IsNotSubstring("", "", "needle", "haystack")); + EXPECT_FALSE(IsNotSubstring("", "", "needle", "two needles")); +} + +// Tests that IsNotSubstring() returns the correct result when the input +// argument type is const wchar_t*. +TEST(IsNotSubstringTest, ReturnsCorrectResultForWideCString) { + EXPECT_TRUE(IsNotSubstring("", "", L"needle", L"haystack")); + EXPECT_FALSE(IsNotSubstring("", "", L"needle", L"two needles")); +} + +// Tests that IsNotSubstring() generates the correct message when the input +// argument type is const wchar_t*. +TEST(IsNotSubstringTest, GeneratesCorrectMessageForWideCString) { + EXPECT_STREQ("Value of: needle_expr\n" + " Actual: L\"needle\"\n" + "Expected: not a substring of haystack_expr\n" + "Which is: L\"two needles\"", + IsNotSubstring( + "needle_expr", "haystack_expr", + L"needle", L"two needles").failure_message()); +} + +// Tests that IsNotSubstring returns the correct result when the input +// argument type is ::std::string. +TEST(IsNotSubstringTest, ReturnsCorrectResultsForStdString) { + EXPECT_FALSE(IsNotSubstring("", "", std::string("hello"), "ahellob")); + EXPECT_TRUE(IsNotSubstring("", "", "hello", std::string("world"))); +} + +// Tests that IsNotSubstring() generates the correct message when the input +// argument type is ::std::string. +TEST(IsNotSubstringTest, GeneratesCorrectMessageForStdString) { + EXPECT_STREQ("Value of: needle_expr\n" + " Actual: \"needle\"\n" + "Expected: not a substring of haystack_expr\n" + "Which is: \"two needles\"", + IsNotSubstring( + "needle_expr", "haystack_expr", + ::std::string("needle"), "two needles").failure_message()); +} + +#if GTEST_HAS_STD_WSTRING + +// Tests that IsNotSubstring returns the correct result when the input +// argument type is ::std::wstring. +TEST(IsNotSubstringTest, ReturnsCorrectResultForStdWstring) { + EXPECT_FALSE( + IsNotSubstring("", "", ::std::wstring(L"needle"), L"two needles")); + EXPECT_TRUE(IsNotSubstring("", "", L"needle", ::std::wstring(L"haystack"))); +} + +#endif // GTEST_HAS_STD_WSTRING + +// Tests floating-point assertions. + +template +class FloatingPointTest : public Test { + protected: + // Pre-calculated numbers to be used by the tests. + struct TestValues { + RawType close_to_positive_zero; + RawType close_to_negative_zero; + RawType further_from_negative_zero; + + RawType close_to_one; + RawType further_from_one; + + RawType infinity; + RawType close_to_infinity; + RawType further_from_infinity; + + RawType nan1; + RawType nan2; + }; + + typedef typename testing::internal::FloatingPoint Floating; + typedef typename Floating::Bits Bits; + + virtual void SetUp() { + const size_t max_ulps = Floating::kMaxUlps; + + // The bits that represent 0.0. + const Bits zero_bits = Floating(0).bits(); + + // Makes some numbers close to 0.0. + values_.close_to_positive_zero = Floating::ReinterpretBits( + zero_bits + max_ulps/2); + values_.close_to_negative_zero = -Floating::ReinterpretBits( + zero_bits + max_ulps - max_ulps/2); + values_.further_from_negative_zero = -Floating::ReinterpretBits( + zero_bits + max_ulps + 1 - max_ulps/2); + + // The bits that represent 1.0. + const Bits one_bits = Floating(1).bits(); + + // Makes some numbers close to 1.0. + values_.close_to_one = Floating::ReinterpretBits(one_bits + max_ulps); + values_.further_from_one = Floating::ReinterpretBits( + one_bits + max_ulps + 1); + + // +infinity. + values_.infinity = Floating::Infinity(); + + // The bits that represent +infinity. + const Bits infinity_bits = Floating(values_.infinity).bits(); + + // Makes some numbers close to infinity. + values_.close_to_infinity = Floating::ReinterpretBits( + infinity_bits - max_ulps); + values_.further_from_infinity = Floating::ReinterpretBits( + infinity_bits - max_ulps - 1); + + // Makes some NAN's. Sets the most significant bit of the fraction so that + // our NaN's are quiet; trying to process a signaling NaN would raise an + // exception if our environment enables floating point exceptions. + values_.nan1 = Floating::ReinterpretBits(Floating::kExponentBitMask + | (static_cast(1) << (Floating::kFractionBitCount - 1)) | 1); + values_.nan2 = Floating::ReinterpretBits(Floating::kExponentBitMask + | (static_cast(1) << (Floating::kFractionBitCount - 1)) | 200); + } + + void TestSize() { + EXPECT_EQ(sizeof(RawType), sizeof(Bits)); + } + + static TestValues values_; +}; + +template +typename FloatingPointTest::TestValues + FloatingPointTest::values_; + +// Instantiates FloatingPointTest for testing *_FLOAT_EQ. +typedef FloatingPointTest FloatTest; + +// Tests that the size of Float::Bits matches the size of float. +TEST_F(FloatTest, Size) { + TestSize(); +} + +// Tests comparing with +0 and -0. +TEST_F(FloatTest, Zeros) { + EXPECT_FLOAT_EQ(0.0, -0.0); + EXPECT_NONFATAL_FAILURE(EXPECT_FLOAT_EQ(-0.0, 1.0), + "1.0"); + EXPECT_FATAL_FAILURE(ASSERT_FLOAT_EQ(0.0, 1.5), + "1.5"); +} + +// Tests comparing numbers close to 0. +// +// This ensures that *_FLOAT_EQ handles the sign correctly and no +// overflow occurs when comparing numbers whose absolute value is very +// small. +TEST_F(FloatTest, AlmostZeros) { + // In C++Builder, names within local classes (such as used by + // EXPECT_FATAL_FAILURE) cannot be resolved against static members of the + // scoping class. Use a static local alias as a workaround. + // We use the assignment syntax since some compilers, like Sun Studio, + // don't allow initializing references using construction syntax + // (parentheses). + static const FloatTest::TestValues& v = this->values_; + + EXPECT_FLOAT_EQ(0.0, v.close_to_positive_zero); + EXPECT_FLOAT_EQ(-0.0, v.close_to_negative_zero); + EXPECT_FLOAT_EQ(v.close_to_positive_zero, v.close_to_negative_zero); + + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_FLOAT_EQ(v.close_to_positive_zero, + v.further_from_negative_zero); + }, "v.further_from_negative_zero"); +} + +// Tests comparing numbers close to each other. +TEST_F(FloatTest, SmallDiff) { + EXPECT_FLOAT_EQ(1.0, values_.close_to_one); + EXPECT_NONFATAL_FAILURE(EXPECT_FLOAT_EQ(1.0, values_.further_from_one), + "values_.further_from_one"); +} + +// Tests comparing numbers far apart. +TEST_F(FloatTest, LargeDiff) { + EXPECT_NONFATAL_FAILURE(EXPECT_FLOAT_EQ(2.5, 3.0), + "3.0"); +} + +// Tests comparing with infinity. +// +// This ensures that no overflow occurs when comparing numbers whose +// absolute value is very large. +TEST_F(FloatTest, Infinity) { + EXPECT_FLOAT_EQ(values_.infinity, values_.close_to_infinity); + EXPECT_FLOAT_EQ(-values_.infinity, -values_.close_to_infinity); +#if !GTEST_OS_SYMBIAN + // Nokia's STLport crashes if we try to output infinity or NaN. + EXPECT_NONFATAL_FAILURE(EXPECT_FLOAT_EQ(values_.infinity, -values_.infinity), + "-values_.infinity"); + + // This is interesting as the representations of infinity and nan1 + // are only 1 DLP apart. + EXPECT_NONFATAL_FAILURE(EXPECT_FLOAT_EQ(values_.infinity, values_.nan1), + "values_.nan1"); +#endif // !GTEST_OS_SYMBIAN +} + +// Tests that comparing with NAN always returns false. +TEST_F(FloatTest, NaN) { +#if !GTEST_OS_SYMBIAN +// Nokia's STLport crashes if we try to output infinity or NaN. + + // In C++Builder, names within local classes (such as used by + // EXPECT_FATAL_FAILURE) cannot be resolved against static members of the + // scoping class. Use a static local alias as a workaround. + // We use the assignment syntax since some compilers, like Sun Studio, + // don't allow initializing references using construction syntax + // (parentheses). + static const FloatTest::TestValues& v = this->values_; + + EXPECT_NONFATAL_FAILURE(EXPECT_FLOAT_EQ(v.nan1, v.nan1), + "v.nan1"); + EXPECT_NONFATAL_FAILURE(EXPECT_FLOAT_EQ(v.nan1, v.nan2), + "v.nan2"); + EXPECT_NONFATAL_FAILURE(EXPECT_FLOAT_EQ(1.0, v.nan1), + "v.nan1"); + + EXPECT_FATAL_FAILURE(ASSERT_FLOAT_EQ(v.nan1, v.infinity), + "v.infinity"); +#endif // !GTEST_OS_SYMBIAN +} + +// Tests that *_FLOAT_EQ are reflexive. +TEST_F(FloatTest, Reflexive) { + EXPECT_FLOAT_EQ(0.0, 0.0); + EXPECT_FLOAT_EQ(1.0, 1.0); + ASSERT_FLOAT_EQ(values_.infinity, values_.infinity); +} + +// Tests that *_FLOAT_EQ are commutative. +TEST_F(FloatTest, Commutative) { + // We already tested EXPECT_FLOAT_EQ(1.0, values_.close_to_one). + EXPECT_FLOAT_EQ(values_.close_to_one, 1.0); + + // We already tested EXPECT_FLOAT_EQ(1.0, values_.further_from_one). + EXPECT_NONFATAL_FAILURE(EXPECT_FLOAT_EQ(values_.further_from_one, 1.0), + "1.0"); +} + +// Tests EXPECT_NEAR. +TEST_F(FloatTest, EXPECT_NEAR) { + EXPECT_NEAR(-1.0f, -1.1f, 0.2f); + EXPECT_NEAR(2.0f, 3.0f, 1.0f); + EXPECT_NONFATAL_FAILURE(EXPECT_NEAR(1.0f,1.5f, 0.25f), // NOLINT + "The difference between 1.0f and 1.5f is 0.5, " + "which exceeds 0.25f"); + // To work around a bug in gcc 2.95.0, there is intentionally no + // space after the first comma in the previous line. +} + +// Tests ASSERT_NEAR. +TEST_F(FloatTest, ASSERT_NEAR) { + ASSERT_NEAR(-1.0f, -1.1f, 0.2f); + ASSERT_NEAR(2.0f, 3.0f, 1.0f); + EXPECT_FATAL_FAILURE(ASSERT_NEAR(1.0f,1.5f, 0.25f), // NOLINT + "The difference between 1.0f and 1.5f is 0.5, " + "which exceeds 0.25f"); + // To work around a bug in gcc 2.95.0, there is intentionally no + // space after the first comma in the previous line. +} + +// Tests the cases where FloatLE() should succeed. +TEST_F(FloatTest, FloatLESucceeds) { + EXPECT_PRED_FORMAT2(FloatLE, 1.0f, 2.0f); // When val1 < val2, + ASSERT_PRED_FORMAT2(FloatLE, 1.0f, 1.0f); // val1 == val2, + + // or when val1 is greater than, but almost equals to, val2. + EXPECT_PRED_FORMAT2(FloatLE, values_.close_to_positive_zero, 0.0f); +} + +// Tests the cases where FloatLE() should fail. +TEST_F(FloatTest, FloatLEFails) { + // When val1 is greater than val2 by a large margin, + EXPECT_NONFATAL_FAILURE(EXPECT_PRED_FORMAT2(FloatLE, 2.0f, 1.0f), + "(2.0f) <= (1.0f)"); + + // or by a small yet non-negligible margin, + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED_FORMAT2(FloatLE, values_.further_from_one, 1.0f); + }, "(values_.further_from_one) <= (1.0f)"); + +#if !GTEST_OS_SYMBIAN && !defined(__BORLANDC__) + // Nokia's STLport crashes if we try to output infinity or NaN. + // C++Builder gives bad results for ordered comparisons involving NaNs + // due to compiler bugs. + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED_FORMAT2(FloatLE, values_.nan1, values_.infinity); + }, "(values_.nan1) <= (values_.infinity)"); + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED_FORMAT2(FloatLE, -values_.infinity, values_.nan1); + }, "(-values_.infinity) <= (values_.nan1)"); + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED_FORMAT2(FloatLE, values_.nan1, values_.nan1); + }, "(values_.nan1) <= (values_.nan1)"); +#endif // !GTEST_OS_SYMBIAN && !defined(__BORLANDC__) +} + +// Instantiates FloatingPointTest for testing *_DOUBLE_EQ. +typedef FloatingPointTest DoubleTest; + +// Tests that the size of Double::Bits matches the size of double. +TEST_F(DoubleTest, Size) { + TestSize(); +} + +// Tests comparing with +0 and -0. +TEST_F(DoubleTest, Zeros) { + EXPECT_DOUBLE_EQ(0.0, -0.0); + EXPECT_NONFATAL_FAILURE(EXPECT_DOUBLE_EQ(-0.0, 1.0), + "1.0"); + EXPECT_FATAL_FAILURE(ASSERT_DOUBLE_EQ(0.0, 1.0), + "1.0"); +} + +// Tests comparing numbers close to 0. +// +// This ensures that *_DOUBLE_EQ handles the sign correctly and no +// overflow occurs when comparing numbers whose absolute value is very +// small. +TEST_F(DoubleTest, AlmostZeros) { + // In C++Builder, names within local classes (such as used by + // EXPECT_FATAL_FAILURE) cannot be resolved against static members of the + // scoping class. Use a static local alias as a workaround. + // We use the assignment syntax since some compilers, like Sun Studio, + // don't allow initializing references using construction syntax + // (parentheses). + static const DoubleTest::TestValues& v = this->values_; + + EXPECT_DOUBLE_EQ(0.0, v.close_to_positive_zero); + EXPECT_DOUBLE_EQ(-0.0, v.close_to_negative_zero); + EXPECT_DOUBLE_EQ(v.close_to_positive_zero, v.close_to_negative_zero); + + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_DOUBLE_EQ(v.close_to_positive_zero, + v.further_from_negative_zero); + }, "v.further_from_negative_zero"); +} + +// Tests comparing numbers close to each other. +TEST_F(DoubleTest, SmallDiff) { + EXPECT_DOUBLE_EQ(1.0, values_.close_to_one); + EXPECT_NONFATAL_FAILURE(EXPECT_DOUBLE_EQ(1.0, values_.further_from_one), + "values_.further_from_one"); +} + +// Tests comparing numbers far apart. +TEST_F(DoubleTest, LargeDiff) { + EXPECT_NONFATAL_FAILURE(EXPECT_DOUBLE_EQ(2.0, 3.0), + "3.0"); +} + +// Tests comparing with infinity. +// +// This ensures that no overflow occurs when comparing numbers whose +// absolute value is very large. +TEST_F(DoubleTest, Infinity) { + EXPECT_DOUBLE_EQ(values_.infinity, values_.close_to_infinity); + EXPECT_DOUBLE_EQ(-values_.infinity, -values_.close_to_infinity); +#if !GTEST_OS_SYMBIAN + // Nokia's STLport crashes if we try to output infinity or NaN. + EXPECT_NONFATAL_FAILURE(EXPECT_DOUBLE_EQ(values_.infinity, -values_.infinity), + "-values_.infinity"); + + // This is interesting as the representations of infinity_ and nan1_ + // are only 1 DLP apart. + EXPECT_NONFATAL_FAILURE(EXPECT_DOUBLE_EQ(values_.infinity, values_.nan1), + "values_.nan1"); +#endif // !GTEST_OS_SYMBIAN +} + +// Tests that comparing with NAN always returns false. +TEST_F(DoubleTest, NaN) { +#if !GTEST_OS_SYMBIAN + // In C++Builder, names within local classes (such as used by + // EXPECT_FATAL_FAILURE) cannot be resolved against static members of the + // scoping class. Use a static local alias as a workaround. + // We use the assignment syntax since some compilers, like Sun Studio, + // don't allow initializing references using construction syntax + // (parentheses). + static const DoubleTest::TestValues& v = this->values_; + + // Nokia's STLport crashes if we try to output infinity or NaN. + EXPECT_NONFATAL_FAILURE(EXPECT_DOUBLE_EQ(v.nan1, v.nan1), + "v.nan1"); + EXPECT_NONFATAL_FAILURE(EXPECT_DOUBLE_EQ(v.nan1, v.nan2), "v.nan2"); + EXPECT_NONFATAL_FAILURE(EXPECT_DOUBLE_EQ(1.0, v.nan1), "v.nan1"); + EXPECT_FATAL_FAILURE(ASSERT_DOUBLE_EQ(v.nan1, v.infinity), + "v.infinity"); +#endif // !GTEST_OS_SYMBIAN +} + +// Tests that *_DOUBLE_EQ are reflexive. +TEST_F(DoubleTest, Reflexive) { + EXPECT_DOUBLE_EQ(0.0, 0.0); + EXPECT_DOUBLE_EQ(1.0, 1.0); +#if !GTEST_OS_SYMBIAN + // Nokia's STLport crashes if we try to output infinity or NaN. + ASSERT_DOUBLE_EQ(values_.infinity, values_.infinity); +#endif // !GTEST_OS_SYMBIAN +} + +// Tests that *_DOUBLE_EQ are commutative. +TEST_F(DoubleTest, Commutative) { + // We already tested EXPECT_DOUBLE_EQ(1.0, values_.close_to_one). + EXPECT_DOUBLE_EQ(values_.close_to_one, 1.0); + + // We already tested EXPECT_DOUBLE_EQ(1.0, values_.further_from_one). + EXPECT_NONFATAL_FAILURE(EXPECT_DOUBLE_EQ(values_.further_from_one, 1.0), + "1.0"); +} + +// Tests EXPECT_NEAR. +TEST_F(DoubleTest, EXPECT_NEAR) { + EXPECT_NEAR(-1.0, -1.1, 0.2); + EXPECT_NEAR(2.0, 3.0, 1.0); + EXPECT_NONFATAL_FAILURE(EXPECT_NEAR(1.0, 1.5, 0.25), // NOLINT + "The difference between 1.0 and 1.5 is 0.5, " + "which exceeds 0.25"); + // To work around a bug in gcc 2.95.0, there is intentionally no + // space after the first comma in the previous statement. +} + +// Tests ASSERT_NEAR. +TEST_F(DoubleTest, ASSERT_NEAR) { + ASSERT_NEAR(-1.0, -1.1, 0.2); + ASSERT_NEAR(2.0, 3.0, 1.0); + EXPECT_FATAL_FAILURE(ASSERT_NEAR(1.0, 1.5, 0.25), // NOLINT + "The difference between 1.0 and 1.5 is 0.5, " + "which exceeds 0.25"); + // To work around a bug in gcc 2.95.0, there is intentionally no + // space after the first comma in the previous statement. +} + +// Tests the cases where DoubleLE() should succeed. +TEST_F(DoubleTest, DoubleLESucceeds) { + EXPECT_PRED_FORMAT2(DoubleLE, 1.0, 2.0); // When val1 < val2, + ASSERT_PRED_FORMAT2(DoubleLE, 1.0, 1.0); // val1 == val2, + + // or when val1 is greater than, but almost equals to, val2. + EXPECT_PRED_FORMAT2(DoubleLE, values_.close_to_positive_zero, 0.0); +} + +// Tests the cases where DoubleLE() should fail. +TEST_F(DoubleTest, DoubleLEFails) { + // When val1 is greater than val2 by a large margin, + EXPECT_NONFATAL_FAILURE(EXPECT_PRED_FORMAT2(DoubleLE, 2.0, 1.0), + "(2.0) <= (1.0)"); + + // or by a small yet non-negligible margin, + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED_FORMAT2(DoubleLE, values_.further_from_one, 1.0); + }, "(values_.further_from_one) <= (1.0)"); + +#if !GTEST_OS_SYMBIAN && !defined(__BORLANDC__) + // Nokia's STLport crashes if we try to output infinity or NaN. + // C++Builder gives bad results for ordered comparisons involving NaNs + // due to compiler bugs. + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED_FORMAT2(DoubleLE, values_.nan1, values_.infinity); + }, "(values_.nan1) <= (values_.infinity)"); + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_PRED_FORMAT2(DoubleLE, -values_.infinity, values_.nan1); + }, " (-values_.infinity) <= (values_.nan1)"); + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_PRED_FORMAT2(DoubleLE, values_.nan1, values_.nan1); + }, "(values_.nan1) <= (values_.nan1)"); +#endif // !GTEST_OS_SYMBIAN && !defined(__BORLANDC__) +} + + +// Verifies that a test or test case whose name starts with DISABLED_ is +// not run. + +// A test whose name starts with DISABLED_. +// Should not run. +TEST(DisabledTest, DISABLED_TestShouldNotRun) { + FAIL() << "Unexpected failure: Disabled test should not be run."; +} + +// A test whose name does not start with DISABLED_. +// Should run. +TEST(DisabledTest, NotDISABLED_TestShouldRun) { + EXPECT_EQ(1, 1); +} + +// A test case whose name starts with DISABLED_. +// Should not run. +TEST(DISABLED_TestCase, TestShouldNotRun) { + FAIL() << "Unexpected failure: Test in disabled test case should not be run."; +} + +// A test case and test whose names start with DISABLED_. +// Should not run. +TEST(DISABLED_TestCase, DISABLED_TestShouldNotRun) { + FAIL() << "Unexpected failure: Test in disabled test case should not be run."; +} + +// Check that when all tests in a test case are disabled, SetupTestCase() and +// TearDownTestCase() are not called. +class DisabledTestsTest : public Test { + protected: + static void SetUpTestCase() { + FAIL() << "Unexpected failure: All tests disabled in test case. " + "SetupTestCase() should not be called."; + } + + static void TearDownTestCase() { + FAIL() << "Unexpected failure: All tests disabled in test case. " + "TearDownTestCase() should not be called."; + } +}; + +TEST_F(DisabledTestsTest, DISABLED_TestShouldNotRun_1) { + FAIL() << "Unexpected failure: Disabled test should not be run."; +} + +TEST_F(DisabledTestsTest, DISABLED_TestShouldNotRun_2) { + FAIL() << "Unexpected failure: Disabled test should not be run."; +} + +// Tests that disabled typed tests aren't run. + +#if GTEST_HAS_TYPED_TEST + +template +class TypedTest : public Test { +}; + +typedef testing::Types NumericTypes; +TYPED_TEST_CASE(TypedTest, NumericTypes); + +TYPED_TEST(TypedTest, DISABLED_ShouldNotRun) { + FAIL() << "Unexpected failure: Disabled typed test should not run."; +} + +template +class DISABLED_TypedTest : public Test { +}; + +TYPED_TEST_CASE(DISABLED_TypedTest, NumericTypes); + +TYPED_TEST(DISABLED_TypedTest, ShouldNotRun) { + FAIL() << "Unexpected failure: Disabled typed test should not run."; +} + +#endif // GTEST_HAS_TYPED_TEST + +// Tests that disabled type-parameterized tests aren't run. + +#if GTEST_HAS_TYPED_TEST_P + +template +class TypedTestP : public Test { +}; + +TYPED_TEST_CASE_P(TypedTestP); + +TYPED_TEST_P(TypedTestP, DISABLED_ShouldNotRun) { + FAIL() << "Unexpected failure: " + << "Disabled type-parameterized test should not run."; +} + +REGISTER_TYPED_TEST_CASE_P(TypedTestP, DISABLED_ShouldNotRun); + +INSTANTIATE_TYPED_TEST_CASE_P(My, TypedTestP, NumericTypes); + +template +class DISABLED_TypedTestP : public Test { +}; + +TYPED_TEST_CASE_P(DISABLED_TypedTestP); + +TYPED_TEST_P(DISABLED_TypedTestP, ShouldNotRun) { + FAIL() << "Unexpected failure: " + << "Disabled type-parameterized test should not run."; +} + +REGISTER_TYPED_TEST_CASE_P(DISABLED_TypedTestP, ShouldNotRun); + +INSTANTIATE_TYPED_TEST_CASE_P(My, DISABLED_TypedTestP, NumericTypes); + +#endif // GTEST_HAS_TYPED_TEST_P + +// Tests that assertion macros evaluate their arguments exactly once. + +class SingleEvaluationTest : public Test { + public: // Must be public and not protected due to a bug in g++ 3.4.2. + // This helper function is needed by the FailedASSERT_STREQ test + // below. It's public to work around C++Builder's bug with scoping local + // classes. + static void CompareAndIncrementCharPtrs() { + ASSERT_STREQ(p1_++, p2_++); + } + + // This helper function is needed by the FailedASSERT_NE test below. It's + // public to work around C++Builder's bug with scoping local classes. + static void CompareAndIncrementInts() { + ASSERT_NE(a_++, b_++); + } + + protected: + SingleEvaluationTest() { + p1_ = s1_; + p2_ = s2_; + a_ = 0; + b_ = 0; + } + + static const char* const s1_; + static const char* const s2_; + static const char* p1_; + static const char* p2_; + + static int a_; + static int b_; +}; + +const char* const SingleEvaluationTest::s1_ = "01234"; +const char* const SingleEvaluationTest::s2_ = "abcde"; +const char* SingleEvaluationTest::p1_; +const char* SingleEvaluationTest::p2_; +int SingleEvaluationTest::a_; +int SingleEvaluationTest::b_; + +// Tests that when ASSERT_STREQ fails, it evaluates its arguments +// exactly once. +TEST_F(SingleEvaluationTest, FailedASSERT_STREQ) { + EXPECT_FATAL_FAILURE(SingleEvaluationTest::CompareAndIncrementCharPtrs(), + "p2_++"); + EXPECT_EQ(s1_ + 1, p1_); + EXPECT_EQ(s2_ + 1, p2_); +} + +// Tests that string assertion arguments are evaluated exactly once. +TEST_F(SingleEvaluationTest, ASSERT_STR) { + // successful EXPECT_STRNE + EXPECT_STRNE(p1_++, p2_++); + EXPECT_EQ(s1_ + 1, p1_); + EXPECT_EQ(s2_ + 1, p2_); + + // failed EXPECT_STRCASEEQ + EXPECT_NONFATAL_FAILURE(EXPECT_STRCASEEQ(p1_++, p2_++), + "ignoring case"); + EXPECT_EQ(s1_ + 2, p1_); + EXPECT_EQ(s2_ + 2, p2_); +} + +// Tests that when ASSERT_NE fails, it evaluates its arguments exactly +// once. +TEST_F(SingleEvaluationTest, FailedASSERT_NE) { + EXPECT_FATAL_FAILURE(SingleEvaluationTest::CompareAndIncrementInts(), + "(a_++) != (b_++)"); + EXPECT_EQ(1, a_); + EXPECT_EQ(1, b_); +} + +// Tests that assertion arguments are evaluated exactly once. +TEST_F(SingleEvaluationTest, OtherCases) { + // successful EXPECT_TRUE + EXPECT_TRUE(0 == a_++); // NOLINT + EXPECT_EQ(1, a_); + + // failed EXPECT_TRUE + EXPECT_NONFATAL_FAILURE(EXPECT_TRUE(-1 == a_++), "-1 == a_++"); + EXPECT_EQ(2, a_); + + // successful EXPECT_GT + EXPECT_GT(a_++, b_++); + EXPECT_EQ(3, a_); + EXPECT_EQ(1, b_); + + // failed EXPECT_LT + EXPECT_NONFATAL_FAILURE(EXPECT_LT(a_++, b_++), "(a_++) < (b_++)"); + EXPECT_EQ(4, a_); + EXPECT_EQ(2, b_); + + // successful ASSERT_TRUE + ASSERT_TRUE(0 < a_++); // NOLINT + EXPECT_EQ(5, a_); + + // successful ASSERT_GT + ASSERT_GT(a_++, b_++); + EXPECT_EQ(6, a_); + EXPECT_EQ(3, b_); +} + +#if GTEST_HAS_EXCEPTIONS + +void ThrowAnInteger() { + throw 1; +} + +// Tests that assertion arguments are evaluated exactly once. +TEST_F(SingleEvaluationTest, ExceptionTests) { + // successful EXPECT_THROW + EXPECT_THROW({ // NOLINT + a_++; + ThrowAnInteger(); + }, int); + EXPECT_EQ(1, a_); + + // failed EXPECT_THROW, throws different + EXPECT_NONFATAL_FAILURE(EXPECT_THROW({ // NOLINT + a_++; + ThrowAnInteger(); + }, bool), "throws a different type"); + EXPECT_EQ(2, a_); + + // failed EXPECT_THROW, throws nothing + EXPECT_NONFATAL_FAILURE(EXPECT_THROW(a_++, bool), "throws nothing"); + EXPECT_EQ(3, a_); + + // successful EXPECT_NO_THROW + EXPECT_NO_THROW(a_++); + EXPECT_EQ(4, a_); + + // failed EXPECT_NO_THROW + EXPECT_NONFATAL_FAILURE(EXPECT_NO_THROW({ // NOLINT + a_++; + ThrowAnInteger(); + }), "it throws"); + EXPECT_EQ(5, a_); + + // successful EXPECT_ANY_THROW + EXPECT_ANY_THROW({ // NOLINT + a_++; + ThrowAnInteger(); + }); + EXPECT_EQ(6, a_); + + // failed EXPECT_ANY_THROW + EXPECT_NONFATAL_FAILURE(EXPECT_ANY_THROW(a_++), "it doesn't"); + EXPECT_EQ(7, a_); +} + +#endif // GTEST_HAS_EXCEPTIONS + +// Tests {ASSERT|EXPECT}_NO_FATAL_FAILURE. +class NoFatalFailureTest : public Test { + protected: + void Succeeds() {} + void FailsNonFatal() { + ADD_FAILURE() << "some non-fatal failure"; + } + void Fails() { + FAIL() << "some fatal failure"; + } + + void DoAssertNoFatalFailureOnFails() { + ASSERT_NO_FATAL_FAILURE(Fails()); + ADD_FAILURE() << "shold not reach here."; + } + + void DoExpectNoFatalFailureOnFails() { + EXPECT_NO_FATAL_FAILURE(Fails()); + ADD_FAILURE() << "other failure"; + } +}; + +TEST_F(NoFatalFailureTest, NoFailure) { + EXPECT_NO_FATAL_FAILURE(Succeeds()); + ASSERT_NO_FATAL_FAILURE(Succeeds()); +} + +TEST_F(NoFatalFailureTest, NonFatalIsNoFailure) { + EXPECT_NONFATAL_FAILURE( + EXPECT_NO_FATAL_FAILURE(FailsNonFatal()), + "some non-fatal failure"); + EXPECT_NONFATAL_FAILURE( + ASSERT_NO_FATAL_FAILURE(FailsNonFatal()), + "some non-fatal failure"); +} + +TEST_F(NoFatalFailureTest, AssertNoFatalFailureOnFatalFailure) { + TestPartResultArray gtest_failures; + { + ScopedFakeTestPartResultReporter gtest_reporter(>est_failures); + DoAssertNoFatalFailureOnFails(); + } + ASSERT_EQ(2, gtest_failures.size()); + EXPECT_EQ(TestPartResult::kFatalFailure, + gtest_failures.GetTestPartResult(0).type()); + EXPECT_EQ(TestPartResult::kFatalFailure, + gtest_failures.GetTestPartResult(1).type()); + EXPECT_PRED_FORMAT2(testing::IsSubstring, "some fatal failure", + gtest_failures.GetTestPartResult(0).message()); + EXPECT_PRED_FORMAT2(testing::IsSubstring, "it does", + gtest_failures.GetTestPartResult(1).message()); +} + +TEST_F(NoFatalFailureTest, ExpectNoFatalFailureOnFatalFailure) { + TestPartResultArray gtest_failures; + { + ScopedFakeTestPartResultReporter gtest_reporter(>est_failures); + DoExpectNoFatalFailureOnFails(); + } + ASSERT_EQ(3, gtest_failures.size()); + EXPECT_EQ(TestPartResult::kFatalFailure, + gtest_failures.GetTestPartResult(0).type()); + EXPECT_EQ(TestPartResult::kNonFatalFailure, + gtest_failures.GetTestPartResult(1).type()); + EXPECT_EQ(TestPartResult::kNonFatalFailure, + gtest_failures.GetTestPartResult(2).type()); + EXPECT_PRED_FORMAT2(testing::IsSubstring, "some fatal failure", + gtest_failures.GetTestPartResult(0).message()); + EXPECT_PRED_FORMAT2(testing::IsSubstring, "it does", + gtest_failures.GetTestPartResult(1).message()); + EXPECT_PRED_FORMAT2(testing::IsSubstring, "other failure", + gtest_failures.GetTestPartResult(2).message()); +} + +TEST_F(NoFatalFailureTest, MessageIsStreamable) { + TestPartResultArray gtest_failures; + { + ScopedFakeTestPartResultReporter gtest_reporter(>est_failures); + EXPECT_NO_FATAL_FAILURE(FAIL() << "foo") << "my message"; + } + ASSERT_EQ(2, gtest_failures.size()); + EXPECT_EQ(TestPartResult::kNonFatalFailure, + gtest_failures.GetTestPartResult(0).type()); + EXPECT_EQ(TestPartResult::kNonFatalFailure, + gtest_failures.GetTestPartResult(1).type()); + EXPECT_PRED_FORMAT2(testing::IsSubstring, "foo", + gtest_failures.GetTestPartResult(0).message()); + EXPECT_PRED_FORMAT2(testing::IsSubstring, "my message", + gtest_failures.GetTestPartResult(1).message()); +} + +// Tests non-string assertions. + +// Tests EqFailure(), used for implementing *EQ* assertions. +TEST(AssertionTest, EqFailure) { + const std::string foo_val("5"), bar_val("6"); + const std::string msg1( + EqFailure("foo", "bar", foo_val, bar_val, false) + .failure_message()); + EXPECT_STREQ( + "Value of: bar\n" + " Actual: 6\n" + "Expected: foo\n" + "Which is: 5", + msg1.c_str()); + + const std::string msg2( + EqFailure("foo", "6", foo_val, bar_val, false) + .failure_message()); + EXPECT_STREQ( + "Value of: 6\n" + "Expected: foo\n" + "Which is: 5", + msg2.c_str()); + + const std::string msg3( + EqFailure("5", "bar", foo_val, bar_val, false) + .failure_message()); + EXPECT_STREQ( + "Value of: bar\n" + " Actual: 6\n" + "Expected: 5", + msg3.c_str()); + + const std::string msg4( + EqFailure("5", "6", foo_val, bar_val, false).failure_message()); + EXPECT_STREQ( + "Value of: 6\n" + "Expected: 5", + msg4.c_str()); + + const std::string msg5( + EqFailure("foo", "bar", + std::string("\"x\""), std::string("\"y\""), + true).failure_message()); + EXPECT_STREQ( + "Value of: bar\n" + " Actual: \"y\"\n" + "Expected: foo (ignoring case)\n" + "Which is: \"x\"", + msg5.c_str()); +} + +// Tests AppendUserMessage(), used for implementing the *EQ* macros. +TEST(AssertionTest, AppendUserMessage) { + const std::string foo("foo"); + + Message msg; + EXPECT_STREQ("foo", + AppendUserMessage(foo, msg).c_str()); + + msg << "bar"; + EXPECT_STREQ("foo\nbar", + AppendUserMessage(foo, msg).c_str()); +} + +#ifdef __BORLANDC__ +// Silences warnings: "Condition is always true", "Unreachable code" +# pragma option push -w-ccc -w-rch +#endif + +// Tests ASSERT_TRUE. +TEST(AssertionTest, ASSERT_TRUE) { + ASSERT_TRUE(2 > 1); // NOLINT + EXPECT_FATAL_FAILURE(ASSERT_TRUE(2 < 1), + "2 < 1"); +} + +// Tests ASSERT_TRUE(predicate) for predicates returning AssertionResult. +TEST(AssertionTest, AssertTrueWithAssertionResult) { + ASSERT_TRUE(ResultIsEven(2)); +#ifndef __BORLANDC__ + // ICE's in C++Builder. + EXPECT_FATAL_FAILURE(ASSERT_TRUE(ResultIsEven(3)), + "Value of: ResultIsEven(3)\n" + " Actual: false (3 is odd)\n" + "Expected: true"); +#endif + ASSERT_TRUE(ResultIsEvenNoExplanation(2)); + EXPECT_FATAL_FAILURE(ASSERT_TRUE(ResultIsEvenNoExplanation(3)), + "Value of: ResultIsEvenNoExplanation(3)\n" + " Actual: false (3 is odd)\n" + "Expected: true"); +} + +// Tests ASSERT_FALSE. +TEST(AssertionTest, ASSERT_FALSE) { + ASSERT_FALSE(2 < 1); // NOLINT + EXPECT_FATAL_FAILURE(ASSERT_FALSE(2 > 1), + "Value of: 2 > 1\n" + " Actual: true\n" + "Expected: false"); +} + +// Tests ASSERT_FALSE(predicate) for predicates returning AssertionResult. +TEST(AssertionTest, AssertFalseWithAssertionResult) { + ASSERT_FALSE(ResultIsEven(3)); +#ifndef __BORLANDC__ + // ICE's in C++Builder. + EXPECT_FATAL_FAILURE(ASSERT_FALSE(ResultIsEven(2)), + "Value of: ResultIsEven(2)\n" + " Actual: true (2 is even)\n" + "Expected: false"); +#endif + ASSERT_FALSE(ResultIsEvenNoExplanation(3)); + EXPECT_FATAL_FAILURE(ASSERT_FALSE(ResultIsEvenNoExplanation(2)), + "Value of: ResultIsEvenNoExplanation(2)\n" + " Actual: true\n" + "Expected: false"); +} + +#ifdef __BORLANDC__ +// Restores warnings after previous "#pragma option push" supressed them +# pragma option pop +#endif + +// Tests using ASSERT_EQ on double values. The purpose is to make +// sure that the specialization we did for integer and anonymous enums +// isn't used for double arguments. +TEST(ExpectTest, ASSERT_EQ_Double) { + // A success. + ASSERT_EQ(5.6, 5.6); + + // A failure. + EXPECT_FATAL_FAILURE(ASSERT_EQ(5.1, 5.2), + "5.1"); +} + +// Tests ASSERT_EQ. +TEST(AssertionTest, ASSERT_EQ) { + ASSERT_EQ(5, 2 + 3); + EXPECT_FATAL_FAILURE(ASSERT_EQ(5, 2*3), + "Value of: 2*3\n" + " Actual: 6\n" + "Expected: 5"); +} + +// Tests ASSERT_EQ(NULL, pointer). +#if GTEST_CAN_COMPARE_NULL +TEST(AssertionTest, ASSERT_EQ_NULL) { + // A success. + const char* p = NULL; + // Some older GCC versions may issue a spurious waring in this or the next + // assertion statement. This warning should not be suppressed with + // static_cast since the test verifies the ability to use bare NULL as the + // expected parameter to the macro. + ASSERT_EQ(NULL, p); + + // A failure. + static int n = 0; + EXPECT_FATAL_FAILURE(ASSERT_EQ(NULL, &n), + "Value of: &n\n"); +} +#endif // GTEST_CAN_COMPARE_NULL + +// Tests ASSERT_EQ(0, non_pointer). Since the literal 0 can be +// treated as a null pointer by the compiler, we need to make sure +// that ASSERT_EQ(0, non_pointer) isn't interpreted by Google Test as +// ASSERT_EQ(static_cast(NULL), non_pointer). +TEST(ExpectTest, ASSERT_EQ_0) { + int n = 0; + + // A success. + ASSERT_EQ(0, n); + + // A failure. + EXPECT_FATAL_FAILURE(ASSERT_EQ(0, 5.6), + "Expected: 0"); +} + +// Tests ASSERT_NE. +TEST(AssertionTest, ASSERT_NE) { + ASSERT_NE(6, 7); + EXPECT_FATAL_FAILURE(ASSERT_NE('a', 'a'), + "Expected: ('a') != ('a'), " + "actual: 'a' (97, 0x61) vs 'a' (97, 0x61)"); +} + +// Tests ASSERT_LE. +TEST(AssertionTest, ASSERT_LE) { + ASSERT_LE(2, 3); + ASSERT_LE(2, 2); + EXPECT_FATAL_FAILURE(ASSERT_LE(2, 0), + "Expected: (2) <= (0), actual: 2 vs 0"); +} + +// Tests ASSERT_LT. +TEST(AssertionTest, ASSERT_LT) { + ASSERT_LT(2, 3); + EXPECT_FATAL_FAILURE(ASSERT_LT(2, 2), + "Expected: (2) < (2), actual: 2 vs 2"); +} + +// Tests ASSERT_GE. +TEST(AssertionTest, ASSERT_GE) { + ASSERT_GE(2, 1); + ASSERT_GE(2, 2); + EXPECT_FATAL_FAILURE(ASSERT_GE(2, 3), + "Expected: (2) >= (3), actual: 2 vs 3"); +} + +// Tests ASSERT_GT. +TEST(AssertionTest, ASSERT_GT) { + ASSERT_GT(2, 1); + EXPECT_FATAL_FAILURE(ASSERT_GT(2, 2), + "Expected: (2) > (2), actual: 2 vs 2"); +} + +#if GTEST_HAS_EXCEPTIONS + +void ThrowNothing() {} + +// Tests ASSERT_THROW. +TEST(AssertionTest, ASSERT_THROW) { + ASSERT_THROW(ThrowAnInteger(), int); + +# ifndef __BORLANDC__ + + // ICE's in C++Builder 2007 and 2009. + EXPECT_FATAL_FAILURE( + ASSERT_THROW(ThrowAnInteger(), bool), + "Expected: ThrowAnInteger() throws an exception of type bool.\n" + " Actual: it throws a different type."); +# endif + + EXPECT_FATAL_FAILURE( + ASSERT_THROW(ThrowNothing(), bool), + "Expected: ThrowNothing() throws an exception of type bool.\n" + " Actual: it throws nothing."); +} + +// Tests ASSERT_NO_THROW. +TEST(AssertionTest, ASSERT_NO_THROW) { + ASSERT_NO_THROW(ThrowNothing()); + EXPECT_FATAL_FAILURE(ASSERT_NO_THROW(ThrowAnInteger()), + "Expected: ThrowAnInteger() doesn't throw an exception." + "\n Actual: it throws."); +} + +// Tests ASSERT_ANY_THROW. +TEST(AssertionTest, ASSERT_ANY_THROW) { + ASSERT_ANY_THROW(ThrowAnInteger()); + EXPECT_FATAL_FAILURE( + ASSERT_ANY_THROW(ThrowNothing()), + "Expected: ThrowNothing() throws an exception.\n" + " Actual: it doesn't."); +} + +#endif // GTEST_HAS_EXCEPTIONS + +// Makes sure we deal with the precedence of <<. This test should +// compile. +TEST(AssertionTest, AssertPrecedence) { + ASSERT_EQ(1 < 2, true); + bool false_value = false; + ASSERT_EQ(true && false_value, false); +} + +// A subroutine used by the following test. +void TestEq1(int x) { + ASSERT_EQ(1, x); +} + +// Tests calling a test subroutine that's not part of a fixture. +TEST(AssertionTest, NonFixtureSubroutine) { + EXPECT_FATAL_FAILURE(TestEq1(2), + "Value of: x"); +} + +// An uncopyable class. +class Uncopyable { + public: + explicit Uncopyable(int a_value) : value_(a_value) {} + + int value() const { return value_; } + bool operator==(const Uncopyable& rhs) const { + return value() == rhs.value(); + } + private: + // This constructor deliberately has no implementation, as we don't + // want this class to be copyable. + Uncopyable(const Uncopyable&); // NOLINT + + int value_; +}; + +::std::ostream& operator<<(::std::ostream& os, const Uncopyable& value) { + return os << value.value(); +} + + +bool IsPositiveUncopyable(const Uncopyable& x) { + return x.value() > 0; +} + +// A subroutine used by the following test. +void TestAssertNonPositive() { + Uncopyable y(-1); + ASSERT_PRED1(IsPositiveUncopyable, y); +} +// A subroutine used by the following test. +void TestAssertEqualsUncopyable() { + Uncopyable x(5); + Uncopyable y(-1); + ASSERT_EQ(x, y); +} + +// Tests that uncopyable objects can be used in assertions. +TEST(AssertionTest, AssertWorksWithUncopyableObject) { + Uncopyable x(5); + ASSERT_PRED1(IsPositiveUncopyable, x); + ASSERT_EQ(x, x); + EXPECT_FATAL_FAILURE(TestAssertNonPositive(), + "IsPositiveUncopyable(y) evaluates to false, where\ny evaluates to -1"); + EXPECT_FATAL_FAILURE(TestAssertEqualsUncopyable(), + "Value of: y\n Actual: -1\nExpected: x\nWhich is: 5"); +} + +// Tests that uncopyable objects can be used in expects. +TEST(AssertionTest, ExpectWorksWithUncopyableObject) { + Uncopyable x(5); + EXPECT_PRED1(IsPositiveUncopyable, x); + Uncopyable y(-1); + EXPECT_NONFATAL_FAILURE(EXPECT_PRED1(IsPositiveUncopyable, y), + "IsPositiveUncopyable(y) evaluates to false, where\ny evaluates to -1"); + EXPECT_EQ(x, x); + EXPECT_NONFATAL_FAILURE(EXPECT_EQ(x, y), + "Value of: y\n Actual: -1\nExpected: x\nWhich is: 5"); +} + +enum NamedEnum { + kE1 = 0, + kE2 = 1 +}; + +TEST(AssertionTest, NamedEnum) { + EXPECT_EQ(kE1, kE1); + EXPECT_LT(kE1, kE2); + EXPECT_NONFATAL_FAILURE(EXPECT_EQ(kE1, kE2), "Which is: 0"); + EXPECT_NONFATAL_FAILURE(EXPECT_EQ(kE1, kE2), "Actual: 1"); +} + +// The version of gcc used in XCode 2.2 has a bug and doesn't allow +// anonymous enums in assertions. Therefore the following test is not +// done on Mac. +// Sun Studio and HP aCC also reject this code. +#if !GTEST_OS_MAC && !defined(__SUNPRO_CC) && !defined(__HP_aCC) + +// Tests using assertions with anonymous enums. +enum { + kCaseA = -1, + +# if GTEST_OS_LINUX + + // We want to test the case where the size of the anonymous enum is + // larger than sizeof(int), to make sure our implementation of the + // assertions doesn't truncate the enums. However, MSVC + // (incorrectly) doesn't allow an enum value to exceed the range of + // an int, so this has to be conditionally compiled. + // + // On Linux, kCaseB and kCaseA have the same value when truncated to + // int size. We want to test whether this will confuse the + // assertions. + kCaseB = testing::internal::kMaxBiggestInt, + +# else + + kCaseB = INT_MAX, + +# endif // GTEST_OS_LINUX + + kCaseC = 42 +}; + +TEST(AssertionTest, AnonymousEnum) { +# if GTEST_OS_LINUX + + EXPECT_EQ(static_cast(kCaseA), static_cast(kCaseB)); + +# endif // GTEST_OS_LINUX + + EXPECT_EQ(kCaseA, kCaseA); + EXPECT_NE(kCaseA, kCaseB); + EXPECT_LT(kCaseA, kCaseB); + EXPECT_LE(kCaseA, kCaseB); + EXPECT_GT(kCaseB, kCaseA); + EXPECT_GE(kCaseA, kCaseA); + EXPECT_NONFATAL_FAILURE(EXPECT_GE(kCaseA, kCaseB), + "(kCaseA) >= (kCaseB)"); + EXPECT_NONFATAL_FAILURE(EXPECT_GE(kCaseA, kCaseC), + "-1 vs 42"); + + ASSERT_EQ(kCaseA, kCaseA); + ASSERT_NE(kCaseA, kCaseB); + ASSERT_LT(kCaseA, kCaseB); + ASSERT_LE(kCaseA, kCaseB); + ASSERT_GT(kCaseB, kCaseA); + ASSERT_GE(kCaseA, kCaseA); + +# ifndef __BORLANDC__ + + // ICE's in C++Builder. + EXPECT_FATAL_FAILURE(ASSERT_EQ(kCaseA, kCaseB), + "Value of: kCaseB"); + EXPECT_FATAL_FAILURE(ASSERT_EQ(kCaseA, kCaseC), + "Actual: 42"); +# endif + + EXPECT_FATAL_FAILURE(ASSERT_EQ(kCaseA, kCaseC), + "Which is: -1"); +} + +#endif // !GTEST_OS_MAC && !defined(__SUNPRO_CC) + +#if GTEST_OS_WINDOWS + +static HRESULT UnexpectedHRESULTFailure() { + return E_UNEXPECTED; +} + +static HRESULT OkHRESULTSuccess() { + return S_OK; +} + +static HRESULT FalseHRESULTSuccess() { + return S_FALSE; +} + +// HRESULT assertion tests test both zero and non-zero +// success codes as well as failure message for each. +// +// Windows CE doesn't support message texts. +TEST(HRESULTAssertionTest, EXPECT_HRESULT_SUCCEEDED) { + EXPECT_HRESULT_SUCCEEDED(S_OK); + EXPECT_HRESULT_SUCCEEDED(S_FALSE); + + EXPECT_NONFATAL_FAILURE(EXPECT_HRESULT_SUCCEEDED(UnexpectedHRESULTFailure()), + "Expected: (UnexpectedHRESULTFailure()) succeeds.\n" + " Actual: 0x8000FFFF"); +} + +TEST(HRESULTAssertionTest, ASSERT_HRESULT_SUCCEEDED) { + ASSERT_HRESULT_SUCCEEDED(S_OK); + ASSERT_HRESULT_SUCCEEDED(S_FALSE); + + EXPECT_FATAL_FAILURE(ASSERT_HRESULT_SUCCEEDED(UnexpectedHRESULTFailure()), + "Expected: (UnexpectedHRESULTFailure()) succeeds.\n" + " Actual: 0x8000FFFF"); +} + +TEST(HRESULTAssertionTest, EXPECT_HRESULT_FAILED) { + EXPECT_HRESULT_FAILED(E_UNEXPECTED); + + EXPECT_NONFATAL_FAILURE(EXPECT_HRESULT_FAILED(OkHRESULTSuccess()), + "Expected: (OkHRESULTSuccess()) fails.\n" + " Actual: 0x00000000"); + EXPECT_NONFATAL_FAILURE(EXPECT_HRESULT_FAILED(FalseHRESULTSuccess()), + "Expected: (FalseHRESULTSuccess()) fails.\n" + " Actual: 0x00000001"); +} + +TEST(HRESULTAssertionTest, ASSERT_HRESULT_FAILED) { + ASSERT_HRESULT_FAILED(E_UNEXPECTED); + +# ifndef __BORLANDC__ + + // ICE's in C++Builder 2007 and 2009. + EXPECT_FATAL_FAILURE(ASSERT_HRESULT_FAILED(OkHRESULTSuccess()), + "Expected: (OkHRESULTSuccess()) fails.\n" + " Actual: 0x00000000"); +# endif + + EXPECT_FATAL_FAILURE(ASSERT_HRESULT_FAILED(FalseHRESULTSuccess()), + "Expected: (FalseHRESULTSuccess()) fails.\n" + " Actual: 0x00000001"); +} + +// Tests that streaming to the HRESULT macros works. +TEST(HRESULTAssertionTest, Streaming) { + EXPECT_HRESULT_SUCCEEDED(S_OK) << "unexpected failure"; + ASSERT_HRESULT_SUCCEEDED(S_OK) << "unexpected failure"; + EXPECT_HRESULT_FAILED(E_UNEXPECTED) << "unexpected failure"; + ASSERT_HRESULT_FAILED(E_UNEXPECTED) << "unexpected failure"; + + EXPECT_NONFATAL_FAILURE( + EXPECT_HRESULT_SUCCEEDED(E_UNEXPECTED) << "expected failure", + "expected failure"); + +# ifndef __BORLANDC__ + + // ICE's in C++Builder 2007 and 2009. + EXPECT_FATAL_FAILURE( + ASSERT_HRESULT_SUCCEEDED(E_UNEXPECTED) << "expected failure", + "expected failure"); +# endif + + EXPECT_NONFATAL_FAILURE( + EXPECT_HRESULT_FAILED(S_OK) << "expected failure", + "expected failure"); + + EXPECT_FATAL_FAILURE( + ASSERT_HRESULT_FAILED(S_OK) << "expected failure", + "expected failure"); +} + +#endif // GTEST_OS_WINDOWS + +#ifdef __BORLANDC__ +// Silences warnings: "Condition is always true", "Unreachable code" +# pragma option push -w-ccc -w-rch +#endif + +// Tests that the assertion macros behave like single statements. +TEST(AssertionSyntaxTest, BasicAssertionsBehavesLikeSingleStatement) { + if (AlwaysFalse()) + ASSERT_TRUE(false) << "This should never be executed; " + "It's a compilation test only."; + + if (AlwaysTrue()) + EXPECT_FALSE(false); + else + ; // NOLINT + + if (AlwaysFalse()) + ASSERT_LT(1, 3); + + if (AlwaysFalse()) + ; // NOLINT + else + EXPECT_GT(3, 2) << ""; +} + +#if GTEST_HAS_EXCEPTIONS +// Tests that the compiler will not complain about unreachable code in the +// EXPECT_THROW/EXPECT_ANY_THROW/EXPECT_NO_THROW macros. +TEST(ExpectThrowTest, DoesNotGenerateUnreachableCodeWarning) { + int n = 0; + + EXPECT_THROW(throw 1, int); + EXPECT_NONFATAL_FAILURE(EXPECT_THROW(n++, int), ""); + EXPECT_NONFATAL_FAILURE(EXPECT_THROW(throw 1, const char*), ""); + EXPECT_NO_THROW(n++); + EXPECT_NONFATAL_FAILURE(EXPECT_NO_THROW(throw 1), ""); + EXPECT_ANY_THROW(throw 1); + EXPECT_NONFATAL_FAILURE(EXPECT_ANY_THROW(n++), ""); +} + +TEST(AssertionSyntaxTest, ExceptionAssertionsBehavesLikeSingleStatement) { + if (AlwaysFalse()) + EXPECT_THROW(ThrowNothing(), bool); + + if (AlwaysTrue()) + EXPECT_THROW(ThrowAnInteger(), int); + else + ; // NOLINT + + if (AlwaysFalse()) + EXPECT_NO_THROW(ThrowAnInteger()); + + if (AlwaysTrue()) + EXPECT_NO_THROW(ThrowNothing()); + else + ; // NOLINT + + if (AlwaysFalse()) + EXPECT_ANY_THROW(ThrowNothing()); + + if (AlwaysTrue()) + EXPECT_ANY_THROW(ThrowAnInteger()); + else + ; // NOLINT +} +#endif // GTEST_HAS_EXCEPTIONS + +TEST(AssertionSyntaxTest, NoFatalFailureAssertionsBehavesLikeSingleStatement) { + if (AlwaysFalse()) + EXPECT_NO_FATAL_FAILURE(FAIL()) << "This should never be executed. " + << "It's a compilation test only."; + else + ; // NOLINT + + if (AlwaysFalse()) + ASSERT_NO_FATAL_FAILURE(FAIL()) << ""; + else + ; // NOLINT + + if (AlwaysTrue()) + EXPECT_NO_FATAL_FAILURE(SUCCEED()); + else + ; // NOLINT + + if (AlwaysFalse()) + ; // NOLINT + else + ASSERT_NO_FATAL_FAILURE(SUCCEED()); +} + +// Tests that the assertion macros work well with switch statements. +TEST(AssertionSyntaxTest, WorksWithSwitch) { + switch (0) { + case 1: + break; + default: + ASSERT_TRUE(true); + } + + switch (0) + case 0: + EXPECT_FALSE(false) << "EXPECT_FALSE failed in switch case"; + + // Binary assertions are implemented using a different code path + // than the Boolean assertions. Hence we test them separately. + switch (0) { + case 1: + default: + ASSERT_EQ(1, 1) << "ASSERT_EQ failed in default switch handler"; + } + + switch (0) + case 0: + EXPECT_NE(1, 2); +} + +#if GTEST_HAS_EXCEPTIONS + +void ThrowAString() { + throw "std::string"; +} + +// Test that the exception assertion macros compile and work with const +// type qualifier. +TEST(AssertionSyntaxTest, WorksWithConst) { + ASSERT_THROW(ThrowAString(), const char*); + + EXPECT_THROW(ThrowAString(), const char*); +} + +#endif // GTEST_HAS_EXCEPTIONS + +} // namespace + +namespace testing { + +// Tests that Google Test tracks SUCCEED*. +TEST(SuccessfulAssertionTest, SUCCEED) { + SUCCEED(); + SUCCEED() << "OK"; + EXPECT_EQ(2, GetUnitTestImpl()->current_test_result()->total_part_count()); +} + +// Tests that Google Test doesn't track successful EXPECT_*. +TEST(SuccessfulAssertionTest, EXPECT) { + EXPECT_TRUE(true); + EXPECT_EQ(0, GetUnitTestImpl()->current_test_result()->total_part_count()); +} + +// Tests that Google Test doesn't track successful EXPECT_STR*. +TEST(SuccessfulAssertionTest, EXPECT_STR) { + EXPECT_STREQ("", ""); + EXPECT_EQ(0, GetUnitTestImpl()->current_test_result()->total_part_count()); +} + +// Tests that Google Test doesn't track successful ASSERT_*. +TEST(SuccessfulAssertionTest, ASSERT) { + ASSERT_TRUE(true); + EXPECT_EQ(0, GetUnitTestImpl()->current_test_result()->total_part_count()); +} + +// Tests that Google Test doesn't track successful ASSERT_STR*. +TEST(SuccessfulAssertionTest, ASSERT_STR) { + ASSERT_STREQ("", ""); + EXPECT_EQ(0, GetUnitTestImpl()->current_test_result()->total_part_count()); +} + +} // namespace testing + +namespace { + +// Tests the message streaming variation of assertions. + +TEST(AssertionWithMessageTest, EXPECT) { + EXPECT_EQ(1, 1) << "This should succeed."; + EXPECT_NONFATAL_FAILURE(EXPECT_NE(1, 1) << "Expected failure #1.", + "Expected failure #1"); + EXPECT_LE(1, 2) << "This should succeed."; + EXPECT_NONFATAL_FAILURE(EXPECT_LT(1, 0) << "Expected failure #2.", + "Expected failure #2."); + EXPECT_GE(1, 0) << "This should succeed."; + EXPECT_NONFATAL_FAILURE(EXPECT_GT(1, 2) << "Expected failure #3.", + "Expected failure #3."); + + EXPECT_STREQ("1", "1") << "This should succeed."; + EXPECT_NONFATAL_FAILURE(EXPECT_STRNE("1", "1") << "Expected failure #4.", + "Expected failure #4."); + EXPECT_STRCASEEQ("a", "A") << "This should succeed."; + EXPECT_NONFATAL_FAILURE(EXPECT_STRCASENE("a", "A") << "Expected failure #5.", + "Expected failure #5."); + + EXPECT_FLOAT_EQ(1, 1) << "This should succeed."; + EXPECT_NONFATAL_FAILURE(EXPECT_DOUBLE_EQ(1, 1.2) << "Expected failure #6.", + "Expected failure #6."); + EXPECT_NEAR(1, 1.1, 0.2) << "This should succeed."; +} + +TEST(AssertionWithMessageTest, ASSERT) { + ASSERT_EQ(1, 1) << "This should succeed."; + ASSERT_NE(1, 2) << "This should succeed."; + ASSERT_LE(1, 2) << "This should succeed."; + ASSERT_LT(1, 2) << "This should succeed."; + ASSERT_GE(1, 0) << "This should succeed."; + EXPECT_FATAL_FAILURE(ASSERT_GT(1, 2) << "Expected failure.", + "Expected failure."); +} + +TEST(AssertionWithMessageTest, ASSERT_STR) { + ASSERT_STREQ("1", "1") << "This should succeed."; + ASSERT_STRNE("1", "2") << "This should succeed."; + ASSERT_STRCASEEQ("a", "A") << "This should succeed."; + EXPECT_FATAL_FAILURE(ASSERT_STRCASENE("a", "A") << "Expected failure.", + "Expected failure."); +} + +TEST(AssertionWithMessageTest, ASSERT_FLOATING) { + ASSERT_FLOAT_EQ(1, 1) << "This should succeed."; + ASSERT_DOUBLE_EQ(1, 1) << "This should succeed."; + EXPECT_FATAL_FAILURE(ASSERT_NEAR(1,1.2, 0.1) << "Expect failure.", // NOLINT + "Expect failure."); + // To work around a bug in gcc 2.95.0, there is intentionally no + // space after the first comma in the previous statement. +} + +// Tests using ASSERT_FALSE with a streamed message. +TEST(AssertionWithMessageTest, ASSERT_FALSE) { + ASSERT_FALSE(false) << "This shouldn't fail."; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_FALSE(true) << "Expected failure: " << 2 << " > " << 1 + << " evaluates to " << true; + }, "Expected failure"); +} + +// Tests using FAIL with a streamed message. +TEST(AssertionWithMessageTest, FAIL) { + EXPECT_FATAL_FAILURE(FAIL() << 0, + "0"); +} + +// Tests using SUCCEED with a streamed message. +TEST(AssertionWithMessageTest, SUCCEED) { + SUCCEED() << "Success == " << 1; +} + +// Tests using ASSERT_TRUE with a streamed message. +TEST(AssertionWithMessageTest, ASSERT_TRUE) { + ASSERT_TRUE(true) << "This should succeed."; + ASSERT_TRUE(true) << true; + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_TRUE(false) << static_cast(NULL) + << static_cast(NULL); + }, "(null)(null)"); +} + +#if GTEST_OS_WINDOWS +// Tests using wide strings in assertion messages. +TEST(AssertionWithMessageTest, WideStringMessage) { + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_TRUE(false) << L"This failure is expected.\x8119"; + }, "This failure is expected."); + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_EQ(1, 2) << "This failure is " + << L"expected too.\x8120"; + }, "This failure is expected too."); +} +#endif // GTEST_OS_WINDOWS + +// Tests EXPECT_TRUE. +TEST(ExpectTest, EXPECT_TRUE) { + EXPECT_TRUE(true) << "Intentional success"; + EXPECT_NONFATAL_FAILURE(EXPECT_TRUE(false) << "Intentional failure #1.", + "Intentional failure #1."); + EXPECT_NONFATAL_FAILURE(EXPECT_TRUE(false) << "Intentional failure #2.", + "Intentional failure #2."); + EXPECT_TRUE(2 > 1); // NOLINT + EXPECT_NONFATAL_FAILURE(EXPECT_TRUE(2 < 1), + "Value of: 2 < 1\n" + " Actual: false\n" + "Expected: true"); + EXPECT_NONFATAL_FAILURE(EXPECT_TRUE(2 > 3), + "2 > 3"); +} + +// Tests EXPECT_TRUE(predicate) for predicates returning AssertionResult. +TEST(ExpectTest, ExpectTrueWithAssertionResult) { + EXPECT_TRUE(ResultIsEven(2)); + EXPECT_NONFATAL_FAILURE(EXPECT_TRUE(ResultIsEven(3)), + "Value of: ResultIsEven(3)\n" + " Actual: false (3 is odd)\n" + "Expected: true"); + EXPECT_TRUE(ResultIsEvenNoExplanation(2)); + EXPECT_NONFATAL_FAILURE(EXPECT_TRUE(ResultIsEvenNoExplanation(3)), + "Value of: ResultIsEvenNoExplanation(3)\n" + " Actual: false (3 is odd)\n" + "Expected: true"); +} + +// Tests EXPECT_FALSE with a streamed message. +TEST(ExpectTest, EXPECT_FALSE) { + EXPECT_FALSE(2 < 1); // NOLINT + EXPECT_FALSE(false) << "Intentional success"; + EXPECT_NONFATAL_FAILURE(EXPECT_FALSE(true) << "Intentional failure #1.", + "Intentional failure #1."); + EXPECT_NONFATAL_FAILURE(EXPECT_FALSE(true) << "Intentional failure #2.", + "Intentional failure #2."); + EXPECT_NONFATAL_FAILURE(EXPECT_FALSE(2 > 1), + "Value of: 2 > 1\n" + " Actual: true\n" + "Expected: false"); + EXPECT_NONFATAL_FAILURE(EXPECT_FALSE(2 < 3), + "2 < 3"); +} + +// Tests EXPECT_FALSE(predicate) for predicates returning AssertionResult. +TEST(ExpectTest, ExpectFalseWithAssertionResult) { + EXPECT_FALSE(ResultIsEven(3)); + EXPECT_NONFATAL_FAILURE(EXPECT_FALSE(ResultIsEven(2)), + "Value of: ResultIsEven(2)\n" + " Actual: true (2 is even)\n" + "Expected: false"); + EXPECT_FALSE(ResultIsEvenNoExplanation(3)); + EXPECT_NONFATAL_FAILURE(EXPECT_FALSE(ResultIsEvenNoExplanation(2)), + "Value of: ResultIsEvenNoExplanation(2)\n" + " Actual: true\n" + "Expected: false"); +} + +#ifdef __BORLANDC__ +// Restores warnings after previous "#pragma option push" supressed them +# pragma option pop +#endif + +// Tests EXPECT_EQ. +TEST(ExpectTest, EXPECT_EQ) { + EXPECT_EQ(5, 2 + 3); + EXPECT_NONFATAL_FAILURE(EXPECT_EQ(5, 2*3), + "Value of: 2*3\n" + " Actual: 6\n" + "Expected: 5"); + EXPECT_NONFATAL_FAILURE(EXPECT_EQ(5, 2 - 3), + "2 - 3"); +} + +// Tests using EXPECT_EQ on double values. The purpose is to make +// sure that the specialization we did for integer and anonymous enums +// isn't used for double arguments. +TEST(ExpectTest, EXPECT_EQ_Double) { + // A success. + EXPECT_EQ(5.6, 5.6); + + // A failure. + EXPECT_NONFATAL_FAILURE(EXPECT_EQ(5.1, 5.2), + "5.1"); +} + +#if GTEST_CAN_COMPARE_NULL +// Tests EXPECT_EQ(NULL, pointer). +TEST(ExpectTest, EXPECT_EQ_NULL) { + // A success. + const char* p = NULL; + // Some older GCC versions may issue a spurious warning in this or the next + // assertion statement. This warning should not be suppressed with + // static_cast since the test verifies the ability to use bare NULL as the + // expected parameter to the macro. + EXPECT_EQ(NULL, p); + + // A failure. + int n = 0; + EXPECT_NONFATAL_FAILURE(EXPECT_EQ(NULL, &n), + "Value of: &n\n"); +} +#endif // GTEST_CAN_COMPARE_NULL + +// Tests EXPECT_EQ(0, non_pointer). Since the literal 0 can be +// treated as a null pointer by the compiler, we need to make sure +// that EXPECT_EQ(0, non_pointer) isn't interpreted by Google Test as +// EXPECT_EQ(static_cast(NULL), non_pointer). +TEST(ExpectTest, EXPECT_EQ_0) { + int n = 0; + + // A success. + EXPECT_EQ(0, n); + + // A failure. + EXPECT_NONFATAL_FAILURE(EXPECT_EQ(0, 5.6), + "Expected: 0"); +} + +// Tests EXPECT_NE. +TEST(ExpectTest, EXPECT_NE) { + EXPECT_NE(6, 7); + + EXPECT_NONFATAL_FAILURE(EXPECT_NE('a', 'a'), + "Expected: ('a') != ('a'), " + "actual: 'a' (97, 0x61) vs 'a' (97, 0x61)"); + EXPECT_NONFATAL_FAILURE(EXPECT_NE(2, 2), + "2"); + char* const p0 = NULL; + EXPECT_NONFATAL_FAILURE(EXPECT_NE(p0, p0), + "p0"); + // Only way to get the Nokia compiler to compile the cast + // is to have a separate void* variable first. Putting + // the two casts on the same line doesn't work, neither does + // a direct C-style to char*. + void* pv1 = (void*)0x1234; // NOLINT + char* const p1 = reinterpret_cast(pv1); + EXPECT_NONFATAL_FAILURE(EXPECT_NE(p1, p1), + "p1"); +} + +// Tests EXPECT_LE. +TEST(ExpectTest, EXPECT_LE) { + EXPECT_LE(2, 3); + EXPECT_LE(2, 2); + EXPECT_NONFATAL_FAILURE(EXPECT_LE(2, 0), + "Expected: (2) <= (0), actual: 2 vs 0"); + EXPECT_NONFATAL_FAILURE(EXPECT_LE(1.1, 0.9), + "(1.1) <= (0.9)"); +} + +// Tests EXPECT_LT. +TEST(ExpectTest, EXPECT_LT) { + EXPECT_LT(2, 3); + EXPECT_NONFATAL_FAILURE(EXPECT_LT(2, 2), + "Expected: (2) < (2), actual: 2 vs 2"); + EXPECT_NONFATAL_FAILURE(EXPECT_LT(2, 1), + "(2) < (1)"); +} + +// Tests EXPECT_GE. +TEST(ExpectTest, EXPECT_GE) { + EXPECT_GE(2, 1); + EXPECT_GE(2, 2); + EXPECT_NONFATAL_FAILURE(EXPECT_GE(2, 3), + "Expected: (2) >= (3), actual: 2 vs 3"); + EXPECT_NONFATAL_FAILURE(EXPECT_GE(0.9, 1.1), + "(0.9) >= (1.1)"); +} + +// Tests EXPECT_GT. +TEST(ExpectTest, EXPECT_GT) { + EXPECT_GT(2, 1); + EXPECT_NONFATAL_FAILURE(EXPECT_GT(2, 2), + "Expected: (2) > (2), actual: 2 vs 2"); + EXPECT_NONFATAL_FAILURE(EXPECT_GT(2, 3), + "(2) > (3)"); +} + +#if GTEST_HAS_EXCEPTIONS + +// Tests EXPECT_THROW. +TEST(ExpectTest, EXPECT_THROW) { + EXPECT_THROW(ThrowAnInteger(), int); + EXPECT_NONFATAL_FAILURE(EXPECT_THROW(ThrowAnInteger(), bool), + "Expected: ThrowAnInteger() throws an exception of " + "type bool.\n Actual: it throws a different type."); + EXPECT_NONFATAL_FAILURE( + EXPECT_THROW(ThrowNothing(), bool), + "Expected: ThrowNothing() throws an exception of type bool.\n" + " Actual: it throws nothing."); +} + +// Tests EXPECT_NO_THROW. +TEST(ExpectTest, EXPECT_NO_THROW) { + EXPECT_NO_THROW(ThrowNothing()); + EXPECT_NONFATAL_FAILURE(EXPECT_NO_THROW(ThrowAnInteger()), + "Expected: ThrowAnInteger() doesn't throw an " + "exception.\n Actual: it throws."); +} + +// Tests EXPECT_ANY_THROW. +TEST(ExpectTest, EXPECT_ANY_THROW) { + EXPECT_ANY_THROW(ThrowAnInteger()); + EXPECT_NONFATAL_FAILURE( + EXPECT_ANY_THROW(ThrowNothing()), + "Expected: ThrowNothing() throws an exception.\n" + " Actual: it doesn't."); +} + +#endif // GTEST_HAS_EXCEPTIONS + +// Make sure we deal with the precedence of <<. +TEST(ExpectTest, ExpectPrecedence) { + EXPECT_EQ(1 < 2, true); + EXPECT_NONFATAL_FAILURE(EXPECT_EQ(true, true && false), + "Value of: true && false"); +} + + +// Tests the StreamableToString() function. + +// Tests using StreamableToString() on a scalar. +TEST(StreamableToStringTest, Scalar) { + EXPECT_STREQ("5", StreamableToString(5).c_str()); +} + +// Tests using StreamableToString() on a non-char pointer. +TEST(StreamableToStringTest, Pointer) { + int n = 0; + int* p = &n; + EXPECT_STRNE("(null)", StreamableToString(p).c_str()); +} + +// Tests using StreamableToString() on a NULL non-char pointer. +TEST(StreamableToStringTest, NullPointer) { + int* p = NULL; + EXPECT_STREQ("(null)", StreamableToString(p).c_str()); +} + +// Tests using StreamableToString() on a C string. +TEST(StreamableToStringTest, CString) { + EXPECT_STREQ("Foo", StreamableToString("Foo").c_str()); +} + +// Tests using StreamableToString() on a NULL C string. +TEST(StreamableToStringTest, NullCString) { + char* p = NULL; + EXPECT_STREQ("(null)", StreamableToString(p).c_str()); +} + +// Tests using streamable values as assertion messages. + +// Tests using std::string as an assertion message. +TEST(StreamableTest, string) { + static const std::string str( + "This failure message is a std::string, and is expected."); + EXPECT_FATAL_FAILURE(FAIL() << str, + str.c_str()); +} + +// Tests that we can output strings containing embedded NULs. +// Limited to Linux because we can only do this with std::string's. +TEST(StreamableTest, stringWithEmbeddedNUL) { + static const char char_array_with_nul[] = + "Here's a NUL\0 and some more string"; + static const std::string string_with_nul(char_array_with_nul, + sizeof(char_array_with_nul) + - 1); // drops the trailing NUL + EXPECT_FATAL_FAILURE(FAIL() << string_with_nul, + "Here's a NUL\\0 and some more string"); +} + +// Tests that we can output a NUL char. +TEST(StreamableTest, NULChar) { + EXPECT_FATAL_FAILURE({ // NOLINT + FAIL() << "A NUL" << '\0' << " and some more string"; + }, "A NUL\\0 and some more string"); +} + +// Tests using int as an assertion message. +TEST(StreamableTest, int) { + EXPECT_FATAL_FAILURE(FAIL() << 900913, + "900913"); +} + +// Tests using NULL char pointer as an assertion message. +// +// In MSVC, streaming a NULL char * causes access violation. Google Test +// implemented a workaround (substituting "(null)" for NULL). This +// tests whether the workaround works. +TEST(StreamableTest, NullCharPtr) { + EXPECT_FATAL_FAILURE(FAIL() << static_cast(NULL), + "(null)"); +} + +// Tests that basic IO manipulators (endl, ends, and flush) can be +// streamed to testing::Message. +TEST(StreamableTest, BasicIoManip) { + EXPECT_FATAL_FAILURE({ // NOLINT + FAIL() << "Line 1." << std::endl + << "A NUL char " << std::ends << std::flush << " in line 2."; + }, "Line 1.\nA NUL char \\0 in line 2."); +} + +// Tests the macros that haven't been covered so far. + +void AddFailureHelper(bool* aborted) { + *aborted = true; + ADD_FAILURE() << "Intentional failure."; + *aborted = false; +} + +// Tests ADD_FAILURE. +TEST(MacroTest, ADD_FAILURE) { + bool aborted = true; + EXPECT_NONFATAL_FAILURE(AddFailureHelper(&aborted), + "Intentional failure."); + EXPECT_FALSE(aborted); +} + +// Tests ADD_FAILURE_AT. +TEST(MacroTest, ADD_FAILURE_AT) { + // Verifies that ADD_FAILURE_AT does generate a nonfatal failure and + // the failure message contains the user-streamed part. + EXPECT_NONFATAL_FAILURE(ADD_FAILURE_AT("foo.cc", 42) << "Wrong!", "Wrong!"); + + // Verifies that the user-streamed part is optional. + EXPECT_NONFATAL_FAILURE(ADD_FAILURE_AT("foo.cc", 42), "Failed"); + + // Unfortunately, we cannot verify that the failure message contains + // the right file path and line number the same way, as + // EXPECT_NONFATAL_FAILURE() doesn't get to see the file path and + // line number. Instead, we do that in gtest_output_test_.cc. +} + +// Tests FAIL. +TEST(MacroTest, FAIL) { + EXPECT_FATAL_FAILURE(FAIL(), + "Failed"); + EXPECT_FATAL_FAILURE(FAIL() << "Intentional failure.", + "Intentional failure."); +} + +// Tests SUCCEED +TEST(MacroTest, SUCCEED) { + SUCCEED(); + SUCCEED() << "Explicit success."; +} + +// Tests for EXPECT_EQ() and ASSERT_EQ(). +// +// These tests fail *intentionally*, s.t. the failure messages can be +// generated and tested. +// +// We have different tests for different argument types. + +// Tests using bool values in {EXPECT|ASSERT}_EQ. +TEST(EqAssertionTest, Bool) { + EXPECT_EQ(true, true); + EXPECT_FATAL_FAILURE({ + bool false_value = false; + ASSERT_EQ(false_value, true); + }, "Value of: true"); +} + +// Tests using int values in {EXPECT|ASSERT}_EQ. +TEST(EqAssertionTest, Int) { + ASSERT_EQ(32, 32); + EXPECT_NONFATAL_FAILURE(EXPECT_EQ(32, 33), + "33"); +} + +// Tests using time_t values in {EXPECT|ASSERT}_EQ. +TEST(EqAssertionTest, Time_T) { + EXPECT_EQ(static_cast(0), + static_cast(0)); + EXPECT_FATAL_FAILURE(ASSERT_EQ(static_cast(0), + static_cast(1234)), + "1234"); +} + +// Tests using char values in {EXPECT|ASSERT}_EQ. +TEST(EqAssertionTest, Char) { + ASSERT_EQ('z', 'z'); + const char ch = 'b'; + EXPECT_NONFATAL_FAILURE(EXPECT_EQ('\0', ch), + "ch"); + EXPECT_NONFATAL_FAILURE(EXPECT_EQ('a', ch), + "ch"); +} + +// Tests using wchar_t values in {EXPECT|ASSERT}_EQ. +TEST(EqAssertionTest, WideChar) { + EXPECT_EQ(L'b', L'b'); + + EXPECT_NONFATAL_FAILURE(EXPECT_EQ(L'\0', L'x'), + "Value of: L'x'\n" + " Actual: L'x' (120, 0x78)\n" + "Expected: L'\0'\n" + "Which is: L'\0' (0, 0x0)"); + + static wchar_t wchar; + wchar = L'b'; + EXPECT_NONFATAL_FAILURE(EXPECT_EQ(L'a', wchar), + "wchar"); + wchar = 0x8119; + EXPECT_FATAL_FAILURE(ASSERT_EQ(static_cast(0x8120), wchar), + "Value of: wchar"); +} + +// Tests using ::std::string values in {EXPECT|ASSERT}_EQ. +TEST(EqAssertionTest, StdString) { + // Compares a const char* to an std::string that has identical + // content. + ASSERT_EQ("Test", ::std::string("Test")); + + // Compares two identical std::strings. + static const ::std::string str1("A * in the middle"); + static const ::std::string str2(str1); + EXPECT_EQ(str1, str2); + + // Compares a const char* to an std::string that has different + // content + EXPECT_NONFATAL_FAILURE(EXPECT_EQ("Test", ::std::string("test")), + "::std::string(\"test\")"); + + // Compares an std::string to a char* that has different content. + char* const p1 = const_cast("foo"); + EXPECT_NONFATAL_FAILURE(EXPECT_EQ(::std::string("bar"), p1), + "p1"); + + // Compares two std::strings that have different contents, one of + // which having a NUL character in the middle. This should fail. + static ::std::string str3(str1); + str3.at(2) = '\0'; + EXPECT_FATAL_FAILURE(ASSERT_EQ(str1, str3), + "Value of: str3\n" + " Actual: \"A \\0 in the middle\""); +} + +#if GTEST_HAS_STD_WSTRING + +// Tests using ::std::wstring values in {EXPECT|ASSERT}_EQ. +TEST(EqAssertionTest, StdWideString) { + // Compares two identical std::wstrings. + const ::std::wstring wstr1(L"A * in the middle"); + const ::std::wstring wstr2(wstr1); + ASSERT_EQ(wstr1, wstr2); + + // Compares an std::wstring to a const wchar_t* that has identical + // content. + const wchar_t kTestX8119[] = { 'T', 'e', 's', 't', 0x8119, '\0' }; + EXPECT_EQ(::std::wstring(kTestX8119), kTestX8119); + + // Compares an std::wstring to a const wchar_t* that has different + // content. + const wchar_t kTestX8120[] = { 'T', 'e', 's', 't', 0x8120, '\0' }; + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_EQ(::std::wstring(kTestX8119), kTestX8120); + }, "kTestX8120"); + + // Compares two std::wstrings that have different contents, one of + // which having a NUL character in the middle. + ::std::wstring wstr3(wstr1); + wstr3.at(2) = L'\0'; + EXPECT_NONFATAL_FAILURE(EXPECT_EQ(wstr1, wstr3), + "wstr3"); + + // Compares a wchar_t* to an std::wstring that has different + // content. + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_EQ(const_cast(L"foo"), ::std::wstring(L"bar")); + }, ""); +} + +#endif // GTEST_HAS_STD_WSTRING + +#if GTEST_HAS_GLOBAL_STRING +// Tests using ::string values in {EXPECT|ASSERT}_EQ. +TEST(EqAssertionTest, GlobalString) { + // Compares a const char* to a ::string that has identical content. + EXPECT_EQ("Test", ::string("Test")); + + // Compares two identical ::strings. + const ::string str1("A * in the middle"); + const ::string str2(str1); + ASSERT_EQ(str1, str2); + + // Compares a ::string to a const char* that has different content. + EXPECT_NONFATAL_FAILURE(EXPECT_EQ(::string("Test"), "test"), + "test"); + + // Compares two ::strings that have different contents, one of which + // having a NUL character in the middle. + ::string str3(str1); + str3.at(2) = '\0'; + EXPECT_NONFATAL_FAILURE(EXPECT_EQ(str1, str3), + "str3"); + + // Compares a ::string to a char* that has different content. + EXPECT_FATAL_FAILURE({ // NOLINT + ASSERT_EQ(::string("bar"), const_cast("foo")); + }, ""); +} + +#endif // GTEST_HAS_GLOBAL_STRING + +#if GTEST_HAS_GLOBAL_WSTRING + +// Tests using ::wstring values in {EXPECT|ASSERT}_EQ. +TEST(EqAssertionTest, GlobalWideString) { + // Compares two identical ::wstrings. + static const ::wstring wstr1(L"A * in the middle"); + static const ::wstring wstr2(wstr1); + EXPECT_EQ(wstr1, wstr2); + + // Compares a const wchar_t* to a ::wstring that has identical content. + const wchar_t kTestX8119[] = { 'T', 'e', 's', 't', 0x8119, '\0' }; + ASSERT_EQ(kTestX8119, ::wstring(kTestX8119)); + + // Compares a const wchar_t* to a ::wstring that has different + // content. + const wchar_t kTestX8120[] = { 'T', 'e', 's', 't', 0x8120, '\0' }; + EXPECT_NONFATAL_FAILURE({ // NOLINT + EXPECT_EQ(kTestX8120, ::wstring(kTestX8119)); + }, "Test\\x8119"); + + // Compares a wchar_t* to a ::wstring that has different content. + wchar_t* const p1 = const_cast(L"foo"); + EXPECT_NONFATAL_FAILURE(EXPECT_EQ(p1, ::wstring(L"bar")), + "bar"); + + // Compares two ::wstrings that have different contents, one of which + // having a NUL character in the middle. + static ::wstring wstr3; + wstr3 = wstr1; + wstr3.at(2) = L'\0'; + EXPECT_FATAL_FAILURE(ASSERT_EQ(wstr1, wstr3), + "wstr3"); +} + +#endif // GTEST_HAS_GLOBAL_WSTRING + +// Tests using char pointers in {EXPECT|ASSERT}_EQ. +TEST(EqAssertionTest, CharPointer) { + char* const p0 = NULL; + // Only way to get the Nokia compiler to compile the cast + // is to have a separate void* variable first. Putting + // the two casts on the same line doesn't work, neither does + // a direct C-style to char*. + void* pv1 = (void*)0x1234; // NOLINT + void* pv2 = (void*)0xABC0; // NOLINT + char* const p1 = reinterpret_cast(pv1); + char* const p2 = reinterpret_cast(pv2); + ASSERT_EQ(p1, p1); + + EXPECT_NONFATAL_FAILURE(EXPECT_EQ(p0, p2), + "Value of: p2"); + EXPECT_NONFATAL_FAILURE(EXPECT_EQ(p1, p2), + "p2"); + EXPECT_FATAL_FAILURE(ASSERT_EQ(reinterpret_cast(0x1234), + reinterpret_cast(0xABC0)), + "ABC0"); +} + +// Tests using wchar_t pointers in {EXPECT|ASSERT}_EQ. +TEST(EqAssertionTest, WideCharPointer) { + wchar_t* const p0 = NULL; + // Only way to get the Nokia compiler to compile the cast + // is to have a separate void* variable first. Putting + // the two casts on the same line doesn't work, neither does + // a direct C-style to char*. + void* pv1 = (void*)0x1234; // NOLINT + void* pv2 = (void*)0xABC0; // NOLINT + wchar_t* const p1 = reinterpret_cast(pv1); + wchar_t* const p2 = reinterpret_cast(pv2); + EXPECT_EQ(p0, p0); + + EXPECT_NONFATAL_FAILURE(EXPECT_EQ(p0, p2), + "Value of: p2"); + EXPECT_NONFATAL_FAILURE(EXPECT_EQ(p1, p2), + "p2"); + void* pv3 = (void*)0x1234; // NOLINT + void* pv4 = (void*)0xABC0; // NOLINT + const wchar_t* p3 = reinterpret_cast(pv3); + const wchar_t* p4 = reinterpret_cast(pv4); + EXPECT_NONFATAL_FAILURE(EXPECT_EQ(p3, p4), + "p4"); +} + +// Tests using other types of pointers in {EXPECT|ASSERT}_EQ. +TEST(EqAssertionTest, OtherPointer) { + ASSERT_EQ(static_cast(NULL), + static_cast(NULL)); + EXPECT_FATAL_FAILURE(ASSERT_EQ(static_cast(NULL), + reinterpret_cast(0x1234)), + "0x1234"); +} + +// A class that supports binary comparison operators but not streaming. +class UnprintableChar { + public: + explicit UnprintableChar(char ch) : char_(ch) {} + + bool operator==(const UnprintableChar& rhs) const { + return char_ == rhs.char_; + } + bool operator!=(const UnprintableChar& rhs) const { + return char_ != rhs.char_; + } + bool operator<(const UnprintableChar& rhs) const { + return char_ < rhs.char_; + } + bool operator<=(const UnprintableChar& rhs) const { + return char_ <= rhs.char_; + } + bool operator>(const UnprintableChar& rhs) const { + return char_ > rhs.char_; + } + bool operator>=(const UnprintableChar& rhs) const { + return char_ >= rhs.char_; + } + + private: + char char_; +}; + +// Tests that ASSERT_EQ() and friends don't require the arguments to +// be printable. +TEST(ComparisonAssertionTest, AcceptsUnprintableArgs) { + const UnprintableChar x('x'), y('y'); + ASSERT_EQ(x, x); + EXPECT_NE(x, y); + ASSERT_LT(x, y); + EXPECT_LE(x, y); + ASSERT_GT(y, x); + EXPECT_GE(x, x); + + EXPECT_NONFATAL_FAILURE(EXPECT_EQ(x, y), "1-byte object <78>"); + EXPECT_NONFATAL_FAILURE(EXPECT_EQ(x, y), "1-byte object <79>"); + EXPECT_NONFATAL_FAILURE(EXPECT_LT(y, y), "1-byte object <79>"); + EXPECT_NONFATAL_FAILURE(EXPECT_GT(x, y), "1-byte object <78>"); + EXPECT_NONFATAL_FAILURE(EXPECT_GT(x, y), "1-byte object <79>"); + + // Code tested by EXPECT_FATAL_FAILURE cannot reference local + // variables, so we have to write UnprintableChar('x') instead of x. +#ifndef __BORLANDC__ + // ICE's in C++Builder. + EXPECT_FATAL_FAILURE(ASSERT_NE(UnprintableChar('x'), UnprintableChar('x')), + "1-byte object <78>"); + EXPECT_FATAL_FAILURE(ASSERT_LE(UnprintableChar('y'), UnprintableChar('x')), + "1-byte object <78>"); +#endif + EXPECT_FATAL_FAILURE(ASSERT_LE(UnprintableChar('y'), UnprintableChar('x')), + "1-byte object <79>"); + EXPECT_FATAL_FAILURE(ASSERT_GE(UnprintableChar('x'), UnprintableChar('y')), + "1-byte object <78>"); + EXPECT_FATAL_FAILURE(ASSERT_GE(UnprintableChar('x'), UnprintableChar('y')), + "1-byte object <79>"); +} + +// Tests the FRIEND_TEST macro. + +// This class has a private member we want to test. We will test it +// both in a TEST and in a TEST_F. +class Foo { + public: + Foo() {} + + private: + int Bar() const { return 1; } + + // Declares the friend tests that can access the private member + // Bar(). + FRIEND_TEST(FRIEND_TEST_Test, TEST); + FRIEND_TEST(FRIEND_TEST_Test2, TEST_F); +}; + +// Tests that the FRIEND_TEST declaration allows a TEST to access a +// class's private members. This should compile. +TEST(FRIEND_TEST_Test, TEST) { + ASSERT_EQ(1, Foo().Bar()); +} + +// The fixture needed to test using FRIEND_TEST with TEST_F. +class FRIEND_TEST_Test2 : public Test { + protected: + Foo foo; +}; + +// Tests that the FRIEND_TEST declaration allows a TEST_F to access a +// class's private members. This should compile. +TEST_F(FRIEND_TEST_Test2, TEST_F) { + ASSERT_EQ(1, foo.Bar()); +} + +// Tests the life cycle of Test objects. + +// The test fixture for testing the life cycle of Test objects. +// +// This class counts the number of live test objects that uses this +// fixture. +class TestLifeCycleTest : public Test { + protected: + // Constructor. Increments the number of test objects that uses + // this fixture. + TestLifeCycleTest() { count_++; } + + // Destructor. Decrements the number of test objects that uses this + // fixture. + ~TestLifeCycleTest() { count_--; } + + // Returns the number of live test objects that uses this fixture. + int count() const { return count_; } + + private: + static int count_; +}; + +int TestLifeCycleTest::count_ = 0; + +// Tests the life cycle of test objects. +TEST_F(TestLifeCycleTest, Test1) { + // There should be only one test object in this test case that's + // currently alive. + ASSERT_EQ(1, count()); +} + +// Tests the life cycle of test objects. +TEST_F(TestLifeCycleTest, Test2) { + // After Test1 is done and Test2 is started, there should still be + // only one live test object, as the object for Test1 should've been + // deleted. + ASSERT_EQ(1, count()); +} + +} // namespace + +// Tests that the copy constructor works when it is NOT optimized away by +// the compiler. +TEST(AssertionResultTest, CopyConstructorWorksWhenNotOptimied) { + // Checks that the copy constructor doesn't try to dereference NULL pointers + // in the source object. + AssertionResult r1 = AssertionSuccess(); + AssertionResult r2 = r1; + // The following line is added to prevent the compiler from optimizing + // away the constructor call. + r1 << "abc"; + + AssertionResult r3 = r1; + EXPECT_EQ(static_cast(r3), static_cast(r1)); + EXPECT_STREQ("abc", r1.message()); +} + +// Tests that AssertionSuccess and AssertionFailure construct +// AssertionResult objects as expected. +TEST(AssertionResultTest, ConstructionWorks) { + AssertionResult r1 = AssertionSuccess(); + EXPECT_TRUE(r1); + EXPECT_STREQ("", r1.message()); + + AssertionResult r2 = AssertionSuccess() << "abc"; + EXPECT_TRUE(r2); + EXPECT_STREQ("abc", r2.message()); + + AssertionResult r3 = AssertionFailure(); + EXPECT_FALSE(r3); + EXPECT_STREQ("", r3.message()); + + AssertionResult r4 = AssertionFailure() << "def"; + EXPECT_FALSE(r4); + EXPECT_STREQ("def", r4.message()); + + AssertionResult r5 = AssertionFailure(Message() << "ghi"); + EXPECT_FALSE(r5); + EXPECT_STREQ("ghi", r5.message()); +} + +// Tests that the negation flips the predicate result but keeps the message. +TEST(AssertionResultTest, NegationWorks) { + AssertionResult r1 = AssertionSuccess() << "abc"; + EXPECT_FALSE(!r1); + EXPECT_STREQ("abc", (!r1).message()); + + AssertionResult r2 = AssertionFailure() << "def"; + EXPECT_TRUE(!r2); + EXPECT_STREQ("def", (!r2).message()); +} + +TEST(AssertionResultTest, StreamingWorks) { + AssertionResult r = AssertionSuccess(); + r << "abc" << 'd' << 0 << true; + EXPECT_STREQ("abcd0true", r.message()); +} + +TEST(AssertionResultTest, CanStreamOstreamManipulators) { + AssertionResult r = AssertionSuccess(); + r << "Data" << std::endl << std::flush << std::ends << "Will be visible"; + EXPECT_STREQ("Data\n\\0Will be visible", r.message()); +} + +// Tests streaming a user type whose definition and operator << are +// both in the global namespace. +class Base { + public: + explicit Base(int an_x) : x_(an_x) {} + int x() const { return x_; } + private: + int x_; +}; +std::ostream& operator<<(std::ostream& os, + const Base& val) { + return os << val.x(); +} +std::ostream& operator<<(std::ostream& os, + const Base* pointer) { + return os << "(" << pointer->x() << ")"; +} + +TEST(MessageTest, CanStreamUserTypeInGlobalNameSpace) { + Message msg; + Base a(1); + + msg << a << &a; // Uses ::operator<<. + EXPECT_STREQ("1(1)", msg.GetString().c_str()); +} + +// Tests streaming a user type whose definition and operator<< are +// both in an unnamed namespace. +namespace { +class MyTypeInUnnamedNameSpace : public Base { + public: + explicit MyTypeInUnnamedNameSpace(int an_x): Base(an_x) {} +}; +std::ostream& operator<<(std::ostream& os, + const MyTypeInUnnamedNameSpace& val) { + return os << val.x(); +} +std::ostream& operator<<(std::ostream& os, + const MyTypeInUnnamedNameSpace* pointer) { + return os << "(" << pointer->x() << ")"; +} +} // namespace + +TEST(MessageTest, CanStreamUserTypeInUnnamedNameSpace) { + Message msg; + MyTypeInUnnamedNameSpace a(1); + + msg << a << &a; // Uses ::operator<<. + EXPECT_STREQ("1(1)", msg.GetString().c_str()); +} + +// Tests streaming a user type whose definition and operator<< are +// both in a user namespace. +namespace namespace1 { +class MyTypeInNameSpace1 : public Base { + public: + explicit MyTypeInNameSpace1(int an_x): Base(an_x) {} +}; +std::ostream& operator<<(std::ostream& os, + const MyTypeInNameSpace1& val) { + return os << val.x(); +} +std::ostream& operator<<(std::ostream& os, + const MyTypeInNameSpace1* pointer) { + return os << "(" << pointer->x() << ")"; +} +} // namespace namespace1 + +TEST(MessageTest, CanStreamUserTypeInUserNameSpace) { + Message msg; + namespace1::MyTypeInNameSpace1 a(1); + + msg << a << &a; // Uses namespace1::operator<<. + EXPECT_STREQ("1(1)", msg.GetString().c_str()); +} + +// Tests streaming a user type whose definition is in a user namespace +// but whose operator<< is in the global namespace. +namespace namespace2 { +class MyTypeInNameSpace2 : public ::Base { + public: + explicit MyTypeInNameSpace2(int an_x): Base(an_x) {} +}; +} // namespace namespace2 +std::ostream& operator<<(std::ostream& os, + const namespace2::MyTypeInNameSpace2& val) { + return os << val.x(); +} +std::ostream& operator<<(std::ostream& os, + const namespace2::MyTypeInNameSpace2* pointer) { + return os << "(" << pointer->x() << ")"; +} + +TEST(MessageTest, CanStreamUserTypeInUserNameSpaceWithStreamOperatorInGlobal) { + Message msg; + namespace2::MyTypeInNameSpace2 a(1); + + msg << a << &a; // Uses ::operator<<. + EXPECT_STREQ("1(1)", msg.GetString().c_str()); +} + +// Tests streaming NULL pointers to testing::Message. +TEST(MessageTest, NullPointers) { + Message msg; + char* const p1 = NULL; + unsigned char* const p2 = NULL; + int* p3 = NULL; + double* p4 = NULL; + bool* p5 = NULL; + Message* p6 = NULL; + + msg << p1 << p2 << p3 << p4 << p5 << p6; + ASSERT_STREQ("(null)(null)(null)(null)(null)(null)", + msg.GetString().c_str()); +} + +// Tests streaming wide strings to testing::Message. +TEST(MessageTest, WideStrings) { + // Streams a NULL of type const wchar_t*. + const wchar_t* const_wstr = NULL; + EXPECT_STREQ("(null)", + (Message() << const_wstr).GetString().c_str()); + + // Streams a NULL of type wchar_t*. + wchar_t* wstr = NULL; + EXPECT_STREQ("(null)", + (Message() << wstr).GetString().c_str()); + + // Streams a non-NULL of type const wchar_t*. + const_wstr = L"abc\x8119"; + EXPECT_STREQ("abc\xe8\x84\x99", + (Message() << const_wstr).GetString().c_str()); + + // Streams a non-NULL of type wchar_t*. + wstr = const_cast(const_wstr); + EXPECT_STREQ("abc\xe8\x84\x99", + (Message() << wstr).GetString().c_str()); +} + + +// This line tests that we can define tests in the testing namespace. +namespace testing { + +// Tests the TestInfo class. + +class TestInfoTest : public Test { + protected: + static const TestInfo* GetTestInfo(const char* test_name) { + const TestCase* const test_case = GetUnitTestImpl()-> + GetTestCase("TestInfoTest", "", NULL, NULL); + + for (int i = 0; i < test_case->total_test_count(); ++i) { + const TestInfo* const test_info = test_case->GetTestInfo(i); + if (strcmp(test_name, test_info->name()) == 0) + return test_info; + } + return NULL; + } + + static const TestResult* GetTestResult( + const TestInfo* test_info) { + return test_info->result(); + } +}; + +// Tests TestInfo::test_case_name() and TestInfo::name(). +TEST_F(TestInfoTest, Names) { + const TestInfo* const test_info = GetTestInfo("Names"); + + ASSERT_STREQ("TestInfoTest", test_info->test_case_name()); + ASSERT_STREQ("Names", test_info->name()); +} + +// Tests TestInfo::result(). +TEST_F(TestInfoTest, result) { + const TestInfo* const test_info = GetTestInfo("result"); + + // Initially, there is no TestPartResult for this test. + ASSERT_EQ(0, GetTestResult(test_info)->total_part_count()); + + // After the previous assertion, there is still none. + ASSERT_EQ(0, GetTestResult(test_info)->total_part_count()); +} + +// Tests setting up and tearing down a test case. + +class SetUpTestCaseTest : public Test { + protected: + // This will be called once before the first test in this test case + // is run. + static void SetUpTestCase() { + printf("Setting up the test case . . .\n"); + + // Initializes some shared resource. In this simple example, we + // just create a C string. More complex stuff can be done if + // desired. + shared_resource_ = "123"; + + // Increments the number of test cases that have been set up. + counter_++; + + // SetUpTestCase() should be called only once. + EXPECT_EQ(1, counter_); + } + + // This will be called once after the last test in this test case is + // run. + static void TearDownTestCase() { + printf("Tearing down the test case . . .\n"); + + // Decrements the number of test cases that have been set up. + counter_--; + + // TearDownTestCase() should be called only once. + EXPECT_EQ(0, counter_); + + // Cleans up the shared resource. + shared_resource_ = NULL; + } + + // This will be called before each test in this test case. + virtual void SetUp() { + // SetUpTestCase() should be called only once, so counter_ should + // always be 1. + EXPECT_EQ(1, counter_); + } + + // Number of test cases that have been set up. + static int counter_; + + // Some resource to be shared by all tests in this test case. + static const char* shared_resource_; +}; + +int SetUpTestCaseTest::counter_ = 0; +const char* SetUpTestCaseTest::shared_resource_ = NULL; + +// A test that uses the shared resource. +TEST_F(SetUpTestCaseTest, Test1) { + EXPECT_STRNE(NULL, shared_resource_); +} + +// Another test that uses the shared resource. +TEST_F(SetUpTestCaseTest, Test2) { + EXPECT_STREQ("123", shared_resource_); +} + +// The InitGoogleTestTest test case tests testing::InitGoogleTest(). + +// The Flags struct stores a copy of all Google Test flags. +struct Flags { + // Constructs a Flags struct where each flag has its default value. + Flags() : also_run_disabled_tests(false), + break_on_failure(false), + catch_exceptions(false), + death_test_use_fork(false), + filter(""), + list_tests(false), + output(""), + print_time(true), + random_seed(0), + repeat(1), + shuffle(false), + stack_trace_depth(kMaxStackTraceDepth), + stream_result_to(""), + throw_on_failure(false) {} + + // Factory methods. + + // Creates a Flags struct where the gtest_also_run_disabled_tests flag has + // the given value. + static Flags AlsoRunDisabledTests(bool also_run_disabled_tests) { + Flags flags; + flags.also_run_disabled_tests = also_run_disabled_tests; + return flags; + } + + // Creates a Flags struct where the gtest_break_on_failure flag has + // the given value. + static Flags BreakOnFailure(bool break_on_failure) { + Flags flags; + flags.break_on_failure = break_on_failure; + return flags; + } + + // Creates a Flags struct where the gtest_catch_exceptions flag has + // the given value. + static Flags CatchExceptions(bool catch_exceptions) { + Flags flags; + flags.catch_exceptions = catch_exceptions; + return flags; + } + + // Creates a Flags struct where the gtest_death_test_use_fork flag has + // the given value. + static Flags DeathTestUseFork(bool death_test_use_fork) { + Flags flags; + flags.death_test_use_fork = death_test_use_fork; + return flags; + } + + // Creates a Flags struct where the gtest_filter flag has the given + // value. + static Flags Filter(const char* filter) { + Flags flags; + flags.filter = filter; + return flags; + } + + // Creates a Flags struct where the gtest_list_tests flag has the + // given value. + static Flags ListTests(bool list_tests) { + Flags flags; + flags.list_tests = list_tests; + return flags; + } + + // Creates a Flags struct where the gtest_output flag has the given + // value. + static Flags Output(const char* output) { + Flags flags; + flags.output = output; + return flags; + } + + // Creates a Flags struct where the gtest_print_time flag has the given + // value. + static Flags PrintTime(bool print_time) { + Flags flags; + flags.print_time = print_time; + return flags; + } + + // Creates a Flags struct where the gtest_random_seed flag has + // the given value. + static Flags RandomSeed(Int32 random_seed) { + Flags flags; + flags.random_seed = random_seed; + return flags; + } + + // Creates a Flags struct where the gtest_repeat flag has the given + // value. + static Flags Repeat(Int32 repeat) { + Flags flags; + flags.repeat = repeat; + return flags; + } + + // Creates a Flags struct where the gtest_shuffle flag has + // the given value. + static Flags Shuffle(bool shuffle) { + Flags flags; + flags.shuffle = shuffle; + return flags; + } + + // Creates a Flags struct where the GTEST_FLAG(stack_trace_depth) flag has + // the given value. + static Flags StackTraceDepth(Int32 stack_trace_depth) { + Flags flags; + flags.stack_trace_depth = stack_trace_depth; + return flags; + } + + // Creates a Flags struct where the GTEST_FLAG(stream_result_to) flag has + // the given value. + static Flags StreamResultTo(const char* stream_result_to) { + Flags flags; + flags.stream_result_to = stream_result_to; + return flags; + } + + // Creates a Flags struct where the gtest_throw_on_failure flag has + // the given value. + static Flags ThrowOnFailure(bool throw_on_failure) { + Flags flags; + flags.throw_on_failure = throw_on_failure; + return flags; + } + + // These fields store the flag values. + bool also_run_disabled_tests; + bool break_on_failure; + bool catch_exceptions; + bool death_test_use_fork; + const char* filter; + bool list_tests; + const char* output; + bool print_time; + Int32 random_seed; + Int32 repeat; + bool shuffle; + Int32 stack_trace_depth; + const char* stream_result_to; + bool throw_on_failure; +}; + +// Fixture for testing InitGoogleTest(). +class InitGoogleTestTest : public Test { + protected: + // Clears the flags before each test. + virtual void SetUp() { + GTEST_FLAG(also_run_disabled_tests) = false; + GTEST_FLAG(break_on_failure) = false; + GTEST_FLAG(catch_exceptions) = false; + GTEST_FLAG(death_test_use_fork) = false; + GTEST_FLAG(filter) = ""; + GTEST_FLAG(list_tests) = false; + GTEST_FLAG(output) = ""; + GTEST_FLAG(print_time) = true; + GTEST_FLAG(random_seed) = 0; + GTEST_FLAG(repeat) = 1; + GTEST_FLAG(shuffle) = false; + GTEST_FLAG(stack_trace_depth) = kMaxStackTraceDepth; + GTEST_FLAG(stream_result_to) = ""; + GTEST_FLAG(throw_on_failure) = false; + } + + // Asserts that two narrow or wide string arrays are equal. + template + static void AssertStringArrayEq(size_t size1, CharType** array1, + size_t size2, CharType** array2) { + ASSERT_EQ(size1, size2) << " Array sizes different."; + + for (size_t i = 0; i != size1; i++) { + ASSERT_STREQ(array1[i], array2[i]) << " where i == " << i; + } + } + + // Verifies that the flag values match the expected values. + static void CheckFlags(const Flags& expected) { + EXPECT_EQ(expected.also_run_disabled_tests, + GTEST_FLAG(also_run_disabled_tests)); + EXPECT_EQ(expected.break_on_failure, GTEST_FLAG(break_on_failure)); + EXPECT_EQ(expected.catch_exceptions, GTEST_FLAG(catch_exceptions)); + EXPECT_EQ(expected.death_test_use_fork, GTEST_FLAG(death_test_use_fork)); + EXPECT_STREQ(expected.filter, GTEST_FLAG(filter).c_str()); + EXPECT_EQ(expected.list_tests, GTEST_FLAG(list_tests)); + EXPECT_STREQ(expected.output, GTEST_FLAG(output).c_str()); + EXPECT_EQ(expected.print_time, GTEST_FLAG(print_time)); + EXPECT_EQ(expected.random_seed, GTEST_FLAG(random_seed)); + EXPECT_EQ(expected.repeat, GTEST_FLAG(repeat)); + EXPECT_EQ(expected.shuffle, GTEST_FLAG(shuffle)); + EXPECT_EQ(expected.stack_trace_depth, GTEST_FLAG(stack_trace_depth)); + EXPECT_STREQ(expected.stream_result_to, + GTEST_FLAG(stream_result_to).c_str()); + EXPECT_EQ(expected.throw_on_failure, GTEST_FLAG(throw_on_failure)); + } + + // Parses a command line (specified by argc1 and argv1), then + // verifies that the flag values are expected and that the + // recognized flags are removed from the command line. + template + static void TestParsingFlags(int argc1, const CharType** argv1, + int argc2, const CharType** argv2, + const Flags& expected, bool should_print_help) { + const bool saved_help_flag = ::testing::internal::g_help_flag; + ::testing::internal::g_help_flag = false; + +#if GTEST_HAS_STREAM_REDIRECTION + CaptureStdout(); +#endif + + // Parses the command line. + internal::ParseGoogleTestFlagsOnly(&argc1, const_cast(argv1)); + +#if GTEST_HAS_STREAM_REDIRECTION + const std::string captured_stdout = GetCapturedStdout(); +#endif + + // Verifies the flag values. + CheckFlags(expected); + + // Verifies that the recognized flags are removed from the command + // line. + AssertStringArrayEq(argc1 + 1, argv1, argc2 + 1, argv2); + + // ParseGoogleTestFlagsOnly should neither set g_help_flag nor print the + // help message for the flags it recognizes. + EXPECT_EQ(should_print_help, ::testing::internal::g_help_flag); + +#if GTEST_HAS_STREAM_REDIRECTION + const char* const expected_help_fragment = + "This program contains tests written using"; + if (should_print_help) { + EXPECT_PRED_FORMAT2(IsSubstring, expected_help_fragment, captured_stdout); + } else { + EXPECT_PRED_FORMAT2(IsNotSubstring, + expected_help_fragment, captured_stdout); + } +#endif // GTEST_HAS_STREAM_REDIRECTION + + ::testing::internal::g_help_flag = saved_help_flag; + } + + // This macro wraps TestParsingFlags s.t. the user doesn't need + // to specify the array sizes. + +#define GTEST_TEST_PARSING_FLAGS_(argv1, argv2, expected, should_print_help) \ + TestParsingFlags(sizeof(argv1)/sizeof(*argv1) - 1, argv1, \ + sizeof(argv2)/sizeof(*argv2) - 1, argv2, \ + expected, should_print_help) +}; + +// Tests parsing an empty command line. +TEST_F(InitGoogleTestTest, Empty) { + const char* argv[] = { + NULL + }; + + const char* argv2[] = { + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags(), false); +} + +// Tests parsing a command line that has no flag. +TEST_F(InitGoogleTestTest, NoFlag) { + const char* argv[] = { + "foo.exe", + NULL + }; + + const char* argv2[] = { + "foo.exe", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags(), false); +} + +// Tests parsing a bad --gtest_filter flag. +TEST_F(InitGoogleTestTest, FilterBad) { + const char* argv[] = { + "foo.exe", + "--gtest_filter", + NULL + }; + + const char* argv2[] = { + "foo.exe", + "--gtest_filter", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Filter(""), true); +} + +// Tests parsing an empty --gtest_filter flag. +TEST_F(InitGoogleTestTest, FilterEmpty) { + const char* argv[] = { + "foo.exe", + "--gtest_filter=", + NULL + }; + + const char* argv2[] = { + "foo.exe", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Filter(""), false); +} + +// Tests parsing a non-empty --gtest_filter flag. +TEST_F(InitGoogleTestTest, FilterNonEmpty) { + const char* argv[] = { + "foo.exe", + "--gtest_filter=abc", + NULL + }; + + const char* argv2[] = { + "foo.exe", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Filter("abc"), false); +} + +// Tests parsing --gtest_break_on_failure. +TEST_F(InitGoogleTestTest, BreakOnFailureWithoutValue) { + const char* argv[] = { + "foo.exe", + "--gtest_break_on_failure", + NULL +}; + + const char* argv2[] = { + "foo.exe", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::BreakOnFailure(true), false); +} + +// Tests parsing --gtest_break_on_failure=0. +TEST_F(InitGoogleTestTest, BreakOnFailureFalse_0) { + const char* argv[] = { + "foo.exe", + "--gtest_break_on_failure=0", + NULL + }; + + const char* argv2[] = { + "foo.exe", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::BreakOnFailure(false), false); +} + +// Tests parsing --gtest_break_on_failure=f. +TEST_F(InitGoogleTestTest, BreakOnFailureFalse_f) { + const char* argv[] = { + "foo.exe", + "--gtest_break_on_failure=f", + NULL + }; + + const char* argv2[] = { + "foo.exe", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::BreakOnFailure(false), false); +} + +// Tests parsing --gtest_break_on_failure=F. +TEST_F(InitGoogleTestTest, BreakOnFailureFalse_F) { + const char* argv[] = { + "foo.exe", + "--gtest_break_on_failure=F", + NULL + }; + + const char* argv2[] = { + "foo.exe", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::BreakOnFailure(false), false); +} + +// Tests parsing a --gtest_break_on_failure flag that has a "true" +// definition. +TEST_F(InitGoogleTestTest, BreakOnFailureTrue) { + const char* argv[] = { + "foo.exe", + "--gtest_break_on_failure=1", + NULL + }; + + const char* argv2[] = { + "foo.exe", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::BreakOnFailure(true), false); +} + +// Tests parsing --gtest_catch_exceptions. +TEST_F(InitGoogleTestTest, CatchExceptions) { + const char* argv[] = { + "foo.exe", + "--gtest_catch_exceptions", + NULL + }; + + const char* argv2[] = { + "foo.exe", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::CatchExceptions(true), false); +} + +// Tests parsing --gtest_death_test_use_fork. +TEST_F(InitGoogleTestTest, DeathTestUseFork) { + const char* argv[] = { + "foo.exe", + "--gtest_death_test_use_fork", + NULL + }; + + const char* argv2[] = { + "foo.exe", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::DeathTestUseFork(true), false); +} + +// Tests having the same flag twice with different values. The +// expected behavior is that the one coming last takes precedence. +TEST_F(InitGoogleTestTest, DuplicatedFlags) { + const char* argv[] = { + "foo.exe", + "--gtest_filter=a", + "--gtest_filter=b", + NULL + }; + + const char* argv2[] = { + "foo.exe", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Filter("b"), false); +} + +// Tests having an unrecognized flag on the command line. +TEST_F(InitGoogleTestTest, UnrecognizedFlag) { + const char* argv[] = { + "foo.exe", + "--gtest_break_on_failure", + "bar", // Unrecognized by Google Test. + "--gtest_filter=b", + NULL + }; + + const char* argv2[] = { + "foo.exe", + "bar", + NULL + }; + + Flags flags; + flags.break_on_failure = true; + flags.filter = "b"; + GTEST_TEST_PARSING_FLAGS_(argv, argv2, flags, false); +} + +// Tests having a --gtest_list_tests flag +TEST_F(InitGoogleTestTest, ListTestsFlag) { + const char* argv[] = { + "foo.exe", + "--gtest_list_tests", + NULL + }; + + const char* argv2[] = { + "foo.exe", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::ListTests(true), false); +} + +// Tests having a --gtest_list_tests flag with a "true" value +TEST_F(InitGoogleTestTest, ListTestsTrue) { + const char* argv[] = { + "foo.exe", + "--gtest_list_tests=1", + NULL + }; + + const char* argv2[] = { + "foo.exe", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::ListTests(true), false); +} + +// Tests having a --gtest_list_tests flag with a "false" value +TEST_F(InitGoogleTestTest, ListTestsFalse) { + const char* argv[] = { + "foo.exe", + "--gtest_list_tests=0", + NULL + }; + + const char* argv2[] = { + "foo.exe", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::ListTests(false), false); +} + +// Tests parsing --gtest_list_tests=f. +TEST_F(InitGoogleTestTest, ListTestsFalse_f) { + const char* argv[] = { + "foo.exe", + "--gtest_list_tests=f", + NULL + }; + + const char* argv2[] = { + "foo.exe", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::ListTests(false), false); +} + +// Tests parsing --gtest_list_tests=F. +TEST_F(InitGoogleTestTest, ListTestsFalse_F) { + const char* argv[] = { + "foo.exe", + "--gtest_list_tests=F", + NULL + }; + + const char* argv2[] = { + "foo.exe", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::ListTests(false), false); +} + +// Tests parsing --gtest_output (invalid). +TEST_F(InitGoogleTestTest, OutputEmpty) { + const char* argv[] = { + "foo.exe", + "--gtest_output", + NULL + }; + + const char* argv2[] = { + "foo.exe", + "--gtest_output", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags(), true); +} + +// Tests parsing --gtest_output=xml +TEST_F(InitGoogleTestTest, OutputXml) { + const char* argv[] = { + "foo.exe", + "--gtest_output=xml", + NULL + }; + + const char* argv2[] = { + "foo.exe", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Output("xml"), false); +} + +// Tests parsing --gtest_output=xml:file +TEST_F(InitGoogleTestTest, OutputXmlFile) { + const char* argv[] = { + "foo.exe", + "--gtest_output=xml:file", + NULL + }; + + const char* argv2[] = { + "foo.exe", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Output("xml:file"), false); +} + +// Tests parsing --gtest_output=xml:directory/path/ +TEST_F(InitGoogleTestTest, OutputXmlDirectory) { + const char* argv[] = { + "foo.exe", + "--gtest_output=xml:directory/path/", + NULL + }; + + const char* argv2[] = { + "foo.exe", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, + Flags::Output("xml:directory/path/"), false); +} + +// Tests having a --gtest_print_time flag +TEST_F(InitGoogleTestTest, PrintTimeFlag) { + const char* argv[] = { + "foo.exe", + "--gtest_print_time", + NULL + }; + + const char* argv2[] = { + "foo.exe", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::PrintTime(true), false); +} + +// Tests having a --gtest_print_time flag with a "true" value +TEST_F(InitGoogleTestTest, PrintTimeTrue) { + const char* argv[] = { + "foo.exe", + "--gtest_print_time=1", + NULL + }; + + const char* argv2[] = { + "foo.exe", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::PrintTime(true), false); +} + +// Tests having a --gtest_print_time flag with a "false" value +TEST_F(InitGoogleTestTest, PrintTimeFalse) { + const char* argv[] = { + "foo.exe", + "--gtest_print_time=0", + NULL + }; + + const char* argv2[] = { + "foo.exe", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::PrintTime(false), false); +} + +// Tests parsing --gtest_print_time=f. +TEST_F(InitGoogleTestTest, PrintTimeFalse_f) { + const char* argv[] = { + "foo.exe", + "--gtest_print_time=f", + NULL + }; + + const char* argv2[] = { + "foo.exe", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::PrintTime(false), false); +} + +// Tests parsing --gtest_print_time=F. +TEST_F(InitGoogleTestTest, PrintTimeFalse_F) { + const char* argv[] = { + "foo.exe", + "--gtest_print_time=F", + NULL + }; + + const char* argv2[] = { + "foo.exe", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::PrintTime(false), false); +} + +// Tests parsing --gtest_random_seed=number +TEST_F(InitGoogleTestTest, RandomSeed) { + const char* argv[] = { + "foo.exe", + "--gtest_random_seed=1000", + NULL + }; + + const char* argv2[] = { + "foo.exe", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::RandomSeed(1000), false); +} + +// Tests parsing --gtest_repeat=number +TEST_F(InitGoogleTestTest, Repeat) { + const char* argv[] = { + "foo.exe", + "--gtest_repeat=1000", + NULL + }; + + const char* argv2[] = { + "foo.exe", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Repeat(1000), false); +} + +// Tests having a --gtest_also_run_disabled_tests flag +TEST_F(InitGoogleTestTest, AlsoRunDisabledTestsFlag) { + const char* argv[] = { + "foo.exe", + "--gtest_also_run_disabled_tests", + NULL + }; + + const char* argv2[] = { + "foo.exe", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, + Flags::AlsoRunDisabledTests(true), false); +} + +// Tests having a --gtest_also_run_disabled_tests flag with a "true" value +TEST_F(InitGoogleTestTest, AlsoRunDisabledTestsTrue) { + const char* argv[] = { + "foo.exe", + "--gtest_also_run_disabled_tests=1", + NULL + }; + + const char* argv2[] = { + "foo.exe", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, + Flags::AlsoRunDisabledTests(true), false); +} + +// Tests having a --gtest_also_run_disabled_tests flag with a "false" value +TEST_F(InitGoogleTestTest, AlsoRunDisabledTestsFalse) { + const char* argv[] = { + "foo.exe", + "--gtest_also_run_disabled_tests=0", + NULL + }; + + const char* argv2[] = { + "foo.exe", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, + Flags::AlsoRunDisabledTests(false), false); +} + +// Tests parsing --gtest_shuffle. +TEST_F(InitGoogleTestTest, ShuffleWithoutValue) { + const char* argv[] = { + "foo.exe", + "--gtest_shuffle", + NULL +}; + + const char* argv2[] = { + "foo.exe", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Shuffle(true), false); +} + +// Tests parsing --gtest_shuffle=0. +TEST_F(InitGoogleTestTest, ShuffleFalse_0) { + const char* argv[] = { + "foo.exe", + "--gtest_shuffle=0", + NULL + }; + + const char* argv2[] = { + "foo.exe", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Shuffle(false), false); +} + +// Tests parsing a --gtest_shuffle flag that has a "true" +// definition. +TEST_F(InitGoogleTestTest, ShuffleTrue) { + const char* argv[] = { + "foo.exe", + "--gtest_shuffle=1", + NULL + }; + + const char* argv2[] = { + "foo.exe", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::Shuffle(true), false); +} + +// Tests parsing --gtest_stack_trace_depth=number. +TEST_F(InitGoogleTestTest, StackTraceDepth) { + const char* argv[] = { + "foo.exe", + "--gtest_stack_trace_depth=5", + NULL + }; + + const char* argv2[] = { + "foo.exe", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::StackTraceDepth(5), false); +} + +TEST_F(InitGoogleTestTest, StreamResultTo) { + const char* argv[] = { + "foo.exe", + "--gtest_stream_result_to=localhost:1234", + NULL + }; + + const char* argv2[] = { + "foo.exe", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_( + argv, argv2, Flags::StreamResultTo("localhost:1234"), false); +} + +// Tests parsing --gtest_throw_on_failure. +TEST_F(InitGoogleTestTest, ThrowOnFailureWithoutValue) { + const char* argv[] = { + "foo.exe", + "--gtest_throw_on_failure", + NULL +}; + + const char* argv2[] = { + "foo.exe", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::ThrowOnFailure(true), false); +} + +// Tests parsing --gtest_throw_on_failure=0. +TEST_F(InitGoogleTestTest, ThrowOnFailureFalse_0) { + const char* argv[] = { + "foo.exe", + "--gtest_throw_on_failure=0", + NULL + }; + + const char* argv2[] = { + "foo.exe", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::ThrowOnFailure(false), false); +} + +// Tests parsing a --gtest_throw_on_failure flag that has a "true" +// definition. +TEST_F(InitGoogleTestTest, ThrowOnFailureTrue) { + const char* argv[] = { + "foo.exe", + "--gtest_throw_on_failure=1", + NULL + }; + + const char* argv2[] = { + "foo.exe", + NULL + }; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, Flags::ThrowOnFailure(true), false); +} + +#if GTEST_OS_WINDOWS +// Tests parsing wide strings. +TEST_F(InitGoogleTestTest, WideStrings) { + const wchar_t* argv[] = { + L"foo.exe", + L"--gtest_filter=Foo*", + L"--gtest_list_tests=1", + L"--gtest_break_on_failure", + L"--non_gtest_flag", + NULL + }; + + const wchar_t* argv2[] = { + L"foo.exe", + L"--non_gtest_flag", + NULL + }; + + Flags expected_flags; + expected_flags.break_on_failure = true; + expected_flags.filter = "Foo*"; + expected_flags.list_tests = true; + + GTEST_TEST_PARSING_FLAGS_(argv, argv2, expected_flags, false); +} +#endif // GTEST_OS_WINDOWS + +// Tests current_test_info() in UnitTest. +class CurrentTestInfoTest : public Test { + protected: + // Tests that current_test_info() returns NULL before the first test in + // the test case is run. + static void SetUpTestCase() { + // There should be no tests running at this point. + const TestInfo* test_info = + UnitTest::GetInstance()->current_test_info(); + EXPECT_TRUE(test_info == NULL) + << "There should be no tests running at this point."; + } + + // Tests that current_test_info() returns NULL after the last test in + // the test case has run. + static void TearDownTestCase() { + const TestInfo* test_info = + UnitTest::GetInstance()->current_test_info(); + EXPECT_TRUE(test_info == NULL) + << "There should be no tests running at this point."; + } +}; + +// Tests that current_test_info() returns TestInfo for currently running +// test by checking the expected test name against the actual one. +TEST_F(CurrentTestInfoTest, WorksForFirstTestInATestCase) { + const TestInfo* test_info = + UnitTest::GetInstance()->current_test_info(); + ASSERT_TRUE(NULL != test_info) + << "There is a test running so we should have a valid TestInfo."; + EXPECT_STREQ("CurrentTestInfoTest", test_info->test_case_name()) + << "Expected the name of the currently running test case."; + EXPECT_STREQ("WorksForFirstTestInATestCase", test_info->name()) + << "Expected the name of the currently running test."; +} + +// Tests that current_test_info() returns TestInfo for currently running +// test by checking the expected test name against the actual one. We +// use this test to see that the TestInfo object actually changed from +// the previous invocation. +TEST_F(CurrentTestInfoTest, WorksForSecondTestInATestCase) { + const TestInfo* test_info = + UnitTest::GetInstance()->current_test_info(); + ASSERT_TRUE(NULL != test_info) + << "There is a test running so we should have a valid TestInfo."; + EXPECT_STREQ("CurrentTestInfoTest", test_info->test_case_name()) + << "Expected the name of the currently running test case."; + EXPECT_STREQ("WorksForSecondTestInATestCase", test_info->name()) + << "Expected the name of the currently running test."; +} + +} // namespace testing + +// These two lines test that we can define tests in a namespace that +// has the name "testing" and is nested in another namespace. +namespace my_namespace { +namespace testing { + +// Makes sure that TEST knows to use ::testing::Test instead of +// ::my_namespace::testing::Test. +class Test {}; + +// Makes sure that an assertion knows to use ::testing::Message instead of +// ::my_namespace::testing::Message. +class Message {}; + +// Makes sure that an assertion knows to use +// ::testing::AssertionResult instead of +// ::my_namespace::testing::AssertionResult. +class AssertionResult {}; + +// Tests that an assertion that should succeed works as expected. +TEST(NestedTestingNamespaceTest, Success) { + EXPECT_EQ(1, 1) << "This shouldn't fail."; +} + +// Tests that an assertion that should fail works as expected. +TEST(NestedTestingNamespaceTest, Failure) { + EXPECT_FATAL_FAILURE(FAIL() << "This failure is expected.", + "This failure is expected."); +} + +} // namespace testing +} // namespace my_namespace + +// Tests that one can call superclass SetUp and TearDown methods-- +// that is, that they are not private. +// No tests are based on this fixture; the test "passes" if it compiles +// successfully. +class ProtectedFixtureMethodsTest : public Test { + protected: + virtual void SetUp() { + Test::SetUp(); + } + virtual void TearDown() { + Test::TearDown(); + } +}; + +// StreamingAssertionsTest tests the streaming versions of a representative +// sample of assertions. +TEST(StreamingAssertionsTest, Unconditional) { + SUCCEED() << "expected success"; + EXPECT_NONFATAL_FAILURE(ADD_FAILURE() << "expected failure", + "expected failure"); + EXPECT_FATAL_FAILURE(FAIL() << "expected failure", + "expected failure"); +} + +#ifdef __BORLANDC__ +// Silences warnings: "Condition is always true", "Unreachable code" +# pragma option push -w-ccc -w-rch +#endif + +TEST(StreamingAssertionsTest, Truth) { + EXPECT_TRUE(true) << "unexpected failure"; + ASSERT_TRUE(true) << "unexpected failure"; + EXPECT_NONFATAL_FAILURE(EXPECT_TRUE(false) << "expected failure", + "expected failure"); + EXPECT_FATAL_FAILURE(ASSERT_TRUE(false) << "expected failure", + "expected failure"); +} + +TEST(StreamingAssertionsTest, Truth2) { + EXPECT_FALSE(false) << "unexpected failure"; + ASSERT_FALSE(false) << "unexpected failure"; + EXPECT_NONFATAL_FAILURE(EXPECT_FALSE(true) << "expected failure", + "expected failure"); + EXPECT_FATAL_FAILURE(ASSERT_FALSE(true) << "expected failure", + "expected failure"); +} + +#ifdef __BORLANDC__ +// Restores warnings after previous "#pragma option push" supressed them +# pragma option pop +#endif + +TEST(StreamingAssertionsTest, IntegerEquals) { + EXPECT_EQ(1, 1) << "unexpected failure"; + ASSERT_EQ(1, 1) << "unexpected failure"; + EXPECT_NONFATAL_FAILURE(EXPECT_EQ(1, 2) << "expected failure", + "expected failure"); + EXPECT_FATAL_FAILURE(ASSERT_EQ(1, 2) << "expected failure", + "expected failure"); +} + +TEST(StreamingAssertionsTest, IntegerLessThan) { + EXPECT_LT(1, 2) << "unexpected failure"; + ASSERT_LT(1, 2) << "unexpected failure"; + EXPECT_NONFATAL_FAILURE(EXPECT_LT(2, 1) << "expected failure", + "expected failure"); + EXPECT_FATAL_FAILURE(ASSERT_LT(2, 1) << "expected failure", + "expected failure"); +} + +TEST(StreamingAssertionsTest, StringsEqual) { + EXPECT_STREQ("foo", "foo") << "unexpected failure"; + ASSERT_STREQ("foo", "foo") << "unexpected failure"; + EXPECT_NONFATAL_FAILURE(EXPECT_STREQ("foo", "bar") << "expected failure", + "expected failure"); + EXPECT_FATAL_FAILURE(ASSERT_STREQ("foo", "bar") << "expected failure", + "expected failure"); +} + +TEST(StreamingAssertionsTest, StringsNotEqual) { + EXPECT_STRNE("foo", "bar") << "unexpected failure"; + ASSERT_STRNE("foo", "bar") << "unexpected failure"; + EXPECT_NONFATAL_FAILURE(EXPECT_STRNE("foo", "foo") << "expected failure", + "expected failure"); + EXPECT_FATAL_FAILURE(ASSERT_STRNE("foo", "foo") << "expected failure", + "expected failure"); +} + +TEST(StreamingAssertionsTest, StringsEqualIgnoringCase) { + EXPECT_STRCASEEQ("foo", "FOO") << "unexpected failure"; + ASSERT_STRCASEEQ("foo", "FOO") << "unexpected failure"; + EXPECT_NONFATAL_FAILURE(EXPECT_STRCASEEQ("foo", "bar") << "expected failure", + "expected failure"); + EXPECT_FATAL_FAILURE(ASSERT_STRCASEEQ("foo", "bar") << "expected failure", + "expected failure"); +} + +TEST(StreamingAssertionsTest, StringNotEqualIgnoringCase) { + EXPECT_STRCASENE("foo", "bar") << "unexpected failure"; + ASSERT_STRCASENE("foo", "bar") << "unexpected failure"; + EXPECT_NONFATAL_FAILURE(EXPECT_STRCASENE("foo", "FOO") << "expected failure", + "expected failure"); + EXPECT_FATAL_FAILURE(ASSERT_STRCASENE("bar", "BAR") << "expected failure", + "expected failure"); +} + +TEST(StreamingAssertionsTest, FloatingPointEquals) { + EXPECT_FLOAT_EQ(1.0, 1.0) << "unexpected failure"; + ASSERT_FLOAT_EQ(1.0, 1.0) << "unexpected failure"; + EXPECT_NONFATAL_FAILURE(EXPECT_FLOAT_EQ(0.0, 1.0) << "expected failure", + "expected failure"); + EXPECT_FATAL_FAILURE(ASSERT_FLOAT_EQ(0.0, 1.0) << "expected failure", + "expected failure"); +} + +#if GTEST_HAS_EXCEPTIONS + +TEST(StreamingAssertionsTest, Throw) { + EXPECT_THROW(ThrowAnInteger(), int) << "unexpected failure"; + ASSERT_THROW(ThrowAnInteger(), int) << "unexpected failure"; + EXPECT_NONFATAL_FAILURE(EXPECT_THROW(ThrowAnInteger(), bool) << + "expected failure", "expected failure"); + EXPECT_FATAL_FAILURE(ASSERT_THROW(ThrowAnInteger(), bool) << + "expected failure", "expected failure"); +} + +TEST(StreamingAssertionsTest, NoThrow) { + EXPECT_NO_THROW(ThrowNothing()) << "unexpected failure"; + ASSERT_NO_THROW(ThrowNothing()) << "unexpected failure"; + EXPECT_NONFATAL_FAILURE(EXPECT_NO_THROW(ThrowAnInteger()) << + "expected failure", "expected failure"); + EXPECT_FATAL_FAILURE(ASSERT_NO_THROW(ThrowAnInteger()) << + "expected failure", "expected failure"); +} + +TEST(StreamingAssertionsTest, AnyThrow) { + EXPECT_ANY_THROW(ThrowAnInteger()) << "unexpected failure"; + ASSERT_ANY_THROW(ThrowAnInteger()) << "unexpected failure"; + EXPECT_NONFATAL_FAILURE(EXPECT_ANY_THROW(ThrowNothing()) << + "expected failure", "expected failure"); + EXPECT_FATAL_FAILURE(ASSERT_ANY_THROW(ThrowNothing()) << + "expected failure", "expected failure"); +} + +#endif // GTEST_HAS_EXCEPTIONS + +// Tests that Google Test correctly decides whether to use colors in the output. + +TEST(ColoredOutputTest, UsesColorsWhenGTestColorFlagIsYes) { + GTEST_FLAG(color) = "yes"; + + SetEnv("TERM", "xterm"); // TERM supports colors. + EXPECT_TRUE(ShouldUseColor(true)); // Stdout is a TTY. + EXPECT_TRUE(ShouldUseColor(false)); // Stdout is not a TTY. + + SetEnv("TERM", "dumb"); // TERM doesn't support colors. + EXPECT_TRUE(ShouldUseColor(true)); // Stdout is a TTY. + EXPECT_TRUE(ShouldUseColor(false)); // Stdout is not a TTY. +} + +TEST(ColoredOutputTest, UsesColorsWhenGTestColorFlagIsAliasOfYes) { + SetEnv("TERM", "dumb"); // TERM doesn't support colors. + + GTEST_FLAG(color) = "True"; + EXPECT_TRUE(ShouldUseColor(false)); // Stdout is not a TTY. + + GTEST_FLAG(color) = "t"; + EXPECT_TRUE(ShouldUseColor(false)); // Stdout is not a TTY. + + GTEST_FLAG(color) = "1"; + EXPECT_TRUE(ShouldUseColor(false)); // Stdout is not a TTY. +} + +TEST(ColoredOutputTest, UsesNoColorWhenGTestColorFlagIsNo) { + GTEST_FLAG(color) = "no"; + + SetEnv("TERM", "xterm"); // TERM supports colors. + EXPECT_FALSE(ShouldUseColor(true)); // Stdout is a TTY. + EXPECT_FALSE(ShouldUseColor(false)); // Stdout is not a TTY. + + SetEnv("TERM", "dumb"); // TERM doesn't support colors. + EXPECT_FALSE(ShouldUseColor(true)); // Stdout is a TTY. + EXPECT_FALSE(ShouldUseColor(false)); // Stdout is not a TTY. +} + +TEST(ColoredOutputTest, UsesNoColorWhenGTestColorFlagIsInvalid) { + SetEnv("TERM", "xterm"); // TERM supports colors. + + GTEST_FLAG(color) = "F"; + EXPECT_FALSE(ShouldUseColor(true)); // Stdout is a TTY. + + GTEST_FLAG(color) = "0"; + EXPECT_FALSE(ShouldUseColor(true)); // Stdout is a TTY. + + GTEST_FLAG(color) = "unknown"; + EXPECT_FALSE(ShouldUseColor(true)); // Stdout is a TTY. +} + +TEST(ColoredOutputTest, UsesColorsWhenStdoutIsTty) { + GTEST_FLAG(color) = "auto"; + + SetEnv("TERM", "xterm"); // TERM supports colors. + EXPECT_FALSE(ShouldUseColor(false)); // Stdout is not a TTY. + EXPECT_TRUE(ShouldUseColor(true)); // Stdout is a TTY. +} + +TEST(ColoredOutputTest, UsesColorsWhenTermSupportsColors) { + GTEST_FLAG(color) = "auto"; + +#if GTEST_OS_WINDOWS + // On Windows, we ignore the TERM variable as it's usually not set. + + SetEnv("TERM", "dumb"); + EXPECT_TRUE(ShouldUseColor(true)); // Stdout is a TTY. + + SetEnv("TERM", ""); + EXPECT_TRUE(ShouldUseColor(true)); // Stdout is a TTY. + + SetEnv("TERM", "xterm"); + EXPECT_TRUE(ShouldUseColor(true)); // Stdout is a TTY. +#else + // On non-Windows platforms, we rely on TERM to determine if the + // terminal supports colors. + + SetEnv("TERM", "dumb"); // TERM doesn't support colors. + EXPECT_FALSE(ShouldUseColor(true)); // Stdout is a TTY. + + SetEnv("TERM", "emacs"); // TERM doesn't support colors. + EXPECT_FALSE(ShouldUseColor(true)); // Stdout is a TTY. + + SetEnv("TERM", "vt100"); // TERM doesn't support colors. + EXPECT_FALSE(ShouldUseColor(true)); // Stdout is a TTY. + + SetEnv("TERM", "xterm-mono"); // TERM doesn't support colors. + EXPECT_FALSE(ShouldUseColor(true)); // Stdout is a TTY. + + SetEnv("TERM", "xterm"); // TERM supports colors. + EXPECT_TRUE(ShouldUseColor(true)); // Stdout is a TTY. + + SetEnv("TERM", "xterm-color"); // TERM supports colors. + EXPECT_TRUE(ShouldUseColor(true)); // Stdout is a TTY. + + SetEnv("TERM", "xterm-256color"); // TERM supports colors. + EXPECT_TRUE(ShouldUseColor(true)); // Stdout is a TTY. + + SetEnv("TERM", "screen"); // TERM supports colors. + EXPECT_TRUE(ShouldUseColor(true)); // Stdout is a TTY. + + SetEnv("TERM", "linux"); // TERM supports colors. + EXPECT_TRUE(ShouldUseColor(true)); // Stdout is a TTY. + + SetEnv("TERM", "cygwin"); // TERM supports colors. + EXPECT_TRUE(ShouldUseColor(true)); // Stdout is a TTY. +#endif // GTEST_OS_WINDOWS +} + +// Verifies that StaticAssertTypeEq works in a namespace scope. + +static bool dummy1 GTEST_ATTRIBUTE_UNUSED_ = StaticAssertTypeEq(); +static bool dummy2 GTEST_ATTRIBUTE_UNUSED_ = + StaticAssertTypeEq(); + +// Verifies that StaticAssertTypeEq works in a class. + +template +class StaticAssertTypeEqTestHelper { + public: + StaticAssertTypeEqTestHelper() { StaticAssertTypeEq(); } +}; + +TEST(StaticAssertTypeEqTest, WorksInClass) { + StaticAssertTypeEqTestHelper(); +} + +// Verifies that StaticAssertTypeEq works inside a function. + +typedef int IntAlias; + +TEST(StaticAssertTypeEqTest, CompilesForEqualTypes) { + StaticAssertTypeEq(); + StaticAssertTypeEq(); +} + +TEST(GetCurrentOsStackTraceExceptTopTest, ReturnsTheStackTrace) { + testing::UnitTest* const unit_test = testing::UnitTest::GetInstance(); + + // We don't have a stack walker in Google Test yet. + EXPECT_STREQ("", GetCurrentOsStackTraceExceptTop(unit_test, 0).c_str()); + EXPECT_STREQ("", GetCurrentOsStackTraceExceptTop(unit_test, 1).c_str()); +} + +TEST(HasNonfatalFailureTest, ReturnsFalseWhenThereIsNoFailure) { + EXPECT_FALSE(HasNonfatalFailure()); +} + +static void FailFatally() { FAIL(); } + +TEST(HasNonfatalFailureTest, ReturnsFalseWhenThereIsOnlyFatalFailure) { + FailFatally(); + const bool has_nonfatal_failure = HasNonfatalFailure(); + ClearCurrentTestPartResults(); + EXPECT_FALSE(has_nonfatal_failure); +} + +TEST(HasNonfatalFailureTest, ReturnsTrueWhenThereIsNonfatalFailure) { + ADD_FAILURE(); + const bool has_nonfatal_failure = HasNonfatalFailure(); + ClearCurrentTestPartResults(); + EXPECT_TRUE(has_nonfatal_failure); +} + +TEST(HasNonfatalFailureTest, ReturnsTrueWhenThereAreFatalAndNonfatalFailures) { + FailFatally(); + ADD_FAILURE(); + const bool has_nonfatal_failure = HasNonfatalFailure(); + ClearCurrentTestPartResults(); + EXPECT_TRUE(has_nonfatal_failure); +} + +// A wrapper for calling HasNonfatalFailure outside of a test body. +static bool HasNonfatalFailureHelper() { + return testing::Test::HasNonfatalFailure(); +} + +TEST(HasNonfatalFailureTest, WorksOutsideOfTestBody) { + EXPECT_FALSE(HasNonfatalFailureHelper()); +} + +TEST(HasNonfatalFailureTest, WorksOutsideOfTestBody2) { + ADD_FAILURE(); + const bool has_nonfatal_failure = HasNonfatalFailureHelper(); + ClearCurrentTestPartResults(); + EXPECT_TRUE(has_nonfatal_failure); +} + +TEST(HasFailureTest, ReturnsFalseWhenThereIsNoFailure) { + EXPECT_FALSE(HasFailure()); +} + +TEST(HasFailureTest, ReturnsTrueWhenThereIsFatalFailure) { + FailFatally(); + const bool has_failure = HasFailure(); + ClearCurrentTestPartResults(); + EXPECT_TRUE(has_failure); +} + +TEST(HasFailureTest, ReturnsTrueWhenThereIsNonfatalFailure) { + ADD_FAILURE(); + const bool has_failure = HasFailure(); + ClearCurrentTestPartResults(); + EXPECT_TRUE(has_failure); +} + +TEST(HasFailureTest, ReturnsTrueWhenThereAreFatalAndNonfatalFailures) { + FailFatally(); + ADD_FAILURE(); + const bool has_failure = HasFailure(); + ClearCurrentTestPartResults(); + EXPECT_TRUE(has_failure); +} + +// A wrapper for calling HasFailure outside of a test body. +static bool HasFailureHelper() { return testing::Test::HasFailure(); } + +TEST(HasFailureTest, WorksOutsideOfTestBody) { + EXPECT_FALSE(HasFailureHelper()); +} + +TEST(HasFailureTest, WorksOutsideOfTestBody2) { + ADD_FAILURE(); + const bool has_failure = HasFailureHelper(); + ClearCurrentTestPartResults(); + EXPECT_TRUE(has_failure); +} + +class TestListener : public EmptyTestEventListener { + public: + TestListener() : on_start_counter_(NULL), is_destroyed_(NULL) {} + TestListener(int* on_start_counter, bool* is_destroyed) + : on_start_counter_(on_start_counter), + is_destroyed_(is_destroyed) {} + + virtual ~TestListener() { + if (is_destroyed_) + *is_destroyed_ = true; + } + + protected: + virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) { + if (on_start_counter_ != NULL) + (*on_start_counter_)++; + } + + private: + int* on_start_counter_; + bool* is_destroyed_; +}; + +// Tests the constructor. +TEST(TestEventListenersTest, ConstructionWorks) { + TestEventListeners listeners; + + EXPECT_TRUE(TestEventListenersAccessor::GetRepeater(&listeners) != NULL); + EXPECT_TRUE(listeners.default_result_printer() == NULL); + EXPECT_TRUE(listeners.default_xml_generator() == NULL); +} + +// Tests that the TestEventListeners destructor deletes all the listeners it +// owns. +TEST(TestEventListenersTest, DestructionWorks) { + bool default_result_printer_is_destroyed = false; + bool default_xml_printer_is_destroyed = false; + bool extra_listener_is_destroyed = false; + TestListener* default_result_printer = new TestListener( + NULL, &default_result_printer_is_destroyed); + TestListener* default_xml_printer = new TestListener( + NULL, &default_xml_printer_is_destroyed); + TestListener* extra_listener = new TestListener( + NULL, &extra_listener_is_destroyed); + + { + TestEventListeners listeners; + TestEventListenersAccessor::SetDefaultResultPrinter(&listeners, + default_result_printer); + TestEventListenersAccessor::SetDefaultXmlGenerator(&listeners, + default_xml_printer); + listeners.Append(extra_listener); + } + EXPECT_TRUE(default_result_printer_is_destroyed); + EXPECT_TRUE(default_xml_printer_is_destroyed); + EXPECT_TRUE(extra_listener_is_destroyed); +} + +// Tests that a listener Append'ed to a TestEventListeners list starts +// receiving events. +TEST(TestEventListenersTest, Append) { + int on_start_counter = 0; + bool is_destroyed = false; + TestListener* listener = new TestListener(&on_start_counter, &is_destroyed); + { + TestEventListeners listeners; + listeners.Append(listener); + TestEventListenersAccessor::GetRepeater(&listeners)->OnTestProgramStart( + *UnitTest::GetInstance()); + EXPECT_EQ(1, on_start_counter); + } + EXPECT_TRUE(is_destroyed); +} + +// Tests that listeners receive events in the order they were appended to +// the list, except for *End requests, which must be received in the reverse +// order. +class SequenceTestingListener : public EmptyTestEventListener { + public: + SequenceTestingListener(std::vector* vector, const char* id) + : vector_(vector), id_(id) {} + + protected: + virtual void OnTestProgramStart(const UnitTest& /*unit_test*/) { + vector_->push_back(GetEventDescription("OnTestProgramStart")); + } + + virtual void OnTestProgramEnd(const UnitTest& /*unit_test*/) { + vector_->push_back(GetEventDescription("OnTestProgramEnd")); + } + + virtual void OnTestIterationStart(const UnitTest& /*unit_test*/, + int /*iteration*/) { + vector_->push_back(GetEventDescription("OnTestIterationStart")); + } + + virtual void OnTestIterationEnd(const UnitTest& /*unit_test*/, + int /*iteration*/) { + vector_->push_back(GetEventDescription("OnTestIterationEnd")); + } + + private: + std::string GetEventDescription(const char* method) { + Message message; + message << id_ << "." << method; + return message.GetString(); + } + + std::vector* vector_; + const char* const id_; + + GTEST_DISALLOW_COPY_AND_ASSIGN_(SequenceTestingListener); +}; + +TEST(EventListenerTest, AppendKeepsOrder) { + std::vector vec; + TestEventListeners listeners; + listeners.Append(new SequenceTestingListener(&vec, "1st")); + listeners.Append(new SequenceTestingListener(&vec, "2nd")); + listeners.Append(new SequenceTestingListener(&vec, "3rd")); + + TestEventListenersAccessor::GetRepeater(&listeners)->OnTestProgramStart( + *UnitTest::GetInstance()); + ASSERT_EQ(3U, vec.size()); + EXPECT_STREQ("1st.OnTestProgramStart", vec[0].c_str()); + EXPECT_STREQ("2nd.OnTestProgramStart", vec[1].c_str()); + EXPECT_STREQ("3rd.OnTestProgramStart", vec[2].c_str()); + + vec.clear(); + TestEventListenersAccessor::GetRepeater(&listeners)->OnTestProgramEnd( + *UnitTest::GetInstance()); + ASSERT_EQ(3U, vec.size()); + EXPECT_STREQ("3rd.OnTestProgramEnd", vec[0].c_str()); + EXPECT_STREQ("2nd.OnTestProgramEnd", vec[1].c_str()); + EXPECT_STREQ("1st.OnTestProgramEnd", vec[2].c_str()); + + vec.clear(); + TestEventListenersAccessor::GetRepeater(&listeners)->OnTestIterationStart( + *UnitTest::GetInstance(), 0); + ASSERT_EQ(3U, vec.size()); + EXPECT_STREQ("1st.OnTestIterationStart", vec[0].c_str()); + EXPECT_STREQ("2nd.OnTestIterationStart", vec[1].c_str()); + EXPECT_STREQ("3rd.OnTestIterationStart", vec[2].c_str()); + + vec.clear(); + TestEventListenersAccessor::GetRepeater(&listeners)->OnTestIterationEnd( + *UnitTest::GetInstance(), 0); + ASSERT_EQ(3U, vec.size()); + EXPECT_STREQ("3rd.OnTestIterationEnd", vec[0].c_str()); + EXPECT_STREQ("2nd.OnTestIterationEnd", vec[1].c_str()); + EXPECT_STREQ("1st.OnTestIterationEnd", vec[2].c_str()); +} + +// Tests that a listener removed from a TestEventListeners list stops receiving +// events and is not deleted when the list is destroyed. +TEST(TestEventListenersTest, Release) { + int on_start_counter = 0; + bool is_destroyed = false; + // Although Append passes the ownership of this object to the list, + // the following calls release it, and we need to delete it before the + // test ends. + TestListener* listener = new TestListener(&on_start_counter, &is_destroyed); + { + TestEventListeners listeners; + listeners.Append(listener); + EXPECT_EQ(listener, listeners.Release(listener)); + TestEventListenersAccessor::GetRepeater(&listeners)->OnTestProgramStart( + *UnitTest::GetInstance()); + EXPECT_TRUE(listeners.Release(listener) == NULL); + } + EXPECT_EQ(0, on_start_counter); + EXPECT_FALSE(is_destroyed); + delete listener; +} + +// Tests that no events are forwarded when event forwarding is disabled. +TEST(EventListenerTest, SuppressEventForwarding) { + int on_start_counter = 0; + TestListener* listener = new TestListener(&on_start_counter, NULL); + + TestEventListeners listeners; + listeners.Append(listener); + ASSERT_TRUE(TestEventListenersAccessor::EventForwardingEnabled(listeners)); + TestEventListenersAccessor::SuppressEventForwarding(&listeners); + ASSERT_FALSE(TestEventListenersAccessor::EventForwardingEnabled(listeners)); + TestEventListenersAccessor::GetRepeater(&listeners)->OnTestProgramStart( + *UnitTest::GetInstance()); + EXPECT_EQ(0, on_start_counter); +} + +// Tests that events generated by Google Test are not forwarded in +// death test subprocesses. +TEST(EventListenerDeathTest, EventsNotForwardedInDeathTestSubprecesses) { + EXPECT_DEATH_IF_SUPPORTED({ + GTEST_CHECK_(TestEventListenersAccessor::EventForwardingEnabled( + *GetUnitTestImpl()->listeners())) << "expected failure";}, + "expected failure"); +} + +// Tests that a listener installed via SetDefaultResultPrinter() starts +// receiving events and is returned via default_result_printer() and that +// the previous default_result_printer is removed from the list and deleted. +TEST(EventListenerTest, default_result_printer) { + int on_start_counter = 0; + bool is_destroyed = false; + TestListener* listener = new TestListener(&on_start_counter, &is_destroyed); + + TestEventListeners listeners; + TestEventListenersAccessor::SetDefaultResultPrinter(&listeners, listener); + + EXPECT_EQ(listener, listeners.default_result_printer()); + + TestEventListenersAccessor::GetRepeater(&listeners)->OnTestProgramStart( + *UnitTest::GetInstance()); + + EXPECT_EQ(1, on_start_counter); + + // Replacing default_result_printer with something else should remove it + // from the list and destroy it. + TestEventListenersAccessor::SetDefaultResultPrinter(&listeners, NULL); + + EXPECT_TRUE(listeners.default_result_printer() == NULL); + EXPECT_TRUE(is_destroyed); + + // After broadcasting an event the counter is still the same, indicating + // the listener is not in the list anymore. + TestEventListenersAccessor::GetRepeater(&listeners)->OnTestProgramStart( + *UnitTest::GetInstance()); + EXPECT_EQ(1, on_start_counter); +} + +// Tests that the default_result_printer listener stops receiving events +// when removed via Release and that is not owned by the list anymore. +TEST(EventListenerTest, RemovingDefaultResultPrinterWorks) { + int on_start_counter = 0; + bool is_destroyed = false; + // Although Append passes the ownership of this object to the list, + // the following calls release it, and we need to delete it before the + // test ends. + TestListener* listener = new TestListener(&on_start_counter, &is_destroyed); + { + TestEventListeners listeners; + TestEventListenersAccessor::SetDefaultResultPrinter(&listeners, listener); + + EXPECT_EQ(listener, listeners.Release(listener)); + EXPECT_TRUE(listeners.default_result_printer() == NULL); + EXPECT_FALSE(is_destroyed); + + // Broadcasting events now should not affect default_result_printer. + TestEventListenersAccessor::GetRepeater(&listeners)->OnTestProgramStart( + *UnitTest::GetInstance()); + EXPECT_EQ(0, on_start_counter); + } + // Destroying the list should not affect the listener now, too. + EXPECT_FALSE(is_destroyed); + delete listener; +} + +// Tests that a listener installed via SetDefaultXmlGenerator() starts +// receiving events and is returned via default_xml_generator() and that +// the previous default_xml_generator is removed from the list and deleted. +TEST(EventListenerTest, default_xml_generator) { + int on_start_counter = 0; + bool is_destroyed = false; + TestListener* listener = new TestListener(&on_start_counter, &is_destroyed); + + TestEventListeners listeners; + TestEventListenersAccessor::SetDefaultXmlGenerator(&listeners, listener); + + EXPECT_EQ(listener, listeners.default_xml_generator()); + + TestEventListenersAccessor::GetRepeater(&listeners)->OnTestProgramStart( + *UnitTest::GetInstance()); + + EXPECT_EQ(1, on_start_counter); + + // Replacing default_xml_generator with something else should remove it + // from the list and destroy it. + TestEventListenersAccessor::SetDefaultXmlGenerator(&listeners, NULL); + + EXPECT_TRUE(listeners.default_xml_generator() == NULL); + EXPECT_TRUE(is_destroyed); + + // After broadcasting an event the counter is still the same, indicating + // the listener is not in the list anymore. + TestEventListenersAccessor::GetRepeater(&listeners)->OnTestProgramStart( + *UnitTest::GetInstance()); + EXPECT_EQ(1, on_start_counter); +} + +// Tests that the default_xml_generator listener stops receiving events +// when removed via Release and that is not owned by the list anymore. +TEST(EventListenerTest, RemovingDefaultXmlGeneratorWorks) { + int on_start_counter = 0; + bool is_destroyed = false; + // Although Append passes the ownership of this object to the list, + // the following calls release it, and we need to delete it before the + // test ends. + TestListener* listener = new TestListener(&on_start_counter, &is_destroyed); + { + TestEventListeners listeners; + TestEventListenersAccessor::SetDefaultXmlGenerator(&listeners, listener); + + EXPECT_EQ(listener, listeners.Release(listener)); + EXPECT_TRUE(listeners.default_xml_generator() == NULL); + EXPECT_FALSE(is_destroyed); + + // Broadcasting events now should not affect default_xml_generator. + TestEventListenersAccessor::GetRepeater(&listeners)->OnTestProgramStart( + *UnitTest::GetInstance()); + EXPECT_EQ(0, on_start_counter); + } + // Destroying the list should not affect the listener now, too. + EXPECT_FALSE(is_destroyed); + delete listener; +} + +// Sanity tests to ensure that the alternative, verbose spellings of +// some of the macros work. We don't test them thoroughly as that +// would be quite involved. Since their implementations are +// straightforward, and they are rarely used, we'll just rely on the +// users to tell us when they are broken. +GTEST_TEST(AlternativeNameTest, Works) { // GTEST_TEST is the same as TEST. + GTEST_SUCCEED() << "OK"; // GTEST_SUCCEED is the same as SUCCEED. + + // GTEST_FAIL is the same as FAIL. + EXPECT_FATAL_FAILURE(GTEST_FAIL() << "An expected failure", + "An expected failure"); + + // GTEST_ASSERT_XY is the same as ASSERT_XY. + + GTEST_ASSERT_EQ(0, 0); + EXPECT_FATAL_FAILURE(GTEST_ASSERT_EQ(0, 1) << "An expected failure", + "An expected failure"); + EXPECT_FATAL_FAILURE(GTEST_ASSERT_EQ(1, 0) << "An expected failure", + "An expected failure"); + + GTEST_ASSERT_NE(0, 1); + GTEST_ASSERT_NE(1, 0); + EXPECT_FATAL_FAILURE(GTEST_ASSERT_NE(0, 0) << "An expected failure", + "An expected failure"); + + GTEST_ASSERT_LE(0, 0); + GTEST_ASSERT_LE(0, 1); + EXPECT_FATAL_FAILURE(GTEST_ASSERT_LE(1, 0) << "An expected failure", + "An expected failure"); + + GTEST_ASSERT_LT(0, 1); + EXPECT_FATAL_FAILURE(GTEST_ASSERT_LT(0, 0) << "An expected failure", + "An expected failure"); + EXPECT_FATAL_FAILURE(GTEST_ASSERT_LT(1, 0) << "An expected failure", + "An expected failure"); + + GTEST_ASSERT_GE(0, 0); + GTEST_ASSERT_GE(1, 0); + EXPECT_FATAL_FAILURE(GTEST_ASSERT_GE(0, 1) << "An expected failure", + "An expected failure"); + + GTEST_ASSERT_GT(1, 0); + EXPECT_FATAL_FAILURE(GTEST_ASSERT_GT(0, 1) << "An expected failure", + "An expected failure"); + EXPECT_FATAL_FAILURE(GTEST_ASSERT_GT(1, 1) << "An expected failure", + "An expected failure"); +} + +// Tests for internal utilities necessary for implementation of the universal +// printing. +// TODO(vladl@google.com): Find a better home for them. + +class ConversionHelperBase {}; +class ConversionHelperDerived : public ConversionHelperBase {}; + +// Tests that IsAProtocolMessage::value is a compile-time constant. +TEST(IsAProtocolMessageTest, ValueIsCompileTimeConstant) { + GTEST_COMPILE_ASSERT_(IsAProtocolMessage::value, + const_true); + GTEST_COMPILE_ASSERT_(!IsAProtocolMessage::value, const_false); +} + +// Tests that IsAProtocolMessage::value is true when T is +// proto2::Message or a sub-class of it. +TEST(IsAProtocolMessageTest, ValueIsTrueWhenTypeIsAProtocolMessage) { + EXPECT_TRUE(IsAProtocolMessage< ::proto2::Message>::value); + EXPECT_TRUE(IsAProtocolMessage::value); +} + +// Tests that IsAProtocolMessage::value is false when T is neither +// ProtocolMessage nor a sub-class of it. +TEST(IsAProtocolMessageTest, ValueIsFalseWhenTypeIsNotAProtocolMessage) { + EXPECT_FALSE(IsAProtocolMessage::value); + EXPECT_FALSE(IsAProtocolMessage::value); +} + +// Tests that CompileAssertTypesEqual compiles when the type arguments are +// equal. +TEST(CompileAssertTypesEqual, CompilesWhenTypesAreEqual) { + CompileAssertTypesEqual(); + CompileAssertTypesEqual(); +} + +// Tests that RemoveReference does not affect non-reference types. +TEST(RemoveReferenceTest, DoesNotAffectNonReferenceType) { + CompileAssertTypesEqual::type>(); + CompileAssertTypesEqual::type>(); +} + +// Tests that RemoveReference removes reference from reference types. +TEST(RemoveReferenceTest, RemovesReference) { + CompileAssertTypesEqual::type>(); + CompileAssertTypesEqual::type>(); +} + +// Tests GTEST_REMOVE_REFERENCE_. + +template +void TestGTestRemoveReference() { + CompileAssertTypesEqual(); +} + +TEST(RemoveReferenceTest, MacroVersion) { + TestGTestRemoveReference(); + TestGTestRemoveReference(); +} + + +// Tests that RemoveConst does not affect non-const types. +TEST(RemoveConstTest, DoesNotAffectNonConstType) { + CompileAssertTypesEqual::type>(); + CompileAssertTypesEqual::type>(); +} + +// Tests that RemoveConst removes const from const types. +TEST(RemoveConstTest, RemovesConst) { + CompileAssertTypesEqual::type>(); + CompileAssertTypesEqual::type>(); + CompileAssertTypesEqual::type>(); +} + +// Tests GTEST_REMOVE_CONST_. + +template +void TestGTestRemoveConst() { + CompileAssertTypesEqual(); +} + +TEST(RemoveConstTest, MacroVersion) { + TestGTestRemoveConst(); + TestGTestRemoveConst(); + TestGTestRemoveConst(); +} + +// Tests GTEST_REMOVE_REFERENCE_AND_CONST_. + +template +void TestGTestRemoveReferenceAndConst() { + CompileAssertTypesEqual(); +} + +TEST(RemoveReferenceToConstTest, Works) { + TestGTestRemoveReferenceAndConst(); + TestGTestRemoveReferenceAndConst(); + TestGTestRemoveReferenceAndConst(); + TestGTestRemoveReferenceAndConst(); + TestGTestRemoveReferenceAndConst(); +} + +// Tests that AddReference does not affect reference types. +TEST(AddReferenceTest, DoesNotAffectReferenceType) { + CompileAssertTypesEqual::type>(); + CompileAssertTypesEqual::type>(); +} + +// Tests that AddReference adds reference to non-reference types. +TEST(AddReferenceTest, AddsReference) { + CompileAssertTypesEqual::type>(); + CompileAssertTypesEqual::type>(); +} + +// Tests GTEST_ADD_REFERENCE_. + +template +void TestGTestAddReference() { + CompileAssertTypesEqual(); +} + +TEST(AddReferenceTest, MacroVersion) { + TestGTestAddReference(); + TestGTestAddReference(); +} + +// Tests GTEST_REFERENCE_TO_CONST_. + +template +void TestGTestReferenceToConst() { + CompileAssertTypesEqual(); +} + +TEST(GTestReferenceToConstTest, Works) { + TestGTestReferenceToConst(); + TestGTestReferenceToConst(); + TestGTestReferenceToConst(); + TestGTestReferenceToConst(); +} + +// Tests that ImplicitlyConvertible::value is a compile-time constant. +TEST(ImplicitlyConvertibleTest, ValueIsCompileTimeConstant) { + GTEST_COMPILE_ASSERT_((ImplicitlyConvertible::value), const_true); + GTEST_COMPILE_ASSERT_((!ImplicitlyConvertible::value), + const_false); +} + +// Tests that ImplicitlyConvertible::value is true when T1 can +// be implicitly converted to T2. +TEST(ImplicitlyConvertibleTest, ValueIsTrueWhenConvertible) { + EXPECT_TRUE((ImplicitlyConvertible::value)); + EXPECT_TRUE((ImplicitlyConvertible::value)); + EXPECT_TRUE((ImplicitlyConvertible::value)); + EXPECT_TRUE((ImplicitlyConvertible::value)); + EXPECT_TRUE((ImplicitlyConvertible::value)); + EXPECT_TRUE((ImplicitlyConvertible::value)); +} + +// Tests that ImplicitlyConvertible::value is false when T1 +// cannot be implicitly converted to T2. +TEST(ImplicitlyConvertibleTest, ValueIsFalseWhenNotConvertible) { + EXPECT_FALSE((ImplicitlyConvertible::value)); + EXPECT_FALSE((ImplicitlyConvertible::value)); + EXPECT_FALSE((ImplicitlyConvertible::value)); + EXPECT_FALSE((ImplicitlyConvertible::value)); +} + +// Tests IsContainerTest. + +class NonContainer {}; + +TEST(IsContainerTestTest, WorksForNonContainer) { + EXPECT_EQ(sizeof(IsNotContainer), sizeof(IsContainerTest(0))); + EXPECT_EQ(sizeof(IsNotContainer), sizeof(IsContainerTest(0))); + EXPECT_EQ(sizeof(IsNotContainer), sizeof(IsContainerTest(0))); +} + +TEST(IsContainerTestTest, WorksForContainer) { + EXPECT_EQ(sizeof(IsContainer), + sizeof(IsContainerTest >(0))); + EXPECT_EQ(sizeof(IsContainer), + sizeof(IsContainerTest >(0))); +} + +// Tests ArrayEq(). + +TEST(ArrayEqTest, WorksForDegeneratedArrays) { + EXPECT_TRUE(ArrayEq(5, 5L)); + EXPECT_FALSE(ArrayEq('a', 0)); +} + +TEST(ArrayEqTest, WorksForOneDimensionalArrays) { + // Note that a and b are distinct but compatible types. + const int a[] = { 0, 1 }; + long b[] = { 0, 1 }; + EXPECT_TRUE(ArrayEq(a, b)); + EXPECT_TRUE(ArrayEq(a, 2, b)); + + b[0] = 2; + EXPECT_FALSE(ArrayEq(a, b)); + EXPECT_FALSE(ArrayEq(a, 1, b)); +} + +TEST(ArrayEqTest, WorksForTwoDimensionalArrays) { + const char a[][3] = { "hi", "lo" }; + const char b[][3] = { "hi", "lo" }; + const char c[][3] = { "hi", "li" }; + + EXPECT_TRUE(ArrayEq(a, b)); + EXPECT_TRUE(ArrayEq(a, 2, b)); + + EXPECT_FALSE(ArrayEq(a, c)); + EXPECT_FALSE(ArrayEq(a, 2, c)); +} + +// Tests ArrayAwareFind(). + +TEST(ArrayAwareFindTest, WorksForOneDimensionalArray) { + const char a[] = "hello"; + EXPECT_EQ(a + 4, ArrayAwareFind(a, a + 5, 'o')); + EXPECT_EQ(a + 5, ArrayAwareFind(a, a + 5, 'x')); +} + +TEST(ArrayAwareFindTest, WorksForTwoDimensionalArray) { + int a[][2] = { { 0, 1 }, { 2, 3 }, { 4, 5 } }; + const int b[2] = { 2, 3 }; + EXPECT_EQ(a + 1, ArrayAwareFind(a, a + 3, b)); + + const int c[2] = { 6, 7 }; + EXPECT_EQ(a + 3, ArrayAwareFind(a, a + 3, c)); +} + +// Tests CopyArray(). + +TEST(CopyArrayTest, WorksForDegeneratedArrays) { + int n = 0; + CopyArray('a', &n); + EXPECT_EQ('a', n); +} + +TEST(CopyArrayTest, WorksForOneDimensionalArrays) { + const char a[3] = "hi"; + int b[3]; +#ifndef __BORLANDC__ // C++Builder cannot compile some array size deductions. + CopyArray(a, &b); + EXPECT_TRUE(ArrayEq(a, b)); +#endif + + int c[3]; + CopyArray(a, 3, c); + EXPECT_TRUE(ArrayEq(a, c)); +} + +TEST(CopyArrayTest, WorksForTwoDimensionalArrays) { + const int a[2][3] = { { 0, 1, 2 }, { 3, 4, 5 } }; + int b[2][3]; +#ifndef __BORLANDC__ // C++Builder cannot compile some array size deductions. + CopyArray(a, &b); + EXPECT_TRUE(ArrayEq(a, b)); +#endif + + int c[2][3]; + CopyArray(a, 2, c); + EXPECT_TRUE(ArrayEq(a, c)); +} + +// Tests NativeArray. + +TEST(NativeArrayTest, ConstructorFromArrayWorks) { + const int a[3] = { 0, 1, 2 }; + NativeArray na(a, 3, kReference); + EXPECT_EQ(3U, na.size()); + EXPECT_EQ(a, na.begin()); +} + +TEST(NativeArrayTest, CreatesAndDeletesCopyOfArrayWhenAskedTo) { + typedef int Array[2]; + Array* a = new Array[1]; + (*a)[0] = 0; + (*a)[1] = 1; + NativeArray na(*a, 2, kCopy); + EXPECT_NE(*a, na.begin()); + delete[] a; + EXPECT_EQ(0, na.begin()[0]); + EXPECT_EQ(1, na.begin()[1]); + + // We rely on the heap checker to verify that na deletes the copy of + // array. +} + +TEST(NativeArrayTest, TypeMembersAreCorrect) { + StaticAssertTypeEq::value_type>(); + StaticAssertTypeEq::value_type>(); + + StaticAssertTypeEq::const_iterator>(); + StaticAssertTypeEq::const_iterator>(); +} + +TEST(NativeArrayTest, MethodsWork) { + const int a[3] = { 0, 1, 2 }; + NativeArray na(a, 3, kCopy); + ASSERT_EQ(3U, na.size()); + EXPECT_EQ(3, na.end() - na.begin()); + + NativeArray::const_iterator it = na.begin(); + EXPECT_EQ(0, *it); + ++it; + EXPECT_EQ(1, *it); + it++; + EXPECT_EQ(2, *it); + ++it; + EXPECT_EQ(na.end(), it); + + EXPECT_TRUE(na == na); + + NativeArray na2(a, 3, kReference); + EXPECT_TRUE(na == na2); + + const int b1[3] = { 0, 1, 1 }; + const int b2[4] = { 0, 1, 2, 3 }; + EXPECT_FALSE(na == NativeArray(b1, 3, kReference)); + EXPECT_FALSE(na == NativeArray(b2, 4, kCopy)); +} + +TEST(NativeArrayTest, WorksForTwoDimensionalArray) { + const char a[2][3] = { "hi", "lo" }; + NativeArray na(a, 2, kReference); + ASSERT_EQ(2U, na.size()); + EXPECT_EQ(a, na.begin()); +} + +// Tests SkipPrefix(). + +TEST(SkipPrefixTest, SkipsWhenPrefixMatches) { + const char* const str = "hello"; + + const char* p = str; + EXPECT_TRUE(SkipPrefix("", &p)); + EXPECT_EQ(str, p); + + p = str; + EXPECT_TRUE(SkipPrefix("hell", &p)); + EXPECT_EQ(str + 4, p); +} + +TEST(SkipPrefixTest, DoesNotSkipWhenPrefixDoesNotMatch) { + const char* const str = "world"; + + const char* p = str; + EXPECT_FALSE(SkipPrefix("W", &p)); + EXPECT_EQ(str, p); + + p = str; + EXPECT_FALSE(SkipPrefix("world!", &p)); + EXPECT_EQ(str, p); +} diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_xml_outfile1_test_.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest_xml_outfile1_test_.cc new file mode 100644 index 00000000..531ced49 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_xml_outfile1_test_.cc @@ -0,0 +1,49 @@ +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: keith.ray@gmail.com (Keith Ray) +// +// gtest_xml_outfile1_test_ writes some xml via TestProperty used by +// gtest_xml_outfiles_test.py + +#include "gtest/gtest.h" + +class PropertyOne : public testing::Test { + protected: + virtual void SetUp() { + RecordProperty("SetUpProp", 1); + } + virtual void TearDown() { + RecordProperty("TearDownProp", 1); + } +}; + +TEST_F(PropertyOne, TestSomeProperties) { + RecordProperty("TestSomeProperty", 1); +} diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_xml_outfile2_test_.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest_xml_outfile2_test_.cc new file mode 100644 index 00000000..7b400b27 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_xml_outfile2_test_.cc @@ -0,0 +1,49 @@ +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: keith.ray@gmail.com (Keith Ray) +// +// gtest_xml_outfile2_test_ writes some xml via TestProperty used by +// gtest_xml_outfiles_test.py + +#include "gtest/gtest.h" + +class PropertyTwo : public testing::Test { + protected: + virtual void SetUp() { + RecordProperty("SetUpProp", 2); + } + virtual void TearDown() { + RecordProperty("TearDownProp", 2); + } +}; + +TEST_F(PropertyTwo, TestSomeProperties) { + RecordProperty("TestSomeProperty", 2); +} diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_xml_outfiles_test.py b/thirdparty/protobuf-2.6.1/gtest/test/gtest_xml_outfiles_test.py new file mode 100644 index 00000000..524e437e --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_xml_outfiles_test.py @@ -0,0 +1,132 @@ +#!/usr/bin/env python +# +# Copyright 2008, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Unit test for the gtest_xml_output module.""" + +__author__ = "keith.ray@gmail.com (Keith Ray)" + +import os +from xml.dom import minidom, Node + +import gtest_test_utils +import gtest_xml_test_utils + + +GTEST_OUTPUT_SUBDIR = "xml_outfiles" +GTEST_OUTPUT_1_TEST = "gtest_xml_outfile1_test_" +GTEST_OUTPUT_2_TEST = "gtest_xml_outfile2_test_" + +EXPECTED_XML_1 = """ + + + + + +""" + +EXPECTED_XML_2 = """ + + + + + +""" + + +class GTestXMLOutFilesTest(gtest_xml_test_utils.GTestXMLTestCase): + """Unit test for Google Test's XML output functionality.""" + + def setUp(self): + # We want the trailing '/' that the last "" provides in os.path.join, for + # telling Google Test to create an output directory instead of a single file + # for xml output. + self.output_dir_ = os.path.join(gtest_test_utils.GetTempDir(), + GTEST_OUTPUT_SUBDIR, "") + self.DeleteFilesAndDir() + + def tearDown(self): + self.DeleteFilesAndDir() + + def DeleteFilesAndDir(self): + try: + os.remove(os.path.join(self.output_dir_, GTEST_OUTPUT_1_TEST + ".xml")) + except os.error: + pass + try: + os.remove(os.path.join(self.output_dir_, GTEST_OUTPUT_2_TEST + ".xml")) + except os.error: + pass + try: + os.rmdir(self.output_dir_) + except os.error: + pass + + def testOutfile1(self): + self._TestOutFile(GTEST_OUTPUT_1_TEST, EXPECTED_XML_1) + + def testOutfile2(self): + self._TestOutFile(GTEST_OUTPUT_2_TEST, EXPECTED_XML_2) + + def _TestOutFile(self, test_name, expected_xml): + gtest_prog_path = gtest_test_utils.GetTestExecutablePath(test_name) + command = [gtest_prog_path, "--gtest_output=xml:%s" % self.output_dir_] + p = gtest_test_utils.Subprocess(command, + working_dir=gtest_test_utils.GetTempDir()) + self.assert_(p.exited) + self.assertEquals(0, p.exit_code) + + # TODO(wan@google.com): libtool causes the built test binary to be + # named lt-gtest_xml_outfiles_test_ instead of + # gtest_xml_outfiles_test_. To account for this possibillity, we + # allow both names in the following code. We should remove this + # hack when Chandler Carruth's libtool replacement tool is ready. + output_file_name1 = test_name + ".xml" + output_file1 = os.path.join(self.output_dir_, output_file_name1) + output_file_name2 = 'lt-' + output_file_name1 + output_file2 = os.path.join(self.output_dir_, output_file_name2) + self.assert_(os.path.isfile(output_file1) or os.path.isfile(output_file2), + output_file1) + + expected = minidom.parseString(expected_xml) + if os.path.isfile(output_file1): + actual = minidom.parse(output_file1) + else: + actual = minidom.parse(output_file2) + self.NormalizeXml(actual.documentElement) + self.AssertEquivalentNodes(expected.documentElement, + actual.documentElement) + expected.unlink() + actual.unlink() + + +if __name__ == "__main__": + os.environ["GTEST_STACK_TRACE_DEPTH"] = "0" + gtest_test_utils.Main() diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_xml_output_unittest.py b/thirdparty/protobuf-2.6.1/gtest/test/gtest_xml_output_unittest.py new file mode 100644 index 00000000..1bcd4187 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_xml_output_unittest.py @@ -0,0 +1,284 @@ +#!/usr/bin/env python +# +# Copyright 2006, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Unit test for the gtest_xml_output module""" + +__author__ = 'eefacm@gmail.com (Sean Mcafee)' + +import datetime +import errno +import os +import re +import sys +from xml.dom import minidom, Node + +import gtest_test_utils +import gtest_xml_test_utils + + +GTEST_LIST_TESTS_FLAG = '--gtest_list_tests' +GTEST_OUTPUT_FLAG = "--gtest_output" +GTEST_DEFAULT_OUTPUT_FILE = "test_detail.xml" +GTEST_PROGRAM_NAME = "gtest_xml_output_unittest_" + +SUPPORTS_STACK_TRACES = False + +if SUPPORTS_STACK_TRACES: + STACK_TRACE_TEMPLATE = '\nStack trace:\n*' +else: + STACK_TRACE_TEMPLATE = '' + +EXPECTED_NON_EMPTY_XML = """ + + + + + + + + + + + + + + + + + + + + ]]>%(stack)s]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +""" % {'stack': STACK_TRACE_TEMPLATE} + + +EXPECTED_EMPTY_XML = """ + +""" + +GTEST_PROGRAM_PATH = gtest_test_utils.GetTestExecutablePath(GTEST_PROGRAM_NAME) + +SUPPORTS_TYPED_TESTS = 'TypedTest' in gtest_test_utils.Subprocess( + [GTEST_PROGRAM_PATH, GTEST_LIST_TESTS_FLAG], capture_stderr=False).output + + +class GTestXMLOutputUnitTest(gtest_xml_test_utils.GTestXMLTestCase): + """ + Unit test for Google Test's XML output functionality. + """ + + # This test currently breaks on platforms that do not support typed and + # type-parameterized tests, so we don't run it under them. + if SUPPORTS_TYPED_TESTS: + def testNonEmptyXmlOutput(self): + """ + Runs a test program that generates a non-empty XML output, and + tests that the XML output is expected. + """ + self._TestXmlOutput(GTEST_PROGRAM_NAME, EXPECTED_NON_EMPTY_XML, 1) + + def testEmptyXmlOutput(self): + """Verifies XML output for a Google Test binary without actual tests. + + Runs a test program that generates an empty XML output, and + tests that the XML output is expected. + """ + + self._TestXmlOutput('gtest_no_test_unittest', EXPECTED_EMPTY_XML, 0) + + def testTimestampValue(self): + """Checks whether the timestamp attribute in the XML output is valid. + + Runs a test program that generates an empty XML output, and checks if + the timestamp attribute in the testsuites tag is valid. + """ + actual = self._GetXmlOutput('gtest_no_test_unittest', 0) + date_time_str = actual.documentElement.getAttributeNode('timestamp').value + # datetime.strptime() is only available in Python 2.5+ so we have to + # parse the expected datetime manually. + match = re.match(r'(\d+)-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d)', date_time_str) + self.assertTrue( + re.match, + 'XML datettime string %s has incorrect format' % date_time_str) + date_time_from_xml = datetime.datetime( + year=int(match.group(1)), month=int(match.group(2)), + day=int(match.group(3)), hour=int(match.group(4)), + minute=int(match.group(5)), second=int(match.group(6))) + + time_delta = abs(datetime.datetime.now() - date_time_from_xml) + # timestamp value should be near the current local time + self.assertTrue(time_delta < datetime.timedelta(seconds=600), + 'time_delta is %s' % time_delta) + actual.unlink() + + def testDefaultOutputFile(self): + """ + Confirms that Google Test produces an XML output file with the expected + default name if no name is explicitly specified. + """ + output_file = os.path.join(gtest_test_utils.GetTempDir(), + GTEST_DEFAULT_OUTPUT_FILE) + gtest_prog_path = gtest_test_utils.GetTestExecutablePath( + 'gtest_no_test_unittest') + try: + os.remove(output_file) + except OSError, e: + if e.errno != errno.ENOENT: + raise + + p = gtest_test_utils.Subprocess( + [gtest_prog_path, '%s=xml' % GTEST_OUTPUT_FLAG], + working_dir=gtest_test_utils.GetTempDir()) + self.assert_(p.exited) + self.assertEquals(0, p.exit_code) + self.assert_(os.path.isfile(output_file)) + + def testSuppressedXmlOutput(self): + """ + Tests that no XML file is generated if the default XML listener is + shut down before RUN_ALL_TESTS is invoked. + """ + + xml_path = os.path.join(gtest_test_utils.GetTempDir(), + GTEST_PROGRAM_NAME + 'out.xml') + if os.path.isfile(xml_path): + os.remove(xml_path) + + command = [GTEST_PROGRAM_PATH, + '%s=xml:%s' % (GTEST_OUTPUT_FLAG, xml_path), + '--shut_down_xml'] + p = gtest_test_utils.Subprocess(command) + if p.terminated_by_signal: + # p.signal is avalable only if p.terminated_by_signal is True. + self.assertFalse( + p.terminated_by_signal, + '%s was killed by signal %d' % (GTEST_PROGRAM_NAME, p.signal)) + else: + self.assert_(p.exited) + self.assertEquals(1, p.exit_code, + "'%s' exited with code %s, which doesn't match " + 'the expected exit code %s.' + % (command, p.exit_code, 1)) + + self.assert_(not os.path.isfile(xml_path)) + + def _GetXmlOutput(self, gtest_prog_name, expected_exit_code): + """ + Returns the xml output generated by running the program gtest_prog_name. + Furthermore, the program's exit code must be expected_exit_code. + """ + xml_path = os.path.join(gtest_test_utils.GetTempDir(), + gtest_prog_name + 'out.xml') + gtest_prog_path = gtest_test_utils.GetTestExecutablePath(gtest_prog_name) + + command = [gtest_prog_path, '%s=xml:%s' % (GTEST_OUTPUT_FLAG, xml_path)] + p = gtest_test_utils.Subprocess(command) + if p.terminated_by_signal: + self.assert_(False, + '%s was killed by signal %d' % (gtest_prog_name, p.signal)) + else: + self.assert_(p.exited) + self.assertEquals(expected_exit_code, p.exit_code, + "'%s' exited with code %s, which doesn't match " + 'the expected exit code %s.' + % (command, p.exit_code, expected_exit_code)) + actual = minidom.parse(xml_path) + return actual + + def _TestXmlOutput(self, gtest_prog_name, expected_xml, expected_exit_code): + """ + Asserts that the XML document generated by running the program + gtest_prog_name matches expected_xml, a string containing another + XML document. Furthermore, the program's exit code must be + expected_exit_code. + """ + + actual = self._GetXmlOutput(gtest_prog_name, expected_exit_code) + expected = minidom.parseString(expected_xml) + self.NormalizeXml(actual.documentElement) + self.AssertEquivalentNodes(expected.documentElement, + actual.documentElement) + expected.unlink() + actual.unlink() + + +if __name__ == '__main__': + os.environ['GTEST_STACK_TRACE_DEPTH'] = '1' + gtest_test_utils.Main() diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_xml_output_unittest_.cc b/thirdparty/protobuf-2.6.1/gtest/test/gtest_xml_output_unittest_.cc new file mode 100644 index 00000000..bf0c871b --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_xml_output_unittest_.cc @@ -0,0 +1,177 @@ +// Copyright 2006, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// Author: eefacm@gmail.com (Sean Mcafee) + +// Unit test for Google Test XML output. +// +// A user can specify XML output in a Google Test program to run via +// either the GTEST_OUTPUT environment variable or the --gtest_output +// flag. This is used for testing such functionality. +// +// This program will be invoked from a Python unit test. Don't run it +// directly. + +#include "gtest/gtest.h" + +using ::testing::InitGoogleTest; +using ::testing::TestEventListeners; +using ::testing::TestWithParam; +using ::testing::UnitTest; +using ::testing::Test; +using ::testing::Values; + +class SuccessfulTest : public Test { +}; + +TEST_F(SuccessfulTest, Succeeds) { + SUCCEED() << "This is a success."; + ASSERT_EQ(1, 1); +} + +class FailedTest : public Test { +}; + +TEST_F(FailedTest, Fails) { + ASSERT_EQ(1, 2); +} + +class DisabledTest : public Test { +}; + +TEST_F(DisabledTest, DISABLED_test_not_run) { + FAIL() << "Unexpected failure: Disabled test should not be run"; +} + +TEST(MixedResultTest, Succeeds) { + EXPECT_EQ(1, 1); + ASSERT_EQ(1, 1); +} + +TEST(MixedResultTest, Fails) { + EXPECT_EQ(1, 2); + ASSERT_EQ(2, 3); +} + +TEST(MixedResultTest, DISABLED_test) { + FAIL() << "Unexpected failure: Disabled test should not be run"; +} + +TEST(XmlQuotingTest, OutputsCData) { + FAIL() << "XML output: " + ""; +} + +// Helps to test that invalid characters produced by test code do not make +// it into the XML file. +TEST(InvalidCharactersTest, InvalidCharactersInMessage) { + FAIL() << "Invalid characters in brackets [\x1\x2]"; +} + +class PropertyRecordingTest : public Test { +}; + +TEST_F(PropertyRecordingTest, OneProperty) { + RecordProperty("key_1", "1"); +} + +TEST_F(PropertyRecordingTest, IntValuedProperty) { + RecordProperty("key_int", 1); +} + +TEST_F(PropertyRecordingTest, ThreeProperties) { + RecordProperty("key_1", "1"); + RecordProperty("key_2", "2"); + RecordProperty("key_3", "3"); +} + +TEST_F(PropertyRecordingTest, TwoValuesForOneKeyUsesLastValue) { + RecordProperty("key_1", "1"); + RecordProperty("key_1", "2"); +} + +TEST(NoFixtureTest, RecordProperty) { + RecordProperty("key", "1"); +} + +void ExternalUtilityThatCallsRecordProperty(const char* key, int value) { + testing::Test::RecordProperty(key, value); +} + +void ExternalUtilityThatCallsRecordProperty(const char* key, + const char* value) { + testing::Test::RecordProperty(key, value); +} + +TEST(NoFixtureTest, ExternalUtilityThatCallsRecordIntValuedProperty) { + ExternalUtilityThatCallsRecordProperty("key_for_utility_int", 1); +} + +TEST(NoFixtureTest, ExternalUtilityThatCallsRecordStringValuedProperty) { + ExternalUtilityThatCallsRecordProperty("key_for_utility_string", "1"); +} + +// Verifies that the test parameter value is output in the 'value_param' +// XML attribute for value-parameterized tests. +class ValueParamTest : public TestWithParam {}; +TEST_P(ValueParamTest, HasValueParamAttribute) {} +TEST_P(ValueParamTest, AnotherTestThatHasValueParamAttribute) {} +INSTANTIATE_TEST_CASE_P(Single, ValueParamTest, Values(33, 42)); + +#if GTEST_HAS_TYPED_TEST +// Verifies that the type parameter name is output in the 'type_param' +// XML attribute for typed tests. +template class TypedTest : public Test {}; +typedef testing::Types TypedTestTypes; +TYPED_TEST_CASE(TypedTest, TypedTestTypes); +TYPED_TEST(TypedTest, HasTypeParamAttribute) {} +#endif + +#if GTEST_HAS_TYPED_TEST_P +// Verifies that the type parameter name is output in the 'type_param' +// XML attribute for type-parameterized tests. +template class TypeParameterizedTestCase : public Test {}; +TYPED_TEST_CASE_P(TypeParameterizedTestCase); +TYPED_TEST_P(TypeParameterizedTestCase, HasTypeParamAttribute) {} +REGISTER_TYPED_TEST_CASE_P(TypeParameterizedTestCase, HasTypeParamAttribute); +typedef testing::Types TypeParameterizedTestCaseTypes; +INSTANTIATE_TYPED_TEST_CASE_P(Single, + TypeParameterizedTestCase, + TypeParameterizedTestCaseTypes); +#endif + +int main(int argc, char** argv) { + InitGoogleTest(&argc, argv); + + if (argc > 1 && strcmp(argv[1], "--shut_down_xml") == 0) { + TestEventListeners& listeners = UnitTest::GetInstance()->listeners(); + delete listeners.Release(listeners.default_xml_generator()); + } + return RUN_ALL_TESTS(); +} diff --git a/thirdparty/protobuf-2.6.1/gtest/test/gtest_xml_test_utils.py b/thirdparty/protobuf-2.6.1/gtest/test/gtest_xml_test_utils.py new file mode 100644 index 00000000..0e5a1089 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/gtest_xml_test_utils.py @@ -0,0 +1,190 @@ +#!/usr/bin/env python +# +# Copyright 2006, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""Unit test utilities for gtest_xml_output""" + +__author__ = 'eefacm@gmail.com (Sean Mcafee)' + +import re +from xml.dom import minidom, Node + +import gtest_test_utils + + +GTEST_OUTPUT_FLAG = '--gtest_output' +GTEST_DEFAULT_OUTPUT_FILE = 'test_detail.xml' + +class GTestXMLTestCase(gtest_test_utils.TestCase): + """ + Base class for tests of Google Test's XML output functionality. + """ + + + def AssertEquivalentNodes(self, expected_node, actual_node): + """ + Asserts that actual_node (a DOM node object) is equivalent to + expected_node (another DOM node object), in that either both of + them are CDATA nodes and have the same value, or both are DOM + elements and actual_node meets all of the following conditions: + + * It has the same tag name as expected_node. + * It has the same set of attributes as expected_node, each with + the same value as the corresponding attribute of expected_node. + Exceptions are any attribute named "time", which needs only be + convertible to a floating-point number and any attribute named + "type_param" which only has to be non-empty. + * It has an equivalent set of child nodes (including elements and + CDATA sections) as expected_node. Note that we ignore the + order of the children as they are not guaranteed to be in any + particular order. + """ + + if expected_node.nodeType == Node.CDATA_SECTION_NODE: + self.assertEquals(Node.CDATA_SECTION_NODE, actual_node.nodeType) + self.assertEquals(expected_node.nodeValue, actual_node.nodeValue) + return + + self.assertEquals(Node.ELEMENT_NODE, actual_node.nodeType) + self.assertEquals(Node.ELEMENT_NODE, expected_node.nodeType) + self.assertEquals(expected_node.tagName, actual_node.tagName) + + expected_attributes = expected_node.attributes + actual_attributes = actual_node .attributes + self.assertEquals( + expected_attributes.length, actual_attributes.length, + 'attribute numbers differ in element ' + actual_node.tagName) + for i in range(expected_attributes.length): + expected_attr = expected_attributes.item(i) + actual_attr = actual_attributes.get(expected_attr.name) + self.assert_( + actual_attr is not None, + 'expected attribute %s not found in element %s' % + (expected_attr.name, actual_node.tagName)) + self.assertEquals(expected_attr.value, actual_attr.value, + ' values of attribute %s in element %s differ' % + (expected_attr.name, actual_node.tagName)) + + expected_children = self._GetChildren(expected_node) + actual_children = self._GetChildren(actual_node) + self.assertEquals( + len(expected_children), len(actual_children), + 'number of child elements differ in element ' + actual_node.tagName) + for child_id, child in expected_children.iteritems(): + self.assert_(child_id in actual_children, + '<%s> is not in <%s> (in element %s)' % + (child_id, actual_children, actual_node.tagName)) + self.AssertEquivalentNodes(child, actual_children[child_id]) + + identifying_attribute = { + 'testsuites': 'name', + 'testsuite': 'name', + 'testcase': 'name', + 'failure': 'message', + } + + def _GetChildren(self, element): + """ + Fetches all of the child nodes of element, a DOM Element object. + Returns them as the values of a dictionary keyed by the IDs of the + children. For , and elements, the ID + is the value of their "name" attribute; for elements, it is + the value of the "message" attribute; CDATA sections and non-whitespace + text nodes are concatenated into a single CDATA section with ID + "detail". An exception is raised if any element other than the above + four is encountered, if two child elements with the same identifying + attributes are encountered, or if any other type of node is encountered. + """ + + children = {} + for child in element.childNodes: + if child.nodeType == Node.ELEMENT_NODE: + self.assert_(child.tagName in self.identifying_attribute, + 'Encountered unknown element <%s>' % child.tagName) + childID = child.getAttribute(self.identifying_attribute[child.tagName]) + self.assert_(childID not in children) + children[childID] = child + elif child.nodeType in [Node.TEXT_NODE, Node.CDATA_SECTION_NODE]: + if 'detail' not in children: + if (child.nodeType == Node.CDATA_SECTION_NODE or + not child.nodeValue.isspace()): + children['detail'] = child.ownerDocument.createCDATASection( + child.nodeValue) + else: + children['detail'].nodeValue += child.nodeValue + else: + self.fail('Encountered unexpected node type %d' % child.nodeType) + return children + + def NormalizeXml(self, element): + """ + Normalizes Google Test's XML output to eliminate references to transient + information that may change from run to run. + + * The "time" attribute of , and + elements is replaced with a single asterisk, if it contains + only digit characters. + * The "timestamp" attribute of elements is replaced with a + single asterisk, if it contains a valid ISO8601 datetime value. + * The "type_param" attribute of elements is replaced with a + single asterisk (if it sn non-empty) as it is the type name returned + by the compiler and is platform dependent. + * The line info reported in the first line of the "message" + attribute and CDATA section of elements is replaced with the + file's basename and a single asterisk for the line number. + * The directory names in file paths are removed. + * The stack traces are removed. + """ + + if element.tagName == 'testsuites': + timestamp = element.getAttributeNode('timestamp') + timestamp.value = re.sub(r'^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d$', + '*', timestamp.value) + if element.tagName in ('testsuites', 'testsuite', 'testcase'): + time = element.getAttributeNode('time') + time.value = re.sub(r'^\d+(\.\d+)?$', '*', time.value) + type_param = element.getAttributeNode('type_param') + if type_param and type_param.value: + type_param.value = '*' + elif element.tagName == 'failure': + source_line_pat = r'^.*[/\\](.*:)\d+\n' + # Replaces the source line information with a normalized form. + message = element.getAttributeNode('message') + message.value = re.sub(source_line_pat, '\\1*\n', message.value) + for child in element.childNodes: + if child.nodeType == Node.CDATA_SECTION_NODE: + # Replaces the source line information with a normalized form. + cdata = re.sub(source_line_pat, '\\1*\n', child.nodeValue) + # Removes the actual stack trace. + child.nodeValue = re.sub(r'\nStack trace:\n(.|\n)*', + '', cdata) + for child in element.childNodes: + if child.nodeType == Node.ELEMENT_NODE: + self.NormalizeXml(child) diff --git a/thirdparty/protobuf-2.6.1/gtest/test/production.cc b/thirdparty/protobuf-2.6.1/gtest/test/production.cc new file mode 100644 index 00000000..8b8a40b4 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/production.cc @@ -0,0 +1,36 @@ +// Copyright 2006, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) +// +// This is part of the unit test for include/gtest/gtest_prod.h. + +#include "production.h" + +PrivateCode::PrivateCode() : x_(0) {} diff --git a/thirdparty/protobuf-2.6.1/gtest/test/production.h b/thirdparty/protobuf-2.6.1/gtest/test/production.h new file mode 100644 index 00000000..98fd5e47 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/test/production.h @@ -0,0 +1,55 @@ +// Copyright 2006, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: wan@google.com (Zhanyong Wan) +// +// This is part of the unit test for include/gtest/gtest_prod.h. + +#ifndef GTEST_TEST_PRODUCTION_H_ +#define GTEST_TEST_PRODUCTION_H_ + +#include "gtest/gtest_prod.h" + +class PrivateCode { + public: + // Declares a friend test that does not use a fixture. + FRIEND_TEST(PrivateCodeTest, CanAccessPrivateMembers); + + // Declares a friend test that uses a fixture. + FRIEND_TEST(PrivateCodeFixtureTest, CanAccessPrivateMembers); + + PrivateCode(); + + int x() const { return x_; } + private: + void set_x(int an_x) { x_ = an_x; } + int x_; +}; + +#endif // GTEST_TEST_PRODUCTION_H_ diff --git a/thirdparty/protobuf-2.6.1/gtest/xcode/Config/DebugProject.xcconfig b/thirdparty/protobuf-2.6.1/gtest/xcode/Config/DebugProject.xcconfig new file mode 100644 index 00000000..3d68157d --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/xcode/Config/DebugProject.xcconfig @@ -0,0 +1,30 @@ +// +// DebugProject.xcconfig +// +// These are Debug Configuration project settings for the gtest framework and +// examples. It is set in the "Based On:" dropdown in the "Project" info +// dialog. +// This file is based on the Xcode Configuration files in: +// http://code.google.com/p/google-toolbox-for-mac/ +// + +#include "General.xcconfig" + +// No optimization +GCC_OPTIMIZATION_LEVEL = 0 + +// Deployment postprocessing is what triggers Xcode to strip, turn it off +DEPLOYMENT_POSTPROCESSING = NO + +// Dead code stripping off +DEAD_CODE_STRIPPING = NO + +// Debug symbols should be on obviously +GCC_GENERATE_DEBUGGING_SYMBOLS = YES + +// Define the DEBUG macro in all debug builds +OTHER_CFLAGS = $(OTHER_CFLAGS) -DDEBUG=1 + +// These are turned off to avoid STL incompatibilities with client code +// // Turns on special C++ STL checks to "encourage" good STL use +// GCC_PREPROCESSOR_DEFINITIONS = $(GCC_PREPROCESSOR_DEFINITIONS) _GLIBCXX_DEBUG_PEDANTIC _GLIBCXX_DEBUG _GLIBCPP_CONCEPT_CHECKS diff --git a/thirdparty/protobuf-2.6.1/gtest/xcode/Config/FrameworkTarget.xcconfig b/thirdparty/protobuf-2.6.1/gtest/xcode/Config/FrameworkTarget.xcconfig new file mode 100644 index 00000000..357b1c8f --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/xcode/Config/FrameworkTarget.xcconfig @@ -0,0 +1,17 @@ +// +// FrameworkTarget.xcconfig +// +// These are Framework target settings for the gtest framework and examples. It +// is set in the "Based On:" dropdown in the "Target" info dialog. +// This file is based on the Xcode Configuration files in: +// http://code.google.com/p/google-toolbox-for-mac/ +// + +// Dynamic libs need to be position independent +GCC_DYNAMIC_NO_PIC = NO + +// Dynamic libs should not have their external symbols stripped. +STRIP_STYLE = non-global + +// Let the user install by specifying the $DSTROOT with xcodebuild +SKIP_INSTALL = NO diff --git a/thirdparty/protobuf-2.6.1/gtest/xcode/Config/General.xcconfig b/thirdparty/protobuf-2.6.1/gtest/xcode/Config/General.xcconfig new file mode 100644 index 00000000..f23e3222 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/xcode/Config/General.xcconfig @@ -0,0 +1,41 @@ +// +// General.xcconfig +// +// These are General configuration settings for the gtest framework and +// examples. +// This file is based on the Xcode Configuration files in: +// http://code.google.com/p/google-toolbox-for-mac/ +// + +// Build for PPC and Intel, 32- and 64-bit +ARCHS = i386 x86_64 ppc ppc64 + +// Zerolink prevents link warnings so turn it off +ZERO_LINK = NO + +// Prebinding considered unhelpful in 10.3 and later +PREBINDING = NO + +// Strictest warning policy +WARNING_CFLAGS = -Wall -Werror -Wendif-labels -Wnewline-eof -Wno-sign-compare -Wshadow + +// Work around Xcode bugs by using external strip. See: +// http://lists.apple.com/archives/Xcode-users/2006/Feb/msg00050.html +SEPARATE_STRIP = YES + +// Force C99 dialect +GCC_C_LANGUAGE_STANDARD = c99 + +// not sure why apple defaults this on, but it's pretty risky +ALWAYS_SEARCH_USER_PATHS = NO + +// Turn on position dependent code for most cases (overridden where appropriate) +GCC_DYNAMIC_NO_PIC = YES + +// Default SDK and minimum OS version is 10.4 +SDKROOT = $(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk +MACOSX_DEPLOYMENT_TARGET = 10.4 +GCC_VERSION = 4.0 + +// VERSIONING BUILD SETTINGS (used in Info.plist) +GTEST_VERSIONINFO_ABOUT = © 2008 Google Inc. diff --git a/thirdparty/protobuf-2.6.1/gtest/xcode/Config/ReleaseProject.xcconfig b/thirdparty/protobuf-2.6.1/gtest/xcode/Config/ReleaseProject.xcconfig new file mode 100644 index 00000000..5349f0a0 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/xcode/Config/ReleaseProject.xcconfig @@ -0,0 +1,32 @@ +// +// ReleaseProject.xcconfig +// +// These are Release Configuration project settings for the gtest framework +// and examples. It is set in the "Based On:" dropdown in the "Project" info +// dialog. +// This file is based on the Xcode Configuration files in: +// http://code.google.com/p/google-toolbox-for-mac/ +// + +#include "General.xcconfig" + +// subconfig/Release.xcconfig + +// Optimize for space and size (Apple recommendation) +GCC_OPTIMIZATION_LEVEL = s + +// Deploment postprocessing is what triggers Xcode to strip +DEPLOYMENT_POSTPROCESSING = YES + +// No symbols +GCC_GENERATE_DEBUGGING_SYMBOLS = NO + +// Dead code strip does not affect ObjC code but can help for C +DEAD_CODE_STRIPPING = YES + +// NDEBUG is used by things like assert.h, so define it for general compat. +// ASSERT going away in release tends to create unused vars. +OTHER_CFLAGS = $(OTHER_CFLAGS) -DNDEBUG=1 -Wno-unused-variable + +// When we strip we want to strip all symbols in release, but save externals. +STRIP_STYLE = all diff --git a/thirdparty/protobuf-2.6.1/gtest/xcode/Config/StaticLibraryTarget.xcconfig b/thirdparty/protobuf-2.6.1/gtest/xcode/Config/StaticLibraryTarget.xcconfig new file mode 100644 index 00000000..3922fa51 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/xcode/Config/StaticLibraryTarget.xcconfig @@ -0,0 +1,18 @@ +// +// StaticLibraryTarget.xcconfig +// +// These are static library target settings for libgtest.a. It +// is set in the "Based On:" dropdown in the "Target" info dialog. +// This file is based on the Xcode Configuration files in: +// http://code.google.com/p/google-toolbox-for-mac/ +// + +// Static libs can be included in bundles so make them position independent +GCC_DYNAMIC_NO_PIC = NO + +// Static libs should not have their internal globals or external symbols +// stripped. +STRIP_STYLE = debugging + +// Let the user install by specifying the $DSTROOT with xcodebuild +SKIP_INSTALL = NO diff --git a/thirdparty/protobuf-2.6.1/gtest/xcode/Config/TestTarget.xcconfig b/thirdparty/protobuf-2.6.1/gtest/xcode/Config/TestTarget.xcconfig new file mode 100644 index 00000000..e6652ba8 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/xcode/Config/TestTarget.xcconfig @@ -0,0 +1,8 @@ +// +// TestTarget.xcconfig +// +// These are Test target settings for the gtest framework and examples. It +// is set in the "Based On:" dropdown in the "Target" info dialog. + +PRODUCT_NAME = $(TARGET_NAME) +HEADER_SEARCH_PATHS = ../include diff --git a/thirdparty/protobuf-2.6.1/gtest/xcode/Resources/Info.plist b/thirdparty/protobuf-2.6.1/gtest/xcode/Resources/Info.plist new file mode 100644 index 00000000..9dd28ea1 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/xcode/Resources/Info.plist @@ -0,0 +1,30 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + + CFBundleIdentifier + com.google.${PRODUCT_NAME} + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + FMWK + CFBundleSignature + ???? + CFBundleVersion + GTEST_VERSIONINFO_LONG + CFBundleShortVersionString + GTEST_VERSIONINFO_SHORT + CFBundleGetInfoString + ${PRODUCT_NAME} GTEST_VERSIONINFO_LONG, ${GTEST_VERSIONINFO_ABOUT} + NSHumanReadableCopyright + ${GTEST_VERSIONINFO_ABOUT} + CSResourcesFileMapped + + + diff --git a/thirdparty/protobuf-2.6.1/gtest/xcode/Samples/FrameworkSample/Info.plist b/thirdparty/protobuf-2.6.1/gtest/xcode/Samples/FrameworkSample/Info.plist new file mode 100644 index 00000000..f3852ede --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/xcode/Samples/FrameworkSample/Info.plist @@ -0,0 +1,28 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + + CFBundleIdentifier + com.google.gtest.${PRODUCT_NAME:identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + CSResourcesFileMapped + + + diff --git a/thirdparty/protobuf-2.6.1/gtest/xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj b/thirdparty/protobuf-2.6.1/gtest/xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj new file mode 100644 index 00000000..497617eb --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/xcode/Samples/FrameworkSample/WidgetFramework.xcodeproj/project.pbxproj @@ -0,0 +1,457 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 42; + objects = { + +/* Begin PBXAggregateTarget section */ + 4024D162113D7D2400C7059E /* Test */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 4024D169113D7D4600C7059E /* Build configuration list for PBXAggregateTarget "Test" */; + buildPhases = ( + 4024D161113D7D2400C7059E /* ShellScript */, + ); + dependencies = ( + 4024D166113D7D3100C7059E /* PBXTargetDependency */, + ); + name = Test; + productName = TestAndBuild; + }; + 4024D1E9113D83FF00C7059E /* TestAndBuild */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 4024D1F0113D842B00C7059E /* Build configuration list for PBXAggregateTarget "TestAndBuild" */; + buildPhases = ( + ); + dependencies = ( + 4024D1ED113D840900C7059E /* PBXTargetDependency */, + 4024D1EF113D840D00C7059E /* PBXTargetDependency */, + ); + name = TestAndBuild; + productName = TestAndBuild; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 3B7EB1250E5AEE3500C7F239 /* widget.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3B7EB1230E5AEE3500C7F239 /* widget.cc */; }; + 3B7EB1260E5AEE3500C7F239 /* widget.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B7EB1240E5AEE3500C7F239 /* widget.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3B7EB1280E5AEE4600C7F239 /* widget_test.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3B7EB1270E5AEE4600C7F239 /* widget_test.cc */; }; + 3B7EB1480E5AF3B400C7F239 /* Widget.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8D07F2C80486CC7A007CD1D0 /* Widget.framework */; }; + 4024D188113D7D7800C7059E /* libgtest.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4024D185113D7D5500C7059E /* libgtest.a */; }; + 4024D189113D7D7A00C7059E /* libgtest_main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4024D183113D7D5500C7059E /* libgtest_main.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 3B07BDF00E3F3FAE00647869 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8D07F2BC0486CC7A007CD1D0; + remoteInfo = gTestExample; + }; + 4024D165113D7D3100C7059E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 3B07BDE90E3F3F9E00647869; + remoteInfo = WidgetFrameworkTest; + }; + 4024D1EC113D840900C7059E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8D07F2BC0486CC7A007CD1D0; + remoteInfo = WidgetFramework; + }; + 4024D1EE113D840D00C7059E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4024D162113D7D2400C7059E; + remoteInfo = Test; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 3B07BDEA0E3F3F9E00647869 /* WidgetFrameworkTest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = WidgetFrameworkTest; sourceTree = BUILT_PRODUCTS_DIR; }; + 3B7EB1230E5AEE3500C7F239 /* widget.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = widget.cc; sourceTree = ""; }; + 3B7EB1240E5AEE3500C7F239 /* widget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = widget.h; sourceTree = ""; }; + 3B7EB1270E5AEE4600C7F239 /* widget_test.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = widget_test.cc; sourceTree = ""; }; + 4024D183113D7D5500C7059E /* libgtest_main.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libgtest_main.a; path = /usr/local/lib/libgtest_main.a; sourceTree = ""; }; + 4024D185113D7D5500C7059E /* libgtest.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libgtest.a; path = /usr/local/lib/libgtest.a; sourceTree = ""; }; + 4024D1E2113D838200C7059E /* runtests.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = runtests.sh; sourceTree = ""; }; + 8D07F2C70486CC7A007CD1D0 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; + 8D07F2C80486CC7A007CD1D0 /* Widget.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Widget.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 3B07BDE80E3F3F9E00647869 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 4024D189113D7D7A00C7059E /* libgtest_main.a in Frameworks */, + 4024D188113D7D7800C7059E /* libgtest.a in Frameworks */, + 3B7EB1480E5AF3B400C7F239 /* Widget.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8D07F2C30486CC7A007CD1D0 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 034768DDFF38A45A11DB9C8B /* Products */ = { + isa = PBXGroup; + children = ( + 8D07F2C80486CC7A007CD1D0 /* Widget.framework */, + 3B07BDEA0E3F3F9E00647869 /* WidgetFrameworkTest */, + ); + name = Products; + sourceTree = ""; + }; + 0867D691FE84028FC02AAC07 /* gTestExample */ = { + isa = PBXGroup; + children = ( + 4024D1E1113D836C00C7059E /* Scripts */, + 08FB77ACFE841707C02AAC07 /* Source */, + 089C1665FE841158C02AAC07 /* Resources */, + 3B07BE350E4094E400647869 /* Test */, + 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */, + 034768DDFF38A45A11DB9C8B /* Products */, + ); + name = gTestExample; + sourceTree = ""; + }; + 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */ = { + isa = PBXGroup; + children = ( + 4024D183113D7D5500C7059E /* libgtest_main.a */, + 4024D185113D7D5500C7059E /* libgtest.a */, + ); + name = "External Frameworks and Libraries"; + sourceTree = ""; + }; + 089C1665FE841158C02AAC07 /* Resources */ = { + isa = PBXGroup; + children = ( + 8D07F2C70486CC7A007CD1D0 /* Info.plist */, + ); + name = Resources; + sourceTree = ""; + }; + 08FB77ACFE841707C02AAC07 /* Source */ = { + isa = PBXGroup; + children = ( + 3B7EB1230E5AEE3500C7F239 /* widget.cc */, + 3B7EB1240E5AEE3500C7F239 /* widget.h */, + ); + name = Source; + sourceTree = ""; + }; + 3B07BE350E4094E400647869 /* Test */ = { + isa = PBXGroup; + children = ( + 3B7EB1270E5AEE4600C7F239 /* widget_test.cc */, + ); + name = Test; + sourceTree = ""; + }; + 4024D1E1113D836C00C7059E /* Scripts */ = { + isa = PBXGroup; + children = ( + 4024D1E2113D838200C7059E /* runtests.sh */, + ); + name = Scripts; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 8D07F2BD0486CC7A007CD1D0 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 3B7EB1260E5AEE3500C7F239 /* widget.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 3B07BDE90E3F3F9E00647869 /* WidgetFrameworkTest */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3B07BDF40E3F3FB600647869 /* Build configuration list for PBXNativeTarget "WidgetFrameworkTest" */; + buildPhases = ( + 3B07BDE70E3F3F9E00647869 /* Sources */, + 3B07BDE80E3F3F9E00647869 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 3B07BDF10E3F3FAE00647869 /* PBXTargetDependency */, + ); + name = WidgetFrameworkTest; + productName = gTestExampleTest; + productReference = 3B07BDEA0E3F3F9E00647869 /* WidgetFrameworkTest */; + productType = "com.apple.product-type.tool"; + }; + 8D07F2BC0486CC7A007CD1D0 /* WidgetFramework */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4FADC24208B4156D00ABE55E /* Build configuration list for PBXNativeTarget "WidgetFramework" */; + buildPhases = ( + 8D07F2C10486CC7A007CD1D0 /* Sources */, + 8D07F2C30486CC7A007CD1D0 /* Frameworks */, + 8D07F2BD0486CC7A007CD1D0 /* Headers */, + 8D07F2BF0486CC7A007CD1D0 /* Resources */, + 8D07F2C50486CC7A007CD1D0 /* Rez */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = WidgetFramework; + productInstallPath = "$(HOME)/Library/Frameworks"; + productName = gTestExample; + productReference = 8D07F2C80486CC7A007CD1D0 /* Widget.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 0867D690FE84028FC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 4FADC24608B4156D00ABE55E /* Build configuration list for PBXProject "WidgetFramework" */; + compatibilityVersion = "Xcode 2.4"; + hasScannedForEncodings = 1; + mainGroup = 0867D691FE84028FC02AAC07 /* gTestExample */; + productRefGroup = 034768DDFF38A45A11DB9C8B /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8D07F2BC0486CC7A007CD1D0 /* WidgetFramework */, + 3B07BDE90E3F3F9E00647869 /* WidgetFrameworkTest */, + 4024D162113D7D2400C7059E /* Test */, + 4024D1E9113D83FF00C7059E /* TestAndBuild */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 8D07F2BF0486CC7A007CD1D0 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXRezBuildPhase section */ + 8D07F2C50486CC7A007CD1D0 /* Rez */ = { + isa = PBXRezBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXRezBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 4024D161113D7D2400C7059E /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/bash $SRCROOT/runtests.sh $BUILT_PRODUCTS_DIR/WidgetFrameworkTest\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 3B07BDE70E3F3F9E00647869 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3B7EB1280E5AEE4600C7F239 /* widget_test.cc in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8D07F2C10486CC7A007CD1D0 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3B7EB1250E5AEE3500C7F239 /* widget.cc in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 3B07BDF10E3F3FAE00647869 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 8D07F2BC0486CC7A007CD1D0 /* WidgetFramework */; + targetProxy = 3B07BDF00E3F3FAE00647869 /* PBXContainerItemProxy */; + }; + 4024D166113D7D3100C7059E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 3B07BDE90E3F3F9E00647869 /* WidgetFrameworkTest */; + targetProxy = 4024D165113D7D3100C7059E /* PBXContainerItemProxy */; + }; + 4024D1ED113D840900C7059E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 8D07F2BC0486CC7A007CD1D0 /* WidgetFramework */; + targetProxy = 4024D1EC113D840900C7059E /* PBXContainerItemProxy */; + }; + 4024D1EF113D840D00C7059E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 4024D162113D7D2400C7059E /* Test */; + targetProxy = 4024D1EE113D840D00C7059E /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 3B07BDEC0E3F3F9F00647869 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = WidgetFrameworkTest; + }; + name = Debug; + }; + 3B07BDED0E3F3F9F00647869 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = WidgetFrameworkTest; + }; + name = Release; + }; + 4024D163113D7D2400C7059E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = TestAndBuild; + }; + name = Debug; + }; + 4024D164113D7D2400C7059E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = TestAndBuild; + }; + name = Release; + }; + 4024D1EA113D83FF00C7059E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = TestAndBuild; + }; + name = Debug; + }; + 4024D1EB113D83FF00C7059E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = TestAndBuild; + }; + name = Release; + }; + 4FADC24308B4156D00ABE55E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + FRAMEWORK_VERSION = A; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "@loader_path/../Frameworks"; + PRODUCT_NAME = Widget; + }; + name = Debug; + }; + 4FADC24408B4156D00ABE55E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + FRAMEWORK_VERSION = A; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "@loader_path/../Frameworks"; + PRODUCT_NAME = Widget; + }; + name = Release; + }; + 4FADC24708B4156D00ABE55E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_VERSION = 4.0; + SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; + }; + name = Debug; + }; + 4FADC24808B4156D00ABE55E /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_VERSION = 4.0; + SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 3B07BDF40E3F3FB600647869 /* Build configuration list for PBXNativeTarget "WidgetFrameworkTest" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3B07BDEC0E3F3F9F00647869 /* Debug */, + 3B07BDED0E3F3F9F00647869 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4024D169113D7D4600C7059E /* Build configuration list for PBXAggregateTarget "Test" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4024D163113D7D2400C7059E /* Debug */, + 4024D164113D7D2400C7059E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4024D1F0113D842B00C7059E /* Build configuration list for PBXAggregateTarget "TestAndBuild" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4024D1EA113D83FF00C7059E /* Debug */, + 4024D1EB113D83FF00C7059E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4FADC24208B4156D00ABE55E /* Build configuration list for PBXNativeTarget "WidgetFramework" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4FADC24308B4156D00ABE55E /* Debug */, + 4FADC24408B4156D00ABE55E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4FADC24608B4156D00ABE55E /* Build configuration list for PBXProject "WidgetFramework" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4FADC24708B4156D00ABE55E /* Debug */, + 4FADC24808B4156D00ABE55E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 0867D690FE84028FC02AAC07 /* Project object */; +} diff --git a/thirdparty/protobuf-2.6.1/gtest/xcode/Samples/FrameworkSample/runtests.sh b/thirdparty/protobuf-2.6.1/gtest/xcode/Samples/FrameworkSample/runtests.sh new file mode 100644 index 00000000..4a0d413e --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/xcode/Samples/FrameworkSample/runtests.sh @@ -0,0 +1,62 @@ +#!/bin/bash +# +# Copyright 2008, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Executes the samples and tests for the Google Test Framework. + +# Help the dynamic linker find the path to the libraries. +export DYLD_FRAMEWORK_PATH=$BUILT_PRODUCTS_DIR +export DYLD_LIBRARY_PATH=$BUILT_PRODUCTS_DIR + +# Create some executables. +test_executables=$@ + +# Now execute each one in turn keeping track of how many succeeded and failed. +succeeded=0 +failed=0 +failed_list=() +for test in ${test_executables[*]}; do + "$test" + result=$? + if [ $result -eq 0 ]; then + succeeded=$(( $succeeded + 1 )) + else + failed=$(( failed + 1 )) + failed_list="$failed_list $test" + fi +done + +# Report the successes and failures to the console. +echo "Tests complete with $succeeded successes and $failed failures." +if [ $failed -ne 0 ]; then + echo "The following tests failed:" + echo $failed_list +fi +exit $failed diff --git a/thirdparty/protobuf-2.6.1/gtest/xcode/Samples/FrameworkSample/widget.cc b/thirdparty/protobuf-2.6.1/gtest/xcode/Samples/FrameworkSample/widget.cc new file mode 100644 index 00000000..bfc4e7fc --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/xcode/Samples/FrameworkSample/widget.cc @@ -0,0 +1,63 @@ +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: preston.a.jackson@gmail.com (Preston Jackson) +// +// Google Test - FrameworkSample +// widget.cc +// + +// Widget is a very simple class used for demonstrating the use of gtest + +#include "widget.h" + +Widget::Widget(int number, const std::string& name) + : number_(number), + name_(name) {} + +Widget::~Widget() {} + +float Widget::GetFloatValue() const { + return number_; +} + +int Widget::GetIntValue() const { + return static_cast(number_); +} + +std::string Widget::GetStringValue() const { + return name_; +} + +void Widget::GetCharPtrValue(char* buffer, size_t max_size) const { + // Copy the char* representation of name_ into buffer, up to max_size. + strncpy(buffer, name_.c_str(), max_size-1); + buffer[max_size-1] = '\0'; + return; +} diff --git a/thirdparty/protobuf-2.6.1/gtest/xcode/Samples/FrameworkSample/widget.h b/thirdparty/protobuf-2.6.1/gtest/xcode/Samples/FrameworkSample/widget.h new file mode 100644 index 00000000..0c55cdc8 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/xcode/Samples/FrameworkSample/widget.h @@ -0,0 +1,59 @@ +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: preston.a.jackson@gmail.com (Preston Jackson) +// +// Google Test - FrameworkSample +// widget.h +// + +// Widget is a very simple class used for demonstrating the use of gtest. It +// simply stores two values a string and an integer, which are returned via +// public accessors in multiple forms. + +#import + +class Widget { + public: + Widget(int number, const std::string& name); + ~Widget(); + + // Public accessors to number data + float GetFloatValue() const; + int GetIntValue() const; + + // Public accessors to the string data + std::string GetStringValue() const; + void GetCharPtrValue(char* buffer, size_t max_size) const; + + private: + // Data members + float number_; + std::string name_; +}; diff --git a/thirdparty/protobuf-2.6.1/gtest/xcode/Samples/FrameworkSample/widget_test.cc b/thirdparty/protobuf-2.6.1/gtest/xcode/Samples/FrameworkSample/widget_test.cc new file mode 100644 index 00000000..87259942 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/xcode/Samples/FrameworkSample/widget_test.cc @@ -0,0 +1,68 @@ +// Copyright 2008, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +// +// Author: preston.a.jackson@gmail.com (Preston Jackson) +// +// Google Test - FrameworkSample +// widget_test.cc +// + +// This is a simple test file for the Widget class in the Widget.framework + +#include +#include "gtest/gtest.h" + +#include + +// This test verifies that the constructor sets the internal state of the +// Widget class correctly. +TEST(WidgetInitializerTest, TestConstructor) { + Widget widget(1.0f, "name"); + EXPECT_FLOAT_EQ(1.0f, widget.GetFloatValue()); + EXPECT_EQ(std::string("name"), widget.GetStringValue()); +} + +// This test verifies the conversion of the float and string values to int and +// char*, respectively. +TEST(WidgetInitializerTest, TestConversion) { + Widget widget(1.0f, "name"); + EXPECT_EQ(1, widget.GetIntValue()); + + size_t max_size = 128; + char buffer[max_size]; + widget.GetCharPtrValue(buffer, max_size); + EXPECT_STREQ("name", buffer); +} + +// Use the Google Test main that is linked into the framework. It does something +// like this: +// int main(int argc, char** argv) { +// testing::InitGoogleTest(&argc, argv); +// return RUN_ALL_TESTS(); +// } diff --git a/thirdparty/protobuf-2.6.1/gtest/xcode/Scripts/runtests.sh b/thirdparty/protobuf-2.6.1/gtest/xcode/Scripts/runtests.sh new file mode 100644 index 00000000..3fc229f1 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/xcode/Scripts/runtests.sh @@ -0,0 +1,65 @@ +#!/bin/bash +# +# Copyright 2008, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Executes the samples and tests for the Google Test Framework. + +# Help the dynamic linker find the path to the libraries. +export DYLD_FRAMEWORK_PATH=$BUILT_PRODUCTS_DIR +export DYLD_LIBRARY_PATH=$BUILT_PRODUCTS_DIR + +# Create some executables. +test_executables=("$BUILT_PRODUCTS_DIR/gtest_unittest-framework" + "$BUILT_PRODUCTS_DIR/gtest_unittest" + "$BUILT_PRODUCTS_DIR/sample1_unittest-framework" + "$BUILT_PRODUCTS_DIR/sample1_unittest-static") + +# Now execute each one in turn keeping track of how many succeeded and failed. +succeeded=0 +failed=0 +failed_list=() +for test in ${test_executables[*]}; do + "$test" + result=$? + if [ $result -eq 0 ]; then + succeeded=$(( $succeeded + 1 )) + else + failed=$(( failed + 1 )) + failed_list="$failed_list $test" + fi +done + +# Report the successes and failures to the console. +echo "Tests complete with $succeeded successes and $failed failures." +if [ $failed -ne 0 ]; then + echo "The following tests failed:" + echo $failed_list +fi +exit $failed diff --git a/thirdparty/protobuf-2.6.1/gtest/xcode/Scripts/versiongenerate.py b/thirdparty/protobuf-2.6.1/gtest/xcode/Scripts/versiongenerate.py new file mode 100644 index 00000000..81de8c96 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/xcode/Scripts/versiongenerate.py @@ -0,0 +1,100 @@ +#!/usr/bin/env python +# +# Copyright 2008, Google Inc. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +"""A script to prepare version informtion for use the gtest Info.plist file. + + This script extracts the version information from the configure.ac file and + uses it to generate a header file containing the same information. The + #defines in this header file will be included in during the generation of + the Info.plist of the framework, giving the correct value to the version + shown in the Finder. + + This script makes the following assumptions (these are faults of the script, + not problems with the Autoconf): + 1. The AC_INIT macro will be contained within the first 1024 characters + of configure.ac + 2. The version string will be 3 integers separated by periods and will be + surrounded by squre brackets, "[" and "]" (e.g. [1.0.1]). The first + segment represents the major version, the second represents the minor + version and the third represents the fix version. + 3. No ")" character exists between the opening "(" and closing ")" of + AC_INIT, including in comments and character strings. +""" + +import sys +import re + +# Read the command line argument (the output directory for Version.h) +if (len(sys.argv) < 3): + print "Usage: versiongenerate.py input_dir output_dir" + sys.exit(1) +else: + input_dir = sys.argv[1] + output_dir = sys.argv[2] + +# Read the first 1024 characters of the configure.ac file +config_file = open("%s/configure.ac" % input_dir, 'r') +buffer_size = 1024 +opening_string = config_file.read(buffer_size) +config_file.close() + +# Extract the version string from the AC_INIT macro +# The following init_expression means: +# Extract three integers separated by periods and surrounded by squre +# brackets(e.g. "[1.0.1]") between "AC_INIT(" and ")". Do not be greedy +# (*? is the non-greedy flag) since that would pull in everything between +# the first "(" and the last ")" in the file. +version_expression = re.compile(r"AC_INIT\(.*?\[(\d+)\.(\d+)\.(\d+)\].*?\)", + re.DOTALL) +version_values = version_expression.search(opening_string) +major_version = version_values.group(1) +minor_version = version_values.group(2) +fix_version = version_values.group(3) + +# Write the version information to a header file to be included in the +# Info.plist file. +file_data = """// +// DO NOT MODIFY THIS FILE (but you can delete it) +// +// This file is autogenerated by the versiongenerate.py script. This script +// is executed in a "Run Script" build phase when creating gtest.framework. This +// header file is not used during compilation of C-source. Rather, it simply +// defines some version strings for substitution in the Info.plist. Because of +// this, we are not not restricted to C-syntax nor are we using include guards. +// + +#define GTEST_VERSIONINFO_SHORT %s.%s +#define GTEST_VERSIONINFO_LONG %s.%s.%s + +""" % (major_version, minor_version, major_version, minor_version, fix_version) +version_file = open("%s/Version.h" % output_dir, 'w') +version_file.write(file_data) +version_file.close() diff --git a/thirdparty/protobuf-2.6.1/gtest/xcode/gtest.xcodeproj/project.pbxproj b/thirdparty/protobuf-2.6.1/gtest/xcode/gtest.xcodeproj/project.pbxproj new file mode 100644 index 00000000..da6455b5 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/gtest/xcode/gtest.xcodeproj/project.pbxproj @@ -0,0 +1,1084 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 42; + objects = { + +/* Begin PBXAggregateTarget section */ + 3B238F5F0E828B5400846E11 /* Check */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 3B238FA30E828BB600846E11 /* Build configuration list for PBXAggregateTarget "Check" */; + buildPhases = ( + 3B238F5E0E828B5400846E11 /* ShellScript */, + ); + dependencies = ( + 40899F9D0FFA740F000B29AE /* PBXTargetDependency */, + 40C849F7101A43440083642A /* PBXTargetDependency */, + 4089A0980FFAD34A000B29AE /* PBXTargetDependency */, + 40C849F9101A43490083642A /* PBXTargetDependency */, + ); + name = Check; + productName = Check; + }; + 40C44ADC0E3798F4008FCC51 /* Version Info */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 40C44AE40E379905008FCC51 /* Build configuration list for PBXAggregateTarget "Version Info" */; + buildPhases = ( + 40C44ADB0E3798F4008FCC51 /* Generate Version.h */, + ); + comments = "The generation of Version.h must be performed in its own target. Since the Info.plist is preprocessed before any of the other build phases in gtest, the Version.h file would not be ready if included as a build phase of that target."; + dependencies = ( + ); + name = "Version Info"; + productName = Version.h; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 224A12A30E9EADCC00BD17FD /* gtest-test-part.h in Headers */ = {isa = PBXBuildFile; fileRef = 224A12A20E9EADCC00BD17FD /* gtest-test-part.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3BF6F2A00E79B5AD000F2EEE /* gtest-type-util.h in Copy Headers Internal */ = {isa = PBXBuildFile; fileRef = 3BF6F29F0E79B5AD000F2EEE /* gtest-type-util.h */; }; + 3BF6F2A50E79B616000F2EEE /* gtest-typed-test.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BF6F2A40E79B616000F2EEE /* gtest-typed-test.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 404884380E2F799B00CF7658 /* gtest-death-test.h in Headers */ = {isa = PBXBuildFile; fileRef = 404883DB0E2F799B00CF7658 /* gtest-death-test.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 404884390E2F799B00CF7658 /* gtest-message.h in Headers */ = {isa = PBXBuildFile; fileRef = 404883DC0E2F799B00CF7658 /* gtest-message.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4048843A0E2F799B00CF7658 /* gtest-spi.h in Headers */ = {isa = PBXBuildFile; fileRef = 404883DD0E2F799B00CF7658 /* gtest-spi.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4048843B0E2F799B00CF7658 /* gtest.h in Headers */ = {isa = PBXBuildFile; fileRef = 404883DE0E2F799B00CF7658 /* gtest.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4048843C0E2F799B00CF7658 /* gtest_pred_impl.h in Headers */ = {isa = PBXBuildFile; fileRef = 404883DF0E2F799B00CF7658 /* gtest_pred_impl.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4048843D0E2F799B00CF7658 /* gtest_prod.h in Headers */ = {isa = PBXBuildFile; fileRef = 404883E00E2F799B00CF7658 /* gtest_prod.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 404884500E2F799B00CF7658 /* README in Resources */ = {isa = PBXBuildFile; fileRef = 404883F60E2F799B00CF7658 /* README */; }; + 404884A00E2F7BE600CF7658 /* gtest-death-test-internal.h in Copy Headers Internal */ = {isa = PBXBuildFile; fileRef = 404883E20E2F799B00CF7658 /* gtest-death-test-internal.h */; }; + 404884A10E2F7BE600CF7658 /* gtest-filepath.h in Copy Headers Internal */ = {isa = PBXBuildFile; fileRef = 404883E30E2F799B00CF7658 /* gtest-filepath.h */; }; + 404884A20E2F7BE600CF7658 /* gtest-internal.h in Copy Headers Internal */ = {isa = PBXBuildFile; fileRef = 404883E40E2F799B00CF7658 /* gtest-internal.h */; }; + 404884A30E2F7BE600CF7658 /* gtest-port.h in Copy Headers Internal */ = {isa = PBXBuildFile; fileRef = 404883E50E2F799B00CF7658 /* gtest-port.h */; }; + 404884A40E2F7BE600CF7658 /* gtest-string.h in Copy Headers Internal */ = {isa = PBXBuildFile; fileRef = 404883E60E2F799B00CF7658 /* gtest-string.h */; }; + 404884AC0E2F7CD900CF7658 /* CHANGES in Resources */ = {isa = PBXBuildFile; fileRef = 404884A90E2F7CD900CF7658 /* CHANGES */; }; + 404884AD0E2F7CD900CF7658 /* CONTRIBUTORS in Resources */ = {isa = PBXBuildFile; fileRef = 404884AA0E2F7CD900CF7658 /* CONTRIBUTORS */; }; + 404884AE0E2F7CD900CF7658 /* LICENSE in Resources */ = {isa = PBXBuildFile; fileRef = 404884AB0E2F7CD900CF7658 /* LICENSE */; }; + 40899F3A0FFA70D4000B29AE /* gtest-all.cc in Sources */ = {isa = PBXBuildFile; fileRef = 224A12A10E9EADA700BD17FD /* gtest-all.cc */; }; + 40899F500FFA7281000B29AE /* gtest-tuple.h in Copy Headers Internal */ = {isa = PBXBuildFile; fileRef = 40899F4D0FFA7271000B29AE /* gtest-tuple.h */; }; + 40899F530FFA72A0000B29AE /* gtest_unittest.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3B238C120E7FE13C00846E11 /* gtest_unittest.cc */; }; + 4089A0440FFAD1BE000B29AE /* sample1.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4089A02C0FFACF7F000B29AE /* sample1.cc */; }; + 4089A0460FFAD1BE000B29AE /* sample1_unittest.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4089A02E0FFACF7F000B29AE /* sample1_unittest.cc */; }; + 40C848FF101A21150083642A /* gtest-all.cc in Sources */ = {isa = PBXBuildFile; fileRef = 224A12A10E9EADA700BD17FD /* gtest-all.cc */; }; + 40C84915101A21DF0083642A /* gtest_main.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4048840D0E2F799B00CF7658 /* gtest_main.cc */; }; + 40C84916101A235B0083642A /* libgtest_main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 40C8490B101A217E0083642A /* libgtest_main.a */; }; + 40C84921101A23AD0083642A /* libgtest_main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 40C8490B101A217E0083642A /* libgtest_main.a */; }; + 40C84978101A36540083642A /* libgtest_main.a in Resources */ = {isa = PBXBuildFile; fileRef = 40C8490B101A217E0083642A /* libgtest_main.a */; }; + 40C84980101A36850083642A /* gtest_unittest.cc in Sources */ = {isa = PBXBuildFile; fileRef = 3B238C120E7FE13C00846E11 /* gtest_unittest.cc */; }; + 40C84982101A36850083642A /* libgtest.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 40C848FA101A209C0083642A /* libgtest.a */; }; + 40C84983101A36850083642A /* libgtest_main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 40C8490B101A217E0083642A /* libgtest_main.a */; }; + 40C8498F101A36A60083642A /* sample1.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4089A02C0FFACF7F000B29AE /* sample1.cc */; }; + 40C84990101A36A60083642A /* sample1_unittest.cc in Sources */ = {isa = PBXBuildFile; fileRef = 4089A02E0FFACF7F000B29AE /* sample1_unittest.cc */; }; + 40C84992101A36A60083642A /* libgtest.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 40C848FA101A209C0083642A /* libgtest.a */; }; + 40C84993101A36A60083642A /* libgtest_main.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 40C8490B101A217E0083642A /* libgtest_main.a */; }; + 40C849A2101A37050083642A /* gtest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4539C8FF0EC27F6400A70F4C /* gtest.framework */; }; + 40C849A4101A37150083642A /* gtest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4539C8FF0EC27F6400A70F4C /* gtest.framework */; }; + 4539C9340EC280AE00A70F4C /* gtest-param-test.h in Headers */ = {isa = PBXBuildFile; fileRef = 4539C9330EC280AE00A70F4C /* gtest-param-test.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4539C9380EC280E200A70F4C /* gtest-linked_ptr.h in Copy Headers Internal */ = {isa = PBXBuildFile; fileRef = 4539C9350EC280E200A70F4C /* gtest-linked_ptr.h */; }; + 4539C9390EC280E200A70F4C /* gtest-param-util-generated.h in Copy Headers Internal */ = {isa = PBXBuildFile; fileRef = 4539C9360EC280E200A70F4C /* gtest-param-util-generated.h */; }; + 4539C93A0EC280E200A70F4C /* gtest-param-util.h in Copy Headers Internal */ = {isa = PBXBuildFile; fileRef = 4539C9370EC280E200A70F4C /* gtest-param-util.h */; }; + 4567C8181264FF71007740BE /* gtest-printers.h in Headers */ = {isa = PBXBuildFile; fileRef = 4567C8171264FF71007740BE /* gtest-printers.h */; settings = {ATTRIBUTES = (Public, ); }; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 40899F9C0FFA740F000B29AE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 40899F420FFA7184000B29AE; + remoteInfo = gtest_unittest; + }; + 4089A0970FFAD34A000B29AE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4089A0120FFACEFC000B29AE; + remoteInfo = sample1_unittest; + }; + 408BEC0F1046CFE900DEF522 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 40C848F9101A209C0083642A; + remoteInfo = "gtest-static"; + }; + 40C44AE50E379922008FCC51 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 40C44ADC0E3798F4008FCC51; + remoteInfo = Version.h; + }; + 40C8497C101A36850083642A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 40C848F9101A209C0083642A; + remoteInfo = "gtest-static"; + }; + 40C8497E101A36850083642A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 40C8490A101A217E0083642A; + remoteInfo = "gtest_main-static"; + }; + 40C8498B101A36A60083642A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 40C848F9101A209C0083642A; + remoteInfo = "gtest-static"; + }; + 40C8498D101A36A60083642A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 40C8490A101A217E0083642A; + remoteInfo = "gtest_main-static"; + }; + 40C8499B101A36DC0083642A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 40C8490A101A217E0083642A; + remoteInfo = "gtest_main-static"; + }; + 40C8499D101A36E50083642A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8D07F2BC0486CC7A007CD1D0; + remoteInfo = "gtest-framework"; + }; + 40C8499F101A36F10083642A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8D07F2BC0486CC7A007CD1D0; + remoteInfo = "gtest-framework"; + }; + 40C849F6101A43440083642A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 40C8497A101A36850083642A; + remoteInfo = "gtest_unittest-static"; + }; + 40C849F8101A43490083642A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 40C84989101A36A60083642A; + remoteInfo = "sample1_unittest-static"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 404884A50E2F7C0400CF7658 /* Copy Headers Internal */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = Headers/internal; + dstSubfolderSpec = 6; + files = ( + 404884A00E2F7BE600CF7658 /* gtest-death-test-internal.h in Copy Headers Internal */, + 404884A10E2F7BE600CF7658 /* gtest-filepath.h in Copy Headers Internal */, + 404884A20E2F7BE600CF7658 /* gtest-internal.h in Copy Headers Internal */, + 4539C9380EC280E200A70F4C /* gtest-linked_ptr.h in Copy Headers Internal */, + 4539C9390EC280E200A70F4C /* gtest-param-util-generated.h in Copy Headers Internal */, + 4539C93A0EC280E200A70F4C /* gtest-param-util.h in Copy Headers Internal */, + 404884A30E2F7BE600CF7658 /* gtest-port.h in Copy Headers Internal */, + 404884A40E2F7BE600CF7658 /* gtest-string.h in Copy Headers Internal */, + 40899F500FFA7281000B29AE /* gtest-tuple.h in Copy Headers Internal */, + 3BF6F2A00E79B5AD000F2EEE /* gtest-type-util.h in Copy Headers Internal */, + ); + name = "Copy Headers Internal"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 224A12A10E9EADA700BD17FD /* gtest-all.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = "gtest-all.cc"; sourceTree = ""; }; + 224A12A20E9EADCC00BD17FD /* gtest-test-part.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = "gtest-test-part.h"; sourceTree = ""; }; + 3B238C120E7FE13C00846E11 /* gtest_unittest.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gtest_unittest.cc; sourceTree = ""; }; + 3B87D2100E96B92E000D1852 /* runtests.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = runtests.sh; sourceTree = ""; }; + 3BF6F29F0E79B5AD000F2EEE /* gtest-type-util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-type-util.h"; sourceTree = ""; }; + 3BF6F2A40E79B616000F2EEE /* gtest-typed-test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-typed-test.h"; sourceTree = ""; }; + 403EE37C0E377822004BD1E2 /* versiongenerate.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = versiongenerate.py; sourceTree = ""; }; + 404883DB0E2F799B00CF7658 /* gtest-death-test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-death-test.h"; sourceTree = ""; }; + 404883DC0E2F799B00CF7658 /* gtest-message.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-message.h"; sourceTree = ""; }; + 404883DD0E2F799B00CF7658 /* gtest-spi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-spi.h"; sourceTree = ""; }; + 404883DE0E2F799B00CF7658 /* gtest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gtest.h; sourceTree = ""; }; + 404883DF0E2F799B00CF7658 /* gtest_pred_impl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gtest_pred_impl.h; sourceTree = ""; }; + 404883E00E2F799B00CF7658 /* gtest_prod.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gtest_prod.h; sourceTree = ""; }; + 404883E20E2F799B00CF7658 /* gtest-death-test-internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-death-test-internal.h"; sourceTree = ""; }; + 404883E30E2F799B00CF7658 /* gtest-filepath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-filepath.h"; sourceTree = ""; }; + 404883E40E2F799B00CF7658 /* gtest-internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-internal.h"; sourceTree = ""; }; + 404883E50E2F799B00CF7658 /* gtest-port.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-port.h"; sourceTree = ""; }; + 404883E60E2F799B00CF7658 /* gtest-string.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-string.h"; sourceTree = ""; }; + 404883F60E2F799B00CF7658 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = README; path = ../README; sourceTree = SOURCE_ROOT; }; + 4048840D0E2F799B00CF7658 /* gtest_main.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = gtest_main.cc; sourceTree = ""; }; + 404884A90E2F7CD900CF7658 /* CHANGES */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = CHANGES; path = ../CHANGES; sourceTree = SOURCE_ROOT; }; + 404884AA0E2F7CD900CF7658 /* CONTRIBUTORS */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = CONTRIBUTORS; path = ../CONTRIBUTORS; sourceTree = SOURCE_ROOT; }; + 404884AB0E2F7CD900CF7658 /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = SOURCE_ROOT; }; + 40899F430FFA7184000B29AE /* gtest_unittest-framework */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "gtest_unittest-framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 40899F4D0FFA7271000B29AE /* gtest-tuple.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-tuple.h"; sourceTree = ""; }; + 40899FB30FFA7567000B29AE /* StaticLibraryTarget.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = StaticLibraryTarget.xcconfig; sourceTree = ""; }; + 4089A0130FFACEFC000B29AE /* sample1_unittest-framework */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "sample1_unittest-framework"; sourceTree = BUILT_PRODUCTS_DIR; }; + 4089A02C0FFACF7F000B29AE /* sample1.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sample1.cc; sourceTree = ""; }; + 4089A02D0FFACF7F000B29AE /* sample1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sample1.h; sourceTree = ""; }; + 4089A02E0FFACF7F000B29AE /* sample1_unittest.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sample1_unittest.cc; sourceTree = ""; }; + 40C848FA101A209C0083642A /* libgtest.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libgtest.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 40C8490B101A217E0083642A /* libgtest_main.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libgtest_main.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 40C84987101A36850083642A /* gtest_unittest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = gtest_unittest; sourceTree = BUILT_PRODUCTS_DIR; }; + 40C84997101A36A60083642A /* sample1_unittest-static */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "sample1_unittest-static"; sourceTree = BUILT_PRODUCTS_DIR; }; + 40D4CDF10E30E07400294801 /* DebugProject.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = DebugProject.xcconfig; sourceTree = ""; }; + 40D4CDF20E30E07400294801 /* FrameworkTarget.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = FrameworkTarget.xcconfig; sourceTree = ""; }; + 40D4CDF30E30E07400294801 /* General.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = General.xcconfig; sourceTree = ""; }; + 40D4CDF40E30E07400294801 /* ReleaseProject.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = ReleaseProject.xcconfig; sourceTree = ""; }; + 40D4CF510E30F5E200294801 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 4539C8FF0EC27F6400A70F4C /* gtest.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = gtest.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 4539C9330EC280AE00A70F4C /* gtest-param-test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-param-test.h"; sourceTree = ""; }; + 4539C9350EC280E200A70F4C /* gtest-linked_ptr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-linked_ptr.h"; sourceTree = ""; }; + 4539C9360EC280E200A70F4C /* gtest-param-util-generated.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-param-util-generated.h"; sourceTree = ""; }; + 4539C9370EC280E200A70F4C /* gtest-param-util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-param-util.h"; sourceTree = ""; }; + 4567C8171264FF71007740BE /* gtest-printers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gtest-printers.h"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 40899F410FFA7184000B29AE /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 40C849A4101A37150083642A /* gtest.framework in Frameworks */, + 40C84916101A235B0083642A /* libgtest_main.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4089A0110FFACEFC000B29AE /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 40C849A2101A37050083642A /* gtest.framework in Frameworks */, + 40C84921101A23AD0083642A /* libgtest_main.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 40C84981101A36850083642A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 40C84982101A36850083642A /* libgtest.a in Frameworks */, + 40C84983101A36850083642A /* libgtest_main.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 40C84991101A36A60083642A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 40C84992101A36A60083642A /* libgtest.a in Frameworks */, + 40C84993101A36A60083642A /* libgtest_main.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 034768DDFF38A45A11DB9C8B /* Products */ = { + isa = PBXGroup; + children = ( + 4539C8FF0EC27F6400A70F4C /* gtest.framework */, + 40C848FA101A209C0083642A /* libgtest.a */, + 40C8490B101A217E0083642A /* libgtest_main.a */, + 40899F430FFA7184000B29AE /* gtest_unittest-framework */, + 40C84987101A36850083642A /* gtest_unittest */, + 4089A0130FFACEFC000B29AE /* sample1_unittest-framework */, + 40C84997101A36A60083642A /* sample1_unittest-static */, + ); + name = Products; + sourceTree = ""; + }; + 0867D691FE84028FC02AAC07 /* gtest */ = { + isa = PBXGroup; + children = ( + 40D4CDF00E30E07400294801 /* Config */, + 08FB77ACFE841707C02AAC07 /* Source */, + 40D4CF4E0E30F5E200294801 /* Resources */, + 403EE37B0E377822004BD1E2 /* Scripts */, + 034768DDFF38A45A11DB9C8B /* Products */, + ); + name = gtest; + sourceTree = ""; + }; + 08FB77ACFE841707C02AAC07 /* Source */ = { + isa = PBXGroup; + children = ( + 404884A90E2F7CD900CF7658 /* CHANGES */, + 404884AA0E2F7CD900CF7658 /* CONTRIBUTORS */, + 404884AB0E2F7CD900CF7658 /* LICENSE */, + 404883F60E2F799B00CF7658 /* README */, + 404883D90E2F799B00CF7658 /* include */, + 4089A02F0FFACF84000B29AE /* samples */, + 404884070E2F799B00CF7658 /* src */, + 3B238BF00E7FE13B00846E11 /* test */, + ); + name = Source; + sourceTree = ""; + }; + 3B238BF00E7FE13B00846E11 /* test */ = { + isa = PBXGroup; + children = ( + 3B238C120E7FE13C00846E11 /* gtest_unittest.cc */, + ); + name = test; + path = ../test; + sourceTree = SOURCE_ROOT; + }; + 403EE37B0E377822004BD1E2 /* Scripts */ = { + isa = PBXGroup; + children = ( + 403EE37C0E377822004BD1E2 /* versiongenerate.py */, + 3B87D2100E96B92E000D1852 /* runtests.sh */, + ); + path = Scripts; + sourceTree = ""; + }; + 404883D90E2F799B00CF7658 /* include */ = { + isa = PBXGroup; + children = ( + 404883DA0E2F799B00CF7658 /* gtest */, + ); + name = include; + path = ../include; + sourceTree = SOURCE_ROOT; + }; + 404883DA0E2F799B00CF7658 /* gtest */ = { + isa = PBXGroup; + children = ( + 404883E10E2F799B00CF7658 /* internal */, + 224A12A20E9EADCC00BD17FD /* gtest-test-part.h */, + 404883DB0E2F799B00CF7658 /* gtest-death-test.h */, + 404883DC0E2F799B00CF7658 /* gtest-message.h */, + 4539C9330EC280AE00A70F4C /* gtest-param-test.h */, + 4567C8171264FF71007740BE /* gtest-printers.h */, + 404883DD0E2F799B00CF7658 /* gtest-spi.h */, + 404883DE0E2F799B00CF7658 /* gtest.h */, + 404883DF0E2F799B00CF7658 /* gtest_pred_impl.h */, + 404883E00E2F799B00CF7658 /* gtest_prod.h */, + 3BF6F2A40E79B616000F2EEE /* gtest-typed-test.h */, + ); + path = gtest; + sourceTree = ""; + }; + 404883E10E2F799B00CF7658 /* internal */ = { + isa = PBXGroup; + children = ( + 404883E20E2F799B00CF7658 /* gtest-death-test-internal.h */, + 404883E30E2F799B00CF7658 /* gtest-filepath.h */, + 404883E40E2F799B00CF7658 /* gtest-internal.h */, + 4539C9350EC280E200A70F4C /* gtest-linked_ptr.h */, + 4539C9360EC280E200A70F4C /* gtest-param-util-generated.h */, + 4539C9370EC280E200A70F4C /* gtest-param-util.h */, + 404883E50E2F799B00CF7658 /* gtest-port.h */, + 404883E60E2F799B00CF7658 /* gtest-string.h */, + 40899F4D0FFA7271000B29AE /* gtest-tuple.h */, + 3BF6F29F0E79B5AD000F2EEE /* gtest-type-util.h */, + ); + path = internal; + sourceTree = ""; + }; + 404884070E2F799B00CF7658 /* src */ = { + isa = PBXGroup; + children = ( + 224A12A10E9EADA700BD17FD /* gtest-all.cc */, + 4048840D0E2F799B00CF7658 /* gtest_main.cc */, + ); + name = src; + path = ../src; + sourceTree = SOURCE_ROOT; + }; + 4089A02F0FFACF84000B29AE /* samples */ = { + isa = PBXGroup; + children = ( + 4089A02C0FFACF7F000B29AE /* sample1.cc */, + 4089A02D0FFACF7F000B29AE /* sample1.h */, + 4089A02E0FFACF7F000B29AE /* sample1_unittest.cc */, + ); + name = samples; + path = ../samples; + sourceTree = SOURCE_ROOT; + }; + 40D4CDF00E30E07400294801 /* Config */ = { + isa = PBXGroup; + children = ( + 40D4CDF10E30E07400294801 /* DebugProject.xcconfig */, + 40D4CDF20E30E07400294801 /* FrameworkTarget.xcconfig */, + 40D4CDF30E30E07400294801 /* General.xcconfig */, + 40D4CDF40E30E07400294801 /* ReleaseProject.xcconfig */, + 40899FB30FFA7567000B29AE /* StaticLibraryTarget.xcconfig */, + ); + path = Config; + sourceTree = ""; + }; + 40D4CF4E0E30F5E200294801 /* Resources */ = { + isa = PBXGroup; + children = ( + 40D4CF510E30F5E200294801 /* Info.plist */, + ); + path = Resources; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 8D07F2BD0486CC7A007CD1D0 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 404884380E2F799B00CF7658 /* gtest-death-test.h in Headers */, + 404884390E2F799B00CF7658 /* gtest-message.h in Headers */, + 4539C9340EC280AE00A70F4C /* gtest-param-test.h in Headers */, + 4567C8181264FF71007740BE /* gtest-printers.h in Headers */, + 3BF6F2A50E79B616000F2EEE /* gtest-typed-test.h in Headers */, + 4048843A0E2F799B00CF7658 /* gtest-spi.h in Headers */, + 4048843B0E2F799B00CF7658 /* gtest.h in Headers */, + 4048843C0E2F799B00CF7658 /* gtest_pred_impl.h in Headers */, + 4048843D0E2F799B00CF7658 /* gtest_prod.h in Headers */, + 224A12A30E9EADCC00BD17FD /* gtest-test-part.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 40899F420FFA7184000B29AE /* gtest_unittest-framework */ = { + isa = PBXNativeTarget; + buildConfigurationList = 40899F4A0FFA71BC000B29AE /* Build configuration list for PBXNativeTarget "gtest_unittest-framework" */; + buildPhases = ( + 40899F400FFA7184000B29AE /* Sources */, + 40899F410FFA7184000B29AE /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 40C849A0101A36F10083642A /* PBXTargetDependency */, + ); + name = "gtest_unittest-framework"; + productName = gtest_unittest; + productReference = 40899F430FFA7184000B29AE /* gtest_unittest-framework */; + productType = "com.apple.product-type.tool"; + }; + 4089A0120FFACEFC000B29AE /* sample1_unittest-framework */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4089A0240FFACF01000B29AE /* Build configuration list for PBXNativeTarget "sample1_unittest-framework" */; + buildPhases = ( + 4089A0100FFACEFC000B29AE /* Sources */, + 4089A0110FFACEFC000B29AE /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 40C8499E101A36E50083642A /* PBXTargetDependency */, + ); + name = "sample1_unittest-framework"; + productName = sample1_unittest; + productReference = 4089A0130FFACEFC000B29AE /* sample1_unittest-framework */; + productType = "com.apple.product-type.tool"; + }; + 40C848F9101A209C0083642A /* gtest-static */ = { + isa = PBXNativeTarget; + buildConfigurationList = 40C84902101A212E0083642A /* Build configuration list for PBXNativeTarget "gtest-static" */; + buildPhases = ( + 40C848F7101A209C0083642A /* Sources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "gtest-static"; + productName = "gtest-static"; + productReference = 40C848FA101A209C0083642A /* libgtest.a */; + productType = "com.apple.product-type.library.static"; + }; + 40C8490A101A217E0083642A /* gtest_main-static */ = { + isa = PBXNativeTarget; + buildConfigurationList = 40C84912101A21D20083642A /* Build configuration list for PBXNativeTarget "gtest_main-static" */; + buildPhases = ( + 40C84908101A217E0083642A /* Sources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "gtest_main-static"; + productName = "gtest_main-static"; + productReference = 40C8490B101A217E0083642A /* libgtest_main.a */; + productType = "com.apple.product-type.library.static"; + }; + 40C8497A101A36850083642A /* gtest_unittest-static */ = { + isa = PBXNativeTarget; + buildConfigurationList = 40C84984101A36850083642A /* Build configuration list for PBXNativeTarget "gtest_unittest-static" */; + buildPhases = ( + 40C8497F101A36850083642A /* Sources */, + 40C84981101A36850083642A /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 40C8497B101A36850083642A /* PBXTargetDependency */, + 40C8497D101A36850083642A /* PBXTargetDependency */, + ); + name = "gtest_unittest-static"; + productName = gtest_unittest; + productReference = 40C84987101A36850083642A /* gtest_unittest */; + productType = "com.apple.product-type.tool"; + }; + 40C84989101A36A60083642A /* sample1_unittest-static */ = { + isa = PBXNativeTarget; + buildConfigurationList = 40C84994101A36A60083642A /* Build configuration list for PBXNativeTarget "sample1_unittest-static" */; + buildPhases = ( + 40C8498E101A36A60083642A /* Sources */, + 40C84991101A36A60083642A /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 40C8498A101A36A60083642A /* PBXTargetDependency */, + 40C8498C101A36A60083642A /* PBXTargetDependency */, + ); + name = "sample1_unittest-static"; + productName = sample1_unittest; + productReference = 40C84997101A36A60083642A /* sample1_unittest-static */; + productType = "com.apple.product-type.tool"; + }; + 8D07F2BC0486CC7A007CD1D0 /* gtest-framework */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4FADC24208B4156D00ABE55E /* Build configuration list for PBXNativeTarget "gtest-framework" */; + buildPhases = ( + 8D07F2C10486CC7A007CD1D0 /* Sources */, + 8D07F2BD0486CC7A007CD1D0 /* Headers */, + 404884A50E2F7C0400CF7658 /* Copy Headers Internal */, + 8D07F2BF0486CC7A007CD1D0 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 40C44AE60E379922008FCC51 /* PBXTargetDependency */, + 408BEC101046CFE900DEF522 /* PBXTargetDependency */, + 40C8499C101A36DC0083642A /* PBXTargetDependency */, + ); + name = "gtest-framework"; + productInstallPath = "$(HOME)/Library/Frameworks"; + productName = gtest; + productReference = 4539C8FF0EC27F6400A70F4C /* gtest.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 0867D690FE84028FC02AAC07 /* Project object */ = { + isa = PBXProject; + buildConfigurationList = 4FADC24608B4156D00ABE55E /* Build configuration list for PBXProject "gtest" */; + compatibilityVersion = "Xcode 2.4"; + hasScannedForEncodings = 1; + knownRegions = ( + English, + Japanese, + French, + German, + en, + ); + mainGroup = 0867D691FE84028FC02AAC07 /* gtest */; + productRefGroup = 034768DDFF38A45A11DB9C8B /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8D07F2BC0486CC7A007CD1D0 /* gtest-framework */, + 40C848F9101A209C0083642A /* gtest-static */, + 40C8490A101A217E0083642A /* gtest_main-static */, + 40899F420FFA7184000B29AE /* gtest_unittest-framework */, + 40C8497A101A36850083642A /* gtest_unittest-static */, + 4089A0120FFACEFC000B29AE /* sample1_unittest-framework */, + 40C84989101A36A60083642A /* sample1_unittest-static */, + 3B238F5F0E828B5400846E11 /* Check */, + 40C44ADC0E3798F4008FCC51 /* Version Info */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 8D07F2BF0486CC7A007CD1D0 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 404884500E2F799B00CF7658 /* README in Resources */, + 404884AC0E2F7CD900CF7658 /* CHANGES in Resources */, + 404884AD0E2F7CD900CF7658 /* CONTRIBUTORS in Resources */, + 404884AE0E2F7CD900CF7658 /* LICENSE in Resources */, + 40C84978101A36540083642A /* libgtest_main.a in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3B238F5E0E828B5400846E11 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# Remember, this \"Run Script\" build phase will be executed from $SRCROOT\n/bin/bash Scripts/runtests.sh"; + }; + 40C44ADB0E3798F4008FCC51 /* Generate Version.h */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(SRCROOT)/Scripts/versiongenerate.py", + "$(SRCROOT)/../configure.ac", + ); + name = "Generate Version.h"; + outputPaths = ( + "$(PROJECT_TEMP_DIR)/Version.h", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# Remember, this \"Run Script\" build phase will be executed from $SRCROOT\n/usr/bin/python Scripts/versiongenerate.py ../ $PROJECT_TEMP_DIR"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 40899F400FFA7184000B29AE /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 40899F530FFA72A0000B29AE /* gtest_unittest.cc in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4089A0100FFACEFC000B29AE /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4089A0440FFAD1BE000B29AE /* sample1.cc in Sources */, + 4089A0460FFAD1BE000B29AE /* sample1_unittest.cc in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 40C848F7101A209C0083642A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 40C848FF101A21150083642A /* gtest-all.cc in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 40C84908101A217E0083642A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 40C84915101A21DF0083642A /* gtest_main.cc in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 40C8497F101A36850083642A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 40C84980101A36850083642A /* gtest_unittest.cc in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 40C8498E101A36A60083642A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 40C8498F101A36A60083642A /* sample1.cc in Sources */, + 40C84990101A36A60083642A /* sample1_unittest.cc in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8D07F2C10486CC7A007CD1D0 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 40899F3A0FFA70D4000B29AE /* gtest-all.cc in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 40899F9D0FFA740F000B29AE /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 40899F420FFA7184000B29AE /* gtest_unittest-framework */; + targetProxy = 40899F9C0FFA740F000B29AE /* PBXContainerItemProxy */; + }; + 4089A0980FFAD34A000B29AE /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 4089A0120FFACEFC000B29AE /* sample1_unittest-framework */; + targetProxy = 4089A0970FFAD34A000B29AE /* PBXContainerItemProxy */; + }; + 408BEC101046CFE900DEF522 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 40C848F9101A209C0083642A /* gtest-static */; + targetProxy = 408BEC0F1046CFE900DEF522 /* PBXContainerItemProxy */; + }; + 40C44AE60E379922008FCC51 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 40C44ADC0E3798F4008FCC51 /* Version Info */; + targetProxy = 40C44AE50E379922008FCC51 /* PBXContainerItemProxy */; + }; + 40C8497B101A36850083642A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 40C848F9101A209C0083642A /* gtest-static */; + targetProxy = 40C8497C101A36850083642A /* PBXContainerItemProxy */; + }; + 40C8497D101A36850083642A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 40C8490A101A217E0083642A /* gtest_main-static */; + targetProxy = 40C8497E101A36850083642A /* PBXContainerItemProxy */; + }; + 40C8498A101A36A60083642A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 40C848F9101A209C0083642A /* gtest-static */; + targetProxy = 40C8498B101A36A60083642A /* PBXContainerItemProxy */; + }; + 40C8498C101A36A60083642A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 40C8490A101A217E0083642A /* gtest_main-static */; + targetProxy = 40C8498D101A36A60083642A /* PBXContainerItemProxy */; + }; + 40C8499C101A36DC0083642A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 40C8490A101A217E0083642A /* gtest_main-static */; + targetProxy = 40C8499B101A36DC0083642A /* PBXContainerItemProxy */; + }; + 40C8499E101A36E50083642A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 8D07F2BC0486CC7A007CD1D0 /* gtest-framework */; + targetProxy = 40C8499D101A36E50083642A /* PBXContainerItemProxy */; + }; + 40C849A0101A36F10083642A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 8D07F2BC0486CC7A007CD1D0 /* gtest-framework */; + targetProxy = 40C8499F101A36F10083642A /* PBXContainerItemProxy */; + }; + 40C849F7101A43440083642A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 40C8497A101A36850083642A /* gtest_unittest-static */; + targetProxy = 40C849F6101A43440083642A /* PBXContainerItemProxy */; + }; + 40C849F9101A43490083642A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 40C84989101A36A60083642A /* sample1_unittest-static */; + targetProxy = 40C849F8101A43490083642A /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 3B238F600E828B5400846E11 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + PRODUCT_NAME = Check; + }; + name = Debug; + }; + 3B238F610E828B5400846E11 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_ENABLE_FIX_AND_CONTINUE = NO; + PRODUCT_NAME = Check; + ZERO_LINK = NO; + }; + name = Release; + }; + 40899F450FFA7185000B29AE /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + HEADER_SEARCH_PATHS = ../; + PRODUCT_NAME = "gtest_unittest-framework"; + }; + name = Debug; + }; + 40899F460FFA7185000B29AE /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + HEADER_SEARCH_PATHS = ../; + PRODUCT_NAME = "gtest_unittest-framework"; + }; + name = Release; + }; + 4089A0150FFACEFD000B29AE /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "sample1_unittest-framework"; + }; + name = Debug; + }; + 4089A0160FFACEFD000B29AE /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "sample1_unittest-framework"; + }; + name = Release; + }; + 40C44ADF0E3798F4008FCC51 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = gtest; + TARGET_NAME = gtest; + }; + name = Debug; + }; + 40C44AE00E3798F4008FCC51 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = gtest; + TARGET_NAME = gtest; + }; + name = Release; + }; + 40C848FB101A209D0083642A /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 40899FB30FFA7567000B29AE /* StaticLibraryTarget.xcconfig */; + buildSettings = { + GCC_INLINES_ARE_PRIVATE_EXTERN = YES; + GCC_SYMBOLS_PRIVATE_EXTERN = YES; + HEADER_SEARCH_PATHS = ( + ../, + ../include/, + ); + PRODUCT_NAME = gtest; + }; + name = Debug; + }; + 40C848FC101A209D0083642A /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 40899FB30FFA7567000B29AE /* StaticLibraryTarget.xcconfig */; + buildSettings = { + GCC_INLINES_ARE_PRIVATE_EXTERN = YES; + GCC_SYMBOLS_PRIVATE_EXTERN = YES; + HEADER_SEARCH_PATHS = ( + ../, + ../include/, + ); + PRODUCT_NAME = gtest; + }; + name = Release; + }; + 40C8490E101A217F0083642A /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 40899FB30FFA7567000B29AE /* StaticLibraryTarget.xcconfig */; + buildSettings = { + HEADER_SEARCH_PATHS = ( + ../, + ../include/, + ); + PRODUCT_NAME = gtest_main; + }; + name = Debug; + }; + 40C8490F101A217F0083642A /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 40899FB30FFA7567000B29AE /* StaticLibraryTarget.xcconfig */; + buildSettings = { + HEADER_SEARCH_PATHS = ( + ../, + ../include/, + ); + PRODUCT_NAME = gtest_main; + }; + name = Release; + }; + 40C84985101A36850083642A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + HEADER_SEARCH_PATHS = ../; + PRODUCT_NAME = gtest_unittest; + }; + name = Debug; + }; + 40C84986101A36850083642A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + HEADER_SEARCH_PATHS = ../; + PRODUCT_NAME = gtest_unittest; + }; + name = Release; + }; + 40C84995101A36A60083642A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "sample1_unittest-static"; + }; + name = Debug; + }; + 40C84996101A36A60083642A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "sample1_unittest-static"; + }; + name = Release; + }; + 4FADC24308B4156D00ABE55E /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 40D4CDF20E30E07400294801 /* FrameworkTarget.xcconfig */; + buildSettings = { + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + HEADER_SEARCH_PATHS = ( + ../, + ../include/, + ); + INFOPLIST_FILE = Resources/Info.plist; + INFOPLIST_PREFIX_HEADER = "$(PROJECT_TEMP_DIR)/Version.h"; + INFOPLIST_PREPROCESS = YES; + PRODUCT_NAME = gtest; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 4FADC24408B4156D00ABE55E /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 40D4CDF20E30E07400294801 /* FrameworkTarget.xcconfig */; + buildSettings = { + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + HEADER_SEARCH_PATHS = ( + ../, + ../include/, + ); + INFOPLIST_FILE = Resources/Info.plist; + INFOPLIST_PREFIX_HEADER = "$(PROJECT_TEMP_DIR)/Version.h"; + INFOPLIST_PREPROCESS = YES; + PRODUCT_NAME = gtest; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; + 4FADC24708B4156D00ABE55E /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 40D4CDF10E30E07400294801 /* DebugProject.xcconfig */; + buildSettings = { + }; + name = Debug; + }; + 4FADC24808B4156D00ABE55E /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 40D4CDF40E30E07400294801 /* ReleaseProject.xcconfig */; + buildSettings = { + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 3B238FA30E828BB600846E11 /* Build configuration list for PBXAggregateTarget "Check" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3B238F600E828B5400846E11 /* Debug */, + 3B238F610E828B5400846E11 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 40899F4A0FFA71BC000B29AE /* Build configuration list for PBXNativeTarget "gtest_unittest-framework" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 40899F450FFA7185000B29AE /* Debug */, + 40899F460FFA7185000B29AE /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4089A0240FFACF01000B29AE /* Build configuration list for PBXNativeTarget "sample1_unittest-framework" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4089A0150FFACEFD000B29AE /* Debug */, + 4089A0160FFACEFD000B29AE /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 40C44AE40E379905008FCC51 /* Build configuration list for PBXAggregateTarget "Version Info" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 40C44ADF0E3798F4008FCC51 /* Debug */, + 40C44AE00E3798F4008FCC51 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 40C84902101A212E0083642A /* Build configuration list for PBXNativeTarget "gtest-static" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 40C848FB101A209D0083642A /* Debug */, + 40C848FC101A209D0083642A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 40C84912101A21D20083642A /* Build configuration list for PBXNativeTarget "gtest_main-static" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 40C8490E101A217F0083642A /* Debug */, + 40C8490F101A217F0083642A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 40C84984101A36850083642A /* Build configuration list for PBXNativeTarget "gtest_unittest-static" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 40C84985101A36850083642A /* Debug */, + 40C84986101A36850083642A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 40C84994101A36A60083642A /* Build configuration list for PBXNativeTarget "sample1_unittest-static" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 40C84995101A36A60083642A /* Debug */, + 40C84996101A36A60083642A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4FADC24208B4156D00ABE55E /* Build configuration list for PBXNativeTarget "gtest-framework" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4FADC24308B4156D00ABE55E /* Debug */, + 4FADC24408B4156D00ABE55E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 4FADC24608B4156D00ABE55E /* Build configuration list for PBXProject "gtest" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4FADC24708B4156D00ABE55E /* Debug */, + 4FADC24808B4156D00ABE55E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 0867D690FE84028FC02AAC07 /* Project object */; +} diff --git a/thirdparty/protobuf-2.6.1/install-sh b/thirdparty/protobuf-2.6.1/install-sh new file mode 100755 index 00000000..8175c640 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/install-sh @@ -0,0 +1,518 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2018-03-11.20; # UTC + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# 'make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. + +tab=' ' +nl=' +' +IFS=" $tab$nl" + +# Set DOITPROG to "echo" to test this script. + +doit=${DOITPROG-} +doit_exec=${doit:-exec} + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} + +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +chgrpcmd= +chmodcmd=$chmodprog +chowncmd= +mvcmd=$mvprog +rmcmd="$rmprog -f" +stripcmd= + +src= +dst= +dir_arg= +dst_arg= + +copy_on_change=false +is_target_a_directory=possibly + +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: + --help display this help and exit. + --version display version info and exit. + + -c (ignored) + -C install only if different (preserve the last data modification time) + -d create directories instead of installing files. + -g GROUP $chgrpprog installed files to GROUP. + -m MODE $chmodprog installed files to MODE. + -o USER $chownprog installed files to USER. + -s $stripprog installed files. + -t DIRECTORY install into DIRECTORY. + -T report an error if DSTFILE is a directory. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG + RMPROG STRIPPROG +" + +while test $# -ne 0; do + case $1 in + -c) ;; + + -C) copy_on_change=true;; + + -d) dir_arg=true;; + + -g) chgrpcmd="$chgrpprog $2" + shift;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + case $mode in + *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; + + -o) chowncmd="$chownprog $2" + shift;; + + -s) stripcmd=$stripprog;; + + -t) + is_target_a_directory=always + dst_arg=$2 + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + shift;; + + -T) is_target_a_directory=never;; + + --version) echo "$0 $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac + shift +done + +# We allow the use of options -d and -T together, by making -d +# take the precedence; this is for compatibility with GNU install. + +if test -n "$dir_arg"; then + if test -n "$dst_arg"; then + echo "$0: target directory not allowed when installing a directory." >&2 + exit 1 + fi +fi + +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call 'install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + if test $# -gt 1 || test "$is_target_a_directory" = always; then + if test ! -d "$dst_arg"; then + echo "$0: $dst_arg: Is not a directory." >&2 + exit 1 + fi + fi +fi + +if test -z "$dir_arg"; then + do_exit='(exit $ret); exit $ret' + trap "ret=129; $do_exit" 1 + trap "ret=130; $do_exit" 2 + trap "ret=141; $do_exit" 13 + trap "ret=143; $do_exit" 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names problematic for 'test' and other utilities. + case $src in + -* | [=\(\)!]) src=./$src;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dst_arg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + dst=$dst_arg + + # If destination is a directory, append the input filename. + if test -d "$dst"; then + if test "$is_target_a_directory" = never; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dstbase=`basename "$src"` + case $dst in + */) dst=$dst$dstbase;; + *) dst=$dst/$dstbase;; + esac + dstdir_status=0 + else + dstdir=`dirname "$dst"` + test -d "$dstdir" + dstdir_status=$? + fi + fi + + case $dstdir in + */) dstdirslash=$dstdir;; + *) dstdirslash=$dstdir/;; + esac + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + # Note that $RANDOM variable is not portable (e.g. dash); Use it + # here however when possible just to lower collision chance. + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + + trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 + + # Because "mkdir -p" follows existing symlinks and we likely work + # directly in world-writeable /tmp, make sure that the '$tmpdir' + # directory is successfully created first before we actually test + # 'mkdir -p' feature. + if (umask $mkdir_umask && + $mkdirprog $mkdir_mode "$tmpdir" && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + test_tmpdir="$tmpdir/a" + ls_ld_tmpdir=`ls -ld "$test_tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null + fi + trap '' 0;; + esac;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # The umask is ridiculous, or mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix='/';; + [-=\(\)!]*) prefix='./';; + *) prefix='';; + esac + + oIFS=$IFS + IFS=/ + set -f + set fnord $dstdir + shift + set +f + IFS=$oIFS + + prefixes= + + for d + do + test X"$d" = X && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=${dstdirslash}_inst.$$_ + rmtmp=${dstdirslash}_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + set +f && + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + then + rm -f "$dsttmp" + else + # Rename the file to the real destination. + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || + + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/thirdparty/protobuf-2.6.1/java/README.txt b/thirdparty/protobuf-2.6.1/java/README.txt new file mode 100644 index 00000000..57e26a96 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/README.txt @@ -0,0 +1,96 @@ +Protocol Buffers - Google's data interchange format +Copyright 2008 Google Inc. + +This directory contains the Java Protocol Buffers runtime library. + +Installation - With Maven +========================= + +The Protocol Buffers build is managed using Maven. If you would +rather build without Maven, see below. + +1) Install Apache Maven if you don't have it: + + http://maven.apache.org/ + +2) Build the C++ code, or obtain a binary distribution of protoc. If + you install a binary distribution, make sure that it is the same + version as this package. If in doubt, run: + + $ protoc --version + + You will need to place the protoc executable in ../src. (If you + built it yourself, it should already be there.) + +3) Run the tests: + + $ mvn test + + If some tests fail, this library may not work correctly on your + system. Continue at your own risk. + +4) Install the library into your Maven repository: + + $ mvn install + +5) If you do not use Maven to manage your own build, you can build a + .jar file to use: + + $ mvn package + + The .jar will be placed in the "target" directory. + +Installation - 'Lite' Version - With Maven +========================================== + +Building the 'lite' version of the Java Protocol Buffers library is +the same as building the full version, except that all commands are +run using the 'lite' profile. (see +http://maven.apache.org/guides/introduction/introduction-to-profiles.html) + +E.g. to install the lite version of the jar, you would run: + + $ mvn install -P lite + +The resulting artifact has the 'lite' classifier. To reference it +for dependency resolution, you would specify it as: + + + com.google.protobuf + protobuf-java + ${version} + lite + + +Installation - Without Maven +============================ + +If you would rather not install Maven to build the library, you may +follow these instructions instead. Note that these instructions skip +running unit tests. + +1) Build the C++ code, or obtain a binary distribution of protoc. If + you install a binary distribution, make sure that it is the same + version as this package. If in doubt, run: + + $ protoc --version + + If you built the C++ code without installing, the compiler binary + should be located in ../src. + +2) Invoke protoc to build DescriptorProtos.java: + + $ protoc --java_out=src/main/java -I../src \ + ../src/google/protobuf/descriptor.proto + +3) Compile the code in src/main/java using whatever means you prefer. + +4) Install the classes wherever you prefer. + +Usage +===== + +The complete documentation for Protocol Buffers is available via the +web at: + + https://developers.google.com/protocol-buffers/ diff --git a/thirdparty/protobuf-2.6.1/java/pom.xml b/thirdparty/protobuf-2.6.1/java/pom.xml new file mode 100644 index 00000000..2e68b0ee --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/pom.xml @@ -0,0 +1,217 @@ + + + 4.0.0 + + com.google + google + 1 + + com.google.protobuf + protobuf-java + 2.6.1 + bundle + Protocol Buffer Java API + + Protocol Buffers are a way of encoding structured data in an efficient yet + extensible format. + + 2008 + https://developers.google.com/protocol-buffers/ + + + New BSD license + http://www.opensource.org/licenses/bsd-license.php + repo + + + + https://github.com/google/protobuf + + scm:git:https://github.com/google/protobuf.git + + + + + junit + junit + 4.4 + test + + + org.easymock + easymock + 2.2 + test + + + org.easymock + easymockclassextension + 2.2.1 + test + + + + + + maven-compiler-plugin + + 1.5 + 1.5 + + + + maven-surefire-plugin + + + **/*Test.java + + + + + maven-antrun-plugin + + + generate-sources + generate-sources + + + + + + + + + + target/generated-sources + + + run + + + + generate-test-sources + generate-test-sources + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + target/generated-test-sources + + + run + + + + + + org.apache.felix + maven-bundle-plugin + true + + + https://developers.google.com/protocol-buffers/ + com.google.protobuf + com.google.protobuf;version=2.6.1 + + + + + + + + lite + + + + maven-compiler-plugin + + + **/AbstractMessageLite.java + **/ByteString.java + **/CodedInputStream.java + **/CodedOutputStream.java + **/ExtensionRegistryLite.java + **/FieldSet.java + **/GeneratedMessageLite.java + **/Internal.java + **/InvalidProtocolBufferException.java + **/LazyStringArrayList.java + **/LazyStringList.java + **/MessageLite.java + **/MessageLiteOrBuilder.java + **/SmallSortedMap.java + **/UninitializedMessageException.java + **/UnmodifiableLazyStringList.java + **/WireFormat.java + **/Parser.java + **/AbstractParser.java + **/BoundedByteString.java + **/LiteralByteString.java + **/RopeByteString.java + **/Utf8.java + **/LazyField.java + **/LazyFieldLite.java + **/ProtocolStringList.java + + + **/LiteTest.java + **/*Lite.java + + + + + maven-surefire-plugin + + + **/LiteTest.java + + + + + maven-jar-plugin + + lite + + + + + + + diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/AbstractMessage.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/AbstractMessage.java new file mode 100644 index 00000000..ae9d5e39 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/AbstractMessage.java @@ -0,0 +1,466 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import com.google.protobuf.Descriptors.FieldDescriptor; +import com.google.protobuf.Descriptors.OneofDescriptor; +import com.google.protobuf.Internal.EnumLite; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +/** + * A partial implementation of the {@link Message} interface which implements + * as many methods of that interface as possible in terms of other methods. + * + * @author kenton@google.com Kenton Varda + */ +public abstract class AbstractMessage extends AbstractMessageLite + implements Message { + public boolean isInitialized() { + return MessageReflection.isInitialized(this); + } + + + public List findInitializationErrors() { + return MessageReflection.findMissingFields(this); + } + + public String getInitializationErrorString() { + return MessageReflection.delimitWithCommas(findInitializationErrors()); + } + + /** TODO(jieluo): Clear it when all subclasses have implemented this method. */ + @Override + public boolean hasOneof(OneofDescriptor oneof) { + throw new UnsupportedOperationException("hasOneof() is not implemented."); + } + + /** TODO(jieluo): Clear it when all subclasses have implemented this method. */ + @Override + public FieldDescriptor getOneofFieldDescriptor(OneofDescriptor oneof) { + throw new UnsupportedOperationException( + "getOneofFieldDescriptor() is not implemented."); + } + + @Override + public final String toString() { + return TextFormat.printToString(this); + } + + public void writeTo(final CodedOutputStream output) throws IOException { + MessageReflection.writeMessageTo(this, output, false); + } + + private int memoizedSize = -1; + + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) { + return size; + } + + memoizedSize = MessageReflection.getSerializedSize(this); + return memoizedSize; + } + + @Override + public boolean equals(final Object other) { + if (other == this) { + return true; + } + if (!(other instanceof Message)) { + return false; + } + final Message otherMessage = (Message) other; + if (getDescriptorForType() != otherMessage.getDescriptorForType()) { + return false; + } + return compareFields(getAllFields(), otherMessage.getAllFields()) && + getUnknownFields().equals(otherMessage.getUnknownFields()); + } + + @Override + public int hashCode() { + int hash = memoizedHashCode; + if (hash == 0) { + hash = 41; + hash = (19 * hash) + getDescriptorForType().hashCode(); + hash = hashFields(hash, getAllFields()); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + } + return hash; + } + + private static ByteString toByteString(Object value) { + if (value instanceof byte[]) { + return ByteString.copyFrom((byte[]) value); + } else { + return (ByteString) value; + } + } + + /** + * Compares two bytes fields. The parameters must be either a byte array or a + * ByteString object. They can be of different type though. + */ + private static boolean compareBytes(Object a, Object b) { + if (a instanceof byte[] && b instanceof byte[]) { + return Arrays.equals((byte[])a, (byte[])b); + } + return toByteString(a).equals(toByteString(b)); + } + + /** + * Compares two set of fields. + * This method is used to implement {@link AbstractMessage#equals(Object)} + * and {@link AbstractMutableMessage#equals(Object)}. It takes special care + * of bytes fields because immutable messages and mutable messages use + * different Java type to reprensent a bytes field and this method should be + * able to compare immutable messages, mutable messages and also an immutable + * message to a mutable message. + */ + static boolean compareFields(Map a, + Map b) { + if (a.size() != b.size()) { + return false; + } + for (FieldDescriptor descriptor : a.keySet()) { + if (!b.containsKey(descriptor)) { + return false; + } + Object value1 = a.get(descriptor); + Object value2 = b.get(descriptor); + if (descriptor.getType() == FieldDescriptor.Type.BYTES) { + if (descriptor.isRepeated()) { + List list1 = (List) value1; + List list2 = (List) value2; + if (list1.size() != list2.size()) { + return false; + } + for (int i = 0; i < list1.size(); i++) { + if (!compareBytes(list1.get(i), list2.get(i))) { + return false; + } + } + } else { + // Compares a singular bytes field. + if (!compareBytes(value1, value2)) { + return false; + } + } + } else { + // Compare non-bytes fields. + if (!value1.equals(value2)) { + return false; + } + } + } + return true; + } + + /** Get a hash code for given fields and values, using the given seed. */ + @SuppressWarnings("unchecked") + protected static int hashFields(int hash, Map map) { + for (Map.Entry entry : map.entrySet()) { + FieldDescriptor field = entry.getKey(); + Object value = entry.getValue(); + hash = (37 * hash) + field.getNumber(); + if (field.getType() != FieldDescriptor.Type.ENUM){ + hash = (53 * hash) + value.hashCode(); + } else if (field.isRepeated()) { + List list = (List) value; + hash = (53 * hash) + Internal.hashEnumList(list); + } else { + hash = (53 * hash) + Internal.hashEnum((EnumLite) value); + } + } + return hash; + } + + /** + * Package private helper method for AbstractParser to create + * UninitializedMessageException with missing field information. + */ + @Override + UninitializedMessageException newUninitializedMessageException() { + return Builder.newUninitializedMessageException(this); + } + + // ================================================================= + + /** + * A partial implementation of the {@link Message.Builder} interface which + * implements as many methods of that interface as possible in terms of + * other methods. + */ + @SuppressWarnings("unchecked") + public static abstract class Builder + extends AbstractMessageLite.Builder + implements Message.Builder { + // The compiler produces an error if this is not declared explicitly. + @Override + public abstract BuilderType clone(); + + /** TODO(jieluo): Clear it when all subclasses have implemented this method. */ + @Override + public boolean hasOneof(OneofDescriptor oneof) { + throw new UnsupportedOperationException("hasOneof() is not implemented."); + } + + /** TODO(jieluo): Clear it when all subclasses have implemented this method. */ + @Override + public FieldDescriptor getOneofFieldDescriptor(OneofDescriptor oneof) { + throw new UnsupportedOperationException( + "getOneofFieldDescriptor() is not implemented."); + } + + /** TODO(jieluo): Clear it when all subclasses have implemented this method. */ + @Override + public BuilderType clearOneof(OneofDescriptor oneof) { + throw new UnsupportedOperationException("clearOneof() is not implemented."); + } + + public BuilderType clear() { + for (final Map.Entry entry : + getAllFields().entrySet()) { + clearField(entry.getKey()); + } + return (BuilderType) this; + } + + public List findInitializationErrors() { + return MessageReflection.findMissingFields(this); + } + + public String getInitializationErrorString() { + return MessageReflection.delimitWithCommas(findInitializationErrors()); + } + + public BuilderType mergeFrom(final Message other) { + if (other.getDescriptorForType() != getDescriptorForType()) { + throw new IllegalArgumentException( + "mergeFrom(Message) can only merge messages of the same type."); + } + + // Note: We don't attempt to verify that other's fields have valid + // types. Doing so would be a losing battle. We'd have to verify + // all sub-messages as well, and we'd have to make copies of all of + // them to insure that they don't change after verification (since + // the Message interface itself cannot enforce immutability of + // implementations). + // TODO(kenton): Provide a function somewhere called makeDeepCopy() + // which allows people to make secure deep copies of messages. + + for (final Map.Entry entry : + other.getAllFields().entrySet()) { + final FieldDescriptor field = entry.getKey(); + if (field.isRepeated()) { + for (final Object element : (List)entry.getValue()) { + addRepeatedField(field, element); + } + } else if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { + final Message existingValue = (Message)getField(field); + if (existingValue == existingValue.getDefaultInstanceForType()) { + setField(field, entry.getValue()); + } else { + setField(field, + existingValue.newBuilderForType() + .mergeFrom(existingValue) + .mergeFrom((Message)entry.getValue()) + .build()); + } + } else { + setField(field, entry.getValue()); + } + } + + mergeUnknownFields(other.getUnknownFields()); + + return (BuilderType) this; + } + + @Override + public BuilderType mergeFrom(final CodedInputStream input) + throws IOException { + return mergeFrom(input, ExtensionRegistry.getEmptyRegistry()); + } + + @Override + public BuilderType mergeFrom( + final CodedInputStream input, + final ExtensionRegistryLite extensionRegistry) + throws IOException { + final UnknownFieldSet.Builder unknownFields = + UnknownFieldSet.newBuilder(getUnknownFields()); + while (true) { + final int tag = input.readTag(); + if (tag == 0) { + break; + } + + MessageReflection.BuilderAdapter builderAdapter = + new MessageReflection.BuilderAdapter(this); + if (!MessageReflection.mergeFieldFrom(input, unknownFields, + extensionRegistry, + getDescriptorForType(), + builderAdapter, + tag)) { + // end group tag + break; + } + } + setUnknownFields(unknownFields.build()); + return (BuilderType) this; + } + + public BuilderType mergeUnknownFields(final UnknownFieldSet unknownFields) { + setUnknownFields( + UnknownFieldSet.newBuilder(getUnknownFields()) + .mergeFrom(unknownFields) + .build()); + return (BuilderType) this; + } + + public Message.Builder getFieldBuilder(final FieldDescriptor field) { + throw new UnsupportedOperationException( + "getFieldBuilder() called on an unsupported message type."); + } + + public String toString() { + return TextFormat.printToString(this); + } + + /** + * Construct an UninitializedMessageException reporting missing fields in + * the given message. + */ + protected static UninitializedMessageException + newUninitializedMessageException(Message message) { + return new UninitializedMessageException( + MessageReflection.findMissingFields(message)); + } + + // =============================================================== + // The following definitions seem to be required in order to make javac + // not produce weird errors like: + // + // java/com/google/protobuf/DynamicMessage.java:203: types + // com.google.protobuf.AbstractMessage.Builder< + // com.google.protobuf.DynamicMessage.Builder> and + // com.google.protobuf.AbstractMessage.Builder< + // com.google.protobuf.DynamicMessage.Builder> are incompatible; both + // define mergeFrom(com.google.protobuf.ByteString), but with unrelated + // return types. + // + // Strangely, these lines are only needed if javac is invoked separately + // on AbstractMessage.java and AbstractMessageLite.java. If javac is + // invoked on both simultaneously, it works. (Or maybe the important + // point is whether or not DynamicMessage.java is compiled together with + // AbstractMessageLite.java -- not sure.) I suspect this is a compiler + // bug. + + @Override + public BuilderType mergeFrom(final ByteString data) + throws InvalidProtocolBufferException { + return super.mergeFrom(data); + } + + @Override + public BuilderType mergeFrom( + final ByteString data, + final ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException { + return super.mergeFrom(data, extensionRegistry); + } + + @Override + public BuilderType mergeFrom(final byte[] data) + throws InvalidProtocolBufferException { + return super.mergeFrom(data); + } + + @Override + public BuilderType mergeFrom( + final byte[] data, final int off, final int len) + throws InvalidProtocolBufferException { + return super.mergeFrom(data, off, len); + } + + @Override + public BuilderType mergeFrom( + final byte[] data, + final ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException { + return super.mergeFrom(data, extensionRegistry); + } + + @Override + public BuilderType mergeFrom( + final byte[] data, final int off, final int len, + final ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException { + return super.mergeFrom(data, off, len, extensionRegistry); + } + + @Override + public BuilderType mergeFrom(final InputStream input) + throws IOException { + return super.mergeFrom(input); + } + + @Override + public BuilderType mergeFrom( + final InputStream input, + final ExtensionRegistryLite extensionRegistry) + throws IOException { + return super.mergeFrom(input, extensionRegistry); + } + + @Override + public boolean mergeDelimitedFrom(final InputStream input) + throws IOException { + return super.mergeDelimitedFrom(input); + } + + @Override + public boolean mergeDelimitedFrom( + final InputStream input, + final ExtensionRegistryLite extensionRegistry) + throws IOException { + return super.mergeDelimitedFrom(input, extensionRegistry); + } + } +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/AbstractMessageLite.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/AbstractMessageLite.java new file mode 100644 index 00000000..aac4fa77 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/AbstractMessageLite.java @@ -0,0 +1,355 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import java.io.FilterInputStream; +import java.io.InputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.util.Collection; + +/** + * A partial implementation of the {@link MessageLite} interface which + * implements as many methods of that interface as possible in terms of other + * methods. + * + * @author kenton@google.com Kenton Varda + */ +public abstract class AbstractMessageLite implements MessageLite { + protected int memoizedHashCode = 0; + + public ByteString toByteString() { + try { + final ByteString.CodedBuilder out = + ByteString.newCodedBuilder(getSerializedSize()); + writeTo(out.getCodedOutput()); + return out.build(); + } catch (IOException e) { + throw new RuntimeException( + "Serializing to a ByteString threw an IOException (should " + + "never happen).", e); + } + } + + public byte[] toByteArray() { + try { + final byte[] result = new byte[getSerializedSize()]; + final CodedOutputStream output = CodedOutputStream.newInstance(result); + writeTo(output); + output.checkNoSpaceLeft(); + return result; + } catch (IOException e) { + throw new RuntimeException( + "Serializing to a byte array threw an IOException " + + "(should never happen).", e); + } + } + + public void writeTo(final OutputStream output) throws IOException { + final int bufferSize = + CodedOutputStream.computePreferredBufferSize(getSerializedSize()); + final CodedOutputStream codedOutput = + CodedOutputStream.newInstance(output, bufferSize); + writeTo(codedOutput); + codedOutput.flush(); + } + + public void writeDelimitedTo(final OutputStream output) throws IOException { + final int serialized = getSerializedSize(); + final int bufferSize = CodedOutputStream.computePreferredBufferSize( + CodedOutputStream.computeRawVarint32Size(serialized) + serialized); + final CodedOutputStream codedOutput = + CodedOutputStream.newInstance(output, bufferSize); + codedOutput.writeRawVarint32(serialized); + writeTo(codedOutput); + codedOutput.flush(); + } + + + /** + * Package private helper method for AbstractParser to create + * UninitializedMessageException. + */ + UninitializedMessageException newUninitializedMessageException() { + return new UninitializedMessageException(this); + } + + protected static void checkByteStringIsUtf8(ByteString byteString) + throws IllegalArgumentException { + if (!byteString.isValidUtf8()) { + throw new IllegalArgumentException("Byte string is not UTF-8."); + } + } + + /** + * A partial implementation of the {@link Message.Builder} interface which + * implements as many methods of that interface as possible in terms of + * other methods. + */ + @SuppressWarnings("unchecked") + public static abstract class Builder + implements MessageLite.Builder { + // The compiler produces an error if this is not declared explicitly. + @Override + public abstract BuilderType clone(); + + public BuilderType mergeFrom(final CodedInputStream input) + throws IOException { + return mergeFrom(input, ExtensionRegistryLite.getEmptyRegistry()); + } + + // Re-defined here for return type covariance. + public abstract BuilderType mergeFrom( + final CodedInputStream input, + final ExtensionRegistryLite extensionRegistry) + throws IOException; + + public BuilderType mergeFrom(final ByteString data) + throws InvalidProtocolBufferException { + try { + final CodedInputStream input = data.newCodedInput(); + mergeFrom(input); + input.checkLastTagWas(0); + return (BuilderType) this; + } catch (InvalidProtocolBufferException e) { + throw e; + } catch (IOException e) { + throw new RuntimeException( + "Reading from a ByteString threw an IOException (should " + + "never happen).", e); + } + } + + public BuilderType mergeFrom( + final ByteString data, + final ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException { + try { + final CodedInputStream input = data.newCodedInput(); + mergeFrom(input, extensionRegistry); + input.checkLastTagWas(0); + return (BuilderType) this; + } catch (InvalidProtocolBufferException e) { + throw e; + } catch (IOException e) { + throw new RuntimeException( + "Reading from a ByteString threw an IOException (should " + + "never happen).", e); + } + } + + public BuilderType mergeFrom(final byte[] data) + throws InvalidProtocolBufferException { + return mergeFrom(data, 0, data.length); + } + + public BuilderType mergeFrom(final byte[] data, final int off, + final int len) + throws InvalidProtocolBufferException { + try { + final CodedInputStream input = + CodedInputStream.newInstance(data, off, len); + mergeFrom(input); + input.checkLastTagWas(0); + return (BuilderType) this; + } catch (InvalidProtocolBufferException e) { + throw e; + } catch (IOException e) { + throw new RuntimeException( + "Reading from a byte array threw an IOException (should " + + "never happen).", e); + } + } + + public BuilderType mergeFrom( + final byte[] data, + final ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException { + return mergeFrom(data, 0, data.length, extensionRegistry); + } + + public BuilderType mergeFrom( + final byte[] data, final int off, final int len, + final ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException { + try { + final CodedInputStream input = + CodedInputStream.newInstance(data, off, len); + mergeFrom(input, extensionRegistry); + input.checkLastTagWas(0); + return (BuilderType) this; + } catch (InvalidProtocolBufferException e) { + throw e; + } catch (IOException e) { + throw new RuntimeException( + "Reading from a byte array threw an IOException (should " + + "never happen).", e); + } + } + + public BuilderType mergeFrom(final InputStream input) throws IOException { + final CodedInputStream codedInput = CodedInputStream.newInstance(input); + mergeFrom(codedInput); + codedInput.checkLastTagWas(0); + return (BuilderType) this; + } + + public BuilderType mergeFrom( + final InputStream input, + final ExtensionRegistryLite extensionRegistry) + throws IOException { + final CodedInputStream codedInput = CodedInputStream.newInstance(input); + mergeFrom(codedInput, extensionRegistry); + codedInput.checkLastTagWas(0); + return (BuilderType) this; + } + + /** + * An InputStream implementations which reads from some other InputStream + * but is limited to a particular number of bytes. Used by + * mergeDelimitedFrom(). This is intentionally package-private so that + * UnknownFieldSet can share it. + */ + static final class LimitedInputStream extends FilterInputStream { + private int limit; + + LimitedInputStream(InputStream in, int limit) { + super(in); + this.limit = limit; + } + + @Override + public int available() throws IOException { + return Math.min(super.available(), limit); + } + + @Override + public int read() throws IOException { + if (limit <= 0) { + return -1; + } + final int result = super.read(); + if (result >= 0) { + --limit; + } + return result; + } + + @Override + public int read(final byte[] b, final int off, int len) + throws IOException { + if (limit <= 0) { + return -1; + } + len = Math.min(len, limit); + final int result = super.read(b, off, len); + if (result >= 0) { + limit -= result; + } + return result; + } + + @Override + public long skip(final long n) throws IOException { + final long result = super.skip(Math.min(n, limit)); + if (result >= 0) { + limit -= result; + } + return result; + } + } + + public boolean mergeDelimitedFrom( + final InputStream input, + final ExtensionRegistryLite extensionRegistry) + throws IOException { + final int firstByte = input.read(); + if (firstByte == -1) { + return false; + } + final int size = CodedInputStream.readRawVarint32(firstByte, input); + final InputStream limitedInput = new LimitedInputStream(input, size); + mergeFrom(limitedInput, extensionRegistry); + return true; + } + + public boolean mergeDelimitedFrom(final InputStream input) + throws IOException { + return mergeDelimitedFrom(input, + ExtensionRegistryLite.getEmptyRegistry()); + } + + /** + * Construct an UninitializedMessageException reporting missing fields in + * the given message. + */ + protected static UninitializedMessageException + newUninitializedMessageException(MessageLite message) { + return new UninitializedMessageException(message); + } + + /** + * Adds the {@code values} to the {@code list}. This is a helper method + * used by generated code. Users should ignore it. + * + * @throws NullPointerException if any of the elements of {@code values} is + * null. When that happens, some elements of {@code values} may have already + * been added to the result {@code list}. + */ + protected static void addAll(final Iterable values, + final Collection list) { + if (values instanceof LazyStringList) { + // For StringOrByteStringLists, check the underlying elements to avoid + // forcing conversions of ByteStrings to Strings. + checkForNullValues(((LazyStringList) values).getUnderlyingElements()); + list.addAll((Collection) values); + } else if (values instanceof Collection) { + checkForNullValues(values); + list.addAll((Collection) values); + } else { + for (final T value : values) { + if (value == null) { + throw new NullPointerException(); + } + list.add(value); + } + } + } + + private static void checkForNullValues(final Iterable values) { + for (final Object value : values) { + if (value == null) { + throw new NullPointerException(); + } + } + } + } +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/AbstractParser.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/AbstractParser.java new file mode 100644 index 00000000..1a4c6311 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/AbstractParser.java @@ -0,0 +1,253 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import com.google.protobuf.AbstractMessageLite.Builder.LimitedInputStream; + +import java.io.IOException; +import java.io.InputStream; + +/** + * A partial implementation of the {@link Parser} interface which implements + * as many methods of that interface as possible in terms of other methods. + * + * Note: This class implements all the convenience methods in the + * {@link Parser} interface. See {@link Parser} for related javadocs. + * Subclasses need to implement + * {@link Parser#parsePartialFrom(CodedInputStream, ExtensionRegistryLite)} + * + * @author liujisi@google.com (Pherl Liu) + */ +public abstract class AbstractParser + implements Parser { + /** + * Creates an UninitializedMessageException for MessageType. + */ + private UninitializedMessageException + newUninitializedMessageException(MessageType message) { + if (message instanceof AbstractMessageLite) { + return ((AbstractMessageLite) message).newUninitializedMessageException(); + } + return new UninitializedMessageException(message); + } + + /** + * Helper method to check if message is initialized. + * + * @throws InvalidProtocolBufferException if it is not initialized. + * @return The message to check. + */ + private MessageType checkMessageInitialized(MessageType message) + throws InvalidProtocolBufferException { + if (message != null && !message.isInitialized()) { + throw newUninitializedMessageException(message) + .asInvalidProtocolBufferException() + .setUnfinishedMessage(message); + } + return message; + } + + private static final ExtensionRegistryLite EMPTY_REGISTRY + = ExtensionRegistryLite.getEmptyRegistry(); + + public MessageType parsePartialFrom(CodedInputStream input) + throws InvalidProtocolBufferException { + return parsePartialFrom(input, EMPTY_REGISTRY); + } + + public MessageType parseFrom(CodedInputStream input, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException { + return checkMessageInitialized( + parsePartialFrom(input, extensionRegistry)); + } + + public MessageType parseFrom(CodedInputStream input) + throws InvalidProtocolBufferException { + return parseFrom(input, EMPTY_REGISTRY); + } + + public MessageType parsePartialFrom(ByteString data, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException { + MessageType message; + try { + CodedInputStream input = data.newCodedInput(); + message = parsePartialFrom(input, extensionRegistry); + try { + input.checkLastTagWas(0); + } catch (InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(message); + } + return message; + } catch (InvalidProtocolBufferException e) { + throw e; + } + } + + public MessageType parsePartialFrom(ByteString data) + throws InvalidProtocolBufferException { + return parsePartialFrom(data, EMPTY_REGISTRY); + } + + public MessageType parseFrom(ByteString data, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException { + return checkMessageInitialized(parsePartialFrom(data, extensionRegistry)); + } + + public MessageType parseFrom(ByteString data) + throws InvalidProtocolBufferException { + return parseFrom(data, EMPTY_REGISTRY); + } + + public MessageType parsePartialFrom(byte[] data, int off, int len, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException { + try { + CodedInputStream input = CodedInputStream.newInstance(data, off, len); + MessageType message = parsePartialFrom(input, extensionRegistry); + try { + input.checkLastTagWas(0); + } catch (InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(message); + } + return message; + } catch (InvalidProtocolBufferException e) { + throw e; + } + } + + public MessageType parsePartialFrom(byte[] data, int off, int len) + throws InvalidProtocolBufferException { + return parsePartialFrom(data, off, len, EMPTY_REGISTRY); + } + + public MessageType parsePartialFrom(byte[] data, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException { + return parsePartialFrom(data, 0, data.length, extensionRegistry); + } + + public MessageType parsePartialFrom(byte[] data) + throws InvalidProtocolBufferException { + return parsePartialFrom(data, 0, data.length, EMPTY_REGISTRY); + } + + public MessageType parseFrom(byte[] data, int off, int len, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException { + return checkMessageInitialized( + parsePartialFrom(data, off, len, extensionRegistry)); + } + + public MessageType parseFrom(byte[] data, int off, int len) + throws InvalidProtocolBufferException { + return parseFrom(data, off, len, EMPTY_REGISTRY); + } + + public MessageType parseFrom(byte[] data, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException { + return parseFrom(data, 0, data.length, extensionRegistry); + } + + public MessageType parseFrom(byte[] data) + throws InvalidProtocolBufferException { + return parseFrom(data, EMPTY_REGISTRY); + } + + public MessageType parsePartialFrom(InputStream input, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException { + CodedInputStream codedInput = CodedInputStream.newInstance(input); + MessageType message = parsePartialFrom(codedInput, extensionRegistry); + try { + codedInput.checkLastTagWas(0); + } catch (InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(message); + } + return message; + } + + public MessageType parsePartialFrom(InputStream input) + throws InvalidProtocolBufferException { + return parsePartialFrom(input, EMPTY_REGISTRY); + } + + public MessageType parseFrom(InputStream input, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException { + return checkMessageInitialized( + parsePartialFrom(input, extensionRegistry)); + } + + public MessageType parseFrom(InputStream input) + throws InvalidProtocolBufferException { + return parseFrom(input, EMPTY_REGISTRY); + } + + public MessageType parsePartialDelimitedFrom( + InputStream input, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException { + int size; + try { + int firstByte = input.read(); + if (firstByte == -1) { + return null; + } + size = CodedInputStream.readRawVarint32(firstByte, input); + } catch (IOException e) { + throw new InvalidProtocolBufferException(e.getMessage()); + } + InputStream limitedInput = new LimitedInputStream(input, size); + return parsePartialFrom(limitedInput, extensionRegistry); + } + + public MessageType parsePartialDelimitedFrom(InputStream input) + throws InvalidProtocolBufferException { + return parsePartialDelimitedFrom(input, EMPTY_REGISTRY); + } + + public MessageType parseDelimitedFrom( + InputStream input, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException { + return checkMessageInitialized( + parsePartialDelimitedFrom(input, extensionRegistry)); + } + + public MessageType parseDelimitedFrom(InputStream input) + throws InvalidProtocolBufferException { + return parseDelimitedFrom(input, EMPTY_REGISTRY); + } +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/BlockingRpcChannel.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/BlockingRpcChannel.java new file mode 100644 index 00000000..d535efb9 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/BlockingRpcChannel.java @@ -0,0 +1,51 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +/** + *

      Abstract interface for a blocking RPC channel. {@code BlockingRpcChannel} + * is the blocking equivalent to {@link RpcChannel}. + * + * @author kenton@google.com Kenton Varda + * @author cpovirk@google.com Chris Povirk + */ +public interface BlockingRpcChannel { + /** + * Call the given method of the remote service and blocks until it returns. + * {@code callBlockingMethod()} is the blocking equivalent to + * {@link RpcChannel#callMethod}. + */ + Message callBlockingMethod( + Descriptors.MethodDescriptor method, + RpcController controller, + Message request, + Message responsePrototype) throws ServiceException; +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/BlockingService.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/BlockingService.java new file mode 100644 index 00000000..d01f0b8f --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/BlockingService.java @@ -0,0 +1,64 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +/** + * Blocking equivalent to {@link Service}. + * + * @author kenton@google.com Kenton Varda + * @author cpovirk@google.com Chris Povirk + */ +public interface BlockingService { + /** + * Equivalent to {@link Service#getDescriptorForType}. + */ + Descriptors.ServiceDescriptor getDescriptorForType(); + + /** + * Equivalent to {@link Service#callMethod}, except that + * {@code callBlockingMethod()} returns the result of the RPC or throws a + * {@link ServiceException} if there is a failure, rather than passing the + * information to a callback. + */ + Message callBlockingMethod(Descriptors.MethodDescriptor method, + RpcController controller, + Message request) throws ServiceException; + + /** + * Equivalent to {@link Service#getRequestPrototype}. + */ + Message getRequestPrototype(Descriptors.MethodDescriptor method); + + /** + * Equivalent to {@link Service#getResponsePrototype}. + */ + Message getResponsePrototype(Descriptors.MethodDescriptor method); +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/BoundedByteString.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/BoundedByteString.java new file mode 100644 index 00000000..2828e9c7 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/BoundedByteString.java @@ -0,0 +1,163 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import java.util.NoSuchElementException; + +/** + * This class is used to represent the substring of a {@link ByteString} over a + * single byte array. In terms of the public API of {@link ByteString}, you end + * up here by calling {@link ByteString#copyFrom(byte[])} followed by {@link + * ByteString#substring(int, int)}. + * + *

      This class contains most of the overhead involved in creating a substring + * from a {@link LiteralByteString}. The overhead involves some range-checking + * and two extra fields. + * + * @author carlanton@google.com (Carl Haverl) + */ +class BoundedByteString extends LiteralByteString { + + private final int bytesOffset; + private final int bytesLength; + + /** + * Creates a {@code BoundedByteString} backed by the sub-range of given array, + * without copying. + * + * @param bytes array to wrap + * @param offset index to first byte to use in bytes + * @param length number of bytes to use from bytes + * @throws IllegalArgumentException if {@code offset < 0}, {@code length < 0}, + * or if {@code offset + length > + * bytes.length}. + */ + BoundedByteString(byte[] bytes, int offset, int length) { + super(bytes); + if (offset < 0) { + throw new IllegalArgumentException("Offset too small: " + offset); + } + if (length < 0) { + throw new IllegalArgumentException("Length too small: " + offset); + } + if ((long) offset + length > bytes.length) { + throw new IllegalArgumentException( + "Offset+Length too large: " + offset + "+" + length); + } + + this.bytesOffset = offset; + this.bytesLength = length; + } + + /** + * Gets the byte at the given index. + * Throws {@link ArrayIndexOutOfBoundsException} + * for backwards-compatibility reasons although it would more properly be + * {@link IndexOutOfBoundsException}. + * + * @param index index of byte + * @return the value + * @throws ArrayIndexOutOfBoundsException {@code index} is < 0 or >= size + */ + @Override + public byte byteAt(int index) { + // We must check the index ourselves as we cannot rely on Java array index + // checking for substrings. + if (index < 0) { + throw new ArrayIndexOutOfBoundsException("Index too small: " + index); + } + if (index >= size()) { + throw new ArrayIndexOutOfBoundsException( + "Index too large: " + index + ", " + size()); + } + + return bytes[bytesOffset + index]; + } + + @Override + public int size() { + return bytesLength; + } + + @Override + protected int getOffsetIntoBytes() { + return bytesOffset; + } + + // ================================================================= + // ByteString -> byte[] + + @Override + protected void copyToInternal(byte[] target, int sourceOffset, + int targetOffset, int numberToCopy) { + System.arraycopy(bytes, getOffsetIntoBytes() + sourceOffset, target, + targetOffset, numberToCopy); + } + + // ================================================================= + // ByteIterator + + @Override + public ByteIterator iterator() { + return new BoundedByteIterator(); + } + + private class BoundedByteIterator implements ByteIterator { + + private int position; + private final int limit; + + private BoundedByteIterator() { + position = getOffsetIntoBytes(); + limit = position + size(); + } + + public boolean hasNext() { + return (position < limit); + } + + public Byte next() { + // Boxing calls Byte.valueOf(byte), which does not instantiate. + return nextByte(); + } + + public byte nextByte() { + if (position >= limit) { + throw new NoSuchElementException(); + } + return bytes[position++]; + } + + public void remove() { + throw new UnsupportedOperationException(); + } + } +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/ByteString.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/ByteString.java new file mode 100644 index 00000000..7da56127 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/ByteString.java @@ -0,0 +1,1022 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.UnsupportedEncodingException; +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; +import java.util.NoSuchElementException; + +/** + * Immutable sequence of bytes. Substring is supported by sharing the reference + * to the immutable underlying bytes, as with {@link String}. Concatenation is + * likewise supported without copying (long strings) by building a tree of + * pieces in {@link RopeByteString}. + *

      + * Like {@link String}, the contents of a {@link ByteString} can never be + * observed to change, not even in the presence of a data race or incorrect + * API usage in the client code. + * + * @author crazybob@google.com Bob Lee + * @author kenton@google.com Kenton Varda + * @author carlanton@google.com Carl Haverl + * @author martinrb@google.com Martin Buchholz + */ +public abstract class ByteString implements Iterable { + + /** + * When two strings to be concatenated have a combined length shorter than + * this, we just copy their bytes on {@link #concat(ByteString)}. + * The trade-off is copy size versus the overhead of creating tree nodes + * in {@link RopeByteString}. + */ + static final int CONCATENATE_BY_COPY_SIZE = 128; + + /** + * When copying an InputStream into a ByteString with .readFrom(), + * the chunks in the underlying rope start at 256 bytes, but double + * each iteration up to 8192 bytes. + */ + static final int MIN_READ_FROM_CHUNK_SIZE = 0x100; // 256b + static final int MAX_READ_FROM_CHUNK_SIZE = 0x2000; // 8k + + /** + * Empty {@code ByteString}. + */ + public static final ByteString EMPTY = new LiteralByteString(new byte[0]); + + // This constructor is here to prevent subclassing outside of this package, + ByteString() {} + + /** + * Gets the byte at the given index. This method should be used only for + * random access to individual bytes. To access bytes sequentially, use the + * {@link ByteIterator} returned by {@link #iterator()}, and call {@link + * #substring(int, int)} first if necessary. + * + * @param index index of byte + * @return the value + * @throws ArrayIndexOutOfBoundsException {@code index} is < 0 or >= size + */ + public abstract byte byteAt(int index); + + /** + * Return a {@link ByteString.ByteIterator} over the bytes in the ByteString. + * To avoid auto-boxing, you may get the iterator manually and call + * {@link ByteIterator#nextByte()}. + * + * @return the iterator + */ + public abstract ByteIterator iterator(); + + /** + * This interface extends {@code Iterator}, so that we can return an + * unboxed {@code byte}. + */ + public interface ByteIterator extends Iterator { + /** + * An alternative to {@link Iterator#next()} that returns an + * unboxed primitive {@code byte}. + * + * @return the next {@code byte} in the iteration + * @throws NoSuchElementException if the iteration has no more elements + */ + byte nextByte(); + } + + /** + * Gets the number of bytes. + * + * @return size in bytes + */ + public abstract int size(); + + /** + * Returns {@code true} if the size is {@code 0}, {@code false} otherwise. + * + * @return true if this is zero bytes long + */ + public boolean isEmpty() { + return size() == 0; + } + + // ================================================================= + // ByteString -> substring + + /** + * Return the substring from {@code beginIndex}, inclusive, to the end of the + * string. + * + * @param beginIndex start at this index + * @return substring sharing underlying data + * @throws IndexOutOfBoundsException if {@code beginIndex < 0} or + * {@code beginIndex > size()}. + */ + public ByteString substring(int beginIndex) { + return substring(beginIndex, size()); + } + + /** + * Return the substring from {@code beginIndex}, inclusive, to {@code + * endIndex}, exclusive. + * + * @param beginIndex start at this index + * @param endIndex the last character is the one before this index + * @return substring sharing underlying data + * @throws IndexOutOfBoundsException if {@code beginIndex < 0}, + * {@code endIndex > size()}, or {@code beginIndex > endIndex}. + */ + public abstract ByteString substring(int beginIndex, int endIndex); + + /** + * Tests if this bytestring starts with the specified prefix. + * Similar to {@link String#startsWith(String)} + * + * @param prefix the prefix. + * @return true if the byte sequence represented by the + * argument is a prefix of the byte sequence represented by + * this string; false otherwise. + */ + public boolean startsWith(ByteString prefix) { + return size() >= prefix.size() && + substring(0, prefix.size()).equals(prefix); + } + + /** + * Tests if this bytestring ends with the specified suffix. + * Similar to {@link String#endsWith(String)} + * + * @param suffix the suffix. + * @return true if the byte sequence represented by the + * argument is a suffix of the byte sequence represented by + * this string; false otherwise. + */ + public boolean endsWith(ByteString suffix) { + return size() >= suffix.size() && + substring(size() - suffix.size()).equals(suffix); + } + + // ================================================================= + // byte[] -> ByteString + + /** + * Copies the given bytes into a {@code ByteString}. + * + * @param bytes source array + * @param offset offset in source array + * @param size number of bytes to copy + * @return new {@code ByteString} + */ + public static ByteString copyFrom(byte[] bytes, int offset, int size) { + byte[] copy = new byte[size]; + System.arraycopy(bytes, offset, copy, 0, size); + return new LiteralByteString(copy); + } + + /** + * Copies the given bytes into a {@code ByteString}. + * + * @param bytes to copy + * @return new {@code ByteString} + */ + public static ByteString copyFrom(byte[] bytes) { + return copyFrom(bytes, 0, bytes.length); + } + + /** + * Copies the next {@code size} bytes from a {@code java.nio.ByteBuffer} into + * a {@code ByteString}. + * + * @param bytes source buffer + * @param size number of bytes to copy + * @return new {@code ByteString} + */ + public static ByteString copyFrom(ByteBuffer bytes, int size) { + byte[] copy = new byte[size]; + bytes.get(copy); + return new LiteralByteString(copy); + } + + /** + * Copies the remaining bytes from a {@code java.nio.ByteBuffer} into + * a {@code ByteString}. + * + * @param bytes sourceBuffer + * @return new {@code ByteString} + */ + public static ByteString copyFrom(ByteBuffer bytes) { + return copyFrom(bytes, bytes.remaining()); + } + + /** + * Encodes {@code text} into a sequence of bytes using the named charset + * and returns the result as a {@code ByteString}. + * + * @param text source string + * @param charsetName encoding to use + * @return new {@code ByteString} + * @throws UnsupportedEncodingException if the encoding isn't found + */ + public static ByteString copyFrom(String text, String charsetName) + throws UnsupportedEncodingException { + return new LiteralByteString(text.getBytes(charsetName)); + } + + /** + * Encodes {@code text} into a sequence of UTF-8 bytes and returns the + * result as a {@code ByteString}. + * + * @param text source string + * @return new {@code ByteString} + */ + public static ByteString copyFromUtf8(String text) { + try { + return new LiteralByteString(text.getBytes("UTF-8")); + } catch (UnsupportedEncodingException e) { + throw new RuntimeException("UTF-8 not supported?", e); + } + } + + // ================================================================= + // InputStream -> ByteString + + /** + * Completely reads the given stream's bytes into a + * {@code ByteString}, blocking if necessary until all bytes are + * read through to the end of the stream. + * + * Performance notes: The returned {@code ByteString} is an + * immutable tree of byte arrays ("chunks") of the stream data. The + * first chunk is small, with subsequent chunks each being double + * the size, up to 8K. If the caller knows the precise length of + * the stream and wishes to avoid all unnecessary copies and + * allocations, consider using the two-argument version of this + * method, below. + * + * @param streamToDrain The source stream, which is read completely + * but not closed. + * @return A new {@code ByteString} which is made up of chunks of + * various sizes, depending on the behavior of the underlying + * stream. + * @throws IOException IOException is thrown if there is a problem + * reading the underlying stream. + */ + public static ByteString readFrom(InputStream streamToDrain) + throws IOException { + return readFrom( + streamToDrain, MIN_READ_FROM_CHUNK_SIZE, MAX_READ_FROM_CHUNK_SIZE); + } + + /** + * Completely reads the given stream's bytes into a + * {@code ByteString}, blocking if necessary until all bytes are + * read through to the end of the stream. + * + * Performance notes: The returned {@code ByteString} is an + * immutable tree of byte arrays ("chunks") of the stream data. The + * chunkSize parameter sets the size of these byte arrays. In + * particular, if the chunkSize is precisely the same as the length + * of the stream, unnecessary allocations and copies will be + * avoided. Otherwise, the chunks will be of the given size, except + * for the last chunk, which will be resized (via a reallocation and + * copy) to contain the remainder of the stream. + * + * @param streamToDrain The source stream, which is read completely + * but not closed. + * @param chunkSize The size of the chunks in which to read the + * stream. + * @return A new {@code ByteString} which is made up of chunks of + * the given size. + * @throws IOException IOException is thrown if there is a problem + * reading the underlying stream. + */ + public static ByteString readFrom(InputStream streamToDrain, int chunkSize) + throws IOException { + return readFrom(streamToDrain, chunkSize, chunkSize); + } + + // Helper method that takes the chunk size range as a parameter. + public static ByteString readFrom(InputStream streamToDrain, int minChunkSize, + int maxChunkSize) throws IOException { + Collection results = new ArrayList(); + + // copy the inbound bytes into a list of chunks; the chunk size + // grows exponentially to support both short and long streams. + int chunkSize = minChunkSize; + while (true) { + ByteString chunk = readChunk(streamToDrain, chunkSize); + if (chunk == null) { + break; + } + results.add(chunk); + chunkSize = Math.min(chunkSize * 2, maxChunkSize); + } + + return ByteString.copyFrom(results); + } + + /** + * Blocks until a chunk of the given size can be made from the + * stream, or EOF is reached. Calls read() repeatedly in case the + * given stream implementation doesn't completely fill the given + * buffer in one read() call. + * + * @return A chunk of the desired size, or else a chunk as large as + * was available when end of stream was reached. Returns null if the + * given stream had no more data in it. + */ + private static ByteString readChunk(InputStream in, final int chunkSize) + throws IOException { + final byte[] buf = new byte[chunkSize]; + int bytesRead = 0; + while (bytesRead < chunkSize) { + final int count = in.read(buf, bytesRead, chunkSize - bytesRead); + if (count == -1) { + break; + } + bytesRead += count; + } + + if (bytesRead == 0) { + return null; + } else { + return ByteString.copyFrom(buf, 0, bytesRead); + } + } + + // ================================================================= + // Multiple ByteStrings -> One ByteString + + /** + * Concatenate the given {@code ByteString} to this one. Short concatenations, + * of total size smaller than {@link ByteString#CONCATENATE_BY_COPY_SIZE}, are + * produced by copying the underlying bytes (as per Rope.java, + * BAP95 . In general, the concatenate involves no copying. + * + * @param other string to concatenate + * @return a new {@code ByteString} instance + */ + public ByteString concat(ByteString other) { + int thisSize = size(); + int otherSize = other.size(); + if ((long) thisSize + otherSize >= Integer.MAX_VALUE) { + throw new IllegalArgumentException("ByteString would be too long: " + + thisSize + "+" + otherSize); + } + + return RopeByteString.concatenate(this, other); + } + + /** + * Concatenates all byte strings in the iterable and returns the result. + * This is designed to run in O(list size), not O(total bytes). + * + *

      The returned {@code ByteString} is not necessarily a unique object. + * If the list is empty, the returned object is the singleton empty + * {@code ByteString}. If the list has only one element, that + * {@code ByteString} will be returned without copying. + * + * @param byteStrings strings to be concatenated + * @return new {@code ByteString} + */ + public static ByteString copyFrom(Iterable byteStrings) { + Collection collection; + if (!(byteStrings instanceof Collection)) { + collection = new ArrayList(); + for (ByteString byteString : byteStrings) { + collection.add(byteString); + } + } else { + collection = (Collection) byteStrings; + } + ByteString result; + if (collection.isEmpty()) { + result = EMPTY; + } else { + result = balancedConcat(collection.iterator(), collection.size()); + } + return result; + } + + // Internal function used by copyFrom(Iterable). + // Create a balanced concatenation of the next "length" elements from the + // iterable. + private static ByteString balancedConcat(Iterator iterator, + int length) { + assert length >= 1; + ByteString result; + if (length == 1) { + result = iterator.next(); + } else { + int halfLength = length >>> 1; + ByteString left = balancedConcat(iterator, halfLength); + ByteString right = balancedConcat(iterator, length - halfLength); + result = left.concat(right); + } + return result; + } + + // ================================================================= + // ByteString -> byte[] + + /** + * Copies bytes into a buffer at the given offset. + * + * @param target buffer to copy into + * @param offset in the target buffer + * @throws IndexOutOfBoundsException if the offset is negative or too large + */ + public void copyTo(byte[] target, int offset) { + copyTo(target, 0, offset, size()); + } + + /** + * Copies bytes into a buffer. + * + * @param target buffer to copy into + * @param sourceOffset offset within these bytes + * @param targetOffset offset within the target buffer + * @param numberToCopy number of bytes to copy + * @throws IndexOutOfBoundsException if an offset or size is negative or too + * large + */ + public void copyTo(byte[] target, int sourceOffset, int targetOffset, + int numberToCopy) { + if (sourceOffset < 0) { + throw new IndexOutOfBoundsException("Source offset < 0: " + sourceOffset); + } + if (targetOffset < 0) { + throw new IndexOutOfBoundsException("Target offset < 0: " + targetOffset); + } + if (numberToCopy < 0) { + throw new IndexOutOfBoundsException("Length < 0: " + numberToCopy); + } + if (sourceOffset + numberToCopy > size()) { + throw new IndexOutOfBoundsException( + "Source end offset < 0: " + (sourceOffset + numberToCopy)); + } + if (targetOffset + numberToCopy > target.length) { + throw new IndexOutOfBoundsException( + "Target end offset < 0: " + (targetOffset + numberToCopy)); + } + if (numberToCopy > 0) { + copyToInternal(target, sourceOffset, targetOffset, numberToCopy); + } + } + + /** + * Internal (package private) implementation of + * @link{#copyTo(byte[],int,int,int}. + * It assumes that all error checking has already been performed and that + * @code{numberToCopy > 0}. + */ + protected abstract void copyToInternal(byte[] target, int sourceOffset, + int targetOffset, int numberToCopy); + + /** + * Copies bytes into a ByteBuffer. + * + * @param target ByteBuffer to copy into. + * @throws java.nio.ReadOnlyBufferException if the {@code target} is read-only + * @throws java.nio.BufferOverflowException if the {@code target}'s + * remaining() space is not large enough to hold the data. + */ + public abstract void copyTo(ByteBuffer target); + + /** + * Copies bytes to a {@code byte[]}. + * + * @return copied bytes + */ + public byte[] toByteArray() { + int size = size(); + if (size == 0) { + return Internal.EMPTY_BYTE_ARRAY; + } + byte[] result = new byte[size]; + copyToInternal(result, 0, 0, size); + return result; + } + + /** + * Writes the complete contents of this byte string to + * the specified output stream argument. + * + * @param out the output stream to which to write the data. + * @throws IOException if an I/O error occurs. + */ + public abstract void writeTo(OutputStream out) throws IOException; + + /** + * Writes a specified part of this byte string to an output stream. + * + * @param out the output stream to which to write the data. + * @param sourceOffset offset within these bytes + * @param numberToWrite number of bytes to write + * @throws IOException if an I/O error occurs. + * @throws IndexOutOfBoundsException if an offset or size is negative or too + * large + */ + void writeTo(OutputStream out, int sourceOffset, int numberToWrite) + throws IOException { + if (sourceOffset < 0) { + throw new IndexOutOfBoundsException("Source offset < 0: " + sourceOffset); + } + if (numberToWrite < 0) { + throw new IndexOutOfBoundsException("Length < 0: " + numberToWrite); + } + if (sourceOffset + numberToWrite > size()) { + throw new IndexOutOfBoundsException( + "Source end offset exceeded: " + (sourceOffset + numberToWrite)); + } + if (numberToWrite > 0) { + writeToInternal(out, sourceOffset, numberToWrite); + } + + } + + /** + * Internal version of {@link #writeTo(OutputStream,int,int)} that assumes + * all error checking has already been done. + */ + abstract void writeToInternal(OutputStream out, int sourceOffset, + int numberToWrite) throws IOException; + + /** + * Constructs a read-only {@code java.nio.ByteBuffer} whose content + * is equal to the contents of this byte string. + * The result uses the same backing array as the byte string, if possible. + * + * @return wrapped bytes + */ + public abstract ByteBuffer asReadOnlyByteBuffer(); + + /** + * Constructs a list of read-only {@code java.nio.ByteBuffer} objects + * such that the concatenation of their contents is equal to the contents + * of this byte string. The result uses the same backing arrays as the + * byte string. + *

      + * By returning a list, implementations of this method may be able to avoid + * copying even when there are multiple backing arrays. + * + * @return a list of wrapped bytes + */ + public abstract List asReadOnlyByteBufferList(); + + /** + * Constructs a new {@code String} by decoding the bytes using the + * specified charset. + * + * @param charsetName encode using this charset + * @return new string + * @throws UnsupportedEncodingException if charset isn't recognized + */ + public abstract String toString(String charsetName) + throws UnsupportedEncodingException; + + // ================================================================= + // UTF-8 decoding + + /** + * Constructs a new {@code String} by decoding the bytes as UTF-8. + * + * @return new string using UTF-8 encoding + */ + public String toStringUtf8() { + try { + return toString("UTF-8"); + } catch (UnsupportedEncodingException e) { + throw new RuntimeException("UTF-8 not supported?", e); + } + } + + /** + * Tells whether this {@code ByteString} represents a well-formed UTF-8 + * byte sequence, such that the original bytes can be converted to a + * String object and then round tripped back to bytes without loss. + * + *

      More precisely, returns {@code true} whenever:

       {@code
      +   * Arrays.equals(byteString.toByteArray(),
      +   *     new String(byteString.toByteArray(), "UTF-8").getBytes("UTF-8"))
      +   * }
      + * + *

      This method returns {@code false} for "overlong" byte sequences, + * as well as for 3-byte sequences that would map to a surrogate + * character, in accordance with the restricted definition of UTF-8 + * introduced in Unicode 3.1. Note that the UTF-8 decoder included in + * Oracle's JDK has been modified to also reject "overlong" byte + * sequences, but (as of 2011) still accepts 3-byte surrogate + * character byte sequences. + * + *

      See the Unicode Standard,
      + * Table 3-6. UTF-8 Bit Distribution,
      + * Table 3-7. Well Formed UTF-8 Byte Sequences. + * + * @return whether the bytes in this {@code ByteString} are a + * well-formed UTF-8 byte sequence + */ + public abstract boolean isValidUtf8(); + + /** + * Tells whether the given byte sequence is a well-formed, malformed, or + * incomplete UTF-8 byte sequence. This method accepts and returns a partial + * state result, allowing the bytes for a complete UTF-8 byte sequence to be + * composed from multiple {@code ByteString} segments. + * + * @param state either {@code 0} (if this is the initial decoding operation) + * or the value returned from a call to a partial decoding method for the + * previous bytes + * @param offset offset of the first byte to check + * @param length number of bytes to check + * + * @return {@code -1} if the partial byte sequence is definitely malformed, + * {@code 0} if it is well-formed (no additional input needed), or, if the + * byte sequence is "incomplete", i.e. apparently terminated in the middle of + * a character, an opaque integer "state" value containing enough information + * to decode the character when passed to a subsequent invocation of a + * partial decoding method. + */ + protected abstract int partialIsValidUtf8(int state, int offset, int length); + + // ================================================================= + // equals() and hashCode() + + @Override + public abstract boolean equals(Object o); + + /** + * Return a non-zero hashCode depending only on the sequence of bytes + * in this ByteString. + * + * @return hashCode value for this object + */ + @Override + public abstract int hashCode(); + + // ================================================================= + // Input stream + + /** + * Creates an {@code InputStream} which can be used to read the bytes. + *

      + * The {@link InputStream} returned by this method is guaranteed to be + * completely non-blocking. The method {@link InputStream#available()} + * returns the number of bytes remaining in the stream. The methods + * {@link InputStream#read(byte[]), {@link InputStream#read(byte[],int,int)} + * and {@link InputStream#skip(long)} will read/skip as many bytes as are + * available. + *

      + * The methods in the returned {@link InputStream} might not be + * thread safe. + * + * @return an input stream that returns the bytes of this byte string. + */ + public abstract InputStream newInput(); + + /** + * Creates a {@link CodedInputStream} which can be used to read the bytes. + * Using this is often more efficient than creating a {@link CodedInputStream} + * that wraps the result of {@link #newInput()}. + * + * @return stream based on wrapped data + */ + public abstract CodedInputStream newCodedInput(); + + // ================================================================= + // Output stream + + /** + * Creates a new {@link Output} with the given initial capacity. Call {@link + * Output#toByteString()} to create the {@code ByteString} instance. + *

      + * A {@link ByteString.Output} offers the same functionality as a + * {@link ByteArrayOutputStream}, except that it returns a {@link ByteString} + * rather than a {@code byte} array. + * + * @param initialCapacity estimate of number of bytes to be written + * @return {@code OutputStream} for building a {@code ByteString} + */ + public static Output newOutput(int initialCapacity) { + return new Output(initialCapacity); + } + + /** + * Creates a new {@link Output}. Call {@link Output#toByteString()} to create + * the {@code ByteString} instance. + *

      + * A {@link ByteString.Output} offers the same functionality as a + * {@link ByteArrayOutputStream}, except that it returns a {@link ByteString} + * rather than a {@code byte array}. + * + * @return {@code OutputStream} for building a {@code ByteString} + */ + public static Output newOutput() { + return new Output(CONCATENATE_BY_COPY_SIZE); + } + + /** + * Outputs to a {@code ByteString} instance. Call {@link #toByteString()} to + * create the {@code ByteString} instance. + */ + public static final class Output extends OutputStream { + // Implementation note. + // The public methods of this class must be synchronized. ByteStrings + // are guaranteed to be immutable. Without some sort of locking, it could + // be possible for one thread to call toByteSring(), while another thread + // is still modifying the underlying byte array. + + private static final byte[] EMPTY_BYTE_ARRAY = new byte[0]; + // argument passed by user, indicating initial capacity. + private final int initialCapacity; + // ByteStrings to be concatenated to create the result + private final ArrayList flushedBuffers; + // Total number of bytes in the ByteStrings of flushedBuffers + private int flushedBuffersTotalBytes; + // Current buffer to which we are writing + private byte[] buffer; + // Location in buffer[] to which we write the next byte. + private int bufferPos; + + /** + * Creates a new ByteString output stream with the specified + * initial capacity. + * + * @param initialCapacity the initial capacity of the output stream. + */ + Output(int initialCapacity) { + if (initialCapacity < 0) { + throw new IllegalArgumentException("Buffer size < 0"); + } + this.initialCapacity = initialCapacity; + this.flushedBuffers = new ArrayList(); + this.buffer = new byte[initialCapacity]; + } + + @Override + public synchronized void write(int b) { + if (bufferPos == buffer.length) { + flushFullBuffer(1); + } + buffer[bufferPos++] = (byte)b; + } + + @Override + public synchronized void write(byte[] b, int offset, int length) { + if (length <= buffer.length - bufferPos) { + // The bytes can fit into the current buffer. + System.arraycopy(b, offset, buffer, bufferPos, length); + bufferPos += length; + } else { + // Use up the current buffer + int copySize = buffer.length - bufferPos; + System.arraycopy(b, offset, buffer, bufferPos, copySize); + offset += copySize; + length -= copySize; + // Flush the buffer, and get a new buffer at least big enough to cover + // what we still need to output + flushFullBuffer(length); + System.arraycopy(b, offset, buffer, 0 /* count */, length); + bufferPos = length; + } + } + + /** + * Creates a byte string. Its size is the current size of this output + * stream and its output has been copied to it. + * + * @return the current contents of this output stream, as a byte string. + */ + public synchronized ByteString toByteString() { + flushLastBuffer(); + return ByteString.copyFrom(flushedBuffers); + } + + /** + * Implement java.util.Arrays.copyOf() for jdk 1.5. + */ + private byte[] copyArray(byte[] buffer, int length) { + byte[] result = new byte[length]; + System.arraycopy(buffer, 0, result, 0, Math.min(buffer.length, length)); + return result; + } + + /** + * Writes the complete contents of this byte array output stream to + * the specified output stream argument. + * + * @param out the output stream to which to write the data. + * @throws IOException if an I/O error occurs. + */ + public void writeTo(OutputStream out) throws IOException { + ByteString[] cachedFlushBuffers; + byte[] cachedBuffer; + int cachedBufferPos; + synchronized (this) { + // Copy the information we need into local variables so as to hold + // the lock for as short a time as possible. + cachedFlushBuffers = + flushedBuffers.toArray(new ByteString[flushedBuffers.size()]); + cachedBuffer = buffer; + cachedBufferPos = bufferPos; + } + for (ByteString byteString : cachedFlushBuffers) { + byteString.writeTo(out); + } + + out.write(copyArray(cachedBuffer, cachedBufferPos)); + } + + /** + * Returns the current size of the output stream. + * + * @return the current size of the output stream + */ + public synchronized int size() { + return flushedBuffersTotalBytes + bufferPos; + } + + /** + * Resets this stream, so that all currently accumulated output in the + * output stream is discarded. The output stream can be used again, + * reusing the already allocated buffer space. + */ + public synchronized void reset() { + flushedBuffers.clear(); + flushedBuffersTotalBytes = 0; + bufferPos = 0; + } + + @Override + public String toString() { + return String.format("", + Integer.toHexString(System.identityHashCode(this)), size()); + } + + /** + * Internal function used by writers. The current buffer is full, and the + * writer needs a new buffer whose size is at least the specified minimum + * size. + */ + private void flushFullBuffer(int minSize) { + flushedBuffers.add(new LiteralByteString(buffer)); + flushedBuffersTotalBytes += buffer.length; + // We want to increase our total capacity by 50%, but as a minimum, + // the new buffer should also at least be >= minSize and + // >= initial Capacity. + int newSize = Math.max(initialCapacity, + Math.max(minSize, flushedBuffersTotalBytes >>> 1)); + buffer = new byte[newSize]; + bufferPos = 0; + } + + /** + * Internal function used by {@link #toByteString()}. The current buffer may + * or may not be full, but it needs to be flushed. + */ + private void flushLastBuffer() { + if (bufferPos < buffer.length) { + if (bufferPos > 0) { + byte[] bufferCopy = copyArray(buffer, bufferPos); + flushedBuffers.add(new LiteralByteString(bufferCopy)); + } + // We reuse this buffer for further writes. + } else { + // Buffer is completely full. Huzzah. + flushedBuffers.add(new LiteralByteString(buffer)); + // 99% of the time, we're not going to use this OutputStream again. + // We set buffer to an empty byte stream so that we're handling this + // case without wasting space. In the rare case that more writes + // *do* occur, this empty buffer will be flushed and an appropriately + // sized new buffer will be created. + buffer = EMPTY_BYTE_ARRAY; + } + flushedBuffersTotalBytes += bufferPos; + bufferPos = 0; + } + } + + /** + * Constructs a new {@code ByteString} builder, which allows you to + * efficiently construct a {@code ByteString} by writing to a {@link + * CodedOutputStream}. Using this is much more efficient than calling {@code + * newOutput()} and wrapping that in a {@code CodedOutputStream}. + * + *

      This is package-private because it's a somewhat confusing interface. + * Users can call {@link Message#toByteString()} instead of calling this + * directly. + * + * @param size The target byte size of the {@code ByteString}. You must write + * exactly this many bytes before building the result. + * @return the builder + */ + static CodedBuilder newCodedBuilder(int size) { + return new CodedBuilder(size); + } + + /** See {@link ByteString#newCodedBuilder(int)}. */ + static final class CodedBuilder { + private final CodedOutputStream output; + private final byte[] buffer; + + private CodedBuilder(int size) { + buffer = new byte[size]; + output = CodedOutputStream.newInstance(buffer); + } + + public ByteString build() { + output.checkNoSpaceLeft(); + + // We can be confident that the CodedOutputStream will not modify the + // underlying bytes anymore because it already wrote all of them. So, + // no need to make a copy. + return new LiteralByteString(buffer); + } + + public CodedOutputStream getCodedOutput() { + return output; + } + } + + // ================================================================= + // Methods {@link RopeByteString} needs on instances, which aren't part of the + // public API. + + /** + * Return the depth of the tree representing this {@code ByteString}, if any, + * whose root is this node. If this is a leaf node, return 0. + * + * @return tree depth or zero + */ + protected abstract int getTreeDepth(); + + /** + * Return {@code true} if this ByteString is literal (a leaf node) or a + * flat-enough tree in the sense of {@link RopeByteString}. + * + * @return true if the tree is flat enough + */ + protected abstract boolean isBalanced(); + + /** + * Return the cached hash code if available. + * + * @return value of cached hash code or 0 if not computed yet + */ + protected abstract int peekCachedHashCode(); + + /** + * Compute the hash across the value bytes starting with the given hash, and + * return the result. This is used to compute the hash across strings + * represented as a set of pieces by allowing the hash computation to be + * continued from piece to piece. + * + * @param h starting hash value + * @param offset offset into this value to start looking at data values + * @param length number of data values to include in the hash computation + * @return ending hash value + */ + protected abstract int partialHash(int h, int offset, int length); + + @Override + public String toString() { + return String.format("", + Integer.toHexString(System.identityHashCode(this)), size()); + } +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/CodedInputStream.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/CodedInputStream.java new file mode 100644 index 00000000..a00ae86f --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/CodedInputStream.java @@ -0,0 +1,1311 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * Reads and decodes protocol message fields. + * + * This class contains two kinds of methods: methods that read specific + * protocol message constructs and field types (e.g. {@link #readTag()} and + * {@link #readInt32()}) and methods that read low-level values (e.g. + * {@link #readRawVarint32()} and {@link #readRawBytes}). If you are reading + * encoded protocol messages, you should use the former methods, but if you are + * reading some other format of your own design, use the latter. + * + * @author kenton@google.com Kenton Varda + */ +public final class CodedInputStream { + /** + * Create a new CodedInputStream wrapping the given InputStream. + */ + public static CodedInputStream newInstance(final InputStream input) { + return new CodedInputStream(input); + } + + /** + * Create a new CodedInputStream wrapping the given byte array. + */ + public static CodedInputStream newInstance(final byte[] buf) { + return newInstance(buf, 0, buf.length); + } + + /** + * Create a new CodedInputStream wrapping the given byte array slice. + */ + public static CodedInputStream newInstance(final byte[] buf, final int off, + final int len) { + CodedInputStream result = new CodedInputStream(buf, off, len); + try { + // Some uses of CodedInputStream can be more efficient if they know + // exactly how many bytes are available. By pushing the end point of the + // buffer as a limit, we allow them to get this information via + // getBytesUntilLimit(). Pushing a limit that we know is at the end of + // the stream can never hurt, since we can never past that point anyway. + result.pushLimit(len); + } catch (InvalidProtocolBufferException ex) { + // The only reason pushLimit() might throw an exception here is if len + // is negative. Normally pushLimit()'s parameter comes directly off the + // wire, so it's important to catch exceptions in case of corrupt or + // malicious data. However, in this case, we expect that len is not a + // user-supplied value, so we can assume that it being negative indicates + // a programming error. Therefore, throwing an unchecked exception is + // appropriate. + throw new IllegalArgumentException(ex); + } + return result; + } + + /** + * Create a new CodedInputStream wrapping the given ByteBuffer. The data + * starting from the ByteBuffer's current position to its limit will be read. + * The returned CodedInputStream may or may not share the underlying data + * in the ByteBuffer, therefore the ByteBuffer cannot be changed while the + * CodedInputStream is in use. + * Note that the ByteBuffer's position won't be changed by this function. + * Concurrent calls with the same ByteBuffer object are safe if no other + * thread is trying to alter the ByteBuffer's status. + */ + public static CodedInputStream newInstance(ByteBuffer buf) { + if (buf.hasArray()) { + return newInstance(buf.array(), buf.arrayOffset() + buf.position(), + buf.remaining()); + } else { + ByteBuffer temp = buf.duplicate(); + byte[] buffer = new byte[temp.remaining()]; + temp.get(buffer); + return newInstance(buffer); + } + } + + /** + * Create a new CodedInputStream wrapping a LiteralByteString. + */ + static CodedInputStream newInstance(LiteralByteString byteString) { + CodedInputStream result = new CodedInputStream(byteString); + try { + // Some uses of CodedInputStream can be more efficient if they know + // exactly how many bytes are available. By pushing the end point of the + // buffer as a limit, we allow them to get this information via + // getBytesUntilLimit(). Pushing a limit that we know is at the end of + // the stream can never hurt, since we can never past that point anyway. + result.pushLimit(byteString.size()); + } catch (InvalidProtocolBufferException ex) { + // The only reason pushLimit() might throw an exception here is if len + // is negative. Normally pushLimit()'s parameter comes directly off the + // wire, so it's important to catch exceptions in case of corrupt or + // malicious data. However, in this case, we expect that len is not a + // user-supplied value, so we can assume that it being negative indicates + // a programming error. Therefore, throwing an unchecked exception is + // appropriate. + throw new IllegalArgumentException(ex); + } + return result; + } + + // ----------------------------------------------------------------- + + /** + * Attempt to read a field tag, returning zero if we have reached EOF. + * Protocol message parsers use this to read tags, since a protocol message + * may legally end wherever a tag occurs, and zero is not a valid tag number. + */ + public int readTag() throws IOException { + if (isAtEnd()) { + lastTag = 0; + return 0; + } + + lastTag = readRawVarint32(); + if (WireFormat.getTagFieldNumber(lastTag) == 0) { + // If we actually read zero (or any tag number corresponding to field + // number zero), that's not a valid tag. + throw InvalidProtocolBufferException.invalidTag(); + } + return lastTag; + } + + /** + * Verifies that the last call to readTag() returned the given tag value. + * This is used to verify that a nested group ended with the correct + * end tag. + * + * @throws InvalidProtocolBufferException {@code value} does not match the + * last tag. + */ + public void checkLastTagWas(final int value) + throws InvalidProtocolBufferException { + if (lastTag != value) { + throw InvalidProtocolBufferException.invalidEndTag(); + } + } + + public int getLastTag() { + return lastTag; + } + + /** + * Reads and discards a single field, given its tag value. + * + * @return {@code false} if the tag is an endgroup tag, in which case + * nothing is skipped. Otherwise, returns {@code true}. + */ + public boolean skipField(final int tag) throws IOException { + switch (WireFormat.getTagWireType(tag)) { + case WireFormat.WIRETYPE_VARINT: + skipRawVarint(); + return true; + case WireFormat.WIRETYPE_FIXED64: + skipRawBytes(8); + return true; + case WireFormat.WIRETYPE_LENGTH_DELIMITED: + skipRawBytes(readRawVarint32()); + return true; + case WireFormat.WIRETYPE_START_GROUP: + skipMessage(); + checkLastTagWas( + WireFormat.makeTag(WireFormat.getTagFieldNumber(tag), + WireFormat.WIRETYPE_END_GROUP)); + return true; + case WireFormat.WIRETYPE_END_GROUP: + return false; + case WireFormat.WIRETYPE_FIXED32: + skipRawBytes(4); + return true; + default: + throw InvalidProtocolBufferException.invalidWireType(); + } + } + + /** + * Reads a single field and writes it to output in wire format, + * given its tag value. + * + * @return {@code false} if the tag is an endgroup tag, in which case + * nothing is skipped. Otherwise, returns {@code true}. + */ + public boolean skipField(final int tag, final CodedOutputStream output) + throws IOException { + switch (WireFormat.getTagWireType(tag)) { + case WireFormat.WIRETYPE_VARINT: { + long value = readInt64(); + output.writeRawVarint32(tag); + output.writeUInt64NoTag(value); + return true; + } + case WireFormat.WIRETYPE_FIXED64: { + long value = readRawLittleEndian64(); + output.writeRawVarint32(tag); + output.writeFixed64NoTag(value); + return true; + } + case WireFormat.WIRETYPE_LENGTH_DELIMITED: { + ByteString value = readBytes(); + output.writeRawVarint32(tag); + output.writeBytesNoTag(value); + return true; + } + case WireFormat.WIRETYPE_START_GROUP: { + output.writeRawVarint32(tag); + skipMessage(output); + int endtag = WireFormat.makeTag(WireFormat.getTagFieldNumber(tag), + WireFormat.WIRETYPE_END_GROUP); + checkLastTagWas(endtag); + output.writeRawVarint32(endtag); + return true; + } + case WireFormat.WIRETYPE_END_GROUP: { + return false; + } + case WireFormat.WIRETYPE_FIXED32: { + int value = readRawLittleEndian32(); + output.writeRawVarint32(tag); + output.writeFixed32NoTag(value); + return true; + } + default: + throw InvalidProtocolBufferException.invalidWireType(); + } + } + + /** + * Reads and discards an entire message. This will read either until EOF + * or until an endgroup tag, whichever comes first. + */ + public void skipMessage() throws IOException { + while (true) { + final int tag = readTag(); + if (tag == 0 || !skipField(tag)) { + return; + } + } + } + + /** + * Reads an entire message and writes it to output in wire format. + * This will read either until EOF or until an endgroup tag, + * whichever comes first. + */ + public void skipMessage(CodedOutputStream output) throws IOException { + while (true) { + final int tag = readTag(); + if (tag == 0 || !skipField(tag, output)) { + return; + } + } + } + + /** + * Collects the bytes skipped and returns the data in a ByteBuffer. + */ + private class SkippedDataSink implements RefillCallback { + private int lastPos = bufferPos; + private ByteArrayOutputStream byteArrayStream; + + @Override + public void onRefill() { + if (byteArrayStream == null) { + byteArrayStream = new ByteArrayOutputStream(); + } + byteArrayStream.write(buffer, lastPos, bufferPos - lastPos); + lastPos = 0; + } + + /** + * Gets skipped data in a ByteBuffer. This method should only be + * called once. + */ + ByteBuffer getSkippedData() { + if (byteArrayStream == null) { + return ByteBuffer.wrap(buffer, lastPos, bufferPos - lastPos); + } else { + byteArrayStream.write(buffer, lastPos, bufferPos); + return ByteBuffer.wrap(byteArrayStream.toByteArray()); + } + } + } + + + // ----------------------------------------------------------------- + + /** Read a {@code double} field value from the stream. */ + public double readDouble() throws IOException { + return Double.longBitsToDouble(readRawLittleEndian64()); + } + + /** Read a {@code float} field value from the stream. */ + public float readFloat() throws IOException { + return Float.intBitsToFloat(readRawLittleEndian32()); + } + + /** Read a {@code uint64} field value from the stream. */ + public long readUInt64() throws IOException { + return readRawVarint64(); + } + + /** Read an {@code int64} field value from the stream. */ + public long readInt64() throws IOException { + return readRawVarint64(); + } + + /** Read an {@code int32} field value from the stream. */ + public int readInt32() throws IOException { + return readRawVarint32(); + } + + /** Read a {@code fixed64} field value from the stream. */ + public long readFixed64() throws IOException { + return readRawLittleEndian64(); + } + + /** Read a {@code fixed32} field value from the stream. */ + public int readFixed32() throws IOException { + return readRawLittleEndian32(); + } + + /** Read a {@code bool} field value from the stream. */ + public boolean readBool() throws IOException { + return readRawVarint64() != 0; + } + + /** + * Read a {@code string} field value from the stream. + * If the stream contains malformed UTF-8, + * replace the offending bytes with the standard UTF-8 replacement character. + */ + public String readString() throws IOException { + final int size = readRawVarint32(); + if (size <= (bufferSize - bufferPos) && size > 0) { + // Fast path: We already have the bytes in a contiguous buffer, so + // just copy directly from it. + final String result = new String(buffer, bufferPos, size, "UTF-8"); + bufferPos += size; + return result; + } else if (size == 0) { + return ""; + } else { + // Slow path: Build a byte array first then copy it. + return new String(readRawBytesSlowPath(size), "UTF-8"); + } + } + + /** + * Read a {@code string} field value from the stream. + * If the stream contains malformed UTF-8, + * throw exception {@link InvalidProtocolBufferException}. + */ + public String readStringRequireUtf8() throws IOException { + final int size = readRawVarint32(); + final byte[] bytes; + int pos = bufferPos; + if (size <= (bufferSize - pos) && size > 0) { + // Fast path: We already have the bytes in a contiguous buffer, so + // just copy directly from it. + bytes = buffer; + bufferPos = pos + size; + } else if (size == 0) { + return ""; + } else { + // Slow path: Build a byte array first then copy it. + bytes = readRawBytesSlowPath(size); + pos = 0; + } + // TODO(martinrb): We could save a pass by validating while decoding. + if (!Utf8.isValidUtf8(bytes, pos, pos + size)) { + throw InvalidProtocolBufferException.invalidUtf8(); + } + return new String(bytes, pos, size, "UTF-8"); + } + + /** Read a {@code group} field value from the stream. */ + public void readGroup(final int fieldNumber, + final MessageLite.Builder builder, + final ExtensionRegistryLite extensionRegistry) + throws IOException { + if (recursionDepth >= recursionLimit) { + throw InvalidProtocolBufferException.recursionLimitExceeded(); + } + ++recursionDepth; + builder.mergeFrom(this, extensionRegistry); + checkLastTagWas( + WireFormat.makeTag(fieldNumber, WireFormat.WIRETYPE_END_GROUP)); + --recursionDepth; + } + + + /** Read a {@code group} field value from the stream. */ + public T readGroup( + final int fieldNumber, + final Parser parser, + final ExtensionRegistryLite extensionRegistry) + throws IOException { + if (recursionDepth >= recursionLimit) { + throw InvalidProtocolBufferException.recursionLimitExceeded(); + } + ++recursionDepth; + T result = parser.parsePartialFrom(this, extensionRegistry); + checkLastTagWas( + WireFormat.makeTag(fieldNumber, WireFormat.WIRETYPE_END_GROUP)); + --recursionDepth; + return result; + } + + /** + * Reads a {@code group} field value from the stream and merges it into the + * given {@link UnknownFieldSet}. + * + * @deprecated UnknownFieldSet.Builder now implements MessageLite.Builder, so + * you can just call {@link #readGroup}. + */ + @Deprecated + public void readUnknownGroup(final int fieldNumber, + final MessageLite.Builder builder) + throws IOException { + // We know that UnknownFieldSet will ignore any ExtensionRegistry so it + // is safe to pass null here. (We can't call + // ExtensionRegistry.getEmptyRegistry() because that would make this + // class depend on ExtensionRegistry, which is not part of the lite + // library.) + readGroup(fieldNumber, builder, null); + } + + /** Read an embedded message field value from the stream. */ + public void readMessage(final MessageLite.Builder builder, + final ExtensionRegistryLite extensionRegistry) + throws IOException { + final int length = readRawVarint32(); + if (recursionDepth >= recursionLimit) { + throw InvalidProtocolBufferException.recursionLimitExceeded(); + } + final int oldLimit = pushLimit(length); + ++recursionDepth; + builder.mergeFrom(this, extensionRegistry); + checkLastTagWas(0); + --recursionDepth; + popLimit(oldLimit); + } + + + /** Read an embedded message field value from the stream. */ + public T readMessage( + final Parser parser, + final ExtensionRegistryLite extensionRegistry) + throws IOException { + int length = readRawVarint32(); + if (recursionDepth >= recursionLimit) { + throw InvalidProtocolBufferException.recursionLimitExceeded(); + } + final int oldLimit = pushLimit(length); + ++recursionDepth; + T result = parser.parsePartialFrom(this, extensionRegistry); + checkLastTagWas(0); + --recursionDepth; + popLimit(oldLimit); + return result; + } + + /** Read a {@code bytes} field value from the stream. */ + public ByteString readBytes() throws IOException { + final int size = readRawVarint32(); + if (size <= (bufferSize - bufferPos) && size > 0) { + // Fast path: We already have the bytes in a contiguous buffer, so + // just copy directly from it. + final ByteString result = bufferIsImmutable && enableAliasing + ? new BoundedByteString(buffer, bufferPos, size) + : ByteString.copyFrom(buffer, bufferPos, size); + bufferPos += size; + return result; + } else if (size == 0) { + return ByteString.EMPTY; + } else { + // Slow path: Build a byte array first then copy it. + return new LiteralByteString(readRawBytesSlowPath(size)); + } + } + + /** Read a {@code bytes} field value from the stream. */ + public byte[] readByteArray() throws IOException { + final int size = readRawVarint32(); + if (size <= (bufferSize - bufferPos) && size > 0) { + // Fast path: We already have the bytes in a contiguous buffer, so + // just copy directly from it. + final byte[] result = + Arrays.copyOfRange(buffer, bufferPos, bufferPos + size); + bufferPos += size; + return result; + } else { + // Slow path: Build a byte array first then copy it. + return readRawBytesSlowPath(size); + } + } + + /** Read a {@code bytes} field value from the stream. */ + public ByteBuffer readByteBuffer() throws IOException { + final int size = readRawVarint32(); + if (size <= (bufferSize - bufferPos) && size > 0) { + // Fast path: We already have the bytes in a contiguous buffer. + // When aliasing is enabled, we can return a ByteBuffer pointing directly + // into the underlying byte array without copy if the CodedInputStream is + // constructed from a byte array. If aliasing is disabled or the input is + // from an InputStream or ByteString, we have to make a copy of the bytes. + ByteBuffer result = input == null && !bufferIsImmutable && enableAliasing + ? ByteBuffer.wrap(buffer, bufferPos, size).slice() + : ByteBuffer.wrap(Arrays.copyOfRange( + buffer, bufferPos, bufferPos + size)); + bufferPos += size; + return result; + } else if (size == 0) { + return Internal.EMPTY_BYTE_BUFFER; + } else { + // Slow path: Build a byte array first then copy it. + return ByteBuffer.wrap(readRawBytesSlowPath(size)); + } + } + + /** Read a {@code uint32} field value from the stream. */ + public int readUInt32() throws IOException { + return readRawVarint32(); + } + + /** + * Read an enum field value from the stream. Caller is responsible + * for converting the numeric value to an actual enum. + */ + public int readEnum() throws IOException { + return readRawVarint32(); + } + + /** Read an {@code sfixed32} field value from the stream. */ + public int readSFixed32() throws IOException { + return readRawLittleEndian32(); + } + + /** Read an {@code sfixed64} field value from the stream. */ + public long readSFixed64() throws IOException { + return readRawLittleEndian64(); + } + + /** Read an {@code sint32} field value from the stream. */ + public int readSInt32() throws IOException { + return decodeZigZag32(readRawVarint32()); + } + + /** Read an {@code sint64} field value from the stream. */ + public long readSInt64() throws IOException { + return decodeZigZag64(readRawVarint64()); + } + + // ================================================================= + + /** + * Read a raw Varint from the stream. If larger than 32 bits, discard the + * upper bits. + */ + public int readRawVarint32() throws IOException { + // See implementation notes for readRawVarint64 + fastpath: { + int pos = bufferPos; + + if (bufferSize == pos) { + break fastpath; + } + + final byte[] buffer = this.buffer; + int x; + if ((x = buffer[pos++]) >= 0) { + bufferPos = pos; + return x; + } else if (bufferSize - pos < 9) { + break fastpath; + } else if ((x ^= (buffer[pos++] << 7)) < 0L) { + x ^= (~0L << 7); + } else if ((x ^= (buffer[pos++] << 14)) >= 0L) { + x ^= (~0L << 7) ^ (~0L << 14); + } else if ((x ^= (buffer[pos++] << 21)) < 0L) { + x ^= (~0L << 7) ^ (~0L << 14) ^ (~0L << 21); + } else { + int y = buffer[pos++]; + x ^= y << 28; + x ^= (~0L << 7) ^ (~0L << 14) ^ (~0L << 21) ^ (~0L << 28); + if (y < 0 && + buffer[pos++] < 0 && + buffer[pos++] < 0 && + buffer[pos++] < 0 && + buffer[pos++] < 0 && + buffer[pos++] < 0) { + break fastpath; // Will throw malformedVarint() + } + } + bufferPos = pos; + return x; + } + return (int) readRawVarint64SlowPath(); + } + + private void skipRawVarint() throws IOException { + if (bufferSize - bufferPos >= 10) { + final byte[] buffer = this.buffer; + int pos = bufferPos; + for (int i = 0; i < 10; i++) { + if (buffer[pos++] >= 0) { + bufferPos = pos; + return; + } + } + } + skipRawVarintSlowPath(); + } + + private void skipRawVarintSlowPath() throws IOException { + for (int i = 0; i < 10; i++) { + if (readRawByte() >= 0) { + return; + } + } + throw InvalidProtocolBufferException.malformedVarint(); + } + + /** + * Reads a varint from the input one byte at a time, so that it does not + * read any bytes after the end of the varint. If you simply wrapped the + * stream in a CodedInputStream and used {@link #readRawVarint32(InputStream)} + * then you would probably end up reading past the end of the varint since + * CodedInputStream buffers its input. + */ + static int readRawVarint32(final InputStream input) throws IOException { + final int firstByte = input.read(); + if (firstByte == -1) { + throw InvalidProtocolBufferException.truncatedMessage(); + } + return readRawVarint32(firstByte, input); + } + + /** + * Like {@link #readRawVarint32(InputStream)}, but expects that the caller + * has already read one byte. This allows the caller to determine if EOF + * has been reached before attempting to read. + */ + public static int readRawVarint32( + final int firstByte, final InputStream input) throws IOException { + if ((firstByte & 0x80) == 0) { + return firstByte; + } + + int result = firstByte & 0x7f; + int offset = 7; + for (; offset < 32; offset += 7) { + final int b = input.read(); + if (b == -1) { + throw InvalidProtocolBufferException.truncatedMessage(); + } + result |= (b & 0x7f) << offset; + if ((b & 0x80) == 0) { + return result; + } + } + // Keep reading up to 64 bits. + for (; offset < 64; offset += 7) { + final int b = input.read(); + if (b == -1) { + throw InvalidProtocolBufferException.truncatedMessage(); + } + if ((b & 0x80) == 0) { + return result; + } + } + throw InvalidProtocolBufferException.malformedVarint(); + } + + /** Read a raw Varint from the stream. */ + public long readRawVarint64() throws IOException { + // Implementation notes: + // + // Optimized for one-byte values, expected to be common. + // The particular code below was selected from various candidates + // empirically, by winning VarintBenchmark. + // + // Sign extension of (signed) Java bytes is usually a nuisance, but + // we exploit it here to more easily obtain the sign of bytes read. + // Instead of cleaning up the sign extension bits by masking eagerly, + // we delay until we find the final (positive) byte, when we clear all + // accumulated bits with one xor. We depend on javac to constant fold. + fastpath: { + int pos = bufferPos; + + if (bufferSize == pos) { + break fastpath; + } + + final byte[] buffer = this.buffer; + long x; + int y; + if ((y = buffer[pos++]) >= 0) { + bufferPos = pos; + return y; + } else if (bufferSize - pos < 9) { + break fastpath; + } else if ((x = y ^ (buffer[pos++] << 7)) < 0L) { + x ^= (~0L << 7); + } else if ((x ^= (buffer[pos++] << 14)) >= 0L) { + x ^= (~0L << 7) ^ (~0L << 14); + } else if ((x ^= (buffer[pos++] << 21)) < 0L) { + x ^= (~0L << 7) ^ (~0L << 14) ^ (~0L << 21); + } else if ((x ^= ((long) buffer[pos++] << 28)) >= 0L) { + x ^= (~0L << 7) ^ (~0L << 14) ^ (~0L << 21) ^ (~0L << 28); + } else if ((x ^= ((long) buffer[pos++] << 35)) < 0L) { + x ^= (~0L << 7) ^ (~0L << 14) ^ (~0L << 21) ^ (~0L << 28) ^ (~0L << 35); + } else if ((x ^= ((long) buffer[pos++] << 42)) >= 0L) { + x ^= (~0L << 7) ^ (~0L << 14) ^ (~0L << 21) ^ (~0L << 28) ^ (~0L << 35) ^ (~0L << 42); + } else if ((x ^= ((long) buffer[pos++] << 49)) < 0L) { + x ^= (~0L << 7) ^ (~0L << 14) ^ (~0L << 21) ^ (~0L << 28) ^ (~0L << 35) ^ (~0L << 42) + ^ (~0L << 49); + } else { + x ^= ((long) buffer[pos++] << 56); + x ^= (~0L << 7) ^ (~0L << 14) ^ (~0L << 21) ^ (~0L << 28) ^ (~0L << 35) ^ (~0L << 42) + ^ (~0L << 49) ^ (~0L << 56); + if (x < 0L) { + if (buffer[pos++] < 0L) { + break fastpath; // Will throw malformedVarint() + } + } + } + bufferPos = pos; + return x; + } + return readRawVarint64SlowPath(); + } + + /** Variant of readRawVarint64 for when uncomfortably close to the limit. */ + /* Visible for testing */ + long readRawVarint64SlowPath() throws IOException { + long result = 0; + for (int shift = 0; shift < 64; shift += 7) { + final byte b = readRawByte(); + result |= (long) (b & 0x7F) << shift; + if ((b & 0x80) == 0) { + return result; + } + } + throw InvalidProtocolBufferException.malformedVarint(); + } + + /** Read a 32-bit little-endian integer from the stream. */ + public int readRawLittleEndian32() throws IOException { + int pos = bufferPos; + + // hand-inlined ensureAvailable(4); + if (bufferSize - pos < 4) { + refillBuffer(4); + pos = bufferPos; + } + + final byte[] buffer = this.buffer; + bufferPos = pos + 4; + return (((buffer[pos] & 0xff)) | + ((buffer[pos + 1] & 0xff) << 8) | + ((buffer[pos + 2] & 0xff) << 16) | + ((buffer[pos + 3] & 0xff) << 24)); + } + + /** Read a 64-bit little-endian integer from the stream. */ + public long readRawLittleEndian64() throws IOException { + int pos = bufferPos; + + // hand-inlined ensureAvailable(8); + if (bufferSize - pos < 8) { + refillBuffer(8); + pos = bufferPos; + } + + final byte[] buffer = this.buffer; + bufferPos = pos + 8; + return ((((long) buffer[pos] & 0xffL)) | + (((long) buffer[pos + 1] & 0xffL) << 8) | + (((long) buffer[pos + 2] & 0xffL) << 16) | + (((long) buffer[pos + 3] & 0xffL) << 24) | + (((long) buffer[pos + 4] & 0xffL) << 32) | + (((long) buffer[pos + 5] & 0xffL) << 40) | + (((long) buffer[pos + 6] & 0xffL) << 48) | + (((long) buffer[pos + 7] & 0xffL) << 56)); + } + + /** + * Decode a ZigZag-encoded 32-bit value. ZigZag encodes signed integers + * into values that can be efficiently encoded with varint. (Otherwise, + * negative values must be sign-extended to 64 bits to be varint encoded, + * thus always taking 10 bytes on the wire.) + * + * @param n An unsigned 32-bit integer, stored in a signed int because + * Java has no explicit unsigned support. + * @return A signed 32-bit integer. + */ + public static int decodeZigZag32(final int n) { + return (n >>> 1) ^ -(n & 1); + } + + /** + * Decode a ZigZag-encoded 64-bit value. ZigZag encodes signed integers + * into values that can be efficiently encoded with varint. (Otherwise, + * negative values must be sign-extended to 64 bits to be varint encoded, + * thus always taking 10 bytes on the wire.) + * + * @param n An unsigned 64-bit integer, stored in a signed int because + * Java has no explicit unsigned support. + * @return A signed 64-bit integer. + */ + public static long decodeZigZag64(final long n) { + return (n >>> 1) ^ -(n & 1); + } + + // ----------------------------------------------------------------- + + private final byte[] buffer; + private final boolean bufferIsImmutable; + private int bufferSize; + private int bufferSizeAfterLimit; + private int bufferPos; + private final InputStream input; + private int lastTag; + private boolean enableAliasing = false; + + /** + * The total number of bytes read before the current buffer. The total + * bytes read up to the current position can be computed as + * {@code totalBytesRetired + bufferPos}. This value may be negative if + * reading started in the middle of the current buffer (e.g. if the + * constructor that takes a byte array and an offset was used). + */ + private int totalBytesRetired; + + /** The absolute position of the end of the current message. */ + private int currentLimit = Integer.MAX_VALUE; + + /** See setRecursionLimit() */ + private int recursionDepth; + private int recursionLimit = DEFAULT_RECURSION_LIMIT; + + /** See setSizeLimit() */ + private int sizeLimit = DEFAULT_SIZE_LIMIT; + + private static final int DEFAULT_RECURSION_LIMIT = 64; + private static final int DEFAULT_SIZE_LIMIT = 64 << 20; // 64MB + private static final int BUFFER_SIZE = 4096; + + private CodedInputStream(final byte[] buffer, final int off, final int len) { + this.buffer = buffer; + bufferSize = off + len; + bufferPos = off; + totalBytesRetired = -off; + input = null; + bufferIsImmutable = false; + } + + private CodedInputStream(final InputStream input) { + buffer = new byte[BUFFER_SIZE]; + bufferSize = 0; + bufferPos = 0; + totalBytesRetired = 0; + this.input = input; + bufferIsImmutable = false; + } + + private CodedInputStream(final LiteralByteString byteString) { + buffer = byteString.bytes; + bufferPos = byteString.getOffsetIntoBytes(); + bufferSize = bufferPos + byteString.size(); + totalBytesRetired = -bufferPos; + input = null; + bufferIsImmutable = true; + } + + public void enableAliasing(boolean enabled) { + this.enableAliasing = enabled; + } + + /** + * Set the maximum message recursion depth. In order to prevent malicious + * messages from causing stack overflows, {@code CodedInputStream} limits + * how deeply messages may be nested. The default limit is 64. + * + * @return the old limit. + */ + public int setRecursionLimit(final int limit) { + if (limit < 0) { + throw new IllegalArgumentException( + "Recursion limit cannot be negative: " + limit); + } + final int oldLimit = recursionLimit; + recursionLimit = limit; + return oldLimit; + } + + /** + * Set the maximum message size. In order to prevent malicious + * messages from exhausting memory or causing integer overflows, + * {@code CodedInputStream} limits how large a message may be. + * The default limit is 64MB. You should set this limit as small + * as you can without harming your app's functionality. Note that + * size limits only apply when reading from an {@code InputStream}, not + * when constructed around a raw byte array (nor with + * {@link ByteString#newCodedInput}). + *

      + * If you want to read several messages from a single CodedInputStream, you + * could call {@link #resetSizeCounter()} after each one to avoid hitting the + * size limit. + * + * @return the old limit. + */ + public int setSizeLimit(final int limit) { + if (limit < 0) { + throw new IllegalArgumentException( + "Size limit cannot be negative: " + limit); + } + final int oldLimit = sizeLimit; + sizeLimit = limit; + return oldLimit; + } + + /** + * Resets the current size counter to zero (see {@link #setSizeLimit(int)}). + */ + public void resetSizeCounter() { + totalBytesRetired = -bufferPos; + } + + /** + * Sets {@code currentLimit} to (current position) + {@code byteLimit}. This + * is called when descending into a length-delimited embedded message. + * + *

      Note that {@code pushLimit()} does NOT affect how many bytes the + * {@code CodedInputStream} reads from an underlying {@code InputStream} when + * refreshing its buffer. If you need to prevent reading past a certain + * point in the underlying {@code InputStream} (e.g. because you expect it to + * contain more data after the end of the message which you need to handle + * differently) then you must place a wrapper around your {@code InputStream} + * which limits the amount of data that can be read from it. + * + * @return the old limit. + */ + public int pushLimit(int byteLimit) throws InvalidProtocolBufferException { + if (byteLimit < 0) { + throw InvalidProtocolBufferException.negativeSize(); + } + byteLimit += totalBytesRetired + bufferPos; + final int oldLimit = currentLimit; + if (byteLimit > oldLimit) { + throw InvalidProtocolBufferException.truncatedMessage(); + } + currentLimit = byteLimit; + + recomputeBufferSizeAfterLimit(); + + return oldLimit; + } + + private void recomputeBufferSizeAfterLimit() { + bufferSize += bufferSizeAfterLimit; + final int bufferEnd = totalBytesRetired + bufferSize; + if (bufferEnd > currentLimit) { + // Limit is in current buffer. + bufferSizeAfterLimit = bufferEnd - currentLimit; + bufferSize -= bufferSizeAfterLimit; + } else { + bufferSizeAfterLimit = 0; + } + } + + /** + * Discards the current limit, returning to the previous limit. + * + * @param oldLimit The old limit, as returned by {@code pushLimit}. + */ + public void popLimit(final int oldLimit) { + currentLimit = oldLimit; + recomputeBufferSizeAfterLimit(); + } + + /** + * Returns the number of bytes to be read before the current limit. + * If no limit is set, returns -1. + */ + public int getBytesUntilLimit() { + if (currentLimit == Integer.MAX_VALUE) { + return -1; + } + + final int currentAbsolutePosition = totalBytesRetired + bufferPos; + return currentLimit - currentAbsolutePosition; + } + + /** + * Returns true if the stream has reached the end of the input. This is the + * case if either the end of the underlying input source has been reached or + * if the stream has reached a limit created using {@link #pushLimit(int)}. + */ + public boolean isAtEnd() throws IOException { + return bufferPos == bufferSize && !tryRefillBuffer(1); + } + + /** + * The total bytes read up to the current position. Calling + * {@link #resetSizeCounter()} resets this value to zero. + */ + public int getTotalBytesRead() { + return totalBytesRetired + bufferPos; + } + + private interface RefillCallback { + void onRefill(); + } + + private RefillCallback refillCallback = null; + + /** + * Ensures that at least {@code n} bytes are available in the buffer, reading + * more bytes from the input if necessary to make it so. Caller must ensure + * that the requested space is less than BUFFER_SIZE. + * + * @throws InvalidProtocolBufferException The end of the stream or the current + * limit was reached. + */ + private void ensureAvailable(int n) throws IOException { + if (bufferSize - bufferPos < n) { + refillBuffer(n); + } + } + + /** + * Reads more bytes from the input, making at least {@code n} bytes available + * in the buffer. Caller must ensure that the requested space is not yet + * available, and that the requested space is less than BUFFER_SIZE. + * + * @throws InvalidProtocolBufferException The end of the stream or the current + * limit was reached. + */ + private void refillBuffer(int n) throws IOException { + if (!tryRefillBuffer(n)) { + throw InvalidProtocolBufferException.truncatedMessage(); + } + } + + /** + * Tries to read more bytes from the input, making at least {@code n} bytes + * available in the buffer. Caller must ensure that the requested space is + * not yet available, and that the requested space is less than BUFFER_SIZE. + * + * @return {@code true} if the bytes could be made available; {@code false} + * if the end of the stream or the current limit was reached. + */ + private boolean tryRefillBuffer(int n) throws IOException { + if (bufferPos + n <= bufferSize) { + throw new IllegalStateException( + "refillBuffer() called when " + n + + " bytes were already available in buffer"); + } + + if (totalBytesRetired + bufferPos + n > currentLimit) { + // Oops, we hit a limit. + return false; + } + + if (refillCallback != null) { + refillCallback.onRefill(); + } + + if (input != null) { + int pos = bufferPos; + if (pos > 0) { + if (bufferSize > pos) { + System.arraycopy(buffer, pos, buffer, 0, bufferSize - pos); + } + totalBytesRetired += pos; + bufferSize -= pos; + bufferPos = 0; + } + + int bytesRead = input.read(buffer, bufferSize, buffer.length - bufferSize); + if (bytesRead == 0 || bytesRead < -1 || bytesRead > buffer.length) { + throw new IllegalStateException( + "InputStream#read(byte[]) returned invalid result: " + bytesRead + + "\nThe InputStream implementation is buggy."); + } + if (bytesRead > 0) { + bufferSize += bytesRead; + // Integer-overflow-conscious check against sizeLimit + if (totalBytesRetired + n - sizeLimit > 0) { + throw InvalidProtocolBufferException.sizeLimitExceeded(); + } + recomputeBufferSizeAfterLimit(); + return (bufferSize >= n) ? true : tryRefillBuffer(n); + } + } + + return false; + } + + /** + * Read one byte from the input. + * + * @throws InvalidProtocolBufferException The end of the stream or the current + * limit was reached. + */ + public byte readRawByte() throws IOException { + if (bufferPos == bufferSize) { + refillBuffer(1); + } + return buffer[bufferPos++]; + } + + /** + * Read a fixed size of bytes from the input. + * + * @throws InvalidProtocolBufferException The end of the stream or the current + * limit was reached. + */ + public byte[] readRawBytes(final int size) throws IOException { + final int pos = bufferPos; + if (size <= (bufferSize - pos) && size > 0) { + bufferPos = pos + size; + return Arrays.copyOfRange(buffer, pos, pos + size); + } else { + return readRawBytesSlowPath(size); + } + } + + /** + * Exactly like readRawBytes, but caller must have already checked the fast + * path: (size <= (bufferSize - pos) && size > 0) + */ + private byte[] readRawBytesSlowPath(final int size) throws IOException { + if (size <= 0) { + if (size == 0) { + return Internal.EMPTY_BYTE_ARRAY; + } else { + throw InvalidProtocolBufferException.negativeSize(); + } + } + + if (totalBytesRetired + bufferPos + size > currentLimit) { + // Read to the end of the stream anyway. + skipRawBytes(currentLimit - totalBytesRetired - bufferPos); + // Then fail. + throw InvalidProtocolBufferException.truncatedMessage(); + } + + if (size < BUFFER_SIZE) { + // Reading more bytes than are in the buffer, but not an excessive number + // of bytes. We can safely allocate the resulting array ahead of time. + + // First copy what we have. + final byte[] bytes = new byte[size]; + int pos = bufferSize - bufferPos; + System.arraycopy(buffer, bufferPos, bytes, 0, pos); + bufferPos = bufferSize; + + // We want to refill the buffer and then copy from the buffer into our + // byte array rather than reading directly into our byte array because + // the input may be unbuffered. + ensureAvailable(size - pos); + System.arraycopy(buffer, 0, bytes, pos, size - pos); + bufferPos = size - pos; + + return bytes; + } else { + // The size is very large. For security reasons, we can't allocate the + // entire byte array yet. The size comes directly from the input, so a + // maliciously-crafted message could provide a bogus very large size in + // order to trick the app into allocating a lot of memory. We avoid this + // by allocating and reading only a small chunk at a time, so that the + // malicious message must actually *be* extremely large to cause + // problems. Meanwhile, we limit the allowed size of a message elsewhere. + + // Remember the buffer markers since we'll have to copy the bytes out of + // it later. + final int originalBufferPos = bufferPos; + final int originalBufferSize = bufferSize; + + // Mark the current buffer consumed. + totalBytesRetired += bufferSize; + bufferPos = 0; + bufferSize = 0; + + // Read all the rest of the bytes we need. + int sizeLeft = size - (originalBufferSize - originalBufferPos); + final List chunks = new ArrayList(); + + while (sizeLeft > 0) { + final byte[] chunk = new byte[Math.min(sizeLeft, BUFFER_SIZE)]; + int pos = 0; + while (pos < chunk.length) { + final int n = (input == null) ? -1 : + input.read(chunk, pos, chunk.length - pos); + if (n == -1) { + throw InvalidProtocolBufferException.truncatedMessage(); + } + totalBytesRetired += n; + pos += n; + } + sizeLeft -= chunk.length; + chunks.add(chunk); + } + + // OK, got everything. Now concatenate it all into one buffer. + final byte[] bytes = new byte[size]; + + // Start by copying the leftover bytes from this.buffer. + int pos = originalBufferSize - originalBufferPos; + System.arraycopy(buffer, originalBufferPos, bytes, 0, pos); + + // And now all the chunks. + for (final byte[] chunk : chunks) { + System.arraycopy(chunk, 0, bytes, pos, chunk.length); + pos += chunk.length; + } + + // Done. + return bytes; + } + } + + /** + * Reads and discards {@code size} bytes. + * + * @throws InvalidProtocolBufferException The end of the stream or the current + * limit was reached. + */ + public void skipRawBytes(final int size) throws IOException { + if (size <= (bufferSize - bufferPos) && size >= 0) { + // We have all the bytes we need already. + bufferPos += size; + } else { + skipRawBytesSlowPath(size); + } + } + + /** + * Exactly like skipRawBytes, but caller must have already checked the fast + * path: (size <= (bufferSize - pos) && size >= 0) + */ + private void skipRawBytesSlowPath(final int size) throws IOException { + if (size < 0) { + throw InvalidProtocolBufferException.negativeSize(); + } + + if (totalBytesRetired + bufferPos + size > currentLimit) { + // Read to the end of the stream anyway. + skipRawBytes(currentLimit - totalBytesRetired - bufferPos); + // Then fail. + throw InvalidProtocolBufferException.truncatedMessage(); + } + + // Skipping more bytes than are in the buffer. First skip what we have. + int pos = bufferSize - bufferPos; + bufferPos = bufferSize; + + // Keep refilling the buffer until we get to the point we wanted to skip to. + // This has the side effect of ensuring the limits are updated correctly. + refillBuffer(1); + while (size - pos > bufferSize) { + pos += bufferSize; + bufferPos = bufferSize; + refillBuffer(1); + } + + bufferPos = size - pos; + } +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/CodedOutputStream.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/CodedOutputStream.java new file mode 100644 index 00000000..fafe0356 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/CodedOutputStream.java @@ -0,0 +1,1297 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import java.io.IOException; +import java.io.OutputStream; +import java.io.UnsupportedEncodingException; +import java.nio.ByteBuffer; + +/** + * Encodes and writes protocol message fields. + * + *

      This class contains two kinds of methods: methods that write specific + * protocol message constructs and field types (e.g. {@link #writeTag} and + * {@link #writeInt32}) and methods that write low-level values (e.g. + * {@link #writeRawVarint32} and {@link #writeRawBytes}). If you are + * writing encoded protocol messages, you should use the former methods, but if + * you are writing some other format of your own design, use the latter. + * + *

      This class is totally unsynchronized. + * + * @author kneton@google.com Kenton Varda + */ +public final class CodedOutputStream { + private final byte[] buffer; + private final int limit; + private int position; + private int totalBytesWritten = 0; + + private final OutputStream output; + + /** + * The buffer size used in {@link #newInstance(OutputStream)}. + */ + public static final int DEFAULT_BUFFER_SIZE = 4096; + + /** + * Returns the buffer size to efficiently write dataLength bytes to this + * CodedOutputStream. Used by AbstractMessageLite. + * + * @return the buffer size to efficiently write dataLength bytes to this + * CodedOutputStream. + */ + static int computePreferredBufferSize(int dataLength) { + if (dataLength > DEFAULT_BUFFER_SIZE) return DEFAULT_BUFFER_SIZE; + return dataLength; + } + + private CodedOutputStream(final byte[] buffer, final int offset, + final int length) { + output = null; + this.buffer = buffer; + position = offset; + limit = offset + length; + } + + private CodedOutputStream(final OutputStream output, final byte[] buffer) { + this.output = output; + this.buffer = buffer; + position = 0; + limit = buffer.length; + } + + /** + * Create a new {@code CodedOutputStream} wrapping the given + * {@code OutputStream}. + */ + public static CodedOutputStream newInstance(final OutputStream output) { + return newInstance(output, DEFAULT_BUFFER_SIZE); + } + + /** + * Create a new {@code CodedOutputStream} wrapping the given + * {@code OutputStream} with a given buffer size. + */ + public static CodedOutputStream newInstance(final OutputStream output, + final int bufferSize) { + return new CodedOutputStream(output, new byte[bufferSize]); + } + + /** + * Create a new {@code CodedOutputStream} that writes directly to the given + * byte array. If more bytes are written than fit in the array, + * {@link OutOfSpaceException} will be thrown. Writing directly to a flat + * array is faster than writing to an {@code OutputStream}. See also + * {@link ByteString#newCodedBuilder}. + */ + public static CodedOutputStream newInstance(final byte[] flatArray) { + return newInstance(flatArray, 0, flatArray.length); + } + + /** + * Create a new {@code CodedOutputStream} that writes directly to the given + * byte array slice. If more bytes are written than fit in the slice, + * {@link OutOfSpaceException} will be thrown. Writing directly to a flat + * array is faster than writing to an {@code OutputStream}. See also + * {@link ByteString#newCodedBuilder}. + */ + public static CodedOutputStream newInstance(final byte[] flatArray, + final int offset, + final int length) { + return new CodedOutputStream(flatArray, offset, length); + } + + /** + * Create a new {@code CodedOutputStream} that writes to the given ByteBuffer. + */ + public static CodedOutputStream newInstance(ByteBuffer byteBuffer) { + return newInstance(byteBuffer, DEFAULT_BUFFER_SIZE); + } + + /** + * Create a new {@code CodedOutputStream} that writes to the given ByteBuffer. + */ + public static CodedOutputStream newInstance(ByteBuffer byteBuffer, + int bufferSize) { + return newInstance(new ByteBufferOutputStream(byteBuffer), bufferSize); + } + + private static class ByteBufferOutputStream extends OutputStream { + private final ByteBuffer byteBuffer; + public ByteBufferOutputStream(ByteBuffer byteBuffer) { + this.byteBuffer = byteBuffer; + } + + @Override + public void write(int b) throws IOException { + byteBuffer.put((byte) b); + } + + @Override + public void write(byte[] data, int offset, int length) throws IOException { + byteBuffer.put(data, offset, length); + } + } + + // ----------------------------------------------------------------- + + /** Write a {@code double} field, including tag, to the stream. */ + public void writeDouble(final int fieldNumber, final double value) + throws IOException { + writeTag(fieldNumber, WireFormat.WIRETYPE_FIXED64); + writeDoubleNoTag(value); + } + + /** Write a {@code float} field, including tag, to the stream. */ + public void writeFloat(final int fieldNumber, final float value) + throws IOException { + writeTag(fieldNumber, WireFormat.WIRETYPE_FIXED32); + writeFloatNoTag(value); + } + + /** Write a {@code uint64} field, including tag, to the stream. */ + public void writeUInt64(final int fieldNumber, final long value) + throws IOException { + writeTag(fieldNumber, WireFormat.WIRETYPE_VARINT); + writeUInt64NoTag(value); + } + + /** Write an {@code int64} field, including tag, to the stream. */ + public void writeInt64(final int fieldNumber, final long value) + throws IOException { + writeTag(fieldNumber, WireFormat.WIRETYPE_VARINT); + writeInt64NoTag(value); + } + + /** Write an {@code int32} field, including tag, to the stream. */ + public void writeInt32(final int fieldNumber, final int value) + throws IOException { + writeTag(fieldNumber, WireFormat.WIRETYPE_VARINT); + writeInt32NoTag(value); + } + + /** Write a {@code fixed64} field, including tag, to the stream. */ + public void writeFixed64(final int fieldNumber, final long value) + throws IOException { + writeTag(fieldNumber, WireFormat.WIRETYPE_FIXED64); + writeFixed64NoTag(value); + } + + /** Write a {@code fixed32} field, including tag, to the stream. */ + public void writeFixed32(final int fieldNumber, final int value) + throws IOException { + writeTag(fieldNumber, WireFormat.WIRETYPE_FIXED32); + writeFixed32NoTag(value); + } + + /** Write a {@code bool} field, including tag, to the stream. */ + public void writeBool(final int fieldNumber, final boolean value) + throws IOException { + writeTag(fieldNumber, WireFormat.WIRETYPE_VARINT); + writeBoolNoTag(value); + } + + /** Write a {@code string} field, including tag, to the stream. */ + public void writeString(final int fieldNumber, final String value) + throws IOException { + writeTag(fieldNumber, WireFormat.WIRETYPE_LENGTH_DELIMITED); + writeStringNoTag(value); + } + + /** Write a {@code group} field, including tag, to the stream. */ + public void writeGroup(final int fieldNumber, final MessageLite value) + throws IOException { + writeTag(fieldNumber, WireFormat.WIRETYPE_START_GROUP); + writeGroupNoTag(value); + writeTag(fieldNumber, WireFormat.WIRETYPE_END_GROUP); + } + + + /** + * Write a group represented by an {@link UnknownFieldSet}. + * + * @deprecated UnknownFieldSet now implements MessageLite, so you can just + * call {@link #writeGroup}. + */ + @Deprecated + public void writeUnknownGroup(final int fieldNumber, + final MessageLite value) + throws IOException { + writeGroup(fieldNumber, value); + } + + /** Write an embedded message field, including tag, to the stream. */ + public void writeMessage(final int fieldNumber, final MessageLite value) + throws IOException { + writeTag(fieldNumber, WireFormat.WIRETYPE_LENGTH_DELIMITED); + writeMessageNoTag(value); + } + + + /** Write a {@code bytes} field, including tag, to the stream. */ + public void writeBytes(final int fieldNumber, final ByteString value) + throws IOException { + writeTag(fieldNumber, WireFormat.WIRETYPE_LENGTH_DELIMITED); + writeBytesNoTag(value); + } + + /** Write a {@code bytes} field, including tag, to the stream. */ + public void writeByteArray(final int fieldNumber, final byte[] value) + throws IOException { + writeTag(fieldNumber, WireFormat.WIRETYPE_LENGTH_DELIMITED); + writeByteArrayNoTag(value); + } + + /** Write a {@code bytes} field, including tag, to the stream. */ + public void writeByteArray(final int fieldNumber, + final byte[] value, + final int offset, + final int length) + throws IOException { + writeTag(fieldNumber, WireFormat.WIRETYPE_LENGTH_DELIMITED); + writeByteArrayNoTag(value, offset, length); + } + + /** + * Write a {@code bytes} field, including tag, to the stream. + * This method will write all content of the ByteBuffer regardless of the + * current position and limit (i.e., the number of bytes to be written is + * value.capacity(), not value.remaining()). Furthermore, this method doesn't + * alter the state of the passed-in ByteBuffer. Its position, limit, mark, + * etc. will remain unchanged. If you only want to write the remaining bytes + * of a ByteBuffer, you can call + * {@code writeByteBuffer(fieldNumber, byteBuffer.slice())}. + */ + public void writeByteBuffer(final int fieldNumber, final ByteBuffer value) + throws IOException { + writeTag(fieldNumber, WireFormat.WIRETYPE_LENGTH_DELIMITED); + writeByteBufferNoTag(value); + } + + /** Write a {@code uint32} field, including tag, to the stream. */ + public void writeUInt32(final int fieldNumber, final int value) + throws IOException { + writeTag(fieldNumber, WireFormat.WIRETYPE_VARINT); + writeUInt32NoTag(value); + } + + /** + * Write an enum field, including tag, to the stream. Caller is responsible + * for converting the enum value to its numeric value. + */ + public void writeEnum(final int fieldNumber, final int value) + throws IOException { + writeTag(fieldNumber, WireFormat.WIRETYPE_VARINT); + writeEnumNoTag(value); + } + + /** Write an {@code sfixed32} field, including tag, to the stream. */ + public void writeSFixed32(final int fieldNumber, final int value) + throws IOException { + writeTag(fieldNumber, WireFormat.WIRETYPE_FIXED32); + writeSFixed32NoTag(value); + } + + /** Write an {@code sfixed64} field, including tag, to the stream. */ + public void writeSFixed64(final int fieldNumber, final long value) + throws IOException { + writeTag(fieldNumber, WireFormat.WIRETYPE_FIXED64); + writeSFixed64NoTag(value); + } + + /** Write an {@code sint32} field, including tag, to the stream. */ + public void writeSInt32(final int fieldNumber, final int value) + throws IOException { + writeTag(fieldNumber, WireFormat.WIRETYPE_VARINT); + writeSInt32NoTag(value); + } + + /** Write an {@code sint64} field, including tag, to the stream. */ + public void writeSInt64(final int fieldNumber, final long value) + throws IOException { + writeTag(fieldNumber, WireFormat.WIRETYPE_VARINT); + writeSInt64NoTag(value); + } + + /** + * Write a MessageSet extension field to the stream. For historical reasons, + * the wire format differs from normal fields. + */ + public void writeMessageSetExtension(final int fieldNumber, + final MessageLite value) + throws IOException { + writeTag(WireFormat.MESSAGE_SET_ITEM, WireFormat.WIRETYPE_START_GROUP); + writeUInt32(WireFormat.MESSAGE_SET_TYPE_ID, fieldNumber); + writeMessage(WireFormat.MESSAGE_SET_MESSAGE, value); + writeTag(WireFormat.MESSAGE_SET_ITEM, WireFormat.WIRETYPE_END_GROUP); + } + + /** + * Write an unparsed MessageSet extension field to the stream. For + * historical reasons, the wire format differs from normal fields. + */ + public void writeRawMessageSetExtension(final int fieldNumber, + final ByteString value) + throws IOException { + writeTag(WireFormat.MESSAGE_SET_ITEM, WireFormat.WIRETYPE_START_GROUP); + writeUInt32(WireFormat.MESSAGE_SET_TYPE_ID, fieldNumber); + writeBytes(WireFormat.MESSAGE_SET_MESSAGE, value); + writeTag(WireFormat.MESSAGE_SET_ITEM, WireFormat.WIRETYPE_END_GROUP); + } + + // ----------------------------------------------------------------- + + /** Write a {@code double} field to the stream. */ + public void writeDoubleNoTag(final double value) throws IOException { + writeRawLittleEndian64(Double.doubleToRawLongBits(value)); + } + + /** Write a {@code float} field to the stream. */ + public void writeFloatNoTag(final float value) throws IOException { + writeRawLittleEndian32(Float.floatToRawIntBits(value)); + } + + /** Write a {@code uint64} field to the stream. */ + public void writeUInt64NoTag(final long value) throws IOException { + writeRawVarint64(value); + } + + /** Write an {@code int64} field to the stream. */ + public void writeInt64NoTag(final long value) throws IOException { + writeRawVarint64(value); + } + + /** Write an {@code int32} field to the stream. */ + public void writeInt32NoTag(final int value) throws IOException { + if (value >= 0) { + writeRawVarint32(value); + } else { + // Must sign-extend. + writeRawVarint64(value); + } + } + + /** Write a {@code fixed64} field to the stream. */ + public void writeFixed64NoTag(final long value) throws IOException { + writeRawLittleEndian64(value); + } + + /** Write a {@code fixed32} field to the stream. */ + public void writeFixed32NoTag(final int value) throws IOException { + writeRawLittleEndian32(value); + } + + /** Write a {@code bool} field to the stream. */ + public void writeBoolNoTag(final boolean value) throws IOException { + writeRawByte(value ? 1 : 0); + } + + /** Write a {@code string} field to the stream. */ + public void writeStringNoTag(final String value) throws IOException { + // Unfortunately there does not appear to be any way to tell Java to encode + // UTF-8 directly into our buffer, so we have to let it create its own byte + // array and then copy. + final byte[] bytes = value.getBytes("UTF-8"); + writeRawVarint32(bytes.length); + writeRawBytes(bytes); + } + + /** Write a {@code group} field to the stream. */ + public void writeGroupNoTag(final MessageLite value) throws IOException { + value.writeTo(this); + } + + + /** + * Write a group represented by an {@link UnknownFieldSet}. + * + * @deprecated UnknownFieldSet now implements MessageLite, so you can just + * call {@link #writeGroupNoTag}. + */ + @Deprecated + public void writeUnknownGroupNoTag(final MessageLite value) + throws IOException { + writeGroupNoTag(value); + } + + /** Write an embedded message field to the stream. */ + public void writeMessageNoTag(final MessageLite value) throws IOException { + writeRawVarint32(value.getSerializedSize()); + value.writeTo(this); + } + + + /** Write a {@code bytes} field to the stream. */ + public void writeBytesNoTag(final ByteString value) throws IOException { + writeRawVarint32(value.size()); + writeRawBytes(value); + } + + /** Write a {@code bytes} field to the stream. */ + public void writeByteArrayNoTag(final byte[] value) throws IOException { + writeRawVarint32(value.length); + writeRawBytes(value); + } + + /** Write a {@code bytes} field to the stream. */ + public void writeByteArrayNoTag(final byte[] value, + final int offset, + final int length) throws IOException { + writeRawVarint32(length); + writeRawBytes(value, offset, length); + } + + /** + * Write a {@code bytes} field to the stream. This method will write all + * content of the ByteBuffer regardless of the current position and limit + * (i.e., the number of bytes to be written is value.capacity(), not + * value.remaining()). Furthermore, this method doesn't alter the state of + * the passed-in ByteBuffer. Its position, limit, mark, etc. will remain + * unchanged. If you only want to write the remaining bytes of a ByteBuffer, + * you can call {@code writeByteBufferNoTag(byteBuffer.slice())}. + */ + public void writeByteBufferNoTag(final ByteBuffer value) throws IOException { + writeRawVarint32(value.capacity()); + writeRawBytes(value); + } + + /** Write a {@code uint32} field to the stream. */ + public void writeUInt32NoTag(final int value) throws IOException { + writeRawVarint32(value); + } + + /** + * Write an enum field to the stream. Caller is responsible + * for converting the enum value to its numeric value. + */ + public void writeEnumNoTag(final int value) throws IOException { + writeInt32NoTag(value); + } + + /** Write an {@code sfixed32} field to the stream. */ + public void writeSFixed32NoTag(final int value) throws IOException { + writeRawLittleEndian32(value); + } + + /** Write an {@code sfixed64} field to the stream. */ + public void writeSFixed64NoTag(final long value) throws IOException { + writeRawLittleEndian64(value); + } + + /** Write an {@code sint32} field to the stream. */ + public void writeSInt32NoTag(final int value) throws IOException { + writeRawVarint32(encodeZigZag32(value)); + } + + /** Write an {@code sint64} field to the stream. */ + public void writeSInt64NoTag(final long value) throws IOException { + writeRawVarint64(encodeZigZag64(value)); + } + + // ================================================================= + + /** + * Compute the number of bytes that would be needed to encode a + * {@code double} field, including tag. + */ + public static int computeDoubleSize(final int fieldNumber, + final double value) { + return computeTagSize(fieldNumber) + computeDoubleSizeNoTag(value); + } + + /** + * Compute the number of bytes that would be needed to encode a + * {@code float} field, including tag. + */ + public static int computeFloatSize(final int fieldNumber, final float value) { + return computeTagSize(fieldNumber) + computeFloatSizeNoTag(value); + } + + /** + * Compute the number of bytes that would be needed to encode a + * {@code uint64} field, including tag. + */ + public static int computeUInt64Size(final int fieldNumber, final long value) { + return computeTagSize(fieldNumber) + computeUInt64SizeNoTag(value); + } + + /** + * Compute the number of bytes that would be needed to encode an + * {@code int64} field, including tag. + */ + public static int computeInt64Size(final int fieldNumber, final long value) { + return computeTagSize(fieldNumber) + computeInt64SizeNoTag(value); + } + + /** + * Compute the number of bytes that would be needed to encode an + * {@code int32} field, including tag. + */ + public static int computeInt32Size(final int fieldNumber, final int value) { + return computeTagSize(fieldNumber) + computeInt32SizeNoTag(value); + } + + /** + * Compute the number of bytes that would be needed to encode a + * {@code fixed64} field, including tag. + */ + public static int computeFixed64Size(final int fieldNumber, + final long value) { + return computeTagSize(fieldNumber) + computeFixed64SizeNoTag(value); + } + + /** + * Compute the number of bytes that would be needed to encode a + * {@code fixed32} field, including tag. + */ + public static int computeFixed32Size(final int fieldNumber, + final int value) { + return computeTagSize(fieldNumber) + computeFixed32SizeNoTag(value); + } + + /** + * Compute the number of bytes that would be needed to encode a + * {@code bool} field, including tag. + */ + public static int computeBoolSize(final int fieldNumber, + final boolean value) { + return computeTagSize(fieldNumber) + computeBoolSizeNoTag(value); + } + + /** + * Compute the number of bytes that would be needed to encode a + * {@code string} field, including tag. + */ + public static int computeStringSize(final int fieldNumber, + final String value) { + return computeTagSize(fieldNumber) + computeStringSizeNoTag(value); + } + + /** + * Compute the number of bytes that would be needed to encode a + * {@code group} field, including tag. + */ + public static int computeGroupSize(final int fieldNumber, + final MessageLite value) { + return computeTagSize(fieldNumber) * 2 + computeGroupSizeNoTag(value); + } + + /** + * Compute the number of bytes that would be needed to encode a + * {@code group} field represented by an {@code UnknownFieldSet}, including + * tag. + * + * @deprecated UnknownFieldSet now implements MessageLite, so you can just + * call {@link #computeGroupSize}. + */ + @Deprecated + public static int computeUnknownGroupSize(final int fieldNumber, + final MessageLite value) { + return computeGroupSize(fieldNumber, value); + } + + /** + * Compute the number of bytes that would be needed to encode an + * embedded message field, including tag. + */ + public static int computeMessageSize(final int fieldNumber, + final MessageLite value) { + return computeTagSize(fieldNumber) + computeMessageSizeNoTag(value); + } + + /** + * Compute the number of bytes that would be needed to encode a + * {@code bytes} field, including tag. + */ + public static int computeBytesSize(final int fieldNumber, + final ByteString value) { + return computeTagSize(fieldNumber) + computeBytesSizeNoTag(value); + } + + /** + * Compute the number of bytes that would be needed to encode a + * {@code bytes} field, including tag. + */ + public static int computeByteArraySize(final int fieldNumber, + final byte[] value) { + return computeTagSize(fieldNumber) + computeByteArraySizeNoTag(value); + } + + /** + * Compute the number of bytes that would be needed to encode a + * {@code bytes} field, including tag. + */ + public static int computeByteBufferSize(final int fieldNumber, + final ByteBuffer value) { + return computeTagSize(fieldNumber) + computeByteBufferSizeNoTag(value); + } + + /** + * Compute the number of bytes that would be needed to encode an + * embedded message in lazy field, including tag. + */ + public static int computeLazyFieldSize(final int fieldNumber, + final LazyFieldLite value) { + return computeTagSize(fieldNumber) + computeLazyFieldSizeNoTag(value); + } + + /** + * Compute the number of bytes that would be needed to encode a + * {@code uint32} field, including tag. + */ + public static int computeUInt32Size(final int fieldNumber, final int value) { + return computeTagSize(fieldNumber) + computeUInt32SizeNoTag(value); + } + + /** + * Compute the number of bytes that would be needed to encode an + * enum field, including tag. Caller is responsible for converting the + * enum value to its numeric value. + */ + public static int computeEnumSize(final int fieldNumber, final int value) { + return computeTagSize(fieldNumber) + computeEnumSizeNoTag(value); + } + + /** + * Compute the number of bytes that would be needed to encode an + * {@code sfixed32} field, including tag. + */ + public static int computeSFixed32Size(final int fieldNumber, + final int value) { + return computeTagSize(fieldNumber) + computeSFixed32SizeNoTag(value); + } + + /** + * Compute the number of bytes that would be needed to encode an + * {@code sfixed64} field, including tag. + */ + public static int computeSFixed64Size(final int fieldNumber, + final long value) { + return computeTagSize(fieldNumber) + computeSFixed64SizeNoTag(value); + } + + /** + * Compute the number of bytes that would be needed to encode an + * {@code sint32} field, including tag. + */ + public static int computeSInt32Size(final int fieldNumber, final int value) { + return computeTagSize(fieldNumber) + computeSInt32SizeNoTag(value); + } + + /** + * Compute the number of bytes that would be needed to encode an + * {@code sint64} field, including tag. + */ + public static int computeSInt64Size(final int fieldNumber, final long value) { + return computeTagSize(fieldNumber) + computeSInt64SizeNoTag(value); + } + + /** + * Compute the number of bytes that would be needed to encode a + * MessageSet extension to the stream. For historical reasons, + * the wire format differs from normal fields. + */ + public static int computeMessageSetExtensionSize( + final int fieldNumber, final MessageLite value) { + return computeTagSize(WireFormat.MESSAGE_SET_ITEM) * 2 + + computeUInt32Size(WireFormat.MESSAGE_SET_TYPE_ID, fieldNumber) + + computeMessageSize(WireFormat.MESSAGE_SET_MESSAGE, value); + } + + /** + * Compute the number of bytes that would be needed to encode an + * unparsed MessageSet extension field to the stream. For + * historical reasons, the wire format differs from normal fields. + */ + public static int computeRawMessageSetExtensionSize( + final int fieldNumber, final ByteString value) { + return computeTagSize(WireFormat.MESSAGE_SET_ITEM) * 2 + + computeUInt32Size(WireFormat.MESSAGE_SET_TYPE_ID, fieldNumber) + + computeBytesSize(WireFormat.MESSAGE_SET_MESSAGE, value); + } + + /** + * Compute the number of bytes that would be needed to encode an + * lazily parsed MessageSet extension field to the stream. For + * historical reasons, the wire format differs from normal fields. + */ + public static int computeLazyFieldMessageSetExtensionSize( + final int fieldNumber, final LazyFieldLite value) { + return computeTagSize(WireFormat.MESSAGE_SET_ITEM) * 2 + + computeUInt32Size(WireFormat.MESSAGE_SET_TYPE_ID, fieldNumber) + + computeLazyFieldSize(WireFormat.MESSAGE_SET_MESSAGE, value); + } + + // ----------------------------------------------------------------- + + /** + * Compute the number of bytes that would be needed to encode a + * {@code double} field, including tag. + */ + public static int computeDoubleSizeNoTag(final double value) { + return LITTLE_ENDIAN_64_SIZE; + } + + /** + * Compute the number of bytes that would be needed to encode a + * {@code float} field, including tag. + */ + public static int computeFloatSizeNoTag(final float value) { + return LITTLE_ENDIAN_32_SIZE; + } + + /** + * Compute the number of bytes that would be needed to encode a + * {@code uint64} field, including tag. + */ + public static int computeUInt64SizeNoTag(final long value) { + return computeRawVarint64Size(value); + } + + /** + * Compute the number of bytes that would be needed to encode an + * {@code int64} field, including tag. + */ + public static int computeInt64SizeNoTag(final long value) { + return computeRawVarint64Size(value); + } + + /** + * Compute the number of bytes that would be needed to encode an + * {@code int32} field, including tag. + */ + public static int computeInt32SizeNoTag(final int value) { + if (value >= 0) { + return computeRawVarint32Size(value); + } else { + // Must sign-extend. + return 10; + } + } + + /** + * Compute the number of bytes that would be needed to encode a + * {@code fixed64} field. + */ + public static int computeFixed64SizeNoTag(final long value) { + return LITTLE_ENDIAN_64_SIZE; + } + + /** + * Compute the number of bytes that would be needed to encode a + * {@code fixed32} field. + */ + public static int computeFixed32SizeNoTag(final int value) { + return LITTLE_ENDIAN_32_SIZE; + } + + /** + * Compute the number of bytes that would be needed to encode a + * {@code bool} field. + */ + public static int computeBoolSizeNoTag(final boolean value) { + return 1; + } + + /** + * Compute the number of bytes that would be needed to encode a + * {@code string} field. + */ + public static int computeStringSizeNoTag(final String value) { + try { + final byte[] bytes = value.getBytes("UTF-8"); + return computeRawVarint32Size(bytes.length) + + bytes.length; + } catch (UnsupportedEncodingException e) { + throw new RuntimeException("UTF-8 not supported.", e); + } + } + + /** + * Compute the number of bytes that would be needed to encode a + * {@code group} field. + */ + public static int computeGroupSizeNoTag(final MessageLite value) { + return value.getSerializedSize(); + } + + /** + * Compute the number of bytes that would be needed to encode a + * {@code group} field represented by an {@code UnknownFieldSet}, including + * tag. + * + * @deprecated UnknownFieldSet now implements MessageLite, so you can just + * call {@link #computeUnknownGroupSizeNoTag}. + */ + @Deprecated + public static int computeUnknownGroupSizeNoTag(final MessageLite value) { + return computeGroupSizeNoTag(value); + } + + /** + * Compute the number of bytes that would be needed to encode an embedded + * message field. + */ + public static int computeMessageSizeNoTag(final MessageLite value) { + final int size = value.getSerializedSize(); + return computeRawVarint32Size(size) + size; + } + + /** + * Compute the number of bytes that would be needed to encode an embedded + * message stored in lazy field. + */ + public static int computeLazyFieldSizeNoTag(final LazyFieldLite value) { + final int size = value.getSerializedSize(); + return computeRawVarint32Size(size) + size; + } + + /** + * Compute the number of bytes that would be needed to encode a + * {@code bytes} field. + */ + public static int computeBytesSizeNoTag(final ByteString value) { + return computeRawVarint32Size(value.size()) + + value.size(); + } + + /** + * Compute the number of bytes that would be needed to encode a + * {@code bytes} field. + */ + public static int computeByteArraySizeNoTag(final byte[] value) { + return computeRawVarint32Size(value.length) + value.length; + } + + /** + * Compute the number of bytes that would be needed to encode a + * {@code bytes} field. + */ + public static int computeByteBufferSizeNoTag(final ByteBuffer value) { + return computeRawVarint32Size(value.capacity()) + value.capacity(); + } + + /** + * Compute the number of bytes that would be needed to encode a + * {@code uint32} field. + */ + public static int computeUInt32SizeNoTag(final int value) { + return computeRawVarint32Size(value); + } + + /** + * Compute the number of bytes that would be needed to encode an enum field. + * Caller is responsible for converting the enum value to its numeric value. + */ + public static int computeEnumSizeNoTag(final int value) { + return computeInt32SizeNoTag(value); + } + + /** + * Compute the number of bytes that would be needed to encode an + * {@code sfixed32} field. + */ + public static int computeSFixed32SizeNoTag(final int value) { + return LITTLE_ENDIAN_32_SIZE; + } + + /** + * Compute the number of bytes that would be needed to encode an + * {@code sfixed64} field. + */ + public static int computeSFixed64SizeNoTag(final long value) { + return LITTLE_ENDIAN_64_SIZE; + } + + /** + * Compute the number of bytes that would be needed to encode an + * {@code sint32} field. + */ + public static int computeSInt32SizeNoTag(final int value) { + return computeRawVarint32Size(encodeZigZag32(value)); + } + + /** + * Compute the number of bytes that would be needed to encode an + * {@code sint64} field. + */ + public static int computeSInt64SizeNoTag(final long value) { + return computeRawVarint64Size(encodeZigZag64(value)); + } + + // ================================================================= + + /** + * Internal helper that writes the current buffer to the output. The + * buffer position is reset to its initial value when this returns. + */ + private void refreshBuffer() throws IOException { + if (output == null) { + // We're writing to a single buffer. + throw new OutOfSpaceException(); + } + + // Since we have an output stream, this is our buffer + // and buffer offset == 0 + output.write(buffer, 0, position); + position = 0; + } + + /** + * Flushes the stream and forces any buffered bytes to be written. This + * does not flush the underlying OutputStream. + */ + public void flush() throws IOException { + if (output != null) { + refreshBuffer(); + } + } + + /** + * If writing to a flat array, return the space left in the array. + * Otherwise, throws {@code UnsupportedOperationException}. + */ + public int spaceLeft() { + if (output == null) { + return limit - position; + } else { + throw new UnsupportedOperationException( + "spaceLeft() can only be called on CodedOutputStreams that are " + + "writing to a flat array."); + } + } + + /** + * Verifies that {@link #spaceLeft()} returns zero. It's common to create + * a byte array that is exactly big enough to hold a message, then write to + * it with a {@code CodedOutputStream}. Calling {@code checkNoSpaceLeft()} + * after writing verifies that the message was actually as big as expected, + * which can help catch bugs. + */ + public void checkNoSpaceLeft() { + if (spaceLeft() != 0) { + throw new IllegalStateException( + "Did not write as much data as expected."); + } + } + + /** + * If you create a CodedOutputStream around a simple flat array, you must + * not attempt to write more bytes than the array has space. Otherwise, + * this exception will be thrown. + */ + public static class OutOfSpaceException extends IOException { + private static final long serialVersionUID = -6947486886997889499L; + + OutOfSpaceException() { + super("CodedOutputStream was writing to a flat byte array and ran " + + "out of space."); + } + } + + /** + * Get the total number of bytes successfully written to this stream. The + * returned value is not guaranteed to be accurate if exceptions have been + * found in the middle of writing. + */ + public int getTotalBytesWritten() { + return totalBytesWritten; + } + + /** Write a single byte. */ + public void writeRawByte(final byte value) throws IOException { + if (position == limit) { + refreshBuffer(); + } + + buffer[position++] = value; + ++totalBytesWritten; + } + + /** Write a single byte, represented by an integer value. */ + public void writeRawByte(final int value) throws IOException { + writeRawByte((byte) value); + } + + /** Write a byte string. */ + public void writeRawBytes(final ByteString value) throws IOException { + writeRawBytes(value, 0, value.size()); + } + + /** Write an array of bytes. */ + public void writeRawBytes(final byte[] value) throws IOException { + writeRawBytes(value, 0, value.length); + } + + /** + * Write a ByteBuffer. This method will write all content of the ByteBuffer + * regardless of the current position and limit (i.e., the number of bytes + * to be written is value.capacity(), not value.remaining()). Furthermore, + * this method doesn't alter the state of the passed-in ByteBuffer. Its + * position, limit, mark, etc. will remain unchanged. If you only want to + * write the remaining bytes of a ByteBuffer, you can call + * {@code writeRawBytes(byteBuffer.slice())}. + */ + public void writeRawBytes(final ByteBuffer value) throws IOException { + if (value.hasArray()) { + writeRawBytes(value.array(), value.arrayOffset(), value.capacity()); + } else { + ByteBuffer duplicated = value.duplicate(); + duplicated.clear(); + writeRawBytesInternal(duplicated); + } + } + + /** Write a ByteBuffer that isn't backed by an array. */ + private void writeRawBytesInternal(final ByteBuffer value) + throws IOException { + int length = value.remaining(); + if (limit - position >= length) { + // We have room in the current buffer. + value.get(buffer, position, length); + position += length; + totalBytesWritten += length; + } else { + // Write extends past current buffer. Fill the rest of this buffer and + // flush. + final int bytesWritten = limit - position; + value.get(buffer, position, bytesWritten); + length -= bytesWritten; + position = limit; + totalBytesWritten += bytesWritten; + refreshBuffer(); + + // Now deal with the rest. + // Since we have an output stream, this is our buffer + // and buffer offset == 0 + while (length > limit) { + // Copy data into the buffer before writing it to OutputStream. + // TODO(xiaofeng): Introduce ZeroCopyOutputStream to avoid this copy. + value.get(buffer, 0, limit); + output.write(buffer, 0, limit); + length -= limit; + totalBytesWritten += limit; + } + value.get(buffer, 0, length); + position = length; + totalBytesWritten += length; + } + } + + /** Write part of an array of bytes. */ + public void writeRawBytes(final byte[] value, int offset, int length) + throws IOException { + if (limit - position >= length) { + // We have room in the current buffer. + System.arraycopy(value, offset, buffer, position, length); + position += length; + totalBytesWritten += length; + } else { + // Write extends past current buffer. Fill the rest of this buffer and + // flush. + final int bytesWritten = limit - position; + System.arraycopy(value, offset, buffer, position, bytesWritten); + offset += bytesWritten; + length -= bytesWritten; + position = limit; + totalBytesWritten += bytesWritten; + refreshBuffer(); + + // Now deal with the rest. + // Since we have an output stream, this is our buffer + // and buffer offset == 0 + if (length <= limit) { + // Fits in new buffer. + System.arraycopy(value, offset, buffer, 0, length); + position = length; + } else { + // Write is very big. Let's do it all at once. + output.write(value, offset, length); + } + totalBytesWritten += length; + } + } + + /** Write part of a byte string. */ + public void writeRawBytes(final ByteString value, int offset, int length) + throws IOException { + if (limit - position >= length) { + // We have room in the current buffer. + value.copyTo(buffer, offset, position, length); + position += length; + totalBytesWritten += length; + } else { + // Write extends past current buffer. Fill the rest of this buffer and + // flush. + final int bytesWritten = limit - position; + value.copyTo(buffer, offset, position, bytesWritten); + offset += bytesWritten; + length -= bytesWritten; + position = limit; + totalBytesWritten += bytesWritten; + refreshBuffer(); + + // Now deal with the rest. + // Since we have an output stream, this is our buffer + // and buffer offset == 0 + if (length <= limit) { + // Fits in new buffer. + value.copyTo(buffer, offset, 0, length); + position = length; + } else { + value.writeTo(output, offset, length); + } + totalBytesWritten += length; + } + } + + /** Encode and write a tag. */ + public void writeTag(final int fieldNumber, final int wireType) + throws IOException { + writeRawVarint32(WireFormat.makeTag(fieldNumber, wireType)); + } + + /** Compute the number of bytes that would be needed to encode a tag. */ + public static int computeTagSize(final int fieldNumber) { + return computeRawVarint32Size(WireFormat.makeTag(fieldNumber, 0)); + } + + /** + * Encode and write a varint. {@code value} is treated as + * unsigned, so it won't be sign-extended if negative. + */ + public void writeRawVarint32(int value) throws IOException { + while (true) { + if ((value & ~0x7F) == 0) { + writeRawByte(value); + return; + } else { + writeRawByte((value & 0x7F) | 0x80); + value >>>= 7; + } + } + } + + /** + * Compute the number of bytes that would be needed to encode a varint. + * {@code value} is treated as unsigned, so it won't be sign-extended if + * negative. + */ + public static int computeRawVarint32Size(final int value) { + if ((value & (0xffffffff << 7)) == 0) return 1; + if ((value & (0xffffffff << 14)) == 0) return 2; + if ((value & (0xffffffff << 21)) == 0) return 3; + if ((value & (0xffffffff << 28)) == 0) return 4; + return 5; + } + + /** Encode and write a varint. */ + public void writeRawVarint64(long value) throws IOException { + while (true) { + if ((value & ~0x7FL) == 0) { + writeRawByte((int)value); + return; + } else { + writeRawByte(((int)value & 0x7F) | 0x80); + value >>>= 7; + } + } + } + + /** Compute the number of bytes that would be needed to encode a varint. */ + public static int computeRawVarint64Size(final long value) { + if ((value & (0xffffffffffffffffL << 7)) == 0) return 1; + if ((value & (0xffffffffffffffffL << 14)) == 0) return 2; + if ((value & (0xffffffffffffffffL << 21)) == 0) return 3; + if ((value & (0xffffffffffffffffL << 28)) == 0) return 4; + if ((value & (0xffffffffffffffffL << 35)) == 0) return 5; + if ((value & (0xffffffffffffffffL << 42)) == 0) return 6; + if ((value & (0xffffffffffffffffL << 49)) == 0) return 7; + if ((value & (0xffffffffffffffffL << 56)) == 0) return 8; + if ((value & (0xffffffffffffffffL << 63)) == 0) return 9; + return 10; + } + + /** Write a little-endian 32-bit integer. */ + public void writeRawLittleEndian32(final int value) throws IOException { + writeRawByte((value ) & 0xFF); + writeRawByte((value >> 8) & 0xFF); + writeRawByte((value >> 16) & 0xFF); + writeRawByte((value >> 24) & 0xFF); + } + + public static final int LITTLE_ENDIAN_32_SIZE = 4; + + /** Write a little-endian 64-bit integer. */ + public void writeRawLittleEndian64(final long value) throws IOException { + writeRawByte((int)(value ) & 0xFF); + writeRawByte((int)(value >> 8) & 0xFF); + writeRawByte((int)(value >> 16) & 0xFF); + writeRawByte((int)(value >> 24) & 0xFF); + writeRawByte((int)(value >> 32) & 0xFF); + writeRawByte((int)(value >> 40) & 0xFF); + writeRawByte((int)(value >> 48) & 0xFF); + writeRawByte((int)(value >> 56) & 0xFF); + } + + public static final int LITTLE_ENDIAN_64_SIZE = 8; + + /** + * Encode a ZigZag-encoded 32-bit value. ZigZag encodes signed integers + * into values that can be efficiently encoded with varint. (Otherwise, + * negative values must be sign-extended to 64 bits to be varint encoded, + * thus always taking 10 bytes on the wire.) + * + * @param n A signed 32-bit integer. + * @return An unsigned 32-bit integer, stored in a signed int because + * Java has no explicit unsigned support. + */ + public static int encodeZigZag32(final int n) { + // Note: the right-shift must be arithmetic + return (n << 1) ^ (n >> 31); + } + + /** + * Encode a ZigZag-encoded 64-bit value. ZigZag encodes signed integers + * into values that can be efficiently encoded with varint. (Otherwise, + * negative values must be sign-extended to 64 bits to be varint encoded, + * thus always taking 10 bytes on the wire.) + * + * @param n A signed 64-bit integer. + * @return An unsigned 64-bit integer, stored in a signed int because + * Java has no explicit unsigned support. + */ + public static long encodeZigZag64(final long n) { + // Note: the right-shift must be arithmetic + return (n << 1) ^ (n >> 63); + } +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/Descriptors.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/Descriptors.java new file mode 100644 index 00000000..caae0f77 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/Descriptors.java @@ -0,0 +1,2238 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import com.google.protobuf.DescriptorProtos.*; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.logging.Logger; +import java.io.UnsupportedEncodingException; + +/** + * Contains a collection of classes which describe protocol message types. + * + * Every message type has a {@link Descriptor}, which lists all + * its fields and other information about a type. You can get a message + * type's descriptor by calling {@code MessageType.getDescriptor()}, or + * (given a message object of the type) {@code message.getDescriptorForType()}. + * Furthermore, each message is associated with a {@link FileDescriptor} for + * a relevant {@code .proto} file. You can obtain it by calling + * {@code Descriptor.getFile()}. A {@link FileDescriptor} contains descriptors + * for all the messages defined in that file, and file descriptors for all the + * imported {@code .proto} files. + * + * Descriptors are built from DescriptorProtos, as defined in + * {@code google/protobuf/descriptor.proto}. + * + * @author kenton@google.com Kenton Varda + */ +public final class Descriptors { + private static final Logger logger = + Logger.getLogger(Descriptors.class.getName()); + /** + * Describes a {@code .proto} file, including everything defined within. + * That includes, in particular, descriptors for all the messages and + * file descriptors for all other imported {@code .proto} files + * (dependencies). + */ + public static final class FileDescriptor extends GenericDescriptor { + /** Convert the descriptor to its protocol message representation. */ + public FileDescriptorProto toProto() { return proto; } + + /** Get the file name. */ + public String getName() { return proto.getName(); } + + /** Returns this object. */ + public FileDescriptor getFile() { return this; } + + /** Returns the same as getName(). */ + public String getFullName() { return proto.getName(); } + + /** + * Get the proto package name. This is the package name given by the + * {@code package} statement in the {@code .proto} file, which differs + * from the Java package. + */ + public String getPackage() { return proto.getPackage(); } + + /** Get the {@code FileOptions}, defined in {@code descriptor.proto}. */ + public FileOptions getOptions() { return proto.getOptions(); } + + /** Get a list of top-level message types declared in this file. */ + public List getMessageTypes() { + return Collections.unmodifiableList(Arrays.asList(messageTypes)); + } + + /** Get a list of top-level enum types declared in this file. */ + public List getEnumTypes() { + return Collections.unmodifiableList(Arrays.asList(enumTypes)); + } + + /** Get a list of top-level services declared in this file. */ + public List getServices() { + return Collections.unmodifiableList(Arrays.asList(services)); + } + + /** Get a list of top-level extensions declared in this file. */ + public List getExtensions() { + return Collections.unmodifiableList(Arrays.asList(extensions)); + } + + /** Get a list of this file's dependencies (imports). */ + public List getDependencies() { + return Collections.unmodifiableList(Arrays.asList(dependencies)); + } + + /** Get a list of this file's public dependencies (public imports). */ + public List getPublicDependencies() { + return Collections.unmodifiableList(Arrays.asList(publicDependencies)); + } + + /** + * Find a message type in the file by name. Does not find nested types. + * + * @param name The unqualified type name to look for. + * @return The message type's descriptor, or {@code null} if not found. + */ + public Descriptor findMessageTypeByName(String name) { + // Don't allow looking up nested types. This will make optimization + // easier later. + if (name.indexOf('.') != -1) { + return null; + } + if (getPackage().length() > 0) { + name = getPackage() + '.' + name; + } + final GenericDescriptor result = pool.findSymbol(name); + if (result != null && result instanceof Descriptor && + result.getFile() == this) { + return (Descriptor)result; + } else { + return null; + } + } + + /** + * Find an enum type in the file by name. Does not find nested types. + * + * @param name The unqualified type name to look for. + * @return The enum type's descriptor, or {@code null} if not found. + */ + public EnumDescriptor findEnumTypeByName(String name) { + // Don't allow looking up nested types. This will make optimization + // easier later. + if (name.indexOf('.') != -1) { + return null; + } + if (getPackage().length() > 0) { + name = getPackage() + '.' + name; + } + final GenericDescriptor result = pool.findSymbol(name); + if (result != null && result instanceof EnumDescriptor && + result.getFile() == this) { + return (EnumDescriptor)result; + } else { + return null; + } + } + + /** + * Find a service type in the file by name. + * + * @param name The unqualified type name to look for. + * @return The service type's descriptor, or {@code null} if not found. + */ + public ServiceDescriptor findServiceByName(String name) { + // Don't allow looking up nested types. This will make optimization + // easier later. + if (name.indexOf('.') != -1) { + return null; + } + if (getPackage().length() > 0) { + name = getPackage() + '.' + name; + } + final GenericDescriptor result = pool.findSymbol(name); + if (result != null && result instanceof ServiceDescriptor && + result.getFile() == this) { + return (ServiceDescriptor)result; + } else { + return null; + } + } + + /** + * Find an extension in the file by name. Does not find extensions nested + * inside message types. + * + * @param name The unqualified extension name to look for. + * @return The extension's descriptor, or {@code null} if not found. + */ + public FieldDescriptor findExtensionByName(String name) { + if (name.indexOf('.') != -1) { + return null; + } + if (getPackage().length() > 0) { + name = getPackage() + '.' + name; + } + final GenericDescriptor result = pool.findSymbol(name); + if (result != null && result instanceof FieldDescriptor && + result.getFile() == this) { + return (FieldDescriptor)result; + } else { + return null; + } + } + + /** + * Construct a {@code FileDescriptor}. + * + * @param proto The protocol message form of the FileDescriptor. + * @param dependencies {@code FileDescriptor}s corresponding to all of + * the file's dependencies. + * @throws DescriptorValidationException {@code proto} is not a valid + * descriptor. This can occur for a number of reasons, e.g. + * because a field has an undefined type or because two messages + * were defined with the same name. + */ + public static FileDescriptor buildFrom(final FileDescriptorProto proto, + final FileDescriptor[] dependencies) + throws DescriptorValidationException { + return buildFrom(proto, dependencies, false); + } + + + /** + * Construct a {@code FileDescriptor}. + * + * @param proto The protocol message form of the FileDescriptor. + * @param dependencies {@code FileDescriptor}s corresponding to all of + * the file's dependencies. + * @param allowUnknownDependencies If true, non-exist dependenncies will be + * ignored and undefined message types will be replaced with a + * placeholder type. + * @throws DescriptorValidationException {@code proto} is not a valid + * descriptor. This can occur for a number of reasons, e.g. + * because a field has an undefined type or because two messages + * were defined with the same name. + */ + private static FileDescriptor buildFrom( + final FileDescriptorProto proto, final FileDescriptor[] dependencies, + final boolean allowUnknownDependencies) + throws DescriptorValidationException { + // Building descriptors involves two steps: translating and linking. + // In the translation step (implemented by FileDescriptor's + // constructor), we build an object tree mirroring the + // FileDescriptorProto's tree and put all of the descriptors into the + // DescriptorPool's lookup tables. In the linking step, we look up all + // type references in the DescriptorPool, so that, for example, a + // FieldDescriptor for an embedded message contains a pointer directly + // to the Descriptor for that message's type. We also detect undefined + // types in the linking step. + final DescriptorPool pool = new DescriptorPool( + dependencies, allowUnknownDependencies); + final FileDescriptor result = new FileDescriptor( + proto, dependencies, pool, allowUnknownDependencies); + result.crossLink(); + return result; + } + + /** + * This method is to be called by generated code only. It is equivalent + * to {@code buildFrom} except that the {@code FileDescriptorProto} is + * encoded in protocol buffer wire format. + */ + public static void internalBuildGeneratedFileFrom( + final String[] descriptorDataParts, + final FileDescriptor[] dependencies, + final InternalDescriptorAssigner descriptorAssigner) { + // Hack: We can't embed a raw byte array inside generated Java code + // (at least, not efficiently), but we can embed Strings. So, the + // protocol compiler embeds the FileDescriptorProto as a giant + // string literal which is passed to this function to construct the + // file's FileDescriptor. The string literal contains only 8-bit + // characters, each one representing a byte of the FileDescriptorProto's + // serialized form. So, if we convert it to bytes in ISO-8859-1, we + // should get the original bytes that we want. + + // descriptorData may contain multiple strings in order to get around the + // Java 64k string literal limit. + StringBuilder descriptorData = new StringBuilder(); + for (String part : descriptorDataParts) { + descriptorData.append(part); + } + + final byte[] descriptorBytes; + try { + descriptorBytes = descriptorData.toString().getBytes("ISO-8859-1"); + } catch (UnsupportedEncodingException e) { + throw new RuntimeException( + "Standard encoding ISO-8859-1 not supported by JVM.", e); + } + + FileDescriptorProto proto; + try { + proto = FileDescriptorProto.parseFrom(descriptorBytes); + } catch (InvalidProtocolBufferException e) { + throw new IllegalArgumentException( + "Failed to parse protocol buffer descriptor for generated code.", e); + } + + final FileDescriptor result; + try { + // When building descriptors for generated code, we allow unknown + // dependencies by default. + result = buildFrom(proto, dependencies, true); + } catch (DescriptorValidationException e) { + throw new IllegalArgumentException( + "Invalid embedded descriptor for \"" + proto.getName() + "\".", e); + } + + final ExtensionRegistry registry = + descriptorAssigner.assignDescriptors(result); + + if (registry != null) { + // We must re-parse the proto using the registry. + try { + proto = FileDescriptorProto.parseFrom(descriptorBytes, registry); + } catch (InvalidProtocolBufferException e) { + throw new IllegalArgumentException( + "Failed to parse protocol buffer descriptor for generated code.", + e); + } + + result.setProto(proto); + } + } + + /** + * This method is to be called by generated code only. It uses Java + * reflection to load the dependencies' descriptors. + */ + public static void internalBuildGeneratedFileFrom( + final String[] descriptorDataParts, + final Class descriptorOuterClass, + final String[] dependencies, + final String[] dependencyFileNames, + final InternalDescriptorAssigner descriptorAssigner) { + List descriptors = new ArrayList(); + for (int i = 0; i < dependencies.length; i++) { + try { + Class clazz = + descriptorOuterClass.getClassLoader().loadClass(dependencies[i]); + descriptors.add( + (FileDescriptor) clazz.getField("descriptor").get(null)); + } catch (Exception e) { + // We allow unknown dependencies by default. If a dependency cannot + // be found we only generate a warning. + logger.warning("Descriptors for \"" + dependencyFileNames[i] + + "\" can not be found."); + } + } + FileDescriptor[] descriptorArray = new FileDescriptor[descriptors.size()]; + descriptors.toArray(descriptorArray); + internalBuildGeneratedFileFrom( + descriptorDataParts, descriptorArray, descriptorAssigner); + } + + /** + * This method is to be called by generated code only. It is used to + * update the FileDescriptorProto associated with the descriptor by + * parsing it again with the given ExtensionRegistry. This is needed to + * recognize custom options. + */ + public static void internalUpdateFileDescriptor( + final FileDescriptor descriptor, + final ExtensionRegistry registry) { + ByteString bytes = descriptor.proto.toByteString(); + FileDescriptorProto proto; + try { + proto = FileDescriptorProto.parseFrom(bytes, registry); + } catch (InvalidProtocolBufferException e) { + throw new IllegalArgumentException( + "Failed to parse protocol buffer descriptor for generated code.", e); + } + descriptor.setProto(proto); + } + + /** + * This class should be used by generated code only. When calling + * {@link FileDescriptor#internalBuildGeneratedFileFrom}, the caller + * provides a callback implementing this interface. The callback is called + * after the FileDescriptor has been constructed, in order to assign all + * the global variables defined in the generated code which point at parts + * of the FileDescriptor. The callback returns an ExtensionRegistry which + * contains any extensions which might be used in the descriptor -- that + * is, extensions of the various "Options" messages defined in + * descriptor.proto. The callback may also return null to indicate that + * no extensions are used in the descriptor. + */ + public interface InternalDescriptorAssigner { + ExtensionRegistry assignDescriptors(FileDescriptor root); + } + + private FileDescriptorProto proto; + private final Descriptor[] messageTypes; + private final EnumDescriptor[] enumTypes; + private final ServiceDescriptor[] services; + private final FieldDescriptor[] extensions; + private final FileDescriptor[] dependencies; + private final FileDescriptor[] publicDependencies; + private final DescriptorPool pool; + + private FileDescriptor(final FileDescriptorProto proto, + final FileDescriptor[] dependencies, + final DescriptorPool pool, + boolean allowUnknownDependencies) + throws DescriptorValidationException { + this.pool = pool; + this.proto = proto; + this.dependencies = dependencies.clone(); + HashMap nameToFileMap = + new HashMap(); + for (FileDescriptor file : dependencies) { + nameToFileMap.put(file.getName(), file); + } + List publicDependencies = new ArrayList(); + for (int i = 0; i < proto.getPublicDependencyCount(); i++) { + int index = proto.getPublicDependency(i); + if (index < 0 || index >= proto.getDependencyCount()) { + throw new DescriptorValidationException(this, + "Invalid public dependency index."); + } + String name = proto.getDependency(index); + FileDescriptor file = nameToFileMap.get(name); + if (file == null) { + if (!allowUnknownDependencies) { + throw new DescriptorValidationException(this, + "Invalid public dependency: " + name); + } + // Ignore unknown dependencies. + } else { + publicDependencies.add(file); + } + } + this.publicDependencies = new FileDescriptor[publicDependencies.size()]; + publicDependencies.toArray(this.publicDependencies); + + pool.addPackage(getPackage(), this); + + messageTypes = new Descriptor[proto.getMessageTypeCount()]; + for (int i = 0; i < proto.getMessageTypeCount(); i++) { + messageTypes[i] = + new Descriptor(proto.getMessageType(i), this, null, i); + } + + enumTypes = new EnumDescriptor[proto.getEnumTypeCount()]; + for (int i = 0; i < proto.getEnumTypeCount(); i++) { + enumTypes[i] = new EnumDescriptor(proto.getEnumType(i), this, null, i); + } + + services = new ServiceDescriptor[proto.getServiceCount()]; + for (int i = 0; i < proto.getServiceCount(); i++) { + services[i] = new ServiceDescriptor(proto.getService(i), this, i); + } + + extensions = new FieldDescriptor[proto.getExtensionCount()]; + for (int i = 0; i < proto.getExtensionCount(); i++) { + extensions[i] = new FieldDescriptor( + proto.getExtension(i), this, null, i, true); + } + } + + /** + * Create a placeholder FileDescriptor for a message Descriptor. + */ + FileDescriptor(String packageName, Descriptor message) + throws DescriptorValidationException { + this.pool = new DescriptorPool(new FileDescriptor[0], true); + this.proto = FileDescriptorProto.newBuilder() + .setName(message.getFullName() + ".placeholder.proto") + .setPackage(packageName).addMessageType(message.toProto()).build(); + this.dependencies = new FileDescriptor[0]; + this.publicDependencies = new FileDescriptor[0]; + + messageTypes = new Descriptor[] {message}; + enumTypes = new EnumDescriptor[0]; + services = new ServiceDescriptor[0]; + extensions = new FieldDescriptor[0]; + + pool.addPackage(packageName, this); + pool.addSymbol(message); + } + + /** Look up and cross-link all field types, etc. */ + private void crossLink() throws DescriptorValidationException { + for (final Descriptor messageType : messageTypes) { + messageType.crossLink(); + } + + for (final ServiceDescriptor service : services) { + service.crossLink(); + } + + for (final FieldDescriptor extension : extensions) { + extension.crossLink(); + } + } + + /** + * Replace our {@link FileDescriptorProto} with the given one, which is + * identical except that it might contain extensions that weren't present + * in the original. This method is needed for bootstrapping when a file + * defines custom options. The options may be defined in the file itself, + * so we can't actually parse them until we've constructed the descriptors, + * but to construct the descriptors we have to have parsed the descriptor + * protos. So, we have to parse the descriptor protos a second time after + * constructing the descriptors. + */ + private void setProto(final FileDescriptorProto proto) { + this.proto = proto; + + for (int i = 0; i < messageTypes.length; i++) { + messageTypes[i].setProto(proto.getMessageType(i)); + } + + for (int i = 0; i < enumTypes.length; i++) { + enumTypes[i].setProto(proto.getEnumType(i)); + } + + for (int i = 0; i < services.length; i++) { + services[i].setProto(proto.getService(i)); + } + + for (int i = 0; i < extensions.length; i++) { + extensions[i].setProto(proto.getExtension(i)); + } + } + } + + // ================================================================= + + /** Describes a message type. */ + public static final class Descriptor extends GenericDescriptor { + /** + * Get the index of this descriptor within its parent. In other words, + * given a {@link FileDescriptor} {@code file}, the following is true: + *

      +     *   for all i in [0, file.getMessageTypeCount()):
      +     *     file.getMessageType(i).getIndex() == i
      +     * 
      + * Similarly, for a {@link Descriptor} {@code messageType}: + *
      +     *   for all i in [0, messageType.getNestedTypeCount()):
      +     *     messageType.getNestedType(i).getIndex() == i
      +     * 
      + */ + public int getIndex() { return index; } + + /** Convert the descriptor to its protocol message representation. */ + public DescriptorProto toProto() { return proto; } + + /** Get the type's unqualified name. */ + public String getName() { return proto.getName(); } + + /** + * Get the type's fully-qualified name, within the proto language's + * namespace. This differs from the Java name. For example, given this + * {@code .proto}: + *
      +     *   package foo.bar;
      +     *   option java_package = "com.example.protos"
      +     *   message Baz {}
      +     * 
      + * {@code Baz}'s full name is "foo.bar.Baz". + */ + public String getFullName() { return fullName; } + + /** Get the {@link FileDescriptor} containing this descriptor. */ + public FileDescriptor getFile() { return file; } + + /** If this is a nested type, get the outer descriptor, otherwise null. */ + public Descriptor getContainingType() { return containingType; } + + /** Get the {@code MessageOptions}, defined in {@code descriptor.proto}. */ + public MessageOptions getOptions() { return proto.getOptions(); } + + /** Get a list of this message type's fields. */ + public List getFields() { + return Collections.unmodifiableList(Arrays.asList(fields)); + } + + /** Get a list of this message type's oneofs. */ + public List getOneofs() { + return Collections.unmodifiableList(Arrays.asList(oneofs)); + } + + /** Get a list of this message type's extensions. */ + public List getExtensions() { + return Collections.unmodifiableList(Arrays.asList(extensions)); + } + + /** Get a list of message types nested within this one. */ + public List getNestedTypes() { + return Collections.unmodifiableList(Arrays.asList(nestedTypes)); + } + + /** Get a list of enum types nested within this one. */ + public List getEnumTypes() { + return Collections.unmodifiableList(Arrays.asList(enumTypes)); + } + + /** Determines if the given field number is an extension. */ + public boolean isExtensionNumber(final int number) { + for (final DescriptorProto.ExtensionRange range : + proto.getExtensionRangeList()) { + if (range.getStart() <= number && number < range.getEnd()) { + return true; + } + } + return false; + } + + /** + * Indicates whether the message can be extended. That is, whether it has + * any "extensions x to y" ranges declared on it. + */ + public boolean isExtendable() { + return proto.getExtensionRangeList().size() != 0; + } + + /** + * Finds a field by name. + * @param name The unqualified name of the field (e.g. "foo"). + * @return The field's descriptor, or {@code null} if not found. + */ + public FieldDescriptor findFieldByName(final String name) { + final GenericDescriptor result = + file.pool.findSymbol(fullName + '.' + name); + if (result != null && result instanceof FieldDescriptor) { + return (FieldDescriptor)result; + } else { + return null; + } + } + + /** + * Finds a field by field number. + * @param number The field number within this message type. + * @return The field's descriptor, or {@code null} if not found. + */ + public FieldDescriptor findFieldByNumber(final int number) { + return file.pool.fieldsByNumber.get( + new DescriptorPool.DescriptorIntPair(this, number)); + } + + /** + * Finds a nested message type by name. + * @param name The unqualified name of the nested type (e.g. "Foo"). + * @return The types's descriptor, or {@code null} if not found. + */ + public Descriptor findNestedTypeByName(final String name) { + final GenericDescriptor result = + file.pool.findSymbol(fullName + '.' + name); + if (result != null && result instanceof Descriptor) { + return (Descriptor)result; + } else { + return null; + } + } + + /** + * Finds a nested enum type by name. + * @param name The unqualified name of the nested type (e.g. "Foo"). + * @return The types's descriptor, or {@code null} if not found. + */ + public EnumDescriptor findEnumTypeByName(final String name) { + final GenericDescriptor result = + file.pool.findSymbol(fullName + '.' + name); + if (result != null && result instanceof EnumDescriptor) { + return (EnumDescriptor)result; + } else { + return null; + } + } + + private final int index; + private DescriptorProto proto; + private final String fullName; + private final FileDescriptor file; + private final Descriptor containingType; + private final Descriptor[] nestedTypes; + private final EnumDescriptor[] enumTypes; + private final FieldDescriptor[] fields; + private final FieldDescriptor[] extensions; + private final OneofDescriptor[] oneofs; + + // Used to create a placeholder when the type cannot be found. + Descriptor(final String fullname) throws DescriptorValidationException { + String name = fullname; + String packageName = ""; + int pos = fullname.lastIndexOf('.'); + if (pos != -1) { + name = fullname.substring(pos + 1); + packageName = fullname.substring(0, pos); + } + this.index = 0; + this.proto = DescriptorProto.newBuilder().setName(name).addExtensionRange( + DescriptorProto.ExtensionRange.newBuilder().setStart(1) + .setEnd(536870912).build()).build(); + this.fullName = fullname; + this.containingType = null; + + this.nestedTypes = new Descriptor[0]; + this.enumTypes = new EnumDescriptor[0]; + this.fields = new FieldDescriptor[0]; + this.extensions = new FieldDescriptor[0]; + this.oneofs = new OneofDescriptor[0]; + + // Create a placeholder FileDescriptor to hold this message. + this.file = new FileDescriptor(packageName, this); + } + + private Descriptor(final DescriptorProto proto, + final FileDescriptor file, + final Descriptor parent, + final int index) + throws DescriptorValidationException { + this.index = index; + this.proto = proto; + fullName = computeFullName(file, parent, proto.getName()); + this.file = file; + containingType = parent; + + oneofs = new OneofDescriptor[proto.getOneofDeclCount()]; + for (int i = 0; i < proto.getOneofDeclCount(); i++) { + oneofs[i] = new OneofDescriptor( + proto.getOneofDecl(i), file, this, i); + } + + nestedTypes = new Descriptor[proto.getNestedTypeCount()]; + for (int i = 0; i < proto.getNestedTypeCount(); i++) { + nestedTypes[i] = new Descriptor( + proto.getNestedType(i), file, this, i); + } + + enumTypes = new EnumDescriptor[proto.getEnumTypeCount()]; + for (int i = 0; i < proto.getEnumTypeCount(); i++) { + enumTypes[i] = new EnumDescriptor( + proto.getEnumType(i), file, this, i); + } + + fields = new FieldDescriptor[proto.getFieldCount()]; + for (int i = 0; i < proto.getFieldCount(); i++) { + fields[i] = new FieldDescriptor( + proto.getField(i), file, this, i, false); + } + + extensions = new FieldDescriptor[proto.getExtensionCount()]; + for (int i = 0; i < proto.getExtensionCount(); i++) { + extensions[i] = new FieldDescriptor( + proto.getExtension(i), file, this, i, true); + } + + for (int i = 0; i < proto.getOneofDeclCount(); i++) { + oneofs[i].fields = new FieldDescriptor[oneofs[i].getFieldCount()]; + oneofs[i].fieldCount = 0; + } + for (int i = 0; i < proto.getFieldCount(); i++) { + OneofDescriptor oneofDescriptor = fields[i].getContainingOneof(); + if (oneofDescriptor != null) { + oneofDescriptor.fields[oneofDescriptor.fieldCount++] = fields[i]; + } + } + + file.pool.addSymbol(this); + } + + /** Look up and cross-link all field types, etc. */ + private void crossLink() throws DescriptorValidationException { + for (final Descriptor nestedType : nestedTypes) { + nestedType.crossLink(); + } + + for (final FieldDescriptor field : fields) { + field.crossLink(); + } + + for (final FieldDescriptor extension : extensions) { + extension.crossLink(); + } + } + + /** See {@link FileDescriptor#setProto}. */ + private void setProto(final DescriptorProto proto) { + this.proto = proto; + + for (int i = 0; i < nestedTypes.length; i++) { + nestedTypes[i].setProto(proto.getNestedType(i)); + } + + for (int i = 0; i < enumTypes.length; i++) { + enumTypes[i].setProto(proto.getEnumType(i)); + } + + for (int i = 0; i < fields.length; i++) { + fields[i].setProto(proto.getField(i)); + } + + for (int i = 0; i < extensions.length; i++) { + extensions[i].setProto(proto.getExtension(i)); + } + } + } + + // ================================================================= + + /** Describes a field of a message type. */ + public static final class FieldDescriptor + extends GenericDescriptor + implements Comparable, + FieldSet.FieldDescriptorLite { + /** + * Get the index of this descriptor within its parent. + * @see Descriptors.Descriptor#getIndex() + */ + public int getIndex() { return index; } + + /** Convert the descriptor to its protocol message representation. */ + public FieldDescriptorProto toProto() { return proto; } + + /** Get the field's unqualified name. */ + public String getName() { return proto.getName(); } + + /** Get the field's number. */ + public int getNumber() { return proto.getNumber(); } + + /** + * Get the field's fully-qualified name. + * @see Descriptors.Descriptor#getFullName() + */ + public String getFullName() { return fullName; } + + /** + * Get the field's java type. This is just for convenience. Every + * {@code FieldDescriptorProto.Type} maps to exactly one Java type. + */ + public JavaType getJavaType() { return type.getJavaType(); } + + /** For internal use only. */ + public WireFormat.JavaType getLiteJavaType() { + return getLiteType().getJavaType(); + } + + /** Get the {@code FileDescriptor} containing this descriptor. */ + public FileDescriptor getFile() { return file; } + + /** Get the field's declared type. */ + public Type getType() { return type; } + + /** For internal use only. */ + public WireFormat.FieldType getLiteType() { + return table[type.ordinal()]; + } + + /** For internal use only. */ + public boolean needsUtf8Check() { + return (type == Type.STRING) && (getFile().getOptions().getJavaStringCheckUtf8()); + } + + // I'm pretty sure values() constructs a new array every time, since there + // is nothing stopping the caller from mutating the array. Therefore we + // make a static copy here. + private static final WireFormat.FieldType[] table = + WireFormat.FieldType.values(); + + /** Is this field declared required? */ + public boolean isRequired() { + return proto.getLabel() == FieldDescriptorProto.Label.LABEL_REQUIRED; + } + + /** Is this field declared optional? */ + public boolean isOptional() { + return proto.getLabel() == FieldDescriptorProto.Label.LABEL_OPTIONAL; + } + + /** Is this field declared repeated? */ + public boolean isRepeated() { + return proto.getLabel() == FieldDescriptorProto.Label.LABEL_REPEATED; + } + + /** Does this field have the {@code [packed = true]} option? */ + public boolean isPacked() { + return getOptions().getPacked(); + } + + /** Can this field be packed? i.e. is it a repeated primitive field? */ + public boolean isPackable() { + return isRepeated() && getLiteType().isPackable(); + } + + /** Returns true if the field had an explicitly-defined default value. */ + public boolean hasDefaultValue() { return proto.hasDefaultValue(); } + + /** + * Returns the field's default value. Valid for all types except for + * messages and groups. For all other types, the object returned is of + * the same class that would returned by Message.getField(this). + */ + public Object getDefaultValue() { + if (getJavaType() == JavaType.MESSAGE) { + throw new UnsupportedOperationException( + "FieldDescriptor.getDefaultValue() called on an embedded message " + + "field."); + } + return defaultValue; + } + + /** Get the {@code FieldOptions}, defined in {@code descriptor.proto}. */ + public FieldOptions getOptions() { return proto.getOptions(); } + + /** Is this field an extension? */ + public boolean isExtension() { return proto.hasExtendee(); } + + /** + * Get the field's containing type. For extensions, this is the type being + * extended, not the location where the extension was defined. See + * {@link #getExtensionScope()}. + */ + public Descriptor getContainingType() { return containingType; } + + /** Get the field's containing oneof. */ + public OneofDescriptor getContainingOneof() { return containingOneof; } + + /** + * For extensions defined nested within message types, gets the outer + * type. Not valid for non-extension fields. For example, consider + * this {@code .proto} file: + *
      +     *   message Foo {
      +     *     extensions 1000 to max;
      +     *   }
      +     *   extend Foo {
      +     *     optional int32 baz = 1234;
      +     *   }
      +     *   message Bar {
      +     *     extend Foo {
      +     *       optional int32 qux = 4321;
      +     *     }
      +     *   }
      +     * 
      + * Both {@code baz}'s and {@code qux}'s containing type is {@code Foo}. + * However, {@code baz}'s extension scope is {@code null} while + * {@code qux}'s extension scope is {@code Bar}. + */ + public Descriptor getExtensionScope() { + if (!isExtension()) { + throw new UnsupportedOperationException( + "This field is not an extension."); + } + return extensionScope; + } + + /** For embedded message and group fields, gets the field's type. */ + public Descriptor getMessageType() { + if (getJavaType() != JavaType.MESSAGE) { + throw new UnsupportedOperationException( + "This field is not of message type."); + } + return messageType; + } + + /** For enum fields, gets the field's type. */ + public EnumDescriptor getEnumType() { + if (getJavaType() != JavaType.ENUM) { + throw new UnsupportedOperationException( + "This field is not of enum type."); + } + return enumType; + } + + /** + * Compare with another {@code FieldDescriptor}. This orders fields in + * "canonical" order, which simply means ascending order by field number. + * {@code other} must be a field of the same type -- i.e. + * {@code getContainingType()} must return the same {@code Descriptor} for + * both fields. + * + * @return negative, zero, or positive if {@code this} is less than, + * equal to, or greater than {@code other}, respectively. + */ + public int compareTo(final FieldDescriptor other) { + if (other.containingType != containingType) { + throw new IllegalArgumentException( + "FieldDescriptors can only be compared to other FieldDescriptors " + + "for fields of the same message type."); + } + return getNumber() - other.getNumber(); + } + + private final int index; + + private FieldDescriptorProto proto; + private final String fullName; + private final FileDescriptor file; + private final Descriptor extensionScope; + + // Possibly initialized during cross-linking. + private Type type; + private Descriptor containingType; + private Descriptor messageType; + private OneofDescriptor containingOneof; + private EnumDescriptor enumType; + private Object defaultValue; + + public enum Type { + DOUBLE (JavaType.DOUBLE ), + FLOAT (JavaType.FLOAT ), + INT64 (JavaType.LONG ), + UINT64 (JavaType.LONG ), + INT32 (JavaType.INT ), + FIXED64 (JavaType.LONG ), + FIXED32 (JavaType.INT ), + BOOL (JavaType.BOOLEAN ), + STRING (JavaType.STRING ), + GROUP (JavaType.MESSAGE ), + MESSAGE (JavaType.MESSAGE ), + BYTES (JavaType.BYTE_STRING), + UINT32 (JavaType.INT ), + ENUM (JavaType.ENUM ), + SFIXED32(JavaType.INT ), + SFIXED64(JavaType.LONG ), + SINT32 (JavaType.INT ), + SINT64 (JavaType.LONG ); + + Type(final JavaType javaType) { + this.javaType = javaType; + } + + private JavaType javaType; + + public FieldDescriptorProto.Type toProto() { + return FieldDescriptorProto.Type.valueOf(ordinal() + 1); + } + public JavaType getJavaType() { return javaType; } + + public static Type valueOf(final FieldDescriptorProto.Type type) { + return values()[type.getNumber() - 1]; + } + } + + static { + // Refuse to init if someone added a new declared type. + if (Type.values().length != FieldDescriptorProto.Type.values().length) { + throw new RuntimeException( + "descriptor.proto has a new declared type but Desrciptors.java " + + "wasn't updated."); + } + } + + public enum JavaType { + INT(0), + LONG(0L), + FLOAT(0F), + DOUBLE(0D), + BOOLEAN(false), + STRING(""), + BYTE_STRING(ByteString.EMPTY), + ENUM(null), + MESSAGE(null); + + JavaType(final Object defaultDefault) { + this.defaultDefault = defaultDefault; + } + + /** + * The default default value for fields of this type, if it's a primitive + * type. This is meant for use inside this file only, hence is private. + */ + private final Object defaultDefault; + } + + private FieldDescriptor(final FieldDescriptorProto proto, + final FileDescriptor file, + final Descriptor parent, + final int index, + final boolean isExtension) + throws DescriptorValidationException { + this.index = index; + this.proto = proto; + fullName = computeFullName(file, parent, proto.getName()); + this.file = file; + + if (proto.hasType()) { + type = Type.valueOf(proto.getType()); + } + + if (getNumber() <= 0) { + throw new DescriptorValidationException(this, + "Field numbers must be positive integers."); + } + + if (isExtension) { + if (!proto.hasExtendee()) { + throw new DescriptorValidationException(this, + "FieldDescriptorProto.extendee not set for extension field."); + } + containingType = null; // Will be filled in when cross-linking + if (parent != null) { + extensionScope = parent; + } else { + extensionScope = null; + } + + if (proto.hasOneofIndex()) { + throw new DescriptorValidationException(this, + "FieldDescriptorProto.oneof_index set for extension field."); + } + containingOneof = null; + } else { + if (proto.hasExtendee()) { + throw new DescriptorValidationException(this, + "FieldDescriptorProto.extendee set for non-extension field."); + } + containingType = parent; + + if (proto.hasOneofIndex()) { + if (proto.getOneofIndex() < 0 || + proto.getOneofIndex() >= parent.toProto().getOneofDeclCount()) { + throw new DescriptorValidationException(this, + "FieldDescriptorProto.oneof_index is out of range for type " + + parent.getName()); + } + containingOneof = parent.getOneofs().get(proto.getOneofIndex()); + containingOneof.fieldCount++; + } else { + containingOneof = null; + } + extensionScope = null; + } + + file.pool.addSymbol(this); + } + + /** Look up and cross-link all field types, etc. */ + private void crossLink() throws DescriptorValidationException { + if (proto.hasExtendee()) { + final GenericDescriptor extendee = + file.pool.lookupSymbol(proto.getExtendee(), this, + DescriptorPool.SearchFilter.TYPES_ONLY); + if (!(extendee instanceof Descriptor)) { + throw new DescriptorValidationException(this, + '\"' + proto.getExtendee() + "\" is not a message type."); + } + containingType = (Descriptor)extendee; + + if (!getContainingType().isExtensionNumber(getNumber())) { + throw new DescriptorValidationException(this, + '\"' + getContainingType().getFullName() + + "\" does not declare " + getNumber() + + " as an extension number."); + } + } + + if (proto.hasTypeName()) { + final GenericDescriptor typeDescriptor = + file.pool.lookupSymbol(proto.getTypeName(), this, + DescriptorPool.SearchFilter.TYPES_ONLY); + + if (!proto.hasType()) { + // Choose field type based on symbol. + if (typeDescriptor instanceof Descriptor) { + type = Type.MESSAGE; + } else if (typeDescriptor instanceof EnumDescriptor) { + type = Type.ENUM; + } else { + throw new DescriptorValidationException(this, + '\"' + proto.getTypeName() + "\" is not a type."); + } + } + + if (getJavaType() == JavaType.MESSAGE) { + if (!(typeDescriptor instanceof Descriptor)) { + throw new DescriptorValidationException(this, + '\"' + proto.getTypeName() + "\" is not a message type."); + } + messageType = (Descriptor)typeDescriptor; + + if (proto.hasDefaultValue()) { + throw new DescriptorValidationException(this, + "Messages can't have default values."); + } + } else if (getJavaType() == JavaType.ENUM) { + if (!(typeDescriptor instanceof EnumDescriptor)) { + throw new DescriptorValidationException(this, + '\"' + proto.getTypeName() + "\" is not an enum type."); + } + enumType = (EnumDescriptor)typeDescriptor; + } else { + throw new DescriptorValidationException(this, + "Field with primitive type has type_name."); + } + } else { + if (getJavaType() == JavaType.MESSAGE || + getJavaType() == JavaType.ENUM) { + throw new DescriptorValidationException(this, + "Field with message or enum type missing type_name."); + } + } + + // Only repeated primitive fields may be packed. + if (proto.getOptions().getPacked() && !isPackable()) { + throw new DescriptorValidationException(this, + "[packed = true] can only be specified for repeated primitive " + + "fields."); + } + + // We don't attempt to parse the default value until here because for + // enums we need the enum type's descriptor. + if (proto.hasDefaultValue()) { + if (isRepeated()) { + throw new DescriptorValidationException(this, + "Repeated fields cannot have default values."); + } + + try { + switch (getType()) { + case INT32: + case SINT32: + case SFIXED32: + defaultValue = TextFormat.parseInt32(proto.getDefaultValue()); + break; + case UINT32: + case FIXED32: + defaultValue = TextFormat.parseUInt32(proto.getDefaultValue()); + break; + case INT64: + case SINT64: + case SFIXED64: + defaultValue = TextFormat.parseInt64(proto.getDefaultValue()); + break; + case UINT64: + case FIXED64: + defaultValue = TextFormat.parseUInt64(proto.getDefaultValue()); + break; + case FLOAT: + if (proto.getDefaultValue().equals("inf")) { + defaultValue = Float.POSITIVE_INFINITY; + } else if (proto.getDefaultValue().equals("-inf")) { + defaultValue = Float.NEGATIVE_INFINITY; + } else if (proto.getDefaultValue().equals("nan")) { + defaultValue = Float.NaN; + } else { + defaultValue = Float.valueOf(proto.getDefaultValue()); + } + break; + case DOUBLE: + if (proto.getDefaultValue().equals("inf")) { + defaultValue = Double.POSITIVE_INFINITY; + } else if (proto.getDefaultValue().equals("-inf")) { + defaultValue = Double.NEGATIVE_INFINITY; + } else if (proto.getDefaultValue().equals("nan")) { + defaultValue = Double.NaN; + } else { + defaultValue = Double.valueOf(proto.getDefaultValue()); + } + break; + case BOOL: + defaultValue = Boolean.valueOf(proto.getDefaultValue()); + break; + case STRING: + defaultValue = proto.getDefaultValue(); + break; + case BYTES: + try { + defaultValue = + TextFormat.unescapeBytes(proto.getDefaultValue()); + } catch (TextFormat.InvalidEscapeSequenceException e) { + throw new DescriptorValidationException(this, + "Couldn't parse default value: " + e.getMessage(), e); + } + break; + case ENUM: + defaultValue = enumType.findValueByName(proto.getDefaultValue()); + if (defaultValue == null) { + throw new DescriptorValidationException(this, + "Unknown enum default value: \"" + + proto.getDefaultValue() + '\"'); + } + break; + case MESSAGE: + case GROUP: + throw new DescriptorValidationException(this, + "Message type had default value."); + } + } catch (NumberFormatException e) { + throw new DescriptorValidationException(this, + "Could not parse default value: \"" + + proto.getDefaultValue() + '\"', e); + } + } else { + // Determine the default default for this field. + if (isRepeated()) { + defaultValue = Collections.emptyList(); + } else { + switch (getJavaType()) { + case ENUM: + // We guarantee elsewhere that an enum type always has at least + // one possible value. + defaultValue = enumType.getValues().get(0); + break; + case MESSAGE: + defaultValue = null; + break; + default: + defaultValue = getJavaType().defaultDefault; + break; + } + } + } + + if (!isExtension()) { + file.pool.addFieldByNumber(this); + } + + if (containingType != null && + containingType.getOptions().getMessageSetWireFormat()) { + if (isExtension()) { + if (!isOptional() || getType() != Type.MESSAGE) { + throw new DescriptorValidationException(this, + "Extensions of MessageSets must be optional messages."); + } + } else { + throw new DescriptorValidationException(this, + "MessageSets cannot have fields, only extensions."); + } + } + } + + /** See {@link FileDescriptor#setProto}. */ + private void setProto(final FieldDescriptorProto proto) { + this.proto = proto; + } + + /** + * For internal use only. This is to satisfy the FieldDescriptorLite + * interface. + */ + public MessageLite.Builder internalMergeFrom( + MessageLite.Builder to, MessageLite from) { + // FieldDescriptors are only used with non-lite messages so we can just + // down-cast and call mergeFrom directly. + return ((Message.Builder) to).mergeFrom((Message) from); + } + + } + + // ================================================================= + + /** Describes an enum type. */ + public static final class EnumDescriptor extends GenericDescriptor + implements Internal.EnumLiteMap { + /** + * Get the index of this descriptor within its parent. + * @see Descriptors.Descriptor#getIndex() + */ + public int getIndex() { return index; } + + /** Convert the descriptor to its protocol message representation. */ + public EnumDescriptorProto toProto() { return proto; } + + /** Get the type's unqualified name. */ + public String getName() { return proto.getName(); } + + /** + * Get the type's fully-qualified name. + * @see Descriptors.Descriptor#getFullName() + */ + public String getFullName() { return fullName; } + + /** Get the {@link FileDescriptor} containing this descriptor. */ + public FileDescriptor getFile() { return file; } + + /** If this is a nested type, get the outer descriptor, otherwise null. */ + public Descriptor getContainingType() { return containingType; } + + /** Get the {@code EnumOptions}, defined in {@code descriptor.proto}. */ + public EnumOptions getOptions() { return proto.getOptions(); } + + /** Get a list of defined values for this enum. */ + public List getValues() { + return Collections.unmodifiableList(Arrays.asList(values)); + } + + /** + * Find an enum value by name. + * @param name The unqualified name of the value (e.g. "FOO"). + * @return the value's descriptor, or {@code null} if not found. + */ + public EnumValueDescriptor findValueByName(final String name) { + final GenericDescriptor result = + file.pool.findSymbol(fullName + '.' + name); + if (result != null && result instanceof EnumValueDescriptor) { + return (EnumValueDescriptor)result; + } else { + return null; + } + } + + /** + * Find an enum value by number. If multiple enum values have the same + * number, this returns the first defined value with that number. + * @param number The value's number. + * @return the value's descriptor, or {@code null} if not found. + */ + public EnumValueDescriptor findValueByNumber(final int number) { + return file.pool.enumValuesByNumber.get( + new DescriptorPool.DescriptorIntPair(this, number)); + } + + private final int index; + private EnumDescriptorProto proto; + private final String fullName; + private final FileDescriptor file; + private final Descriptor containingType; + private EnumValueDescriptor[] values; + + private EnumDescriptor(final EnumDescriptorProto proto, + final FileDescriptor file, + final Descriptor parent, + final int index) + throws DescriptorValidationException { + this.index = index; + this.proto = proto; + fullName = computeFullName(file, parent, proto.getName()); + this.file = file; + containingType = parent; + + if (proto.getValueCount() == 0) { + // We cannot allow enums with no values because this would mean there + // would be no valid default value for fields of this type. + throw new DescriptorValidationException(this, + "Enums must contain at least one value."); + } + + values = new EnumValueDescriptor[proto.getValueCount()]; + for (int i = 0; i < proto.getValueCount(); i++) { + values[i] = new EnumValueDescriptor( + proto.getValue(i), file, this, i); + } + + file.pool.addSymbol(this); + } + + /** See {@link FileDescriptor#setProto}. */ + private void setProto(final EnumDescriptorProto proto) { + this.proto = proto; + + for (int i = 0; i < values.length; i++) { + values[i].setProto(proto.getValue(i)); + } + } + } + + // ================================================================= + + /** + * Describes one value within an enum type. Note that multiple defined + * values may have the same number. In generated Java code, all values + * with the same number after the first become aliases of the first. + * However, they still have independent EnumValueDescriptors. + */ + public static final class EnumValueDescriptor extends GenericDescriptor + implements Internal.EnumLite { + /** + * Get the index of this descriptor within its parent. + * @see Descriptors.Descriptor#getIndex() + */ + public int getIndex() { return index; } + + /** Convert the descriptor to its protocol message representation. */ + public EnumValueDescriptorProto toProto() { return proto; } + + /** Get the value's unqualified name. */ + public String getName() { return proto.getName(); } + + /** Get the value's number. */ + public int getNumber() { return proto.getNumber(); } + + @Override + public String toString() { return proto.getName(); } + + /** + * Get the value's fully-qualified name. + * @see Descriptors.Descriptor#getFullName() + */ + public String getFullName() { return fullName; } + + /** Get the {@link FileDescriptor} containing this descriptor. */ + public FileDescriptor getFile() { return file; } + + /** Get the value's enum type. */ + public EnumDescriptor getType() { return type; } + + /** + * Get the {@code EnumValueOptions}, defined in {@code descriptor.proto}. + */ + public EnumValueOptions getOptions() { return proto.getOptions(); } + + private final int index; + private EnumValueDescriptorProto proto; + private final String fullName; + private final FileDescriptor file; + private final EnumDescriptor type; + + private EnumValueDescriptor(final EnumValueDescriptorProto proto, + final FileDescriptor file, + final EnumDescriptor parent, + final int index) + throws DescriptorValidationException { + this.index = index; + this.proto = proto; + this.file = file; + type = parent; + + fullName = parent.getFullName() + '.' + proto.getName(); + + file.pool.addSymbol(this); + file.pool.addEnumValueByNumber(this); + } + + /** See {@link FileDescriptor#setProto}. */ + private void setProto(final EnumValueDescriptorProto proto) { + this.proto = proto; + } + } + + // ================================================================= + + /** Describes a service type. */ + public static final class ServiceDescriptor extends GenericDescriptor { + /** + * Get the index of this descriptor within its parent. + * * @see Descriptors.Descriptor#getIndex() + */ + public int getIndex() { return index; } + + /** Convert the descriptor to its protocol message representation. */ + public ServiceDescriptorProto toProto() { return proto; } + + /** Get the type's unqualified name. */ + public String getName() { return proto.getName(); } + + /** + * Get the type's fully-qualified name. + * @see Descriptors.Descriptor#getFullName() + */ + public String getFullName() { return fullName; } + + /** Get the {@link FileDescriptor} containing this descriptor. */ + public FileDescriptor getFile() { return file; } + + /** Get the {@code ServiceOptions}, defined in {@code descriptor.proto}. */ + public ServiceOptions getOptions() { return proto.getOptions(); } + + /** Get a list of methods for this service. */ + public List getMethods() { + return Collections.unmodifiableList(Arrays.asList(methods)); + } + + /** + * Find a method by name. + * @param name The unqualified name of the method (e.g. "Foo"). + * @return the method's descriptor, or {@code null} if not found. + */ + public MethodDescriptor findMethodByName(final String name) { + final GenericDescriptor result = + file.pool.findSymbol(fullName + '.' + name); + if (result != null && result instanceof MethodDescriptor) { + return (MethodDescriptor)result; + } else { + return null; + } + } + + private final int index; + private ServiceDescriptorProto proto; + private final String fullName; + private final FileDescriptor file; + private MethodDescriptor[] methods; + + private ServiceDescriptor(final ServiceDescriptorProto proto, + final FileDescriptor file, + final int index) + throws DescriptorValidationException { + this.index = index; + this.proto = proto; + fullName = computeFullName(file, null, proto.getName()); + this.file = file; + + methods = new MethodDescriptor[proto.getMethodCount()]; + for (int i = 0; i < proto.getMethodCount(); i++) { + methods[i] = new MethodDescriptor( + proto.getMethod(i), file, this, i); + } + + file.pool.addSymbol(this); + } + + private void crossLink() throws DescriptorValidationException { + for (final MethodDescriptor method : methods) { + method.crossLink(); + } + } + + /** See {@link FileDescriptor#setProto}. */ + private void setProto(final ServiceDescriptorProto proto) { + this.proto = proto; + + for (int i = 0; i < methods.length; i++) { + methods[i].setProto(proto.getMethod(i)); + } + } + } + + // ================================================================= + + /** + * Describes one method within a service type. + */ + public static final class MethodDescriptor extends GenericDescriptor { + /** + * Get the index of this descriptor within its parent. + * * @see Descriptors.Descriptor#getIndex() + */ + public int getIndex() { return index; } + + /** Convert the descriptor to its protocol message representation. */ + public MethodDescriptorProto toProto() { return proto; } + + /** Get the method's unqualified name. */ + public String getName() { return proto.getName(); } + + /** + * Get the method's fully-qualified name. + * @see Descriptors.Descriptor#getFullName() + */ + public String getFullName() { return fullName; } + + /** Get the {@link FileDescriptor} containing this descriptor. */ + public FileDescriptor getFile() { return file; } + + /** Get the method's service type. */ + public ServiceDescriptor getService() { return service; } + + /** Get the method's input type. */ + public Descriptor getInputType() { return inputType; } + + /** Get the method's output type. */ + public Descriptor getOutputType() { return outputType; } + + /** + * Get the {@code MethodOptions}, defined in {@code descriptor.proto}. + */ + public MethodOptions getOptions() { return proto.getOptions(); } + + private final int index; + private MethodDescriptorProto proto; + private final String fullName; + private final FileDescriptor file; + private final ServiceDescriptor service; + + // Initialized during cross-linking. + private Descriptor inputType; + private Descriptor outputType; + + private MethodDescriptor(final MethodDescriptorProto proto, + final FileDescriptor file, + final ServiceDescriptor parent, + final int index) + throws DescriptorValidationException { + this.index = index; + this.proto = proto; + this.file = file; + service = parent; + + fullName = parent.getFullName() + '.' + proto.getName(); + + file.pool.addSymbol(this); + } + + private void crossLink() throws DescriptorValidationException { + final GenericDescriptor input = + file.pool.lookupSymbol(proto.getInputType(), this, + DescriptorPool.SearchFilter.TYPES_ONLY); + if (!(input instanceof Descriptor)) { + throw new DescriptorValidationException(this, + '\"' + proto.getInputType() + "\" is not a message type."); + } + inputType = (Descriptor)input; + + final GenericDescriptor output = + file.pool.lookupSymbol(proto.getOutputType(), this, + DescriptorPool.SearchFilter.TYPES_ONLY); + if (!(output instanceof Descriptor)) { + throw new DescriptorValidationException(this, + '\"' + proto.getOutputType() + "\" is not a message type."); + } + outputType = (Descriptor)output; + } + + /** See {@link FileDescriptor#setProto}. */ + private void setProto(final MethodDescriptorProto proto) { + this.proto = proto; + } + } + + // ================================================================= + + private static String computeFullName(final FileDescriptor file, + final Descriptor parent, + final String name) { + if (parent != null) { + return parent.getFullName() + '.' + name; + } else if (file.getPackage().length() > 0) { + return file.getPackage() + '.' + name; + } else { + return name; + } + } + + // ================================================================= + + /** + * All descriptors implement this to make it easier to implement tools like + * {@code DescriptorPool}.

      + * + * This class is public so that the methods it exposes can be called from + * outside of this package. However, it should only be subclassed from + * nested classes of Descriptors. + */ + public abstract static class GenericDescriptor { + public abstract Message toProto(); + public abstract String getName(); + public abstract String getFullName(); + public abstract FileDescriptor getFile(); + } + + /** + * Thrown when building descriptors fails because the source DescriptorProtos + * are not valid. + */ + public static class DescriptorValidationException extends Exception { + private static final long serialVersionUID = 5750205775490483148L; + + /** Gets the full name of the descriptor where the error occurred. */ + public String getProblemSymbolName() { return name; } + + /** + * Gets the protocol message representation of the invalid descriptor. + */ + public Message getProblemProto() { return proto; } + + /** + * Gets a human-readable description of the error. + */ + public String getDescription() { return description; } + + private final String name; + private final Message proto; + private final String description; + + private DescriptorValidationException( + final GenericDescriptor problemDescriptor, + final String description) { + super(problemDescriptor.getFullName() + ": " + description); + + // Note that problemDescriptor may be partially uninitialized, so we + // don't want to expose it directly to the user. So, we only provide + // the name and the original proto. + name = problemDescriptor.getFullName(); + proto = problemDescriptor.toProto(); + this.description = description; + } + + private DescriptorValidationException( + final GenericDescriptor problemDescriptor, + final String description, + final Throwable cause) { + this(problemDescriptor, description); + initCause(cause); + } + + private DescriptorValidationException( + final FileDescriptor problemDescriptor, + final String description) { + super(problemDescriptor.getName() + ": " + description); + + // Note that problemDescriptor may be partially uninitialized, so we + // don't want to expose it directly to the user. So, we only provide + // the name and the original proto. + name = problemDescriptor.getName(); + proto = problemDescriptor.toProto(); + this.description = description; + } + } + + // ================================================================= + + /** + * A private helper class which contains lookup tables containing all the + * descriptors defined in a particular file. + */ + private static final class DescriptorPool { + + /** Defines what subclass of descriptors to search in the descriptor pool. + */ + enum SearchFilter { + TYPES_ONLY, AGGREGATES_ONLY, ALL_SYMBOLS + } + + DescriptorPool(final FileDescriptor[] dependencies, + boolean allowUnknownDependencies) { + this.dependencies = new HashSet(); + this.allowUnknownDependencies = allowUnknownDependencies; + + for (int i = 0; i < dependencies.length; i++) { + this.dependencies.add(dependencies[i]); + importPublicDependencies(dependencies[i]); + } + + for (final FileDescriptor dependency : this.dependencies) { + try { + addPackage(dependency.getPackage(), dependency); + } catch (DescriptorValidationException e) { + // Can't happen, because addPackage() only fails when the name + // conflicts with a non-package, but we have not yet added any + // non-packages at this point. + assert false; + } + } + } + + /** Find and put public dependencies of the file into dependencies set.*/ + private void importPublicDependencies(final FileDescriptor file) { + for (FileDescriptor dependency : file.getPublicDependencies()) { + if (dependencies.add(dependency)) { + importPublicDependencies(dependency); + } + } + } + + private final Set dependencies; + private boolean allowUnknownDependencies; + + private final Map descriptorsByName = + new HashMap(); + private final Map fieldsByNumber = + new HashMap(); + private final Map enumValuesByNumber + = new HashMap(); + + /** Find a generic descriptor by fully-qualified name. */ + GenericDescriptor findSymbol(final String fullName) { + return findSymbol(fullName, SearchFilter.ALL_SYMBOLS); + } + + /** Find a descriptor by fully-qualified name and given option to only + * search valid field type descriptors. + */ + GenericDescriptor findSymbol(final String fullName, + final SearchFilter filter) { + GenericDescriptor result = descriptorsByName.get(fullName); + if (result != null) { + if ((filter==SearchFilter.ALL_SYMBOLS) || + ((filter==SearchFilter.TYPES_ONLY) && isType(result)) || + ((filter==SearchFilter.AGGREGATES_ONLY) && isAggregate(result))) { + return result; + } + } + + for (final FileDescriptor dependency : dependencies) { + result = dependency.pool.descriptorsByName.get(fullName); + if (result != null) { + if ((filter==SearchFilter.ALL_SYMBOLS) || + ((filter==SearchFilter.TYPES_ONLY) && isType(result)) || + ((filter==SearchFilter.AGGREGATES_ONLY) && isAggregate(result))) { + return result; + } + } + } + + return null; + } + + /** Checks if the descriptor is a valid type for a message field. */ + boolean isType(GenericDescriptor descriptor) { + return (descriptor instanceof Descriptor) || + (descriptor instanceof EnumDescriptor); + } + + /** Checks if the descriptor is a valid namespace type. */ + boolean isAggregate(GenericDescriptor descriptor) { + return (descriptor instanceof Descriptor) || + (descriptor instanceof EnumDescriptor) || + (descriptor instanceof PackageDescriptor) || + (descriptor instanceof ServiceDescriptor); + } + + /** + * Look up a type descriptor by name, relative to some other descriptor. + * The name may be fully-qualified (with a leading '.'), + * partially-qualified, or unqualified. C++-like name lookup semantics + * are used to search for the matching descriptor. + */ + GenericDescriptor lookupSymbol(final String name, + final GenericDescriptor relativeTo, + final DescriptorPool.SearchFilter filter) + throws DescriptorValidationException { + // TODO(kenton): This could be optimized in a number of ways. + + GenericDescriptor result; + String fullname; + if (name.startsWith(".")) { + // Fully-qualified name. + fullname = name.substring(1); + result = findSymbol(fullname, filter); + } else { + // If "name" is a compound identifier, we want to search for the + // first component of it, then search within it for the rest. + // If name is something like "Foo.Bar.baz", and symbols named "Foo" are + // defined in multiple parent scopes, we only want to find "Bar.baz" in + // the innermost one. E.g., the following should produce an error: + // message Bar { message Baz {} } + // message Foo { + // message Bar { + // } + // optional Bar.Baz baz = 1; + // } + // So, we look for just "Foo" first, then look for "Bar.baz" within it + // if found. + final int firstPartLength = name.indexOf('.'); + final String firstPart; + if (firstPartLength == -1) { + firstPart = name; + } else { + firstPart = name.substring(0, firstPartLength); + } + + // We will search each parent scope of "relativeTo" looking for the + // symbol. + final StringBuilder scopeToTry = + new StringBuilder(relativeTo.getFullName()); + + while (true) { + // Chop off the last component of the scope. + final int dotpos = scopeToTry.lastIndexOf("."); + if (dotpos == -1) { + fullname = name; + result = findSymbol(name, filter); + break; + } else { + scopeToTry.setLength(dotpos + 1); + + // Append firstPart and try to find + scopeToTry.append(firstPart); + result = findSymbol(scopeToTry.toString(), + DescriptorPool.SearchFilter.AGGREGATES_ONLY); + + if (result != null) { + if (firstPartLength != -1) { + // We only found the first part of the symbol. Now look for + // the whole thing. If this fails, we *don't* want to keep + // searching parent scopes. + scopeToTry.setLength(dotpos + 1); + scopeToTry.append(name); + result = findSymbol(scopeToTry.toString(), filter); + } + fullname = scopeToTry.toString(); + break; + } + + // Not found. Remove the name so we can try again. + scopeToTry.setLength(dotpos); + } + } + } + + if (result == null) { + if (allowUnknownDependencies && filter == SearchFilter.TYPES_ONLY) { + logger.warning("The descriptor for message type \"" + name + + "\" can not be found and a placeholder is created for it"); + // We create a dummy message descriptor here regardless of the + // expected type. If the type should be message, this dummy + // descriptor will work well and if the type should be enum, a + // DescriptorValidationException will be thrown latter. In either + // case, the code works as expected: we allow unknown message types + // but not unknwon enum types. + result = new Descriptor(fullname); + // Add the placeholder file as a dependency so we can find the + // placeholder symbol when resolving other references. + this.dependencies.add(result.getFile()); + return result; + } else { + throw new DescriptorValidationException(relativeTo, + '\"' + name + "\" is not defined."); + } + } else { + return result; + } + } + + /** + * Adds a symbol to the symbol table. If a symbol with the same name + * already exists, throws an error. + */ + void addSymbol(final GenericDescriptor descriptor) + throws DescriptorValidationException { + validateSymbolName(descriptor); + + final String fullName = descriptor.getFullName(); + final int dotpos = fullName.lastIndexOf('.'); + + final GenericDescriptor old = descriptorsByName.put(fullName, descriptor); + if (old != null) { + descriptorsByName.put(fullName, old); + + if (descriptor.getFile() == old.getFile()) { + if (dotpos == -1) { + throw new DescriptorValidationException(descriptor, + '\"' + fullName + "\" is already defined."); + } else { + throw new DescriptorValidationException(descriptor, + '\"' + fullName.substring(dotpos + 1) + + "\" is already defined in \"" + + fullName.substring(0, dotpos) + "\"."); + } + } else { + throw new DescriptorValidationException(descriptor, + '\"' + fullName + "\" is already defined in file \"" + + old.getFile().getName() + "\"."); + } + } + } + + /** + * Represents a package in the symbol table. We use PackageDescriptors + * just as placeholders so that someone cannot define, say, a message type + * that has the same name as an existing package. + */ + private static final class PackageDescriptor extends GenericDescriptor { + public Message toProto() { return file.toProto(); } + public String getName() { return name; } + public String getFullName() { return fullName; } + public FileDescriptor getFile() { return file; } + + PackageDescriptor(final String name, final String fullName, + final FileDescriptor file) { + this.file = file; + this.fullName = fullName; + this.name = name; + } + + private final String name; + private final String fullName; + private final FileDescriptor file; + } + + /** + * Adds a package to the symbol tables. If a package by the same name + * already exists, that is fine, but if some other kind of symbol exists + * under the same name, an exception is thrown. If the package has + * multiple components, this also adds the parent package(s). + */ + void addPackage(final String fullName, final FileDescriptor file) + throws DescriptorValidationException { + final int dotpos = fullName.lastIndexOf('.'); + final String name; + if (dotpos == -1) { + name = fullName; + } else { + addPackage(fullName.substring(0, dotpos), file); + name = fullName.substring(dotpos + 1); + } + + final GenericDescriptor old = + descriptorsByName.put(fullName, + new PackageDescriptor(name, fullName, file)); + if (old != null) { + descriptorsByName.put(fullName, old); + if (!(old instanceof PackageDescriptor)) { + throw new DescriptorValidationException(file, + '\"' + name + "\" is already defined (as something other than a " + + "package) in file \"" + old.getFile().getName() + "\"."); + } + } + } + + /** A (GenericDescriptor, int) pair, used as a map key. */ + private static final class DescriptorIntPair { + private final GenericDescriptor descriptor; + private final int number; + + DescriptorIntPair(final GenericDescriptor descriptor, final int number) { + this.descriptor = descriptor; + this.number = number; + } + + @Override + public int hashCode() { + return descriptor.hashCode() * ((1 << 16) - 1) + number; + } + @Override + public boolean equals(final Object obj) { + if (!(obj instanceof DescriptorIntPair)) { + return false; + } + final DescriptorIntPair other = (DescriptorIntPair)obj; + return descriptor == other.descriptor && number == other.number; + } + } + + /** + * Adds a field to the fieldsByNumber table. Throws an exception if a + * field with the same containing type and number already exists. + */ + void addFieldByNumber(final FieldDescriptor field) + throws DescriptorValidationException { + final DescriptorIntPair key = + new DescriptorIntPair(field.getContainingType(), field.getNumber()); + final FieldDescriptor old = fieldsByNumber.put(key, field); + if (old != null) { + fieldsByNumber.put(key, old); + throw new DescriptorValidationException(field, + "Field number " + field.getNumber() + + " has already been used in \"" + + field.getContainingType().getFullName() + + "\" by field \"" + old.getName() + "\"."); + } + } + + /** + * Adds an enum value to the enumValuesByNumber table. If an enum value + * with the same type and number already exists, does nothing. (This is + * allowed; the first value define with the number takes precedence.) + */ + void addEnumValueByNumber(final EnumValueDescriptor value) { + final DescriptorIntPair key = + new DescriptorIntPair(value.getType(), value.getNumber()); + final EnumValueDescriptor old = enumValuesByNumber.put(key, value); + if (old != null) { + enumValuesByNumber.put(key, old); + // Not an error: Multiple enum values may have the same number, but + // we only want the first one in the map. + } + } + + /** + * Verifies that the descriptor's name is valid (i.e. it contains only + * letters, digits, and underscores, and does not start with a digit). + */ + static void validateSymbolName(final GenericDescriptor descriptor) + throws DescriptorValidationException { + final String name = descriptor.getName(); + if (name.length() == 0) { + throw new DescriptorValidationException(descriptor, "Missing name."); + } else { + boolean valid = true; + for (int i = 0; i < name.length(); i++) { + final char c = name.charAt(i); + // Non-ASCII characters are not valid in protobuf identifiers, even + // if they are letters or digits. + if (c >= 128) { + valid = false; + } + // First character must be letter or _. Subsequent characters may + // be letters, numbers, or digits. + if (Character.isLetter(c) || c == '_' || + (Character.isDigit(c) && i > 0)) { + // Valid + } else { + valid = false; + } + } + if (!valid) { + throw new DescriptorValidationException(descriptor, + '\"' + name + "\" is not a valid identifier."); + } + } + } + } + + /** Describes an oneof of a message type. */ + public static final class OneofDescriptor { + /** Get the index of this descriptor within its parent. */ + public int getIndex() { return index; } + + public String getName() { return proto.getName(); } + + public FileDescriptor getFile() { return file; } + + public String getFullName() { return fullName; } + + public Descriptor getContainingType() { return containingType; } + + public int getFieldCount() { return fieldCount; } + + public FieldDescriptor getField(int index) { + return fields[index]; + } + + private OneofDescriptor(final OneofDescriptorProto proto, + final FileDescriptor file, + final Descriptor parent, + final int index) + throws DescriptorValidationException { + this.proto = proto; + fullName = computeFullName(file, parent, proto.getName()); + this.file = file; + this.index = index; + + containingType = parent; + fieldCount = 0; + } + + private final int index; + private OneofDescriptorProto proto; + private final String fullName; + private final FileDescriptor file; + + private Descriptor containingType; + private int fieldCount; + private FieldDescriptor[] fields; + } +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/DynamicMessage.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/DynamicMessage.java new file mode 100644 index 00000000..c9ce667b --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/DynamicMessage.java @@ -0,0 +1,622 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import com.google.protobuf.Descriptors.Descriptor; +import com.google.protobuf.Descriptors.EnumValueDescriptor; +import com.google.protobuf.Descriptors.FieldDescriptor; +import com.google.protobuf.Descriptors.OneofDescriptor; + +import java.io.InputStream; +import java.io.IOException; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +/** + * An implementation of {@link Message} that can represent arbitrary types, + * given a {@link Descriptors.Descriptor}. + * + * @author kenton@google.com Kenton Varda + */ +public final class DynamicMessage extends AbstractMessage { + private final Descriptor type; + private final FieldSet fields; + private final FieldDescriptor[] oneofCases; + private final UnknownFieldSet unknownFields; + private int memoizedSize = -1; + + /** + * Construct a {@code DynamicMessage} using the given {@code FieldSet}. + * oneofCases stores the FieldDescriptor for each oneof to indicate + * which field is set. Caller should make sure the array is immutable. + * + * This contructor is package private and will be used in + * {@code DynamicMutableMessage} to convert a mutable message to an immutable + * message. + */ + DynamicMessage(Descriptor type, FieldSet fields, + FieldDescriptor[] oneofCases, + UnknownFieldSet unknownFields) { + this.type = type; + this.fields = fields; + this.oneofCases = oneofCases; + this.unknownFields = unknownFields; + } + + /** + * Get a {@code DynamicMessage} representing the default instance of the + * given type. + */ + public static DynamicMessage getDefaultInstance(Descriptor type) { + int oneofDeclCount = type.toProto().getOneofDeclCount(); + FieldDescriptor[] oneofCases = new FieldDescriptor[oneofDeclCount]; + return new DynamicMessage(type, FieldSet.emptySet(), + oneofCases, + UnknownFieldSet.getDefaultInstance()); + } + + + /** Parse a message of the given type from the given input stream. */ + public static DynamicMessage parseFrom(Descriptor type, + CodedInputStream input) + throws IOException { + return newBuilder(type).mergeFrom(input).buildParsed(); + } + + /** Parse a message of the given type from the given input stream. */ + public static DynamicMessage parseFrom( + Descriptor type, + CodedInputStream input, + ExtensionRegistry extensionRegistry) + throws IOException { + return newBuilder(type).mergeFrom(input, extensionRegistry).buildParsed(); + } + + /** Parse {@code data} as a message of the given type and return it. */ + public static DynamicMessage parseFrom(Descriptor type, ByteString data) + throws InvalidProtocolBufferException { + return newBuilder(type).mergeFrom(data).buildParsed(); + } + + /** Parse {@code data} as a message of the given type and return it. */ + public static DynamicMessage parseFrom(Descriptor type, ByteString data, + ExtensionRegistry extensionRegistry) + throws InvalidProtocolBufferException { + return newBuilder(type).mergeFrom(data, extensionRegistry).buildParsed(); + } + + /** Parse {@code data} as a message of the given type and return it. */ + public static DynamicMessage parseFrom(Descriptor type, byte[] data) + throws InvalidProtocolBufferException { + return newBuilder(type).mergeFrom(data).buildParsed(); + } + + /** Parse {@code data} as a message of the given type and return it. */ + public static DynamicMessage parseFrom(Descriptor type, byte[] data, + ExtensionRegistry extensionRegistry) + throws InvalidProtocolBufferException { + return newBuilder(type).mergeFrom(data, extensionRegistry).buildParsed(); + } + + /** Parse a message of the given type from {@code input} and return it. */ + public static DynamicMessage parseFrom(Descriptor type, InputStream input) + throws IOException { + return newBuilder(type).mergeFrom(input).buildParsed(); + } + + /** Parse a message of the given type from {@code input} and return it. */ + public static DynamicMessage parseFrom(Descriptor type, InputStream input, + ExtensionRegistry extensionRegistry) + throws IOException { + return newBuilder(type).mergeFrom(input, extensionRegistry).buildParsed(); + } + + /** Construct a {@link Message.Builder} for the given type. */ + public static Builder newBuilder(Descriptor type) { + return new Builder(type); + } + + /** + * Construct a {@link Message.Builder} for a message of the same type as + * {@code prototype}, and initialize it with {@code prototype}'s contents. + */ + public static Builder newBuilder(Message prototype) { + return new Builder(prototype.getDescriptorForType()).mergeFrom(prototype); + } + + // ----------------------------------------------------------------- + // Implementation of Message interface. + + public Descriptor getDescriptorForType() { + return type; + } + + public DynamicMessage getDefaultInstanceForType() { + return getDefaultInstance(type); + } + + public Map getAllFields() { + return fields.getAllFields(); + } + + public boolean hasOneof(OneofDescriptor oneof) { + verifyOneofContainingType(oneof); + FieldDescriptor field = oneofCases[oneof.getIndex()]; + if (field == null) { + return false; + } + return true; + } + + public FieldDescriptor getOneofFieldDescriptor(OneofDescriptor oneof) { + verifyOneofContainingType(oneof); + return oneofCases[oneof.getIndex()]; + } + + public boolean hasField(FieldDescriptor field) { + verifyContainingType(field); + return fields.hasField(field); + } + + public Object getField(FieldDescriptor field) { + verifyContainingType(field); + Object result = fields.getField(field); + if (result == null) { + if (field.isRepeated()) { + result = Collections.emptyList(); + } else if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { + result = getDefaultInstance(field.getMessageType()); + } else { + result = field.getDefaultValue(); + } + } + return result; + } + + public int getRepeatedFieldCount(FieldDescriptor field) { + verifyContainingType(field); + return fields.getRepeatedFieldCount(field); + } + + public Object getRepeatedField(FieldDescriptor field, int index) { + verifyContainingType(field); + return fields.getRepeatedField(field, index); + } + + public UnknownFieldSet getUnknownFields() { + return unknownFields; + } + + static boolean isInitialized(Descriptor type, + FieldSet fields) { + // Check that all required fields are present. + for (final FieldDescriptor field : type.getFields()) { + if (field.isRequired()) { + if (!fields.hasField(field)) { + return false; + } + } + } + + // Check that embedded messages are initialized. + return fields.isInitialized(); + } + + @Override + public boolean isInitialized() { + return isInitialized(type, fields); + } + + @Override + public void writeTo(CodedOutputStream output) throws IOException { + if (type.getOptions().getMessageSetWireFormat()) { + fields.writeMessageSetTo(output); + unknownFields.writeAsMessageSetTo(output); + } else { + fields.writeTo(output); + unknownFields.writeTo(output); + } + } + + @Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + if (type.getOptions().getMessageSetWireFormat()) { + size = fields.getMessageSetSerializedSize(); + size += unknownFields.getSerializedSizeAsMessageSet(); + } else { + size = fields.getSerializedSize(); + size += unknownFields.getSerializedSize(); + } + + memoizedSize = size; + return size; + } + + public Builder newBuilderForType() { + return new Builder(type); + } + + public Builder toBuilder() { + return newBuilderForType().mergeFrom(this); + } + + public Parser getParserForType() { + return new AbstractParser() { + public DynamicMessage parsePartialFrom( + CodedInputStream input, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException { + Builder builder = newBuilder(type); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (IOException e) { + throw new InvalidProtocolBufferException(e.getMessage()) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + } + + /** Verifies that the field is a field of this message. */ + private void verifyContainingType(FieldDescriptor field) { + if (field.getContainingType() != type) { + throw new IllegalArgumentException( + "FieldDescriptor does not match message type."); + } + } + + /** Verifies that the oneof is an oneof of this message. */ + private void verifyOneofContainingType(OneofDescriptor oneof) { + if (oneof.getContainingType() != type) { + throw new IllegalArgumentException( + "OneofDescriptor does not match message type."); + } + } + + // ================================================================= + + /** + * Builder for {@link DynamicMessage}s. + */ + public static final class Builder extends AbstractMessage.Builder { + private final Descriptor type; + private FieldSet fields; + private final FieldDescriptor[] oneofCases; + private UnknownFieldSet unknownFields; + + /** Construct a {@code Builder} for the given type. */ + private Builder(Descriptor type) { + this.type = type; + this.fields = FieldSet.newFieldSet(); + this.unknownFields = UnknownFieldSet.getDefaultInstance(); + this.oneofCases = new FieldDescriptor[type.toProto().getOneofDeclCount()]; + } + + // --------------------------------------------------------------- + // Implementation of Message.Builder interface. + + @Override + public Builder clear() { + if (fields.isImmutable()) { + fields = FieldSet.newFieldSet(); + } else { + fields.clear(); + } + unknownFields = UnknownFieldSet.getDefaultInstance(); + return this; + } + + @Override + public Builder mergeFrom(Message other) { + if (other instanceof DynamicMessage) { + // This should be somewhat faster than calling super.mergeFrom(). + DynamicMessage otherDynamicMessage = (DynamicMessage) other; + if (otherDynamicMessage.type != type) { + throw new IllegalArgumentException( + "mergeFrom(Message) can only merge messages of the same type."); + } + ensureIsMutable(); + fields.mergeFrom(otherDynamicMessage.fields); + mergeUnknownFields(otherDynamicMessage.unknownFields); + for (int i = 0; i < oneofCases.length; i++) { + if (oneofCases[i] == null) { + oneofCases[i] = otherDynamicMessage.oneofCases[i]; + } else { + if ((otherDynamicMessage.oneofCases[i] != null) + && (oneofCases[i] != otherDynamicMessage.oneofCases[i])) { + fields.clearField(oneofCases[i]); + oneofCases[i] = otherDynamicMessage.oneofCases[i]; + } + } + } + return this; + } else { + return super.mergeFrom(other); + } + } + + public DynamicMessage build() { + if (!isInitialized()) { + throw newUninitializedMessageException( + new DynamicMessage(type, fields, + java.util.Arrays.copyOf(oneofCases, oneofCases.length), unknownFields)); + } + return buildPartial(); + } + + /** + * Helper for DynamicMessage.parseFrom() methods to call. Throws + * {@link InvalidProtocolBufferException} instead of + * {@link UninitializedMessageException}. + */ + private DynamicMessage buildParsed() throws InvalidProtocolBufferException { + if (!isInitialized()) { + throw newUninitializedMessageException( + new DynamicMessage(type, fields, + java.util.Arrays.copyOf(oneofCases, oneofCases.length), unknownFields)) + .asInvalidProtocolBufferException(); + } + return buildPartial(); + } + + public DynamicMessage buildPartial() { + fields.makeImmutable(); + DynamicMessage result = + new DynamicMessage(type, fields, + java.util.Arrays.copyOf(oneofCases, oneofCases.length), unknownFields); + return result; + } + + @Override + public Builder clone() { + Builder result = new Builder(type); + result.fields.mergeFrom(fields); + result.mergeUnknownFields(unknownFields); + System.arraycopy(oneofCases, 0, result.oneofCases, 0 , oneofCases.length); + return result; + } + + public boolean isInitialized() { + return DynamicMessage.isInitialized(type, fields); + } + + public Descriptor getDescriptorForType() { + return type; + } + + public DynamicMessage getDefaultInstanceForType() { + return getDefaultInstance(type); + } + + public Map getAllFields() { + return fields.getAllFields(); + } + + public Builder newBuilderForField(FieldDescriptor field) { + verifyContainingType(field); + + if (field.getJavaType() != FieldDescriptor.JavaType.MESSAGE) { + throw new IllegalArgumentException( + "newBuilderForField is only valid for fields with message type."); + } + + return new Builder(field.getMessageType()); + } + + public boolean hasOneof(OneofDescriptor oneof) { + verifyOneofContainingType(oneof); + FieldDescriptor field = oneofCases[oneof.getIndex()]; + if (field == null) { + return false; + } + return true; + } + + public FieldDescriptor getOneofFieldDescriptor(OneofDescriptor oneof) { + verifyOneofContainingType(oneof); + return oneofCases[oneof.getIndex()]; + } + + public Builder clearOneof(OneofDescriptor oneof) { + verifyOneofContainingType(oneof); + FieldDescriptor field = oneofCases[oneof.getIndex()]; + if (field != null) { + clearField(field); + } + return this; + } + + public boolean hasField(FieldDescriptor field) { + verifyContainingType(field); + return fields.hasField(field); + } + + public Object getField(FieldDescriptor field) { + verifyContainingType(field); + Object result = fields.getField(field); + if (result == null) { + if (field.isRepeated()) { + result = Collections.emptyList(); + } else if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { + result = getDefaultInstance(field.getMessageType()); + } else { + result = field.getDefaultValue(); + } + } + return result; + } + + public Builder setField(FieldDescriptor field, Object value) { + verifyContainingType(field); + ensureIsMutable(); + // TODO(xiaofeng): This check should really be put in FieldSet.setField() + // where all other such checks are done. However, currently + // FieldSet.setField() permits Integer value for enum fields probably + // because of some internal features we support. Should figure it out + // and move this check to a more appropriate place. + if (field.getType() == FieldDescriptor.Type.ENUM) { + ensureEnumValueDescriptor(field, value); + } + OneofDescriptor oneofDescriptor = field.getContainingOneof(); + if (oneofDescriptor != null) { + int index = oneofDescriptor.getIndex(); + FieldDescriptor oldField = oneofCases[index]; + if ((oldField != null) && (oldField != field)) { + fields.clearField(oldField); + } + oneofCases[index] = field; + } + fields.setField(field, value); + return this; + } + + public Builder clearField(FieldDescriptor field) { + verifyContainingType(field); + ensureIsMutable(); + OneofDescriptor oneofDescriptor = field.getContainingOneof(); + if (oneofDescriptor != null) { + int index = oneofDescriptor.getIndex(); + if (oneofCases[index] == field) { + oneofCases[index] = null; + } + } + fields.clearField(field); + return this; + } + + public int getRepeatedFieldCount(FieldDescriptor field) { + verifyContainingType(field); + return fields.getRepeatedFieldCount(field); + } + + public Object getRepeatedField(FieldDescriptor field, int index) { + verifyContainingType(field); + return fields.getRepeatedField(field, index); + } + + public Builder setRepeatedField(FieldDescriptor field, + int index, Object value) { + verifyContainingType(field); + ensureIsMutable(); + fields.setRepeatedField(field, index, value); + return this; + } + + public Builder addRepeatedField(FieldDescriptor field, Object value) { + verifyContainingType(field); + ensureIsMutable(); + fields.addRepeatedField(field, value); + return this; + } + + public UnknownFieldSet getUnknownFields() { + return unknownFields; + } + + public Builder setUnknownFields(UnknownFieldSet unknownFields) { + this.unknownFields = unknownFields; + return this; + } + + @Override + public Builder mergeUnknownFields(UnknownFieldSet unknownFields) { + this.unknownFields = + UnknownFieldSet.newBuilder(this.unknownFields) + .mergeFrom(unknownFields) + .build(); + return this; + } + + /** Verifies that the field is a field of this message. */ + private void verifyContainingType(FieldDescriptor field) { + if (field.getContainingType() != type) { + throw new IllegalArgumentException( + "FieldDescriptor does not match message type."); + } + } + + /** Verifies that the oneof is an oneof of this message. */ + private void verifyOneofContainingType(OneofDescriptor oneof) { + if (oneof.getContainingType() != type) { + throw new IllegalArgumentException( + "OneofDescriptor does not match message type."); + } + } + + /** Verifies that the value is EnumValueDescriptor and matches Enum Type. */ + private void ensureSingularEnumValueDescriptor( + FieldDescriptor field, Object value) { + if (value == null) { + throw new NullPointerException(); + } + if (!(value instanceof EnumValueDescriptor)) { + throw new IllegalArgumentException( + "DynamicMessage should use EnumValueDescriptor to set Enum Value."); + } + if (field.getEnumType() != ((EnumValueDescriptor) value).getType()) { + throw new IllegalArgumentException( + "EnumValueDescriptor doesn't much Enum Field."); + } + } + + /** Verifies the value for an enum field. */ + private void ensureEnumValueDescriptor( + FieldDescriptor field, Object value) { + if (field.isRepeated()) { + for (Object item : (List) value) { + ensureSingularEnumValueDescriptor(field, item); + } + } else { + ensureSingularEnumValueDescriptor(field, value); + } + } + + private void ensureIsMutable() { + if (fields.isImmutable()) { + fields = fields.clone(); + } + } + + @Override + public com.google.protobuf.Message.Builder getFieldBuilder(FieldDescriptor field) { + // TODO(xiangl): need implementation for dynamic message + throw new UnsupportedOperationException( + "getFieldBuilder() called on a dynamic message type."); + } + } +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/Extension.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/Extension.java new file mode 100644 index 00000000..0baa22b3 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/Extension.java @@ -0,0 +1,96 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +/** + * Interface that generated extensions implement. + * + * @author liujisi@google.com (Jisi Liu) + */ +public abstract class Extension { + /** Returns the field number of the extension. */ + public abstract int getNumber(); + + /** Returns the type of the field. */ + public abstract WireFormat.FieldType getLiteType(); + + /** Returns whether it is a repeated field. */ + public abstract boolean isRepeated(); + + /** Returns the descriptor of the extension. */ + public abstract Descriptors.FieldDescriptor getDescriptor(); + + /** Returns the default value of the extension field. */ + public abstract Type getDefaultValue(); + + /** + * Returns the default instance of the extension field, if it's a message + * extension. + */ + public abstract MessageLite getMessageDefaultInstance(); + + // All the methods below are extension implementation details. + + /** + * The API type that the extension is used for. + */ + protected enum ExtensionType { + IMMUTABLE, + MUTABLE, + PROTO1, + } + + protected ExtensionType getExtensionType() { + // TODO(liujisi): make this abstract after we fix proto1. + return ExtensionType.IMMUTABLE; + } + + /** + * Type of a message extension. + */ + public enum MessageType { + PROTO1, + PROTO2, + } + + /** + * If the extension is a message extension (i.e., getLiteType() == MESSAGE), + * returns the type of the message, otherwise undefined. + */ + public MessageType getMessageType() { + return MessageType.PROTO2; + } + + protected abstract Object fromReflectionType(Object value); + protected abstract Object singularFromReflectionType(Object value); + protected abstract Object toReflectionType(Object value); + protected abstract Object singularToReflectionType(Object value); +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/ExtensionRegistry.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/ExtensionRegistry.java new file mode 100644 index 00000000..0067392f --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/ExtensionRegistry.java @@ -0,0 +1,392 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import com.google.protobuf.Descriptors.Descriptor; +import com.google.protobuf.Descriptors.FieldDescriptor; + +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +/** + * A table of known extensions, searchable by name or field number. When + * parsing a protocol message that might have extensions, you must provide + * an {@code ExtensionRegistry} in which you have registered any extensions + * that you want to be able to parse. Otherwise, those extensions will just + * be treated like unknown fields. + * + *

      For example, if you had the {@code .proto} file: + * + *

      + * option java_class = "MyProto";
      + *
      + * message Foo {
      + *   extensions 1000 to max;
      + * }
      + *
      + * extend Foo {
      + *   optional int32 bar;
      + * }
      + * 
      + * + * Then you might write code like: + * + *
      + * ExtensionRegistry registry = ExtensionRegistry.newInstance();
      + * registry.add(MyProto.bar);
      + * MyProto.Foo message = MyProto.Foo.parseFrom(input, registry);
      + * 
      + * + *

      Background: + * + *

      You might wonder why this is necessary. Two alternatives might come to + * mind. First, you might imagine a system where generated extensions are + * automatically registered when their containing classes are loaded. This + * is a popular technique, but is bad design; among other things, it creates a + * situation where behavior can change depending on what classes happen to be + * loaded. It also introduces a security vulnerability, because an + * unprivileged class could cause its code to be called unexpectedly from a + * privileged class by registering itself as an extension of the right type. + * + *

      Another option you might consider is lazy parsing: do not parse an + * extension until it is first requested, at which point the caller must + * provide a type to use. This introduces a different set of problems. First, + * it would require a mutex lock any time an extension was accessed, which + * would be slow. Second, corrupt data would not be detected until first + * access, at which point it would be much harder to deal with it. Third, it + * could violate the expectation that message objects are immutable, since the + * type provided could be any arbitrary message class. An unprivileged user + * could take advantage of this to inject a mutable object into a message + * belonging to privileged code and create mischief. + * + * @author kenton@google.com Kenton Varda + */ +public class ExtensionRegistry extends ExtensionRegistryLite { + /** Construct a new, empty instance. */ + public static ExtensionRegistry newInstance() { + return new ExtensionRegistry(); + } + + /** Get the unmodifiable singleton empty instance. */ + public static ExtensionRegistry getEmptyRegistry() { + return EMPTY; + } + + + /** Returns an unmodifiable view of the registry. */ + @Override + public ExtensionRegistry getUnmodifiable() { + return new ExtensionRegistry(this); + } + + /** A (Descriptor, Message) pair, returned by lookup methods. */ + public static final class ExtensionInfo { + /** The extension's descriptor. */ + public final FieldDescriptor descriptor; + + /** + * A default instance of the extension's type, if it has a message type. + * Otherwise, {@code null}. + */ + public final Message defaultInstance; + + private ExtensionInfo(final FieldDescriptor descriptor) { + this.descriptor = descriptor; + defaultInstance = null; + } + private ExtensionInfo(final FieldDescriptor descriptor, + final Message defaultInstance) { + this.descriptor = descriptor; + this.defaultInstance = defaultInstance; + } + } + + /** + * Deprecated. Use {@link #findImmutableExtensionByName(String)} instead. + */ + public ExtensionInfo findExtensionByName(final String fullName) { + return findImmutableExtensionByName(fullName); + } + + /** + * Find an extension for immutable APIs by fully-qualified field name, + * in the proto namespace. i.e. {@code result.descriptor.fullName()} will + * match {@code fullName} if a match is found. + * + * @return Information about the extension if found, or {@code null} + * otherwise. + */ + public ExtensionInfo findImmutableExtensionByName(final String fullName) { + return immutableExtensionsByName.get(fullName); + } + + /** + * Find an extension for mutable APIs by fully-qualified field name, + * in the proto namespace. i.e. {@code result.descriptor.fullName()} will + * match {@code fullName} if a match is found. + * + * @return Information about the extension if found, or {@code null} + * otherwise. + */ + public ExtensionInfo findMutableExtensionByName(final String fullName) { + return mutableExtensionsByName.get(fullName); + } + + /** + * Deprecated. Use {@link #findImmutableExtensionByNumber( + * Descriptors.Descriptor, int)} + */ + public ExtensionInfo findExtensionByNumber( + final Descriptor containingType, final int fieldNumber) { + return findImmutableExtensionByNumber(containingType, fieldNumber); + } + + /** + * Find an extension by containing type and field number for immutable APIs. + * + * @return Information about the extension if found, or {@code null} + * otherwise. + */ + public ExtensionInfo findImmutableExtensionByNumber( + final Descriptor containingType, final int fieldNumber) { + return immutableExtensionsByNumber.get( + new DescriptorIntPair(containingType, fieldNumber)); + } + + /** + * Find an extension by containing type and field number for mutable APIs. + * + * @return Information about the extension if found, or {@code null} + * otherwise. + */ + public ExtensionInfo findMutableExtensionByNumber( + final Descriptor containingType, final int fieldNumber) { + return mutableExtensionsByNumber.get( + new DescriptorIntPair(containingType, fieldNumber)); + } + + /** + * Find all extensions for mutable APIs by fully-qualified name of + * extended class. Note that this method is more computationally expensive + * than getting a single extension by name or number. + * + * @return Information about the extensions found, or {@code null} if there + * are none. + */ + public Set getAllMutableExtensionsByExtendedType(final String fullName) { + HashSet extensions = new HashSet(); + for (DescriptorIntPair pair : mutableExtensionsByNumber.keySet()) { + if (pair.descriptor.getFullName().equals(fullName)) { + extensions.add(mutableExtensionsByNumber.get(pair)); + } + } + return extensions; + } + + /** + * Find all extensions for immutable APIs by fully-qualified name of + * extended class. Note that this method is more computationally expensive + * than getting a single extension by name or number. + * + * @return Information about the extensions found, or {@code null} if there + * are none. + */ + public Set getAllImmutableExtensionsByExtendedType(final String fullName) { + HashSet extensions = new HashSet(); + for (DescriptorIntPair pair : immutableExtensionsByNumber.keySet()) { + if (pair.descriptor.getFullName().equals(fullName)) { + extensions.add(immutableExtensionsByNumber.get(pair)); + } + } + return extensions; + } + + /** Add an extension from a generated file to the registry. */ + public void add(final Extension extension) { + if (extension.getExtensionType() != Extension.ExtensionType.IMMUTABLE && + extension.getExtensionType() != Extension.ExtensionType.MUTABLE) { + // do not support other extension types. ignore + return; + } + add(newExtensionInfo(extension), extension.getExtensionType()); + } + + static ExtensionInfo newExtensionInfo(final Extension extension) { + if (extension.getDescriptor().getJavaType() == + FieldDescriptor.JavaType.MESSAGE) { + if (extension.getMessageDefaultInstance() == null) { + throw new IllegalStateException( + "Registered message-type extension had null default instance: " + + extension.getDescriptor().getFullName()); + } + return new ExtensionInfo(extension.getDescriptor(), + (Message) extension.getMessageDefaultInstance()); + } else { + return new ExtensionInfo(extension.getDescriptor(), null); + } + } + + /** Add a non-message-type extension to the registry by descriptor. */ + public void add(final FieldDescriptor type) { + if (type.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { + throw new IllegalArgumentException( + "ExtensionRegistry.add() must be provided a default instance when " + + "adding an embedded message extension."); + } + ExtensionInfo info = new ExtensionInfo(type, null); + add(info, Extension.ExtensionType.IMMUTABLE); + add(info, Extension.ExtensionType.MUTABLE); + } + + /** Add a message-type extension to the registry by descriptor. */ + public void add(final FieldDescriptor type, final Message defaultInstance) { + if (type.getJavaType() != FieldDescriptor.JavaType.MESSAGE) { + throw new IllegalArgumentException( + "ExtensionRegistry.add() provided a default instance for a " + + "non-message extension."); + } + add(new ExtensionInfo(type, defaultInstance), + Extension.ExtensionType.IMMUTABLE); + } + + // ================================================================= + // Private stuff. + + private ExtensionRegistry() { + this.immutableExtensionsByName = new HashMap(); + this.mutableExtensionsByName = new HashMap(); + this.immutableExtensionsByNumber = + new HashMap(); + this.mutableExtensionsByNumber = + new HashMap(); + } + + private ExtensionRegistry(ExtensionRegistry other) { + super(other); + this.immutableExtensionsByName = + Collections.unmodifiableMap(other.immutableExtensionsByName); + this.mutableExtensionsByName = + Collections.unmodifiableMap(other.mutableExtensionsByName); + this.immutableExtensionsByNumber = + Collections.unmodifiableMap(other.immutableExtensionsByNumber); + this.mutableExtensionsByNumber = + Collections.unmodifiableMap(other.mutableExtensionsByNumber); + } + + private final Map immutableExtensionsByName; + private final Map mutableExtensionsByName; + private final Map immutableExtensionsByNumber; + private final Map mutableExtensionsByNumber; + + ExtensionRegistry(boolean empty) { + super(ExtensionRegistryLite.getEmptyRegistry()); + this.immutableExtensionsByName = + Collections.emptyMap(); + this.mutableExtensionsByName = + Collections.emptyMap(); + this.immutableExtensionsByNumber = + Collections.emptyMap(); + this.mutableExtensionsByNumber = + Collections.emptyMap(); + } + private static final ExtensionRegistry EMPTY = new ExtensionRegistry(true); + + private void add( + final ExtensionInfo extension, + final Extension.ExtensionType extensionType) { + if (!extension.descriptor.isExtension()) { + throw new IllegalArgumentException( + "ExtensionRegistry.add() was given a FieldDescriptor for a regular " + + "(non-extension) field."); + } + + Map extensionsByName; + Map extensionsByNumber; + switch (extensionType) { + case IMMUTABLE: + extensionsByName = immutableExtensionsByName; + extensionsByNumber = immutableExtensionsByNumber; + break; + case MUTABLE: + extensionsByName = mutableExtensionsByName; + extensionsByNumber = mutableExtensionsByNumber; + break; + default: + // Ignore the unknown supported type. + return; + } + + extensionsByName.put(extension.descriptor.getFullName(), extension); + extensionsByNumber.put( + new DescriptorIntPair(extension.descriptor.getContainingType(), + extension.descriptor.getNumber()), + extension); + + final FieldDescriptor field = extension.descriptor; + if (field.getContainingType().getOptions().getMessageSetWireFormat() && + field.getType() == FieldDescriptor.Type.MESSAGE && + field.isOptional() && + field.getExtensionScope() == field.getMessageType()) { + // This is an extension of a MessageSet type defined within the extension + // type's own scope. For backwards-compatibility, allow it to be looked + // up by type name. + extensionsByName.put(field.getMessageType().getFullName(), extension); + } + } + + /** A (GenericDescriptor, int) pair, used as a map key. */ + private static final class DescriptorIntPair { + private final Descriptor descriptor; + private final int number; + + DescriptorIntPair(final Descriptor descriptor, final int number) { + this.descriptor = descriptor; + this.number = number; + } + + @Override + public int hashCode() { + return descriptor.hashCode() * ((1 << 16) - 1) + number; + } + @Override + public boolean equals(final Object obj) { + if (!(obj instanceof DescriptorIntPair)) { + return false; + } + final DescriptorIntPair other = (DescriptorIntPair)obj; + return descriptor == other.descriptor && number == other.number; + } + } +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/ExtensionRegistryLite.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/ExtensionRegistryLite.java new file mode 100644 index 00000000..65cf7385 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/ExtensionRegistryLite.java @@ -0,0 +1,185 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +/** + * Equivalent to {@link ExtensionRegistry} but supports only "lite" types. + *

      + * If all of your types are lite types, then you only need to use + * {@code ExtensionRegistryLite}. Similarly, if all your types are regular + * types, then you only need {@link ExtensionRegistry}. Typically it does not + * make sense to mix the two, since if you have any regular types in your + * program, you then require the full runtime and lose all the benefits of + * the lite runtime, so you might as well make all your types be regular types. + * However, in some cases (e.g. when depending on multiple third-party libraries + * where one uses lite types and one uses regular), you may find yourself + * wanting to mix the two. In this case things get more complicated. + *

      + * There are three factors to consider: Whether the type being extended is + * lite, whether the embedded type (in the case of a message-typed extension) + * is lite, and whether the extension itself is lite. Since all three are + * declared in different files, they could all be different. Here are all + * the combinations and which type of registry to use: + *

      + *   Extended type     Inner type    Extension         Use registry
      + *   =======================================================================
      + *   lite              lite          lite              ExtensionRegistryLite
      + *   lite              regular       lite              ExtensionRegistry
      + *   regular           regular       regular           ExtensionRegistry
      + *   all other combinations                            not supported
      + * 
      + *

      + * Note that just as regular types are not allowed to contain lite-type fields, + * they are also not allowed to contain lite-type extensions. This is because + * regular types must be fully accessible via reflection, which in turn means + * that all the inner messages must also support reflection. On the other hand, + * since regular types implement the entire lite interface, there is no problem + * with embedding regular types inside lite types. + * + * @author kenton@google.com Kenton Varda + */ +public class ExtensionRegistryLite { + + // Set true to enable lazy parsing feature for MessageSet. + // + // TODO(xiangl): Now we use a global flag to control whether enable lazy + // parsing feature for MessageSet, which may be too crude for some + // applications. Need to support this feature on smaller granularity. + private static volatile boolean eagerlyParseMessageSets = false; + + public static boolean isEagerlyParseMessageSets() { + return eagerlyParseMessageSets; + } + + public static void setEagerlyParseMessageSets(boolean isEagerlyParse) { + eagerlyParseMessageSets = isEagerlyParse; + } + + /** Construct a new, empty instance. */ + public static ExtensionRegistryLite newInstance() { + return new ExtensionRegistryLite(); + } + + /** Get the unmodifiable singleton empty instance. */ + public static ExtensionRegistryLite getEmptyRegistry() { + return EMPTY; + } + + /** Returns an unmodifiable view of the registry. */ + public ExtensionRegistryLite getUnmodifiable() { + return new ExtensionRegistryLite(this); + } + + /** + * Find an extension by containing type and field number. + * + * @return Information about the extension if found, or {@code null} + * otherwise. + */ + @SuppressWarnings("unchecked") + public + GeneratedMessageLite.GeneratedExtension + findLiteExtensionByNumber( + final ContainingType containingTypeDefaultInstance, + final int fieldNumber) { + return (GeneratedMessageLite.GeneratedExtension) + extensionsByNumber.get( + new ObjectIntPair(containingTypeDefaultInstance, fieldNumber)); + } + + /** Add an extension from a lite generated file to the registry. */ + public final void add( + final GeneratedMessageLite.GeneratedExtension extension) { + extensionsByNumber.put( + new ObjectIntPair(extension.getContainingTypeDefaultInstance(), + extension.getNumber()), + extension); + } + + // ================================================================= + // Private stuff. + + // Constructors are package-private so that ExtensionRegistry can subclass + // this. + + ExtensionRegistryLite() { + this.extensionsByNumber = + new HashMap>(); + } + + ExtensionRegistryLite(ExtensionRegistryLite other) { + if (other == EMPTY) { + this.extensionsByNumber = Collections.emptyMap(); + } else { + this.extensionsByNumber = + Collections.unmodifiableMap(other.extensionsByNumber); + } + } + + private final Map> + extensionsByNumber; + + private ExtensionRegistryLite(boolean empty) { + this.extensionsByNumber = Collections.emptyMap(); + } + private static final ExtensionRegistryLite EMPTY = + new ExtensionRegistryLite(true); + + /** A (Object, int) pair, used as a map key. */ + private static final class ObjectIntPair { + private final Object object; + private final int number; + + ObjectIntPair(final Object object, final int number) { + this.object = object; + this.number = number; + } + + @Override + public int hashCode() { + return System.identityHashCode(object) * ((1 << 16) - 1) + number; + } + @Override + public boolean equals(final Object obj) { + if (!(obj instanceof ObjectIntPair)) { + return false; + } + final ObjectIntPair other = (ObjectIntPair)obj; + return object == other.object && number == other.number; + } + } +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/FieldSet.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/FieldSet.java new file mode 100644 index 00000000..392f4efc --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/FieldSet.java @@ -0,0 +1,907 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import com.google.protobuf.LazyField.LazyIterator; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +/** + * A class which represents an arbitrary set of fields of some message type. + * This is used to implement {@link DynamicMessage}, and also to represent + * extensions in {@link GeneratedMessage}. This class is package-private, + * since outside users should probably be using {@link DynamicMessage}. + * + * @author kenton@google.com Kenton Varda + */ +final class FieldSet> { + /** + * Interface for a FieldDescriptor or lite extension descriptor. This + * prevents FieldSet from depending on {@link Descriptors.FieldDescriptor}. + */ + public interface FieldDescriptorLite> + extends Comparable { + int getNumber(); + WireFormat.FieldType getLiteType(); + WireFormat.JavaType getLiteJavaType(); + boolean isRepeated(); + boolean isPacked(); + Internal.EnumLiteMap getEnumType(); + + // If getLiteJavaType() == MESSAGE, this merges a message object of the + // type into a builder of the type. Returns {@code to}. + MessageLite.Builder internalMergeFrom( + MessageLite.Builder to, MessageLite from); + } + + private final SmallSortedMap fields; + private boolean isImmutable; + private boolean hasLazyField = false; + + /** Construct a new FieldSet. */ + private FieldSet() { + this.fields = SmallSortedMap.newFieldMap(16); + } + + /** + * Construct an empty FieldSet. This is only used to initialize + * DEFAULT_INSTANCE. + */ + private FieldSet(final boolean dummy) { + this.fields = SmallSortedMap.newFieldMap(0); + makeImmutable(); + } + + /** Construct a new FieldSet. */ + public static > + FieldSet newFieldSet() { + return new FieldSet(); + } + + /** Get an immutable empty FieldSet. */ + @SuppressWarnings("unchecked") + public static > + FieldSet emptySet() { + return DEFAULT_INSTANCE; + } + @SuppressWarnings("rawtypes") + private static final FieldSet DEFAULT_INSTANCE = new FieldSet(true); + + /** Make this FieldSet immutable from this point forward. */ + @SuppressWarnings("unchecked") + public void makeImmutable() { + if (isImmutable) { + return; + } + fields.makeImmutable(); + isImmutable = true; + } + + /** + * Returns whether the FieldSet is immutable. This is true if it is the + * {@link #emptySet} or if {@link #makeImmutable} were called. + * + * @return whether the FieldSet is immutable. + */ + public boolean isImmutable() { + return isImmutable; + } + + /** + * Clones the FieldSet. The returned FieldSet will be mutable even if the + * original FieldSet was immutable. + * + * @return the newly cloned FieldSet + */ + @Override + public FieldSet clone() { + // We can't just call fields.clone because List objects in the map + // should not be shared. + FieldSet clone = FieldSet.newFieldSet(); + for (int i = 0; i < fields.getNumArrayEntries(); i++) { + Map.Entry entry = fields.getArrayEntryAt(i); + FieldDescriptorType descriptor = entry.getKey(); + clone.setField(descriptor, entry.getValue()); + } + for (Map.Entry entry : + fields.getOverflowEntries()) { + FieldDescriptorType descriptor = entry.getKey(); + clone.setField(descriptor, entry.getValue()); + } + clone.hasLazyField = hasLazyField; + return clone; + } + + + // ================================================================= + + /** See {@link Message.Builder#clear()}. */ + public void clear() { + fields.clear(); + hasLazyField = false; + } + + /** + * Get a simple map containing all the fields. + */ + public Map getAllFields() { + if (hasLazyField) { + SmallSortedMap result = + SmallSortedMap.newFieldMap(16); + for (int i = 0; i < fields.getNumArrayEntries(); i++) { + cloneFieldEntry(result, fields.getArrayEntryAt(i)); + } + for (Map.Entry entry : + fields.getOverflowEntries()) { + cloneFieldEntry(result, entry); + } + if (fields.isImmutable()) { + result.makeImmutable(); + } + return result; + } + return fields.isImmutable() ? fields : Collections.unmodifiableMap(fields); + } + + private void cloneFieldEntry(Map map, + Map.Entry entry) { + FieldDescriptorType key = entry.getKey(); + Object value = entry.getValue(); + if (value instanceof LazyField) { + map.put(key, ((LazyField) value).getValue()); + } else { + map.put(key, value); + } + } + + /** + * Get an iterator to the field map. This iterator should not be leaked out + * of the protobuf library as it is not protected from mutation when fields + * is not immutable. + */ + public Iterator> iterator() { + if (hasLazyField) { + return new LazyIterator( + fields.entrySet().iterator()); + } + return fields.entrySet().iterator(); + } + + /** + * Useful for implementing + * {@link Message#hasField(Descriptors.FieldDescriptor)}. + */ + public boolean hasField(final FieldDescriptorType descriptor) { + if (descriptor.isRepeated()) { + throw new IllegalArgumentException( + "hasField() can only be called on non-repeated fields."); + } + + return fields.get(descriptor) != null; + } + + /** + * Useful for implementing + * {@link Message#getField(Descriptors.FieldDescriptor)}. This method + * returns {@code null} if the field is not set; in this case it is up + * to the caller to fetch the field's default value. + */ + public Object getField(final FieldDescriptorType descriptor) { + Object o = fields.get(descriptor); + if (o instanceof LazyField) { + return ((LazyField) o).getValue(); + } + return o; + } + + /** + * Useful for implementing + * {@link Message.Builder#setField(Descriptors.FieldDescriptor,Object)}. + */ + @SuppressWarnings({"unchecked", "rawtypes"}) + public void setField(final FieldDescriptorType descriptor, + Object value) { + if (descriptor.isRepeated()) { + if (!(value instanceof List)) { + throw new IllegalArgumentException( + "Wrong object type used with protocol message reflection."); + } + + // Wrap the contents in a new list so that the caller cannot change + // the list's contents after setting it. + final List newList = new ArrayList(); + newList.addAll((List) value); + for (final Object element : newList) { + verifyType(descriptor.getLiteType(), element); + } + value = newList; + } else { + verifyType(descriptor.getLiteType(), value); + } + + if (value instanceof LazyField) { + hasLazyField = true; + } + fields.put(descriptor, value); + } + + /** + * Useful for implementing + * {@link Message.Builder#clearField(Descriptors.FieldDescriptor)}. + */ + public void clearField(final FieldDescriptorType descriptor) { + fields.remove(descriptor); + if (fields.isEmpty()) { + hasLazyField = false; + } + } + + /** + * Useful for implementing + * {@link Message#getRepeatedFieldCount(Descriptors.FieldDescriptor)}. + */ + public int getRepeatedFieldCount(final FieldDescriptorType descriptor) { + if (!descriptor.isRepeated()) { + throw new IllegalArgumentException( + "getRepeatedField() can only be called on repeated fields."); + } + + final Object value = getField(descriptor); + if (value == null) { + return 0; + } else { + return ((List) value).size(); + } + } + + /** + * Useful for implementing + * {@link Message#getRepeatedField(Descriptors.FieldDescriptor,int)}. + */ + public Object getRepeatedField(final FieldDescriptorType descriptor, + final int index) { + if (!descriptor.isRepeated()) { + throw new IllegalArgumentException( + "getRepeatedField() can only be called on repeated fields."); + } + + final Object value = getField(descriptor); + + if (value == null) { + throw new IndexOutOfBoundsException(); + } else { + return ((List) value).get(index); + } + } + + /** + * Useful for implementing + * {@link Message.Builder#setRepeatedField(Descriptors.FieldDescriptor,int,Object)}. + */ + @SuppressWarnings("unchecked") + public void setRepeatedField(final FieldDescriptorType descriptor, + final int index, + final Object value) { + if (!descriptor.isRepeated()) { + throw new IllegalArgumentException( + "getRepeatedField() can only be called on repeated fields."); + } + + final Object list = getField(descriptor); + if (list == null) { + throw new IndexOutOfBoundsException(); + } + + verifyType(descriptor.getLiteType(), value); + ((List) list).set(index, value); + } + + /** + * Useful for implementing + * {@link Message.Builder#addRepeatedField(Descriptors.FieldDescriptor,Object)}. + */ + @SuppressWarnings("unchecked") + public void addRepeatedField(final FieldDescriptorType descriptor, + final Object value) { + if (!descriptor.isRepeated()) { + throw new IllegalArgumentException( + "addRepeatedField() can only be called on repeated fields."); + } + + verifyType(descriptor.getLiteType(), value); + + final Object existingValue = getField(descriptor); + List list; + if (existingValue == null) { + list = new ArrayList(); + fields.put(descriptor, list); + } else { + list = (List) existingValue; + } + + list.add(value); + } + + /** + * Verifies that the given object is of the correct type to be a valid + * value for the given field. (For repeated fields, this checks if the + * object is the right type to be one element of the field.) + * + * @throws IllegalArgumentException The value is not of the right type. + */ + private static void verifyType(final WireFormat.FieldType type, + final Object value) { + if (value == null) { + throw new NullPointerException(); + } + + boolean isValid = false; + switch (type.getJavaType()) { + case INT: isValid = value instanceof Integer ; break; + case LONG: isValid = value instanceof Long ; break; + case FLOAT: isValid = value instanceof Float ; break; + case DOUBLE: isValid = value instanceof Double ; break; + case BOOLEAN: isValid = value instanceof Boolean ; break; + case STRING: isValid = value instanceof String ; break; + case BYTE_STRING: + isValid = value instanceof ByteString || value instanceof byte[]; + break; + case ENUM: + // TODO(kenton): Caller must do type checking here, I guess. + isValid = + (value instanceof Integer || value instanceof Internal.EnumLite); + break; + case MESSAGE: + // TODO(kenton): Caller must do type checking here, I guess. + isValid = + (value instanceof MessageLite) || (value instanceof LazyField); + break; + } + + if (!isValid) { + // TODO(kenton): When chaining calls to setField(), it can be hard to + // tell from the stack trace which exact call failed, since the whole + // chain is considered one line of code. It would be nice to print + // more information here, e.g. naming the field. We used to do that. + // But we can't now that FieldSet doesn't use descriptors. Maybe this + // isn't a big deal, though, since it would only really apply when using + // reflection and generally people don't chain reflection setters. + throw new IllegalArgumentException( + "Wrong object type used with protocol message reflection."); + } + } + + // ================================================================= + // Parsing and serialization + + /** + * See {@link Message#isInitialized()}. Note: Since {@code FieldSet} + * itself does not have any way of knowing about required fields that + * aren't actually present in the set, it is up to the caller to check + * that all required fields are present. + */ + public boolean isInitialized() { + for (int i = 0; i < fields.getNumArrayEntries(); i++) { + if (!isInitialized(fields.getArrayEntryAt(i))) { + return false; + } + } + for (final Map.Entry entry : + fields.getOverflowEntries()) { + if (!isInitialized(entry)) { + return false; + } + } + return true; + } + + @SuppressWarnings("unchecked") + private boolean isInitialized( + final Map.Entry entry) { + final FieldDescriptorType descriptor = entry.getKey(); + if (descriptor.getLiteJavaType() == WireFormat.JavaType.MESSAGE) { + if (descriptor.isRepeated()) { + for (final MessageLite element: + (List) entry.getValue()) { + if (!element.isInitialized()) { + return false; + } + } + } else { + Object value = entry.getValue(); + if (value instanceof MessageLite) { + if (!((MessageLite) value).isInitialized()) { + return false; + } + } else if (value instanceof LazyField) { + return true; + } else { + throw new IllegalArgumentException( + "Wrong object type used with protocol message reflection."); + } + } + } + return true; + } + + /** + * Given a field type, return the wire type. + * + * @returns One of the {@code WIRETYPE_} constants defined in + * {@link WireFormat}. + */ + static int getWireFormatForFieldType(final WireFormat.FieldType type, + boolean isPacked) { + if (isPacked) { + return WireFormat.WIRETYPE_LENGTH_DELIMITED; + } else { + return type.getWireType(); + } + } + + /** + * Like {@link Message.Builder#mergeFrom(Message)}, but merges from another + * {@link FieldSet}. + */ + public void mergeFrom(final FieldSet other) { + for (int i = 0; i < other.fields.getNumArrayEntries(); i++) { + mergeFromField(other.fields.getArrayEntryAt(i)); + } + for (final Map.Entry entry : + other.fields.getOverflowEntries()) { + mergeFromField(entry); + } + } + + private Object cloneIfMutable(Object value) { + if (value instanceof byte[]) { + byte[] bytes = (byte[]) value; + byte[] copy = new byte[bytes.length]; + System.arraycopy(bytes, 0, copy, 0, bytes.length); + return copy; + } else { + return value; + } + } + + @SuppressWarnings({"unchecked", "rawtypes"}) + private void mergeFromField( + final Map.Entry entry) { + final FieldDescriptorType descriptor = entry.getKey(); + Object otherValue = entry.getValue(); + if (otherValue instanceof LazyField) { + otherValue = ((LazyField) otherValue).getValue(); + } + + if (descriptor.isRepeated()) { + Object value = getField(descriptor); + if (value == null) { + value = new ArrayList(); + } + for (Object element : (List) otherValue) { + ((List) value).add(cloneIfMutable(element)); + } + fields.put(descriptor, value); + } else if (descriptor.getLiteJavaType() == WireFormat.JavaType.MESSAGE) { + Object value = getField(descriptor); + if (value == null) { + fields.put(descriptor, cloneIfMutable(otherValue)); + } else { + // Merge the messages. + value = descriptor.internalMergeFrom( + ((MessageLite) value).toBuilder(), (MessageLite) otherValue) + .build(); + + fields.put(descriptor, value); + } + } else { + fields.put(descriptor, cloneIfMutable(otherValue)); + } + } + + // TODO(kenton): Move static parsing and serialization methods into some + // other class. Probably WireFormat. + + /** + * Read a field of any primitive type for immutable messages from a + * CodedInputStream. Enums, groups, and embedded messages are not handled by + * this method. + * + * @param input The stream from which to read. + * @param type Declared type of the field. + * @param checkUtf8 When true, check that the input is valid utf8. + * @return An object representing the field's value, of the exact + * type which would be returned by + * {@link Message#getField(Descriptors.FieldDescriptor)} for + * this field. + */ + public static Object readPrimitiveField( + CodedInputStream input, + final WireFormat.FieldType type, + boolean checkUtf8) throws IOException { + switch (type) { + case DOUBLE : return input.readDouble (); + case FLOAT : return input.readFloat (); + case INT64 : return input.readInt64 (); + case UINT64 : return input.readUInt64 (); + case INT32 : return input.readInt32 (); + case FIXED64 : return input.readFixed64 (); + case FIXED32 : return input.readFixed32 (); + case BOOL : return input.readBool (); + case STRING : if (checkUtf8) { + return input.readStringRequireUtf8(); + } else { + return input.readString(); + } + case BYTES : return input.readBytes (); + case UINT32 : return input.readUInt32 (); + case SFIXED32: return input.readSFixed32(); + case SFIXED64: return input.readSFixed64(); + case SINT32 : return input.readSInt32 (); + case SINT64 : return input.readSInt64 (); + + case GROUP: + throw new IllegalArgumentException( + "readPrimitiveField() cannot handle nested groups."); + case MESSAGE: + throw new IllegalArgumentException( + "readPrimitiveField() cannot handle embedded messages."); + case ENUM: + // We don't handle enums because we don't know what to do if the + // value is not recognized. + throw new IllegalArgumentException( + "readPrimitiveField() cannot handle enums."); + } + + throw new RuntimeException( + "There is no way to get here, but the compiler thinks otherwise."); + } + + + /** See {@link Message#writeTo(CodedOutputStream)}. */ + public void writeTo(final CodedOutputStream output) + throws IOException { + for (int i = 0; i < fields.getNumArrayEntries(); i++) { + final Map.Entry entry = + fields.getArrayEntryAt(i); + writeField(entry.getKey(), entry.getValue(), output); + } + for (final Map.Entry entry : + fields.getOverflowEntries()) { + writeField(entry.getKey(), entry.getValue(), output); + } + } + + /** + * Like {@link #writeTo} but uses MessageSet wire format. + */ + public void writeMessageSetTo(final CodedOutputStream output) + throws IOException { + for (int i = 0; i < fields.getNumArrayEntries(); i++) { + writeMessageSetTo(fields.getArrayEntryAt(i), output); + } + for (final Map.Entry entry : + fields.getOverflowEntries()) { + writeMessageSetTo(entry, output); + } + } + + private void writeMessageSetTo( + final Map.Entry entry, + final CodedOutputStream output) throws IOException { + final FieldDescriptorType descriptor = entry.getKey(); + if (descriptor.getLiteJavaType() == WireFormat.JavaType.MESSAGE && + !descriptor.isRepeated() && !descriptor.isPacked()) { + Object value = entry.getValue(); + if (value instanceof LazyField) { + value = ((LazyField) value).getValue(); + } + output.writeMessageSetExtension(entry.getKey().getNumber(), + (MessageLite) value); + } else { + writeField(descriptor, entry.getValue(), output); + } + } + + /** + * Write a single tag-value pair to the stream. + * + * @param output The output stream. + * @param type The field's type. + * @param number The field's number. + * @param value Object representing the field's value. Must be of the exact + * type which would be returned by + * {@link Message#getField(Descriptors.FieldDescriptor)} for + * this field. + */ + private static void writeElement(final CodedOutputStream output, + final WireFormat.FieldType type, + final int number, + final Object value) throws IOException { + // Special case for groups, which need a start and end tag; other fields + // can just use writeTag() and writeFieldNoTag(). + if (type == WireFormat.FieldType.GROUP) { + output.writeGroup(number, (MessageLite) value); + } else { + output.writeTag(number, getWireFormatForFieldType(type, false)); + writeElementNoTag(output, type, value); + } + } + + /** + * Write a field of arbitrary type, without its tag, to the stream. + * + * @param output The output stream. + * @param type The field's type. + * @param value Object representing the field's value. Must be of the exact + * type which would be returned by + * {@link Message#getField(Descriptors.FieldDescriptor)} for + * this field. + */ + private static void writeElementNoTag( + final CodedOutputStream output, + final WireFormat.FieldType type, + final Object value) throws IOException { + switch (type) { + case DOUBLE : output.writeDoubleNoTag ((Double ) value); break; + case FLOAT : output.writeFloatNoTag ((Float ) value); break; + case INT64 : output.writeInt64NoTag ((Long ) value); break; + case UINT64 : output.writeUInt64NoTag ((Long ) value); break; + case INT32 : output.writeInt32NoTag ((Integer ) value); break; + case FIXED64 : output.writeFixed64NoTag ((Long ) value); break; + case FIXED32 : output.writeFixed32NoTag ((Integer ) value); break; + case BOOL : output.writeBoolNoTag ((Boolean ) value); break; + case STRING : output.writeStringNoTag ((String ) value); break; + case GROUP : output.writeGroupNoTag ((MessageLite) value); break; + case MESSAGE : output.writeMessageNoTag ((MessageLite) value); break; + case BYTES: + if (value instanceof ByteString) { + output.writeBytesNoTag((ByteString) value); + } else { + output.writeByteArrayNoTag((byte[]) value); + } + break; + case UINT32 : output.writeUInt32NoTag ((Integer ) value); break; + case SFIXED32: output.writeSFixed32NoTag((Integer ) value); break; + case SFIXED64: output.writeSFixed64NoTag((Long ) value); break; + case SINT32 : output.writeSInt32NoTag ((Integer ) value); break; + case SINT64 : output.writeSInt64NoTag ((Long ) value); break; + + case ENUM: + if (value instanceof Internal.EnumLite) { + output.writeEnumNoTag(((Internal.EnumLite) value).getNumber()); + } else { + output.writeEnumNoTag(((Integer) value).intValue()); + } + break; + } + } + + /** Write a single field. */ + public static void writeField(final FieldDescriptorLite descriptor, + final Object value, + final CodedOutputStream output) + throws IOException { + WireFormat.FieldType type = descriptor.getLiteType(); + int number = descriptor.getNumber(); + if (descriptor.isRepeated()) { + final List valueList = (List)value; + if (descriptor.isPacked()) { + output.writeTag(number, WireFormat.WIRETYPE_LENGTH_DELIMITED); + // Compute the total data size so the length can be written. + int dataSize = 0; + for (final Object element : valueList) { + dataSize += computeElementSizeNoTag(type, element); + } + output.writeRawVarint32(dataSize); + // Write the data itself, without any tags. + for (final Object element : valueList) { + writeElementNoTag(output, type, element); + } + } else { + for (final Object element : valueList) { + writeElement(output, type, number, element); + } + } + } else { + if (value instanceof LazyField) { + writeElement(output, type, number, ((LazyField) value).getValue()); + } else { + writeElement(output, type, number, value); + } + } + } + + /** + * See {@link Message#getSerializedSize()}. It's up to the caller to cache + * the resulting size if desired. + */ + public int getSerializedSize() { + int size = 0; + for (int i = 0; i < fields.getNumArrayEntries(); i++) { + final Map.Entry entry = + fields.getArrayEntryAt(i); + size += computeFieldSize(entry.getKey(), entry.getValue()); + } + for (final Map.Entry entry : + fields.getOverflowEntries()) { + size += computeFieldSize(entry.getKey(), entry.getValue()); + } + return size; + } + + /** + * Like {@link #getSerializedSize} but uses MessageSet wire format. + */ + public int getMessageSetSerializedSize() { + int size = 0; + for (int i = 0; i < fields.getNumArrayEntries(); i++) { + size += getMessageSetSerializedSize(fields.getArrayEntryAt(i)); + } + for (final Map.Entry entry : + fields.getOverflowEntries()) { + size += getMessageSetSerializedSize(entry); + } + return size; + } + + private int getMessageSetSerializedSize( + final Map.Entry entry) { + final FieldDescriptorType descriptor = entry.getKey(); + Object value = entry.getValue(); + if (descriptor.getLiteJavaType() == WireFormat.JavaType.MESSAGE + && !descriptor.isRepeated() && !descriptor.isPacked()) { + if (value instanceof LazyField) { + return CodedOutputStream.computeLazyFieldMessageSetExtensionSize( + entry.getKey().getNumber(), (LazyField) value); + } else { + return CodedOutputStream.computeMessageSetExtensionSize( + entry.getKey().getNumber(), (MessageLite) value); + } + } else { + return computeFieldSize(descriptor, value); + } + } + + /** + * Compute the number of bytes that would be needed to encode a + * single tag/value pair of arbitrary type. + * + * @param type The field's type. + * @param number The field's number. + * @param value Object representing the field's value. Must be of the exact + * type which would be returned by + * {@link Message#getField(Descriptors.FieldDescriptor)} for + * this field. + */ + private static int computeElementSize( + final WireFormat.FieldType type, + final int number, final Object value) { + int tagSize = CodedOutputStream.computeTagSize(number); + if (type == WireFormat.FieldType.GROUP) { + // Only count the end group tag for proto2 messages as for proto1 the end + // group tag will be counted as a part of getSerializedSize(). + tagSize *= 2; + } + return tagSize + computeElementSizeNoTag(type, value); + } + + /** + * Compute the number of bytes that would be needed to encode a + * particular value of arbitrary type, excluding tag. + * + * @param type The field's type. + * @param value Object representing the field's value. Must be of the exact + * type which would be returned by + * {@link Message#getField(Descriptors.FieldDescriptor)} for + * this field. + */ + private static int computeElementSizeNoTag( + final WireFormat.FieldType type, final Object value) { + switch (type) { + // Note: Minor violation of 80-char limit rule here because this would + // actually be harder to read if we wrapped the lines. + case DOUBLE : return CodedOutputStream.computeDoubleSizeNoTag ((Double )value); + case FLOAT : return CodedOutputStream.computeFloatSizeNoTag ((Float )value); + case INT64 : return CodedOutputStream.computeInt64SizeNoTag ((Long )value); + case UINT64 : return CodedOutputStream.computeUInt64SizeNoTag ((Long )value); + case INT32 : return CodedOutputStream.computeInt32SizeNoTag ((Integer )value); + case FIXED64 : return CodedOutputStream.computeFixed64SizeNoTag ((Long )value); + case FIXED32 : return CodedOutputStream.computeFixed32SizeNoTag ((Integer )value); + case BOOL : return CodedOutputStream.computeBoolSizeNoTag ((Boolean )value); + case STRING : return CodedOutputStream.computeStringSizeNoTag ((String )value); + case GROUP : return CodedOutputStream.computeGroupSizeNoTag ((MessageLite)value); + case BYTES : + if (value instanceof ByteString) { + return CodedOutputStream.computeBytesSizeNoTag((ByteString) value); + } else { + return CodedOutputStream.computeByteArraySizeNoTag((byte[]) value); + } + case UINT32 : return CodedOutputStream.computeUInt32SizeNoTag ((Integer )value); + case SFIXED32: return CodedOutputStream.computeSFixed32SizeNoTag((Integer )value); + case SFIXED64: return CodedOutputStream.computeSFixed64SizeNoTag((Long )value); + case SINT32 : return CodedOutputStream.computeSInt32SizeNoTag ((Integer )value); + case SINT64 : return CodedOutputStream.computeSInt64SizeNoTag ((Long )value); + + case MESSAGE: + if (value instanceof LazyField) { + return CodedOutputStream.computeLazyFieldSizeNoTag((LazyField) value); + } else { + return CodedOutputStream.computeMessageSizeNoTag((MessageLite) value); + } + + case ENUM: + if (value instanceof Internal.EnumLite) { + return CodedOutputStream.computeEnumSizeNoTag( + ((Internal.EnumLite) value).getNumber()); + } else { + return CodedOutputStream.computeEnumSizeNoTag((Integer) value); + } + } + + throw new RuntimeException( + "There is no way to get here, but the compiler thinks otherwise."); + } + + /** + * Compute the number of bytes needed to encode a particular field. + */ + public static int computeFieldSize(final FieldDescriptorLite descriptor, + final Object value) { + WireFormat.FieldType type = descriptor.getLiteType(); + int number = descriptor.getNumber(); + if (descriptor.isRepeated()) { + if (descriptor.isPacked()) { + int dataSize = 0; + for (final Object element : (List)value) { + dataSize += computeElementSizeNoTag(type, element); + } + return dataSize + + CodedOutputStream.computeTagSize(number) + + CodedOutputStream.computeRawVarint32Size(dataSize); + } else { + int size = 0; + for (final Object element : (List)value) { + size += computeElementSize(type, number, element); + } + return size; + } + } else { + return computeElementSize(type, number, value); + } + } +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/GeneratedMessage.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/GeneratedMessage.java new file mode 100644 index 00000000..a6101cb0 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/GeneratedMessage.java @@ -0,0 +1,2213 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import com.google.protobuf.Descriptors.Descriptor; +import com.google.protobuf.Descriptors.EnumValueDescriptor; +import com.google.protobuf.Descriptors.FieldDescriptor; +import com.google.protobuf.Descriptors.FileDescriptor; +import com.google.protobuf.Descriptors.OneofDescriptor; + +import java.io.IOException; +import java.io.ObjectStreamException; +import java.io.Serializable; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; + +/** + * All generated protocol message classes extend this class. This class + * implements most of the Message and Builder interfaces using Java reflection. + * Users can ignore this class and pretend that generated messages implement + * the Message interface directly. + * + * @author kenton@google.com Kenton Varda + */ +public abstract class GeneratedMessage extends AbstractMessage + implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * For testing. Allows a test to disable the optimization that avoids using + * field builders for nested messages until they are requested. By disabling + * this optimization, existing tests can be reused to test the field builders. + */ + protected static boolean alwaysUseFieldBuilders = false; + + protected GeneratedMessage() { + } + + protected GeneratedMessage(Builder builder) { + } + + public Parser getParserForType() { + throw new UnsupportedOperationException( + "This is supposed to be overridden by subclasses."); + } + + /** + * For testing. Allows a test to disable the optimization that avoids using + * field builders for nested messages until they are requested. By disabling + * this optimization, existing tests can be reused to test the field builders. + * See {@link RepeatedFieldBuilder} and {@link SingleFieldBuilder}. + */ + static void enableAlwaysUseFieldBuildersForTesting() { + alwaysUseFieldBuilders = true; + } + + /** + * Get the FieldAccessorTable for this type. We can't have the message + * class pass this in to the constructor because of bootstrapping trouble + * with DescriptorProtos. + */ + protected abstract FieldAccessorTable internalGetFieldAccessorTable(); + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public Descriptor getDescriptorForType() { + return internalGetFieldAccessorTable().descriptor; + } + + /** Internal helper which returns a mutable map. */ + private Map getAllFieldsMutable() { + final TreeMap result = + new TreeMap(); + final Descriptor descriptor = internalGetFieldAccessorTable().descriptor; + for (final FieldDescriptor field : descriptor.getFields()) { + if (field.isRepeated()) { + final List value = (List) getField(field); + if (!value.isEmpty()) { + result.put(field, value); + } + } else { + if (hasField(field)) { + result.put(field, getField(field)); + } + } + } + return result; + } + + @Override + public boolean isInitialized() { + for (final FieldDescriptor field : getDescriptorForType().getFields()) { + // Check that all required fields are present. + if (field.isRequired()) { + if (!hasField(field)) { + return false; + } + } + // Check that embedded messages are initialized. + if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { + if (field.isRepeated()) { + @SuppressWarnings("unchecked") final + List messageList = (List) getField(field); + for (final Message element : messageList) { + if (!element.isInitialized()) { + return false; + } + } + } else { + if (hasField(field) && !((Message) getField(field)).isInitialized()) { + return false; + } + } + } + } + + return true; + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public Map getAllFields() { + return Collections.unmodifiableMap(getAllFieldsMutable()); + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public boolean hasOneof(final OneofDescriptor oneof) { + return internalGetFieldAccessorTable().getOneof(oneof).has(this); + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public FieldDescriptor getOneofFieldDescriptor(final OneofDescriptor oneof) { + return internalGetFieldAccessorTable().getOneof(oneof).get(this); + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public boolean hasField(final FieldDescriptor field) { + return internalGetFieldAccessorTable().getField(field).has(this); + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public Object getField(final FieldDescriptor field) { + return internalGetFieldAccessorTable().getField(field).get(this); + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public int getRepeatedFieldCount(final FieldDescriptor field) { + return internalGetFieldAccessorTable().getField(field) + .getRepeatedCount(this); + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public Object getRepeatedField(final FieldDescriptor field, final int index) { + return internalGetFieldAccessorTable().getField(field) + .getRepeated(this, index); + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public UnknownFieldSet getUnknownFields() { + throw new UnsupportedOperationException( + "This is supposed to be overridden by subclasses."); + } + + /** + * Called by subclasses to parse an unknown field. + * @return {@code true} unless the tag is an end-group tag. + */ + protected boolean parseUnknownField( + CodedInputStream input, + UnknownFieldSet.Builder unknownFields, + ExtensionRegistryLite extensionRegistry, + int tag) throws IOException { + return unknownFields.mergeFieldFrom(tag, input); + } + + + /** + * Used by parsing constructors in generated classes. + */ + protected void makeExtensionsImmutable() { + // Noop for messages without extensions. + } + + protected abstract Message.Builder newBuilderForType(BuilderParent parent); + + /** + * Interface for the parent of a Builder that allows the builder to + * communicate invalidations back to the parent for use when using nested + * builders. + */ + protected interface BuilderParent { + + /** + * A builder becomes dirty whenever a field is modified -- including fields + * in nested builders -- and becomes clean when build() is called. Thus, + * when a builder becomes dirty, all its parents become dirty as well, and + * when it becomes clean, all its children become clean. The dirtiness + * state is used to invalidate certain cached values. + *
      + * To this end, a builder calls markAsDirty() on its parent whenever it + * transitions from clean to dirty. The parent must propagate this call to + * its own parent, unless it was already dirty, in which case the + * grandparent must necessarily already be dirty as well. The parent can + * only transition back to "clean" after calling build() on all children. + */ + void markDirty(); + } + + @SuppressWarnings("unchecked") + public abstract static class Builder + extends AbstractMessage.Builder { + + private BuilderParent builderParent; + + private BuilderParentImpl meAsParent; + + // Indicates that we've built a message and so we are now obligated + // to dispatch dirty invalidations. See GeneratedMessage.BuilderListener. + private boolean isClean; + + private UnknownFieldSet unknownFields = + UnknownFieldSet.getDefaultInstance(); + + protected Builder() { + this(null); + } + + protected Builder(BuilderParent builderParent) { + this.builderParent = builderParent; + } + + void dispose() { + builderParent = null; + } + + /** + * Called by the subclass when a message is built. + */ + protected void onBuilt() { + if (builderParent != null) { + markClean(); + } + } + + /** + * Called by the subclass or a builder to notify us that a message was + * built and may be cached and therefore invalidations are needed. + */ + protected void markClean() { + this.isClean = true; + } + + /** + * Gets whether invalidations are needed + * + * @return whether invalidations are needed + */ + protected boolean isClean() { + return isClean; + } + + // This is implemented here only to work around an apparent bug in the + // Java compiler and/or build system. See bug #1898463. The mere presence + // of this dummy clone() implementation makes it go away. + @Override + public BuilderType clone() { + throw new UnsupportedOperationException( + "This is supposed to be overridden by subclasses."); + } + + /** + * Called by the initialization and clear code paths to allow subclasses to + * reset any of their builtin fields back to the initial values. + */ + public BuilderType clear() { + unknownFields = UnknownFieldSet.getDefaultInstance(); + onChanged(); + return (BuilderType) this; + } + + /** + * Get the FieldAccessorTable for this type. We can't have the message + * class pass this in to the constructor because of bootstrapping trouble + * with DescriptorProtos. + */ + protected abstract FieldAccessorTable internalGetFieldAccessorTable(); + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public Descriptor getDescriptorForType() { + return internalGetFieldAccessorTable().descriptor; + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public Map getAllFields() { + return Collections.unmodifiableMap(getAllFieldsMutable()); + } + + /** Internal helper which returns a mutable map. */ + private Map getAllFieldsMutable() { + final TreeMap result = + new TreeMap(); + final Descriptor descriptor = internalGetFieldAccessorTable().descriptor; + for (final FieldDescriptor field : descriptor.getFields()) { + if (field.isRepeated()) { + final List value = (List) getField(field); + if (!value.isEmpty()) { + result.put(field, value); + } + } else { + if (hasField(field)) { + result.put(field, getField(field)); + } + } + } + return result; + } + + public Message.Builder newBuilderForField( + final FieldDescriptor field) { + return internalGetFieldAccessorTable().getField(field).newBuilder(); + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public Message.Builder getFieldBuilder(final FieldDescriptor field) { + return internalGetFieldAccessorTable().getField(field).getBuilder(this); + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public boolean hasOneof(final OneofDescriptor oneof) { + return internalGetFieldAccessorTable().getOneof(oneof).has(this); + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public FieldDescriptor getOneofFieldDescriptor(final OneofDescriptor oneof) { + return internalGetFieldAccessorTable().getOneof(oneof).get(this); + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public boolean hasField(final FieldDescriptor field) { + return internalGetFieldAccessorTable().getField(field).has(this); + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public Object getField(final FieldDescriptor field) { + Object object = internalGetFieldAccessorTable().getField(field).get(this); + if (field.isRepeated()) { + // The underlying list object is still modifiable at this point. + // Make sure not to expose the modifiable list to the caller. + return Collections.unmodifiableList((List) object); + } else { + return object; + } + } + + public BuilderType setField(final FieldDescriptor field, + final Object value) { + internalGetFieldAccessorTable().getField(field).set(this, value); + return (BuilderType) this; + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public BuilderType clearField(final FieldDescriptor field) { + internalGetFieldAccessorTable().getField(field).clear(this); + return (BuilderType) this; + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public BuilderType clearOneof(final OneofDescriptor oneof) { + internalGetFieldAccessorTable().getOneof(oneof).clear(this); + return (BuilderType) this; + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public int getRepeatedFieldCount(final FieldDescriptor field) { + return internalGetFieldAccessorTable().getField(field) + .getRepeatedCount(this); + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public Object getRepeatedField(final FieldDescriptor field, + final int index) { + return internalGetFieldAccessorTable().getField(field) + .getRepeated(this, index); + } + + public BuilderType setRepeatedField(final FieldDescriptor field, + final int index, final Object value) { + internalGetFieldAccessorTable().getField(field) + .setRepeated(this, index, value); + return (BuilderType) this; + } + + public BuilderType addRepeatedField(final FieldDescriptor field, + final Object value) { + internalGetFieldAccessorTable().getField(field).addRepeated(this, value); + return (BuilderType) this; + } + + public final BuilderType setUnknownFields( + final UnknownFieldSet unknownFields) { + this.unknownFields = unknownFields; + onChanged(); + return (BuilderType) this; + } + + @Override + public final BuilderType mergeUnknownFields( + final UnknownFieldSet unknownFields) { + this.unknownFields = + UnknownFieldSet.newBuilder(this.unknownFields) + .mergeFrom(unknownFields) + .build(); + onChanged(); + return (BuilderType) this; + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public boolean isInitialized() { + for (final FieldDescriptor field : getDescriptorForType().getFields()) { + // Check that all required fields are present. + if (field.isRequired()) { + if (!hasField(field)) { + return false; + } + } + // Check that embedded messages are initialized. + if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { + if (field.isRepeated()) { + @SuppressWarnings("unchecked") final + List messageList = (List) getField(field); + for (final Message element : messageList) { + if (!element.isInitialized()) { + return false; + } + } + } else { + if (hasField(field) && + !((Message) getField(field)).isInitialized()) { + return false; + } + } + } + } + return true; + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public final UnknownFieldSet getUnknownFields() { + return unknownFields; + } + + /** + * Called by subclasses to parse an unknown field. + * @return {@code true} unless the tag is an end-group tag. + */ + protected boolean parseUnknownField( + final CodedInputStream input, + final UnknownFieldSet.Builder unknownFields, + final ExtensionRegistryLite extensionRegistry, + final int tag) throws IOException { + return unknownFields.mergeFieldFrom(tag, input); + } + + /** + * Implementation of {@link BuilderParent} for giving to our children. This + * small inner class makes it so we don't publicly expose the BuilderParent + * methods. + */ + private class BuilderParentImpl implements BuilderParent { + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public void markDirty() { + onChanged(); + } + } + + /** + * Gets the {@link BuilderParent} for giving to our children. + * @return The builder parent for our children. + */ + protected BuilderParent getParentForChildren() { + if (meAsParent == null) { + meAsParent = new BuilderParentImpl(); + } + return meAsParent; + } + + /** + * Called when a the builder or one of its nested children has changed + * and any parent should be notified of its invalidation. + */ + protected final void onChanged() { + if (isClean && builderParent != null) { + builderParent.markDirty(); + + // Don't keep dispatching invalidations until build is called again. + isClean = false; + } + } + } + + // ================================================================= + // Extensions-related stuff + + public interface ExtendableMessageOrBuilder< + MessageType extends ExtendableMessage> extends MessageOrBuilder { + // Re-define for return type covariance. + Message getDefaultInstanceForType(); + + /** Check if a singular extension is present. */ + boolean hasExtension( + Extension extension); + + /** Get the number of elements in a repeated extension. */ + int getExtensionCount( + Extension> extension); + + /** Get the value of an extension. */ + Type getExtension( + Extension extension); + + /** Get one element of a repeated extension. */ + Type getExtension( + Extension> extension, + int index); + } + + /** + * Generated message classes for message types that contain extension ranges + * subclass this. + * + *

      This class implements type-safe accessors for extensions. They + * implement all the same operations that you can do with normal fields -- + * e.g. "has", "get", and "getCount" -- but for extensions. The extensions + * are identified using instances of the class {@link GeneratedExtension}; + * the protocol compiler generates a static instance of this class for every + * extension in its input. Through the magic of generics, all is made + * type-safe. + * + *

      For example, imagine you have the {@code .proto} file: + * + *

      +   * option java_class = "MyProto";
      +   *
      +   * message Foo {
      +   *   extensions 1000 to max;
      +   * }
      +   *
      +   * extend Foo {
      +   *   optional int32 bar;
      +   * }
      +   * 
      + * + *

      Then you might write code like: + * + *

      +   * MyProto.Foo foo = getFoo();
      +   * int i = foo.getExtension(MyProto.bar);
      +   * 
      + * + *

      See also {@link ExtendableBuilder}. + */ + public abstract static class ExtendableMessage< + MessageType extends ExtendableMessage> + extends GeneratedMessage + implements ExtendableMessageOrBuilder { + + private final FieldSet extensions; + + protected ExtendableMessage() { + this.extensions = FieldSet.newFieldSet(); + } + + protected ExtendableMessage( + ExtendableBuilder builder) { + super(builder); + this.extensions = builder.buildExtensions(); + } + + private void verifyExtensionContainingType( + final Extension extension) { + if (extension.getDescriptor().getContainingType() != + getDescriptorForType()) { + // This can only happen if someone uses unchecked operations. + throw new IllegalArgumentException( + "Extension is for type \"" + + extension.getDescriptor().getContainingType().getFullName() + + "\" which does not match message type \"" + + getDescriptorForType().getFullName() + "\"."); + } + } + + /** Check if a singular extension is present. */ + //@Override (Java 1.6 override semantics, but we must support 1.5) + public final boolean hasExtension( + final Extension extension) { + verifyExtensionContainingType(extension); + return extensions.hasField(extension.getDescriptor()); + } + + /** Get the number of elements in a repeated extension. */ + //@Override (Java 1.6 override semantics, but we must support 1.5) + public final int getExtensionCount( + final Extension> extension) { + verifyExtensionContainingType(extension); + final FieldDescriptor descriptor = extension.getDescriptor(); + return extensions.getRepeatedFieldCount(descriptor); + } + + /** Get the value of an extension. */ + //@Override (Java 1.6 override semantics, but we must support 1.5) + @SuppressWarnings("unchecked") + public final Type getExtension( + final Extension extension) { + verifyExtensionContainingType(extension); + FieldDescriptor descriptor = extension.getDescriptor(); + final Object value = extensions.getField(descriptor); + if (value == null) { + if (descriptor.isRepeated()) { + return (Type) Collections.emptyList(); + } else if (descriptor.getJavaType() == + FieldDescriptor.JavaType.MESSAGE) { + return (Type) extension.getMessageDefaultInstance(); + } else { + return (Type) extension.fromReflectionType( + descriptor.getDefaultValue()); + } + } else { + return (Type) extension.fromReflectionType(value); + } + } + + /** Get one element of a repeated extension. */ + //@Override (Java 1.6 override semantics, but we must support 1.5) + @SuppressWarnings("unchecked") + public final Type getExtension( + final Extension> extension, + final int index) { + verifyExtensionContainingType(extension); + FieldDescriptor descriptor = extension.getDescriptor(); + return (Type) extension.singularFromReflectionType( + extensions.getRepeatedField(descriptor, index)); + } + + /** Called by subclasses to check if all extensions are initialized. */ + protected boolean extensionsAreInitialized() { + return extensions.isInitialized(); + } + + @Override + public boolean isInitialized() { + return super.isInitialized() && extensionsAreInitialized(); + } + + @Override + protected boolean parseUnknownField( + CodedInputStream input, + UnknownFieldSet.Builder unknownFields, + ExtensionRegistryLite extensionRegistry, + int tag) throws IOException { + return MessageReflection.mergeFieldFrom( + input, unknownFields, extensionRegistry, getDescriptorForType(), + new MessageReflection.ExtensionAdapter(extensions), tag); + } + + + /** + * Used by parsing constructors in generated classes. + */ + @Override + protected void makeExtensionsImmutable() { + extensions.makeImmutable(); + } + + /** + * Used by subclasses to serialize extensions. Extension ranges may be + * interleaved with field numbers, but we must write them in canonical + * (sorted by field number) order. ExtensionWriter helps us write + * individual ranges of extensions at once. + */ + protected class ExtensionWriter { + // Imagine how much simpler this code would be if Java iterators had + // a way to get the next element without advancing the iterator. + + private final Iterator> iter = + extensions.iterator(); + private Map.Entry next; + private final boolean messageSetWireFormat; + + private ExtensionWriter(final boolean messageSetWireFormat) { + if (iter.hasNext()) { + next = iter.next(); + } + this.messageSetWireFormat = messageSetWireFormat; + } + + public void writeUntil(final int end, final CodedOutputStream output) + throws IOException { + while (next != null && next.getKey().getNumber() < end) { + FieldDescriptor descriptor = next.getKey(); + if (messageSetWireFormat && descriptor.getLiteJavaType() == + WireFormat.JavaType.MESSAGE && + !descriptor.isRepeated()) { + if (next instanceof LazyField.LazyEntry) { + output.writeRawMessageSetExtension(descriptor.getNumber(), + ((LazyField.LazyEntry) next).getField().toByteString()); + } else { + output.writeMessageSetExtension(descriptor.getNumber(), + (Message) next.getValue()); + } + } else { + // TODO(xiangl): Taken care of following code, it may cause + // problem when we use LazyField for normal fields/extensions. + // Due to the optional field can be duplicated at the end of + // serialized bytes, which will make the serialized size change + // after lazy field parsed. So when we use LazyField globally, + // we need to change the following write method to write cached + // bytes directly rather than write the parsed message. + FieldSet.writeField(descriptor, next.getValue(), output); + } + if (iter.hasNext()) { + next = iter.next(); + } else { + next = null; + } + } + } + } + + protected ExtensionWriter newExtensionWriter() { + return new ExtensionWriter(false); + } + protected ExtensionWriter newMessageSetExtensionWriter() { + return new ExtensionWriter(true); + } + + /** Called by subclasses to compute the size of extensions. */ + protected int extensionsSerializedSize() { + return extensions.getSerializedSize(); + } + protected int extensionsSerializedSizeAsMessageSet() { + return extensions.getMessageSetSerializedSize(); + } + + // --------------------------------------------------------------- + // Reflection + + protected Map getExtensionFields() { + return extensions.getAllFields(); + } + + @Override + public Map getAllFields() { + final Map result = super.getAllFieldsMutable(); + result.putAll(getExtensionFields()); + return Collections.unmodifiableMap(result); + } + + @Override + public boolean hasField(final FieldDescriptor field) { + if (field.isExtension()) { + verifyContainingType(field); + return extensions.hasField(field); + } else { + return super.hasField(field); + } + } + + @Override + public Object getField(final FieldDescriptor field) { + if (field.isExtension()) { + verifyContainingType(field); + final Object value = extensions.getField(field); + if (value == null) { + if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { + // Lacking an ExtensionRegistry, we have no way to determine the + // extension's real type, so we return a DynamicMessage. + return DynamicMessage.getDefaultInstance(field.getMessageType()); + } else { + return field.getDefaultValue(); + } + } else { + return value; + } + } else { + return super.getField(field); + } + } + + @Override + public int getRepeatedFieldCount(final FieldDescriptor field) { + if (field.isExtension()) { + verifyContainingType(field); + return extensions.getRepeatedFieldCount(field); + } else { + return super.getRepeatedFieldCount(field); + } + } + + @Override + public Object getRepeatedField(final FieldDescriptor field, + final int index) { + if (field.isExtension()) { + verifyContainingType(field); + return extensions.getRepeatedField(field, index); + } else { + return super.getRepeatedField(field, index); + } + } + + private void verifyContainingType(final FieldDescriptor field) { + if (field.getContainingType() != getDescriptorForType()) { + throw new IllegalArgumentException( + "FieldDescriptor does not match message type."); + } + } + } + + /** + * Generated message builders for message types that contain extension ranges + * subclass this. + * + *

      This class implements type-safe accessors for extensions. They + * implement all the same operations that you can do with normal fields -- + * e.g. "get", "set", and "add" -- but for extensions. The extensions are + * identified using instances of the class {@link GeneratedExtension}; the + * protocol compiler generates a static instance of this class for every + * extension in its input. Through the magic of generics, all is made + * type-safe. + * + *

      For example, imagine you have the {@code .proto} file: + * + *

      +   * option java_class = "MyProto";
      +   *
      +   * message Foo {
      +   *   extensions 1000 to max;
      +   * }
      +   *
      +   * extend Foo {
      +   *   optional int32 bar;
      +   * }
      +   * 
      + * + *

      Then you might write code like: + * + *

      +   * MyProto.Foo foo =
      +   *   MyProto.Foo.newBuilder()
      +   *     .setExtension(MyProto.bar, 123)
      +   *     .build();
      +   * 
      + * + *

      See also {@link ExtendableMessage}. + */ + @SuppressWarnings("unchecked") + public abstract static class ExtendableBuilder< + MessageType extends ExtendableMessage, + BuilderType extends ExtendableBuilder> + extends Builder + implements ExtendableMessageOrBuilder { + + private FieldSet extensions = FieldSet.emptySet(); + + protected ExtendableBuilder() {} + + protected ExtendableBuilder( + BuilderParent parent) { + super(parent); + } + + // For immutable message conversion. + void internalSetExtensionSet(FieldSet extensions) { + this.extensions = extensions; + } + + @Override + public BuilderType clear() { + extensions = FieldSet.emptySet(); + return super.clear(); + } + + // This is implemented here only to work around an apparent bug in the + // Java compiler and/or build system. See bug #1898463. The mere presence + // of this dummy clone() implementation makes it go away. + @Override + public BuilderType clone() { + throw new UnsupportedOperationException( + "This is supposed to be overridden by subclasses."); + } + + private void ensureExtensionsIsMutable() { + if (extensions.isImmutable()) { + extensions = extensions.clone(); + } + } + + private void verifyExtensionContainingType( + final Extension extension) { + if (extension.getDescriptor().getContainingType() != + getDescriptorForType()) { + // This can only happen if someone uses unchecked operations. + throw new IllegalArgumentException( + "Extension is for type \"" + + extension.getDescriptor().getContainingType().getFullName() + + "\" which does not match message type \"" + + getDescriptorForType().getFullName() + "\"."); + } + } + + /** Check if a singular extension is present. */ + //@Override (Java 1.6 override semantics, but we must support 1.5) + public final boolean hasExtension( + final Extension extension) { + verifyExtensionContainingType(extension); + return extensions.hasField(extension.getDescriptor()); + } + + /** Get the number of elements in a repeated extension. */ + //@Override (Java 1.6 override semantics, but we must support 1.5) + public final int getExtensionCount( + final Extension> extension) { + verifyExtensionContainingType(extension); + final FieldDescriptor descriptor = extension.getDescriptor(); + return extensions.getRepeatedFieldCount(descriptor); + } + + /** Get the value of an extension. */ + //@Override (Java 1.6 override semantics, but we must support 1.5) + public final Type getExtension( + final Extension extension) { + verifyExtensionContainingType(extension); + FieldDescriptor descriptor = extension.getDescriptor(); + final Object value = extensions.getField(descriptor); + if (value == null) { + if (descriptor.isRepeated()) { + return (Type) Collections.emptyList(); + } else if (descriptor.getJavaType() == + FieldDescriptor.JavaType.MESSAGE) { + return (Type) extension.getMessageDefaultInstance(); + } else { + return (Type) extension.fromReflectionType( + descriptor.getDefaultValue()); + } + } else { + return (Type) extension.fromReflectionType(value); + } + } + + /** Get one element of a repeated extension. */ + //@Override (Java 1.6 override semantics, but we must support 1.5) + public final Type getExtension( + final Extension> extension, + final int index) { + verifyExtensionContainingType(extension); + FieldDescriptor descriptor = extension.getDescriptor(); + return (Type) extension.singularFromReflectionType( + extensions.getRepeatedField(descriptor, index)); + } + + /** Set the value of an extension. */ + public final BuilderType setExtension( + final Extension extension, + final Type value) { + verifyExtensionContainingType(extension); + ensureExtensionsIsMutable(); + final FieldDescriptor descriptor = extension.getDescriptor(); + extensions.setField(descriptor, extension.toReflectionType(value)); + onChanged(); + return (BuilderType) this; + } + + /** Set the value of one element of a repeated extension. */ + public final BuilderType setExtension( + final Extension> extension, + final int index, final Type value) { + verifyExtensionContainingType(extension); + ensureExtensionsIsMutable(); + final FieldDescriptor descriptor = extension.getDescriptor(); + extensions.setRepeatedField( + descriptor, index, + extension.singularToReflectionType(value)); + onChanged(); + return (BuilderType) this; + } + + /** Append a value to a repeated extension. */ + public final BuilderType addExtension( + final Extension> extension, + final Type value) { + verifyExtensionContainingType(extension); + ensureExtensionsIsMutable(); + final FieldDescriptor descriptor = extension.getDescriptor(); + extensions.addRepeatedField( + descriptor, extension.singularToReflectionType(value)); + onChanged(); + return (BuilderType) this; + } + + /** Clear an extension. */ + public final BuilderType clearExtension( + final Extension extension) { + verifyExtensionContainingType(extension); + ensureExtensionsIsMutable(); + extensions.clearField(extension.getDescriptor()); + onChanged(); + return (BuilderType) this; + } + + /** Called by subclasses to check if all extensions are initialized. */ + protected boolean extensionsAreInitialized() { + return extensions.isInitialized(); + } + + /** + * Called by the build code path to create a copy of the extensions for + * building the message. + */ + private FieldSet buildExtensions() { + extensions.makeImmutable(); + return extensions; + } + + @Override + public boolean isInitialized() { + return super.isInitialized() && extensionsAreInitialized(); + } + + /** + * Called by subclasses to parse an unknown field or an extension. + * @return {@code true} unless the tag is an end-group tag. + */ + @Override + protected boolean parseUnknownField( + final CodedInputStream input, + final UnknownFieldSet.Builder unknownFields, + final ExtensionRegistryLite extensionRegistry, + final int tag) throws IOException { + return MessageReflection.mergeFieldFrom( + input, unknownFields, extensionRegistry, getDescriptorForType(), + new MessageReflection.BuilderAdapter(this), tag); + } + + // --------------------------------------------------------------- + // Reflection + + @Override + public Map getAllFields() { + final Map result = super.getAllFieldsMutable(); + result.putAll(extensions.getAllFields()); + return Collections.unmodifiableMap(result); + } + + @Override + public Object getField(final FieldDescriptor field) { + if (field.isExtension()) { + verifyContainingType(field); + final Object value = extensions.getField(field); + if (value == null) { + if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { + // Lacking an ExtensionRegistry, we have no way to determine the + // extension's real type, so we return a DynamicMessage. + return DynamicMessage.getDefaultInstance(field.getMessageType()); + } else { + return field.getDefaultValue(); + } + } else { + return value; + } + } else { + return super.getField(field); + } + } + + @Override + public int getRepeatedFieldCount(final FieldDescriptor field) { + if (field.isExtension()) { + verifyContainingType(field); + return extensions.getRepeatedFieldCount(field); + } else { + return super.getRepeatedFieldCount(field); + } + } + + @Override + public Object getRepeatedField(final FieldDescriptor field, + final int index) { + if (field.isExtension()) { + verifyContainingType(field); + return extensions.getRepeatedField(field, index); + } else { + return super.getRepeatedField(field, index); + } + } + + @Override + public boolean hasField(final FieldDescriptor field) { + if (field.isExtension()) { + verifyContainingType(field); + return extensions.hasField(field); + } else { + return super.hasField(field); + } + } + + @Override + public BuilderType setField(final FieldDescriptor field, + final Object value) { + if (field.isExtension()) { + verifyContainingType(field); + ensureExtensionsIsMutable(); + extensions.setField(field, value); + onChanged(); + return (BuilderType) this; + } else { + return super.setField(field, value); + } + } + + @Override + public BuilderType clearField(final FieldDescriptor field) { + if (field.isExtension()) { + verifyContainingType(field); + ensureExtensionsIsMutable(); + extensions.clearField(field); + onChanged(); + return (BuilderType) this; + } else { + return super.clearField(field); + } + } + + @Override + public BuilderType setRepeatedField(final FieldDescriptor field, + final int index, final Object value) { + if (field.isExtension()) { + verifyContainingType(field); + ensureExtensionsIsMutable(); + extensions.setRepeatedField(field, index, value); + onChanged(); + return (BuilderType) this; + } else { + return super.setRepeatedField(field, index, value); + } + } + + @Override + public BuilderType addRepeatedField(final FieldDescriptor field, + final Object value) { + if (field.isExtension()) { + verifyContainingType(field); + ensureExtensionsIsMutable(); + extensions.addRepeatedField(field, value); + onChanged(); + return (BuilderType) this; + } else { + return super.addRepeatedField(field, value); + } + } + + protected final void mergeExtensionFields(final ExtendableMessage other) { + ensureExtensionsIsMutable(); + extensions.mergeFrom(other.extensions); + onChanged(); + } + + private void verifyContainingType(final FieldDescriptor field) { + if (field.getContainingType() != getDescriptorForType()) { + throw new IllegalArgumentException( + "FieldDescriptor does not match message type."); + } + } + } + + // ----------------------------------------------------------------- + + /** + * Gets the descriptor for an extension. The implementation depends on whether + * the extension is scoped in the top level of a file or scoped in a Message. + */ + static interface ExtensionDescriptorRetriever { + FieldDescriptor getDescriptor(); + } + + /** For use by generated code only. */ + public static + GeneratedExtension + newMessageScopedGeneratedExtension(final Message scope, + final int descriptorIndex, + final Class singularType, + final Message defaultInstance) { + // For extensions scoped within a Message, we use the Message to resolve + // the outer class's descriptor, from which the extension descriptor is + // obtained. + return new GeneratedExtension( + new CachedDescriptorRetriever() { + //@Override (Java 1.6 override semantics, but we must support 1.5) + public FieldDescriptor loadDescriptor() { + return scope.getDescriptorForType().getExtensions() + .get(descriptorIndex); + } + }, + singularType, + defaultInstance, + Extension.ExtensionType.IMMUTABLE); + } + + /** For use by generated code only. */ + public static + GeneratedExtension + newFileScopedGeneratedExtension(final Class singularType, + final Message defaultInstance) { + // For extensions scoped within a file, we rely on the outer class's + // static initializer to call internalInit() on the extension when the + // descriptor is available. + return new GeneratedExtension( + null, // ExtensionDescriptorRetriever is initialized in internalInit(); + singularType, + defaultInstance, + Extension.ExtensionType.IMMUTABLE); + } + + private abstract static class CachedDescriptorRetriever + implements ExtensionDescriptorRetriever { + private volatile FieldDescriptor descriptor; + protected abstract FieldDescriptor loadDescriptor(); + + public FieldDescriptor getDescriptor() { + if (descriptor == null) { + synchronized (this) { + if (descriptor == null) { + descriptor = loadDescriptor(); + } + } + } + return descriptor; + } + } + + /** + * Used in proto1 generated code only. + * + * After enabling bridge, we can define proto2 extensions (the extended type + * is a proto2 mutable message) in a proto1 .proto file. For these extensions + * we should generate proto2 GeneratedExtensions. + */ + public static + GeneratedExtension + newMessageScopedGeneratedExtension( + final Message scope, final String name, + final Class singularType, final Message defaultInstance) { + // For extensions scoped within a Message, we use the Message to resolve + // the outer class's descriptor, from which the extension descriptor is + // obtained. + return new GeneratedExtension( + new CachedDescriptorRetriever() { + protected FieldDescriptor loadDescriptor() { + return scope.getDescriptorForType().findFieldByName(name); + } + }, + singularType, + defaultInstance, + Extension.ExtensionType.MUTABLE); + } + + /** + * Used in proto1 generated code only. + * + * After enabling bridge, we can define proto2 extensions (the extended type + * is a proto2 mutable message) in a proto1 .proto file. For these extensions + * we should generate proto2 GeneratedExtensions. + */ + public static + GeneratedExtension + newFileScopedGeneratedExtension( + final Class singularType, final Message defaultInstance, + final String descriptorOuterClass, final String extensionName) { + // For extensions scoped within a file, we load the descriptor outer + // class and rely on it to get the FileDescriptor which then can be + // used to obtain the extension's FieldDescriptor. + return new GeneratedExtension( + new CachedDescriptorRetriever() { + protected FieldDescriptor loadDescriptor() { + try { + Class clazz = + singularType.getClassLoader().loadClass(descriptorOuterClass); + FileDescriptor file = + (FileDescriptor) clazz.getField("descriptor").get(null); + return file.findExtensionByName(extensionName); + } catch (Exception e) { + throw new RuntimeException( + "Cannot load descriptors: " + descriptorOuterClass + + " is not a valid descriptor class name", e); + } + } + }, + singularType, + defaultInstance, + Extension.ExtensionType.MUTABLE); + } + + /** + * Type used to represent generated extensions. The protocol compiler + * generates a static singleton instance of this class for each extension. + * + *

      For example, imagine you have the {@code .proto} file: + * + *

      +   * option java_class = "MyProto";
      +   *
      +   * message Foo {
      +   *   extensions 1000 to max;
      +   * }
      +   *
      +   * extend Foo {
      +   *   optional int32 bar;
      +   * }
      +   * 
      + * + *

      Then, {@code MyProto.Foo.bar} has type + * {@code GeneratedExtension}. + * + *

      In general, users should ignore the details of this type, and simply use + * these static singletons as parameters to the extension accessors defined + * in {@link ExtendableMessage} and {@link ExtendableBuilder}. + */ + public static class GeneratedExtension< + ContainingType extends Message, Type> extends + Extension { + // TODO(kenton): Find ways to avoid using Java reflection within this + // class. Also try to avoid suppressing unchecked warnings. + + // We can't always initialize the descriptor of a GeneratedExtension when + // we first construct it due to initialization order difficulties (namely, + // the descriptor may not have been constructed yet, since it is often + // constructed by the initializer of a separate module). + // + // In the case of nested extensions, we initialize the + // ExtensionDescriptorRetriever with an instance that uses the scoping + // Message's default instance to retrieve the extension's descriptor. + // + // In the case of non-nested extensions, we initialize the + // ExtensionDescriptorRetriever to null and rely on the outer class's static + // initializer to call internalInit() after the descriptor has been parsed. + GeneratedExtension(ExtensionDescriptorRetriever descriptorRetriever, + Class singularType, + Message messageDefaultInstance, + ExtensionType extensionType) { + if (Message.class.isAssignableFrom(singularType) && + !singularType.isInstance(messageDefaultInstance)) { + throw new IllegalArgumentException( + "Bad messageDefaultInstance for " + singularType.getName()); + } + this.descriptorRetriever = descriptorRetriever; + this.singularType = singularType; + this.messageDefaultInstance = messageDefaultInstance; + + if (ProtocolMessageEnum.class.isAssignableFrom(singularType)) { + this.enumValueOf = getMethodOrDie(singularType, "valueOf", + EnumValueDescriptor.class); + this.enumGetValueDescriptor = + getMethodOrDie(singularType, "getValueDescriptor"); + } else { + this.enumValueOf = null; + this.enumGetValueDescriptor = null; + } + this.extensionType = extensionType; + } + + /** For use by generated code only. */ + public void internalInit(final FieldDescriptor descriptor) { + if (descriptorRetriever != null) { + throw new IllegalStateException("Already initialized."); + } + descriptorRetriever = new ExtensionDescriptorRetriever() { + //@Override (Java 1.6 override semantics, but we must support 1.5) + public FieldDescriptor getDescriptor() { + return descriptor; + } + }; + } + + private ExtensionDescriptorRetriever descriptorRetriever; + private final Class singularType; + private final Message messageDefaultInstance; + private final Method enumValueOf; + private final Method enumGetValueDescriptor; + private final ExtensionType extensionType; + + public FieldDescriptor getDescriptor() { + if (descriptorRetriever == null) { + throw new IllegalStateException( + "getDescriptor() called before internalInit()"); + } + return descriptorRetriever.getDescriptor(); + } + + /** + * If the extension is an embedded message or group, returns the default + * instance of the message. + */ + public Message getMessageDefaultInstance() { + return messageDefaultInstance; + } + + protected ExtensionType getExtensionType() { + return extensionType; + } + + /** + * Convert from the type used by the reflection accessors to the type used + * by native accessors. E.g., for enums, the reflection accessors use + * EnumValueDescriptors but the native accessors use the generated enum + * type. + */ + // @Override + @SuppressWarnings("unchecked") + protected Object fromReflectionType(final Object value) { + FieldDescriptor descriptor = getDescriptor(); + if (descriptor.isRepeated()) { + if (descriptor.getJavaType() == FieldDescriptor.JavaType.MESSAGE || + descriptor.getJavaType() == FieldDescriptor.JavaType.ENUM) { + // Must convert the whole list. + final List result = new ArrayList(); + for (final Object element : (List) value) { + result.add(singularFromReflectionType(element)); + } + return result; + } else { + return value; + } + } else { + return singularFromReflectionType(value); + } + } + + /** + * Like {@link #fromReflectionType(Object)}, but if the type is a repeated + * type, this converts a single element. + */ + // @Override + protected Object singularFromReflectionType(final Object value) { + FieldDescriptor descriptor = getDescriptor(); + switch (descriptor.getJavaType()) { + case MESSAGE: + if (singularType.isInstance(value)) { + return value; + } else { + return messageDefaultInstance.newBuilderForType() + .mergeFrom((Message) value).build(); + } + case ENUM: + return invokeOrDie(enumValueOf, null, (EnumValueDescriptor) value); + default: + return value; + } + } + + /** + * Convert from the type used by the native accessors to the type used + * by reflection accessors. E.g., for enums, the reflection accessors use + * EnumValueDescriptors but the native accessors use the generated enum + * type. + */ + // @Override + @SuppressWarnings("unchecked") + protected Object toReflectionType(final Object value) { + FieldDescriptor descriptor = getDescriptor(); + if (descriptor.isRepeated()) { + if (descriptor.getJavaType() == FieldDescriptor.JavaType.ENUM) { + // Must convert the whole list. + final List result = new ArrayList(); + for (final Object element : (List) value) { + result.add(singularToReflectionType(element)); + } + return result; + } else { + return value; + } + } else { + return singularToReflectionType(value); + } + } + + /** + * Like {@link #toReflectionType(Object)}, but if the type is a repeated + * type, this converts a single element. + */ + // @Override + protected Object singularToReflectionType(final Object value) { + FieldDescriptor descriptor = getDescriptor(); + switch (descriptor.getJavaType()) { + case ENUM: + return invokeOrDie(enumGetValueDescriptor, value); + default: + return value; + } + } + + // @Override + public int getNumber() { + return getDescriptor().getNumber(); + } + + // @Override + public WireFormat.FieldType getLiteType() { + return getDescriptor().getLiteType(); + } + + // @Override + public boolean isRepeated() { + return getDescriptor().isRepeated(); + } + + // @Override + @SuppressWarnings("unchecked") + public Type getDefaultValue() { + if (isRepeated()) { + return (Type) Collections.emptyList(); + } + if (getDescriptor().getJavaType() == FieldDescriptor.JavaType.MESSAGE) { + return (Type) messageDefaultInstance; + } + return (Type) singularFromReflectionType( + getDescriptor().getDefaultValue()); + } + } + + // ================================================================= + + /** Calls Class.getMethod and throws a RuntimeException if it fails. */ + @SuppressWarnings("unchecked") + private static Method getMethodOrDie( + final Class clazz, final String name, final Class... params) { + try { + return clazz.getMethod(name, params); + } catch (NoSuchMethodException e) { + throw new RuntimeException( + "Generated message class \"" + clazz.getName() + + "\" missing method \"" + name + "\".", e); + } + } + + /** Calls invoke and throws a RuntimeException if it fails. */ + private static Object invokeOrDie( + final Method method, final Object object, final Object... params) { + try { + return method.invoke(object, params); + } catch (IllegalAccessException e) { + throw new RuntimeException( + "Couldn't use Java reflection to implement protocol message " + + "reflection.", e); + } catch (InvocationTargetException e) { + final Throwable cause = e.getCause(); + if (cause instanceof RuntimeException) { + throw (RuntimeException) cause; + } else if (cause instanceof Error) { + throw (Error) cause; + } else { + throw new RuntimeException( + "Unexpected exception thrown by generated accessor method.", cause); + } + } + } + + /** + * Users should ignore this class. This class provides the implementation + * with access to the fields of a message object using Java reflection. + */ + public static final class FieldAccessorTable { + + /** + * Construct a FieldAccessorTable for a particular message class. Only + * one FieldAccessorTable should ever be constructed per class. + * + * @param descriptor The type's descriptor. + * @param camelCaseNames The camelcase names of all fields in the message. + * These are used to derive the accessor method names. + * @param messageClass The message type. + * @param builderClass The builder type. + */ + public FieldAccessorTable( + final Descriptor descriptor, + final String[] camelCaseNames, + final Class messageClass, + final Class builderClass) { + this(descriptor, camelCaseNames); + ensureFieldAccessorsInitialized(messageClass, builderClass); + } + + /** + * Construct a FieldAccessorTable for a particular message class without + * initializing FieldAccessors. + */ + public FieldAccessorTable( + final Descriptor descriptor, + final String[] camelCaseNames) { + this.descriptor = descriptor; + this.camelCaseNames = camelCaseNames; + fields = new FieldAccessor[descriptor.getFields().size()]; + oneofs = new OneofAccessor[descriptor.getOneofs().size()]; + initialized = false; + } + + /** + * Ensures the field accessors are initialized. This method is thread-safe. + * + * @param messageClass The message type. + * @param builderClass The builder type. + * @return this + */ + public FieldAccessorTable ensureFieldAccessorsInitialized( + Class messageClass, + Class builderClass) { + if (initialized) { return this; } + synchronized (this) { + if (initialized) { return this; } + int fieldsSize = fields.length; + for (int i = 0; i < fieldsSize; i++) { + FieldDescriptor field = descriptor.getFields().get(i); + String containingOneofCamelCaseName = null; + if (field.getContainingOneof() != null) { + containingOneofCamelCaseName = + camelCaseNames[fieldsSize + field.getContainingOneof().getIndex()]; + } + if (field.isRepeated()) { + if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { + fields[i] = new RepeatedMessageFieldAccessor( + field, camelCaseNames[i], messageClass, builderClass); + } else if (field.getJavaType() == FieldDescriptor.JavaType.ENUM) { + fields[i] = new RepeatedEnumFieldAccessor( + field, camelCaseNames[i], messageClass, builderClass); + } else { + fields[i] = new RepeatedFieldAccessor( + field, camelCaseNames[i], messageClass, builderClass); + } + } else { + if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { + fields[i] = new SingularMessageFieldAccessor( + field, camelCaseNames[i], messageClass, builderClass, + containingOneofCamelCaseName); + } else if (field.getJavaType() == FieldDescriptor.JavaType.ENUM) { + fields[i] = new SingularEnumFieldAccessor( + field, camelCaseNames[i], messageClass, builderClass, + containingOneofCamelCaseName); + } else { + fields[i] = new SingularFieldAccessor( + field, camelCaseNames[i], messageClass, builderClass, + containingOneofCamelCaseName); + } + } + } + + int oneofsSize = oneofs.length; + for (int i = 0; i < oneofsSize; i++) { + oneofs[i] = new OneofAccessor( + descriptor, camelCaseNames[i + fieldsSize], + messageClass, builderClass); + } + initialized = true; + camelCaseNames = null; + return this; + } + } + + private final Descriptor descriptor; + private final FieldAccessor[] fields; + private String[] camelCaseNames; + private final OneofAccessor[] oneofs; + private volatile boolean initialized; + + /** Get the FieldAccessor for a particular field. */ + private FieldAccessor getField(final FieldDescriptor field) { + if (field.getContainingType() != descriptor) { + throw new IllegalArgumentException( + "FieldDescriptor does not match message type."); + } else if (field.isExtension()) { + // If this type had extensions, it would subclass ExtendableMessage, + // which overrides the reflection interface to handle extensions. + throw new IllegalArgumentException( + "This type does not have extensions."); + } + return fields[field.getIndex()]; + } + + /** Get the OneofAccessor for a particular oneof. */ + private OneofAccessor getOneof(final OneofDescriptor oneof) { + if (oneof.getContainingType() != descriptor) { + throw new IllegalArgumentException( + "OneofDescriptor does not match message type."); + } + return oneofs[oneof.getIndex()]; + } + + /** + * Abstract interface that provides access to a single field. This is + * implemented differently depending on the field type and cardinality. + */ + private interface FieldAccessor { + Object get(GeneratedMessage message); + Object get(GeneratedMessage.Builder builder); + void set(Builder builder, Object value); + Object getRepeated(GeneratedMessage message, int index); + Object getRepeated(GeneratedMessage.Builder builder, int index); + void setRepeated(Builder builder, + int index, Object value); + void addRepeated(Builder builder, Object value); + boolean has(GeneratedMessage message); + boolean has(GeneratedMessage.Builder builder); + int getRepeatedCount(GeneratedMessage message); + int getRepeatedCount(GeneratedMessage.Builder builder); + void clear(Builder builder); + Message.Builder newBuilder(); + Message.Builder getBuilder(GeneratedMessage.Builder builder); + } + + /** OneofAccessor provides access to a single oneof. */ + private static class OneofAccessor { + OneofAccessor( + final Descriptor descriptor, final String camelCaseName, + final Class messageClass, + final Class builderClass) { + this.descriptor = descriptor; + caseMethod = + getMethodOrDie(messageClass, "get" + camelCaseName + "Case"); + caseMethodBuilder = + getMethodOrDie(builderClass, "get" + camelCaseName + "Case"); + clearMethod = getMethodOrDie(builderClass, "clear" + camelCaseName); + } + + private final Descriptor descriptor; + private final Method caseMethod; + private final Method caseMethodBuilder; + private final Method clearMethod; + + public boolean has(final GeneratedMessage message) { + if (((Internal.EnumLite) invokeOrDie(caseMethod, message)).getNumber() == 0) { + return false; + } + return true; + } + + public boolean has(GeneratedMessage.Builder builder) { + if (((Internal.EnumLite) invokeOrDie(caseMethodBuilder, builder)).getNumber() == 0) { + return false; + } + return true; + } + + public FieldDescriptor get(final GeneratedMessage message) { + int fieldNumber = ((Internal.EnumLite) invokeOrDie(caseMethod, message)).getNumber(); + if (fieldNumber > 0) { + return descriptor.findFieldByNumber(fieldNumber); + } + return null; + } + + public FieldDescriptor get(GeneratedMessage.Builder builder) { + int fieldNumber = ((Internal.EnumLite) invokeOrDie(caseMethodBuilder, builder)).getNumber(); + if (fieldNumber > 0) { + return descriptor.findFieldByNumber(fieldNumber); + } + return null; + } + + public void clear(final Builder builder) { + invokeOrDie(clearMethod, builder); + } + } + + private static boolean supportFieldPresence(FileDescriptor file) { + return true; + } + + // --------------------------------------------------------------- + + private static class SingularFieldAccessor implements FieldAccessor { + SingularFieldAccessor( + final FieldDescriptor descriptor, final String camelCaseName, + final Class messageClass, + final Class builderClass, + final String containingOneofCamelCaseName) { + field = descriptor; + isOneofField = descriptor.getContainingOneof() != null; + hasHasMethod = supportFieldPresence(descriptor.getFile()) + || (!isOneofField && descriptor.getJavaType() == FieldDescriptor.JavaType.MESSAGE); + getMethod = getMethodOrDie(messageClass, "get" + camelCaseName); + getMethodBuilder = getMethodOrDie(builderClass, "get" + camelCaseName); + type = getMethod.getReturnType(); + setMethod = getMethodOrDie(builderClass, "set" + camelCaseName, type); + hasMethod = + hasHasMethod ? getMethodOrDie(messageClass, "has" + camelCaseName) : null; + hasMethodBuilder = + hasHasMethod ? getMethodOrDie(builderClass, "has" + camelCaseName) : null; + clearMethod = getMethodOrDie(builderClass, "clear" + camelCaseName); + caseMethod = isOneofField ? getMethodOrDie( + messageClass, "get" + containingOneofCamelCaseName + "Case") : null; + caseMethodBuilder = isOneofField ? getMethodOrDie( + builderClass, "get" + containingOneofCamelCaseName + "Case") : null; + } + + // Note: We use Java reflection to call public methods rather than + // access private fields directly as this avoids runtime security + // checks. + protected final Class type; + protected final Method getMethod; + protected final Method getMethodBuilder; + protected final Method setMethod; + protected final Method hasMethod; + protected final Method hasMethodBuilder; + protected final Method clearMethod; + protected final Method caseMethod; + protected final Method caseMethodBuilder; + protected final FieldDescriptor field; + protected final boolean isOneofField; + protected final boolean hasHasMethod; + + private int getOneofFieldNumber(final GeneratedMessage message) { + return ((Internal.EnumLite) invokeOrDie(caseMethod, message)).getNumber(); + } + + private int getOneofFieldNumber(final GeneratedMessage.Builder builder) { + return ((Internal.EnumLite) invokeOrDie(caseMethodBuilder, builder)).getNumber(); + } + + public Object get(final GeneratedMessage message) { + return invokeOrDie(getMethod, message); + } + public Object get(GeneratedMessage.Builder builder) { + return invokeOrDie(getMethodBuilder, builder); + } + public void set(final Builder builder, final Object value) { + invokeOrDie(setMethod, builder, value); + } + public Object getRepeated(final GeneratedMessage message, + final int index) { + throw new UnsupportedOperationException( + "getRepeatedField() called on a singular field."); + } + public Object getRepeated(GeneratedMessage.Builder builder, int index) { + throw new UnsupportedOperationException( + "getRepeatedField() called on a singular field."); + } + public void setRepeated(final Builder builder, + final int index, final Object value) { + throw new UnsupportedOperationException( + "setRepeatedField() called on a singular field."); + } + public void addRepeated(final Builder builder, final Object value) { + throw new UnsupportedOperationException( + "addRepeatedField() called on a singular field."); + } + public boolean has(final GeneratedMessage message) { + if (!hasHasMethod) { + if (isOneofField) { + return getOneofFieldNumber(message) == field.getNumber(); + } + return !get(message).equals(field.getDefaultValue()); + } + return (Boolean) invokeOrDie(hasMethod, message); + } + public boolean has(GeneratedMessage.Builder builder) { + if (!hasHasMethod) { + if (isOneofField) { + return getOneofFieldNumber(builder) == field.getNumber(); + } + return !get(builder).equals(field.getDefaultValue()); + } + return (Boolean) invokeOrDie(hasMethodBuilder, builder); + } + public int getRepeatedCount(final GeneratedMessage message) { + throw new UnsupportedOperationException( + "getRepeatedFieldSize() called on a singular field."); + } + public int getRepeatedCount(GeneratedMessage.Builder builder) { + throw new UnsupportedOperationException( + "getRepeatedFieldSize() called on a singular field."); + } + public void clear(final Builder builder) { + invokeOrDie(clearMethod, builder); + } + public Message.Builder newBuilder() { + throw new UnsupportedOperationException( + "newBuilderForField() called on a non-Message type."); + } + public Message.Builder getBuilder(GeneratedMessage.Builder builder) { + throw new UnsupportedOperationException( + "getFieldBuilder() called on a non-Message type."); + } + } + + private static class RepeatedFieldAccessor implements FieldAccessor { + protected final Class type; + protected final Method getMethod; + protected final Method getMethodBuilder; + protected final Method getRepeatedMethod; + protected final Method getRepeatedMethodBuilder; + protected final Method setRepeatedMethod; + protected final Method addRepeatedMethod; + protected final Method getCountMethod; + protected final Method getCountMethodBuilder; + protected final Method clearMethod; + + RepeatedFieldAccessor( + final FieldDescriptor descriptor, final String camelCaseName, + final Class messageClass, + final Class builderClass) { + getMethod = getMethodOrDie(messageClass, + "get" + camelCaseName + "List"); + getMethodBuilder = getMethodOrDie(builderClass, + "get" + camelCaseName + "List"); + getRepeatedMethod = + getMethodOrDie(messageClass, "get" + camelCaseName, Integer.TYPE); + getRepeatedMethodBuilder = + getMethodOrDie(builderClass, "get" + camelCaseName, Integer.TYPE); + type = getRepeatedMethod.getReturnType(); + setRepeatedMethod = + getMethodOrDie(builderClass, "set" + camelCaseName, + Integer.TYPE, type); + addRepeatedMethod = + getMethodOrDie(builderClass, "add" + camelCaseName, type); + getCountMethod = + getMethodOrDie(messageClass, "get" + camelCaseName + "Count"); + getCountMethodBuilder = + getMethodOrDie(builderClass, "get" + camelCaseName + "Count"); + + clearMethod = getMethodOrDie(builderClass, "clear" + camelCaseName); + } + + public Object get(final GeneratedMessage message) { + return invokeOrDie(getMethod, message); + } + public Object get(GeneratedMessage.Builder builder) { + return invokeOrDie(getMethodBuilder, builder); + } + public void set(final Builder builder, final Object value) { + // Add all the elements individually. This serves two purposes: + // 1) Verifies that each element has the correct type. + // 2) Insures that the caller cannot modify the list later on and + // have the modifications be reflected in the message. + clear(builder); + for (final Object element : (List) value) { + addRepeated(builder, element); + } + } + public Object getRepeated(final GeneratedMessage message, + final int index) { + return invokeOrDie(getRepeatedMethod, message, index); + } + public Object getRepeated(GeneratedMessage.Builder builder, int index) { + return invokeOrDie(getRepeatedMethodBuilder, builder, index); + } + public void setRepeated(final Builder builder, + final int index, final Object value) { + invokeOrDie(setRepeatedMethod, builder, index, value); + } + public void addRepeated(final Builder builder, final Object value) { + invokeOrDie(addRepeatedMethod, builder, value); + } + public boolean has(final GeneratedMessage message) { + throw new UnsupportedOperationException( + "hasField() called on a repeated field."); + } + public boolean has(GeneratedMessage.Builder builder) { + throw new UnsupportedOperationException( + "hasField() called on a repeated field."); + } + public int getRepeatedCount(final GeneratedMessage message) { + return (Integer) invokeOrDie(getCountMethod, message); + } + public int getRepeatedCount(GeneratedMessage.Builder builder) { + return (Integer) invokeOrDie(getCountMethodBuilder, builder); + } + public void clear(final Builder builder) { + invokeOrDie(clearMethod, builder); + } + public Message.Builder newBuilder() { + throw new UnsupportedOperationException( + "newBuilderForField() called on a non-Message type."); + } + public Message.Builder getBuilder(GeneratedMessage.Builder builder) { + throw new UnsupportedOperationException( + "getFieldBuilder() called on a non-Message type."); + } + } + + // --------------------------------------------------------------- + + private static final class SingularEnumFieldAccessor + extends SingularFieldAccessor { + SingularEnumFieldAccessor( + final FieldDescriptor descriptor, final String camelCaseName, + final Class messageClass, + final Class builderClass, + final String containingOneofCamelCaseName) { + super(descriptor, camelCaseName, messageClass, builderClass, containingOneofCamelCaseName); + + valueOfMethod = getMethodOrDie(type, "valueOf", + EnumValueDescriptor.class); + getValueDescriptorMethod = + getMethodOrDie(type, "getValueDescriptor"); + } + + private Method valueOfMethod; + private Method getValueDescriptorMethod; + + @Override + public Object get(final GeneratedMessage message) { + return invokeOrDie(getValueDescriptorMethod, super.get(message)); + } + + @Override + public Object get(final GeneratedMessage.Builder builder) { + return invokeOrDie(getValueDescriptorMethod, super.get(builder)); + } + + @Override + public void set(final Builder builder, final Object value) { + super.set(builder, invokeOrDie(valueOfMethod, null, value)); + } + } + + private static final class RepeatedEnumFieldAccessor + extends RepeatedFieldAccessor { + RepeatedEnumFieldAccessor( + final FieldDescriptor descriptor, final String camelCaseName, + final Class messageClass, + final Class builderClass) { + super(descriptor, camelCaseName, messageClass, builderClass); + + valueOfMethod = getMethodOrDie(type, "valueOf", + EnumValueDescriptor.class); + getValueDescriptorMethod = + getMethodOrDie(type, "getValueDescriptor"); + } + + private final Method valueOfMethod; + private final Method getValueDescriptorMethod; + + @Override + @SuppressWarnings("unchecked") + public Object get(final GeneratedMessage message) { + final List newList = new ArrayList(); + for (final Object element : (List) super.get(message)) { + newList.add(invokeOrDie(getValueDescriptorMethod, element)); + } + return Collections.unmodifiableList(newList); + } + + @Override + @SuppressWarnings("unchecked") + public Object get(final GeneratedMessage.Builder builder) { + final List newList = new ArrayList(); + for (final Object element : (List) super.get(builder)) { + newList.add(invokeOrDie(getValueDescriptorMethod, element)); + } + return Collections.unmodifiableList(newList); + } + + @Override + public Object getRepeated(final GeneratedMessage message, + final int index) { + return invokeOrDie(getValueDescriptorMethod, + super.getRepeated(message, index)); + } + @Override + public Object getRepeated(final GeneratedMessage.Builder builder, + final int index) { + return invokeOrDie(getValueDescriptorMethod, + super.getRepeated(builder, index)); + } + @Override + public void setRepeated(final Builder builder, + final int index, final Object value) { + super.setRepeated(builder, index, invokeOrDie(valueOfMethod, null, + value)); + } + @Override + public void addRepeated(final Builder builder, final Object value) { + super.addRepeated(builder, invokeOrDie(valueOfMethod, null, value)); + } + } + + // --------------------------------------------------------------- + + private static final class SingularMessageFieldAccessor + extends SingularFieldAccessor { + SingularMessageFieldAccessor( + final FieldDescriptor descriptor, final String camelCaseName, + final Class messageClass, + final Class builderClass, + final String containingOneofCamelCaseName) { + super(descriptor, camelCaseName, messageClass, builderClass, containingOneofCamelCaseName); + + newBuilderMethod = getMethodOrDie(type, "newBuilder"); + getBuilderMethodBuilder = + getMethodOrDie(builderClass, "get" + camelCaseName + "Builder"); + } + + private final Method newBuilderMethod; + private final Method getBuilderMethodBuilder; + + private Object coerceType(final Object value) { + if (type.isInstance(value)) { + return value; + } else { + // The value is not the exact right message type. However, if it + // is an alternative implementation of the same type -- e.g. a + // DynamicMessage -- we should accept it. In this case we can make + // a copy of the message. + return ((Message.Builder) invokeOrDie(newBuilderMethod, null)) + .mergeFrom((Message) value).buildPartial(); + } + } + + @Override + public void set(final Builder builder, final Object value) { + super.set(builder, coerceType(value)); + } + @Override + public Message.Builder newBuilder() { + return (Message.Builder) invokeOrDie(newBuilderMethod, null); + } + @Override + public Message.Builder getBuilder(GeneratedMessage.Builder builder) { + return (Message.Builder) invokeOrDie(getBuilderMethodBuilder, builder); + } + } + + private static final class RepeatedMessageFieldAccessor + extends RepeatedFieldAccessor { + RepeatedMessageFieldAccessor( + final FieldDescriptor descriptor, final String camelCaseName, + final Class messageClass, + final Class builderClass) { + super(descriptor, camelCaseName, messageClass, builderClass); + + newBuilderMethod = getMethodOrDie(type, "newBuilder"); + } + + private final Method newBuilderMethod; + + private Object coerceType(final Object value) { + if (type.isInstance(value)) { + return value; + } else { + // The value is not the exact right message type. However, if it + // is an alternative implementation of the same type -- e.g. a + // DynamicMessage -- we should accept it. In this case we can make + // a copy of the message. + return ((Message.Builder) invokeOrDie(newBuilderMethod, null)) + .mergeFrom((Message) value).build(); + } + } + + @Override + public void setRepeated(final Builder builder, + final int index, final Object value) { + super.setRepeated(builder, index, coerceType(value)); + } + @Override + public void addRepeated(final Builder builder, final Object value) { + super.addRepeated(builder, coerceType(value)); + } + @Override + public Message.Builder newBuilder() { + return (Message.Builder) invokeOrDie(newBuilderMethod, null); + } + } + } + + /** + * Replaces this object in the output stream with a serialized form. + * Part of Java's serialization magic. Generated sub-classes must override + * this method by calling {@code return super.writeReplace();} + * @return a SerializedForm of this message + */ + protected Object writeReplace() throws ObjectStreamException { + return new GeneratedMessageLite.SerializedForm(this); + } +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/GeneratedMessageLite.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/GeneratedMessageLite.java new file mode 100644 index 00000000..6c5136fd --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/GeneratedMessageLite.java @@ -0,0 +1,949 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import java.io.IOException; +import java.io.ObjectStreamException; +import java.io.Serializable; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +/** + * Lite version of {@link GeneratedMessage}. + * + * @author kenton@google.com Kenton Varda + */ +public abstract class GeneratedMessageLite extends AbstractMessageLite + implements Serializable { + private static final long serialVersionUID = 1L; + + protected GeneratedMessageLite() { + } + + protected GeneratedMessageLite(Builder builder) { + } + + public Parser getParserForType() { + throw new UnsupportedOperationException( + "This is supposed to be overridden by subclasses."); + } + + /** + * Called by subclasses to parse an unknown field. + * @return {@code true} unless the tag is an end-group tag. + */ + protected boolean parseUnknownField( + CodedInputStream input, + CodedOutputStream unknownFieldsCodedOutput, + ExtensionRegistryLite extensionRegistry, + int tag) throws IOException { + return input.skipField(tag, unknownFieldsCodedOutput); + } + + /** + * Used by parsing constructors in generated classes. + */ + protected void makeExtensionsImmutable() { + // Noop for messages without extensions. + } + + @SuppressWarnings("unchecked") + public abstract static class Builder + extends AbstractMessageLite.Builder { + protected Builder() {} + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public BuilderType clear() { + unknownFields = ByteString.EMPTY; + return (BuilderType) this; + } + + // This is implemented here only to work around an apparent bug in the + // Java compiler and/or build system. See bug #1898463. The mere presence + // of this dummy clone() implementation makes it go away. + @Override + public BuilderType clone() { + throw new UnsupportedOperationException( + "This is supposed to be overridden by subclasses."); + } + + /** All subclasses implement this. */ + public abstract BuilderType mergeFrom(MessageType message); + + // Defined here for return type covariance. + public abstract MessageType getDefaultInstanceForType(); + + /** + * Called by subclasses to parse an unknown field. + * @return {@code true} unless the tag is an end-group tag. + */ + protected boolean parseUnknownField( + CodedInputStream input, + CodedOutputStream unknownFieldsCodedOutput, + ExtensionRegistryLite extensionRegistry, + int tag) throws IOException { + return input.skipField(tag, unknownFieldsCodedOutput); + } + + public final ByteString getUnknownFields() { + return unknownFields; + } + + public final BuilderType setUnknownFields(final ByteString unknownFields) { + this.unknownFields = unknownFields; + return (BuilderType) this; + } + + private ByteString unknownFields = ByteString.EMPTY; + } + + + // ================================================================= + // Extensions-related stuff + + /** + * Lite equivalent of {@link com.google.protobuf.GeneratedMessage.ExtendableMessageOrBuilder}. + */ + public interface ExtendableMessageOrBuilder< + MessageType extends ExtendableMessage> extends MessageLiteOrBuilder { + + /** Check if a singular extension is present. */ + boolean hasExtension( + GeneratedExtension extension); + + /** Get the number of elements in a repeated extension. */ + int getExtensionCount( + GeneratedExtension> extension); + + /** Get the value of an extension. */ + Type getExtension(GeneratedExtension extension); + + /** Get one element of a repeated extension. */ + Type getExtension( + GeneratedExtension> extension, + int index); + } + + /** + * Lite equivalent of {@link GeneratedMessage.ExtendableMessage}. + */ + public abstract static class ExtendableMessage< + MessageType extends ExtendableMessage> + extends GeneratedMessageLite + implements ExtendableMessageOrBuilder { + + private final FieldSet extensions; + + protected ExtendableMessage() { + this.extensions = FieldSet.newFieldSet(); + } + + protected ExtendableMessage(ExtendableBuilder builder) { + this.extensions = builder.buildExtensions(); + } + + private void verifyExtensionContainingType( + final GeneratedExtension extension) { + if (extension.getContainingTypeDefaultInstance() != + getDefaultInstanceForType()) { + // This can only happen if someone uses unchecked operations. + throw new IllegalArgumentException( + "This extension is for a different message type. Please make " + + "sure that you are not suppressing any generics type warnings."); + } + } + + /** Check if a singular extension is present. */ + //@Override (Java 1.6 override semantics, but we must support 1.5) + public final boolean hasExtension( + final GeneratedExtension extension) { + verifyExtensionContainingType(extension); + return extensions.hasField(extension.descriptor); + } + + /** Get the number of elements in a repeated extension. */ + //@Override (Java 1.6 override semantics, but we must support 1.5) + public final int getExtensionCount( + final GeneratedExtension> extension) { + verifyExtensionContainingType(extension); + return extensions.getRepeatedFieldCount(extension.descriptor); + } + + /** Get the value of an extension. */ + //@Override (Java 1.6 override semantics, but we must support 1.5) + @SuppressWarnings("unchecked") + public final Type getExtension( + final GeneratedExtension extension) { + verifyExtensionContainingType(extension); + final Object value = extensions.getField(extension.descriptor); + if (value == null) { + return extension.defaultValue; + } else { + return (Type) extension.fromFieldSetType(value); + } + } + + /** Get one element of a repeated extension. */ + //@Override (Java 1.6 override semantics, but we must support 1.5) + @SuppressWarnings("unchecked") + public final Type getExtension( + final GeneratedExtension> extension, + final int index) { + verifyExtensionContainingType(extension); + return (Type) extension.singularFromFieldSetType( + extensions.getRepeatedField(extension.descriptor, index)); + } + + /** Called by subclasses to check if all extensions are initialized. */ + protected boolean extensionsAreInitialized() { + return extensions.isInitialized(); + } + + /** + * Called by subclasses to parse an unknown field or an extension. + * @return {@code true} unless the tag is an end-group tag. + */ + @Override + protected boolean parseUnknownField( + CodedInputStream input, + CodedOutputStream unknownFieldsCodedOutput, + ExtensionRegistryLite extensionRegistry, + int tag) throws IOException { + return GeneratedMessageLite.parseUnknownField( + extensions, + getDefaultInstanceForType(), + input, + unknownFieldsCodedOutput, + extensionRegistry, + tag); + } + + + /** + * Used by parsing constructors in generated classes. + */ + @Override + protected void makeExtensionsImmutable() { + extensions.makeImmutable(); + } + + /** + * Used by subclasses to serialize extensions. Extension ranges may be + * interleaved with field numbers, but we must write them in canonical + * (sorted by field number) order. ExtensionWriter helps us write + * individual ranges of extensions at once. + */ + protected class ExtensionWriter { + // Imagine how much simpler this code would be if Java iterators had + // a way to get the next element without advancing the iterator. + + private final Iterator> iter = + extensions.iterator(); + private Map.Entry next; + private final boolean messageSetWireFormat; + + private ExtensionWriter(boolean messageSetWireFormat) { + if (iter.hasNext()) { + next = iter.next(); + } + this.messageSetWireFormat = messageSetWireFormat; + } + + public void writeUntil(final int end, final CodedOutputStream output) + throws IOException { + while (next != null && next.getKey().getNumber() < end) { + ExtensionDescriptor extension = next.getKey(); + if (messageSetWireFormat && extension.getLiteJavaType() == + WireFormat.JavaType.MESSAGE && + !extension.isRepeated()) { + output.writeMessageSetExtension(extension.getNumber(), + (MessageLite) next.getValue()); + } else { + FieldSet.writeField(extension, next.getValue(), output); + } + if (iter.hasNext()) { + next = iter.next(); + } else { + next = null; + } + } + } + } + + protected ExtensionWriter newExtensionWriter() { + return new ExtensionWriter(false); + } + protected ExtensionWriter newMessageSetExtensionWriter() { + return new ExtensionWriter(true); + } + + /** Called by subclasses to compute the size of extensions. */ + protected int extensionsSerializedSize() { + return extensions.getSerializedSize(); + } + protected int extensionsSerializedSizeAsMessageSet() { + return extensions.getMessageSetSerializedSize(); + } + } + + /** + * Lite equivalent of {@link GeneratedMessage.ExtendableBuilder}. + */ + @SuppressWarnings("unchecked") + public abstract static class ExtendableBuilder< + MessageType extends ExtendableMessage, + BuilderType extends ExtendableBuilder> + extends Builder + implements ExtendableMessageOrBuilder { + protected ExtendableBuilder() {} + + private FieldSet extensions = FieldSet.emptySet(); + private boolean extensionsIsMutable; + + // For immutable message conversion. + void internalSetExtensionSet(FieldSet extensions) { + this.extensions = extensions; + } + + @Override + public BuilderType clear() { + extensions.clear(); + extensionsIsMutable = false; + return super.clear(); + } + + private void ensureExtensionsIsMutable() { + if (!extensionsIsMutable) { + extensions = extensions.clone(); + extensionsIsMutable = true; + } + } + + /** + * Called by the build code path to create a copy of the extensions for + * building the message. + */ + private FieldSet buildExtensions() { + extensions.makeImmutable(); + extensionsIsMutable = false; + return extensions; + } + + private void verifyExtensionContainingType( + final GeneratedExtension extension) { + if (extension.getContainingTypeDefaultInstance() != + getDefaultInstanceForType()) { + // This can only happen if someone uses unchecked operations. + throw new IllegalArgumentException( + "This extension is for a different message type. Please make " + + "sure that you are not suppressing any generics type warnings."); + } + } + + /** Check if a singular extension is present. */ + //@Override (Java 1.6 override semantics, but we must support 1.5) + public final boolean hasExtension( + final GeneratedExtension extension) { + verifyExtensionContainingType(extension); + return extensions.hasField(extension.descriptor); + } + + /** Get the number of elements in a repeated extension. */ + //@Override (Java 1.6 override semantics, but we must support 1.5) + public final int getExtensionCount( + final GeneratedExtension> extension) { + verifyExtensionContainingType(extension); + return extensions.getRepeatedFieldCount(extension.descriptor); + } + + /** Get the value of an extension. */ + //@Override (Java 1.6 override semantics, but we must support 1.5) + @SuppressWarnings("unchecked") + public final Type getExtension( + final GeneratedExtension extension) { + verifyExtensionContainingType(extension); + final Object value = extensions.getField(extension.descriptor); + if (value == null) { + return extension.defaultValue; + } else { + return (Type) extension.fromFieldSetType(value); + } + } + + /** Get one element of a repeated extension. */ + @SuppressWarnings("unchecked") + //@Override (Java 1.6 override semantics, but we must support 1.5) + public final Type getExtension( + final GeneratedExtension> extension, + final int index) { + verifyExtensionContainingType(extension); + return (Type) extension.singularFromFieldSetType( + extensions.getRepeatedField(extension.descriptor, index)); + } + + // This is implemented here only to work around an apparent bug in the + // Java compiler and/or build system. See bug #1898463. The mere presence + // of this dummy clone() implementation makes it go away. + @Override + public BuilderType clone() { + throw new UnsupportedOperationException( + "This is supposed to be overridden by subclasses."); + } + + /** Set the value of an extension. */ + public final BuilderType setExtension( + final GeneratedExtension extension, + final Type value) { + verifyExtensionContainingType(extension); + ensureExtensionsIsMutable(); + extensions.setField(extension.descriptor, + extension.toFieldSetType(value)); + return (BuilderType) this; + } + + /** Set the value of one element of a repeated extension. */ + public final BuilderType setExtension( + final GeneratedExtension> extension, + final int index, final Type value) { + verifyExtensionContainingType(extension); + ensureExtensionsIsMutable(); + extensions.setRepeatedField(extension.descriptor, index, + extension.singularToFieldSetType(value)); + return (BuilderType) this; + } + + /** Append a value to a repeated extension. */ + public final BuilderType addExtension( + final GeneratedExtension> extension, + final Type value) { + verifyExtensionContainingType(extension); + ensureExtensionsIsMutable(); + extensions.addRepeatedField(extension.descriptor, + extension.singularToFieldSetType(value)); + return (BuilderType) this; + } + + /** Clear an extension. */ + public final BuilderType clearExtension( + final GeneratedExtension extension) { + verifyExtensionContainingType(extension); + ensureExtensionsIsMutable(); + extensions.clearField(extension.descriptor); + return (BuilderType) this; + } + + /** Called by subclasses to check if all extensions are initialized. */ + protected boolean extensionsAreInitialized() { + return extensions.isInitialized(); + } + + /** + * Called by subclasses to parse an unknown field or an extension. + * @return {@code true} unless the tag is an end-group tag. + */ + @Override + protected boolean parseUnknownField( + CodedInputStream input, + CodedOutputStream unknownFieldsCodedOutput, + ExtensionRegistryLite extensionRegistry, + int tag) throws IOException { + ensureExtensionsIsMutable(); + return GeneratedMessageLite.parseUnknownField( + extensions, + getDefaultInstanceForType(), + input, + unknownFieldsCodedOutput, + extensionRegistry, + tag); + } + + protected final void mergeExtensionFields(final MessageType other) { + ensureExtensionsIsMutable(); + extensions.mergeFrom(((ExtendableMessage) other).extensions); + } + } + + // ----------------------------------------------------------------- + + /** + * Parse an unknown field or an extension. + * @return {@code true} unless the tag is an end-group tag. + */ + private static + boolean parseUnknownField( + FieldSet extensions, + MessageType defaultInstance, + CodedInputStream input, + CodedOutputStream unknownFieldsCodedOutput, + ExtensionRegistryLite extensionRegistry, + int tag) throws IOException { + int wireType = WireFormat.getTagWireType(tag); + int fieldNumber = WireFormat.getTagFieldNumber(tag); + + GeneratedExtension extension = + extensionRegistry.findLiteExtensionByNumber( + defaultInstance, fieldNumber); + + boolean unknown = false; + boolean packed = false; + if (extension == null) { + unknown = true; // Unknown field. + } else if (wireType == FieldSet.getWireFormatForFieldType( + extension.descriptor.getLiteType(), + false /* isPacked */)) { + packed = false; // Normal, unpacked value. + } else if (extension.descriptor.isRepeated && + extension.descriptor.type.isPackable() && + wireType == FieldSet.getWireFormatForFieldType( + extension.descriptor.getLiteType(), + true /* isPacked */)) { + packed = true; // Packed value. + } else { + unknown = true; // Wrong wire type. + } + + if (unknown) { // Unknown field or wrong wire type. Skip. + return input.skipField(tag, unknownFieldsCodedOutput); + } + + if (packed) { + int length = input.readRawVarint32(); + int limit = input.pushLimit(length); + if (extension.descriptor.getLiteType() == WireFormat.FieldType.ENUM) { + while (input.getBytesUntilLimit() > 0) { + int rawValue = input.readEnum(); + Object value = + extension.descriptor.getEnumType().findValueByNumber(rawValue); + if (value == null) { + // If the number isn't recognized as a valid value for this + // enum, drop it (don't even add it to unknownFields). + return true; + } + extensions.addRepeatedField(extension.descriptor, + extension.singularToFieldSetType(value)); + } + } else { + while (input.getBytesUntilLimit() > 0) { + Object value = + FieldSet.readPrimitiveField(input, + extension.descriptor.getLiteType(), + /*checkUtf8=*/ false); + extensions.addRepeatedField(extension.descriptor, value); + } + } + input.popLimit(limit); + } else { + Object value; + switch (extension.descriptor.getLiteJavaType()) { + case MESSAGE: { + MessageLite.Builder subBuilder = null; + if (!extension.descriptor.isRepeated()) { + MessageLite existingValue = + (MessageLite) extensions.getField(extension.descriptor); + if (existingValue != null) { + subBuilder = existingValue.toBuilder(); + } + } + if (subBuilder == null) { + subBuilder = extension.getMessageDefaultInstance() + .newBuilderForType(); + } + if (extension.descriptor.getLiteType() == + WireFormat.FieldType.GROUP) { + input.readGroup(extension.getNumber(), + subBuilder, extensionRegistry); + } else { + input.readMessage(subBuilder, extensionRegistry); + } + value = subBuilder.build(); + break; + } + case ENUM: + int rawValue = input.readEnum(); + value = extension.descriptor.getEnumType() + .findValueByNumber(rawValue); + // If the number isn't recognized as a valid value for this enum, + // write it to unknown fields object. + if (value == null) { + unknownFieldsCodedOutput.writeRawVarint32(tag); + unknownFieldsCodedOutput.writeUInt32NoTag(rawValue); + return true; + } + break; + default: + value = FieldSet.readPrimitiveField(input, + extension.descriptor.getLiteType(), + /*checkUtf8=*/ false); + break; + } + + if (extension.descriptor.isRepeated()) { + extensions.addRepeatedField(extension.descriptor, + extension.singularToFieldSetType(value)); + } else { + extensions.setField(extension.descriptor, + extension.singularToFieldSetType(value)); + } + } + + return true; + } + + // ----------------------------------------------------------------- + + /** For use by generated code only. */ + public static + GeneratedExtension + newSingularGeneratedExtension( + final ContainingType containingTypeDefaultInstance, + final Type defaultValue, + final MessageLite messageDefaultInstance, + final Internal.EnumLiteMap enumTypeMap, + final int number, + final WireFormat.FieldType type, + final Class singularType) { + return new GeneratedExtension( + containingTypeDefaultInstance, + defaultValue, + messageDefaultInstance, + new ExtensionDescriptor(enumTypeMap, number, type, + false /* isRepeated */, + false /* isPacked */), + singularType); + } + + /** For use by generated code only. */ + public static + GeneratedExtension + newRepeatedGeneratedExtension( + final ContainingType containingTypeDefaultInstance, + final MessageLite messageDefaultInstance, + final Internal.EnumLiteMap enumTypeMap, + final int number, + final WireFormat.FieldType type, + final boolean isPacked, + final Class singularType) { + @SuppressWarnings("unchecked") // Subclasses ensure Type is a List + Type emptyList = (Type) Collections.emptyList(); + return new GeneratedExtension( + containingTypeDefaultInstance, + emptyList, + messageDefaultInstance, + new ExtensionDescriptor( + enumTypeMap, number, type, true /* isRepeated */, isPacked), + singularType); + } + + static final class ExtensionDescriptor + implements FieldSet.FieldDescriptorLite< + ExtensionDescriptor> { + ExtensionDescriptor( + final Internal.EnumLiteMap enumTypeMap, + final int number, + final WireFormat.FieldType type, + final boolean isRepeated, + final boolean isPacked) { + this.enumTypeMap = enumTypeMap; + this.number = number; + this.type = type; + this.isRepeated = isRepeated; + this.isPacked = isPacked; + } + + final Internal.EnumLiteMap enumTypeMap; + final int number; + final WireFormat.FieldType type; + final boolean isRepeated; + final boolean isPacked; + + public int getNumber() { + return number; + } + + public WireFormat.FieldType getLiteType() { + return type; + } + + public WireFormat.JavaType getLiteJavaType() { + return type.getJavaType(); + } + + public boolean isRepeated() { + return isRepeated; + } + + public boolean isPacked() { + return isPacked; + } + + public Internal.EnumLiteMap getEnumType() { + return enumTypeMap; + } + + @SuppressWarnings("unchecked") + public MessageLite.Builder internalMergeFrom( + MessageLite.Builder to, MessageLite from) { + return ((Builder) to).mergeFrom((GeneratedMessageLite) from); + } + + + public int compareTo(ExtensionDescriptor other) { + return number - other.number; + } + } + + // ================================================================= + + /** Calls Class.getMethod and throws a RuntimeException if it fails. */ + @SuppressWarnings("unchecked") + static Method getMethodOrDie(Class clazz, String name, Class... params) { + try { + return clazz.getMethod(name, params); + } catch (NoSuchMethodException e) { + throw new RuntimeException( + "Generated message class \"" + clazz.getName() + + "\" missing method \"" + name + "\".", e); + } + } + + /** Calls invoke and throws a RuntimeException if it fails. */ + static Object invokeOrDie(Method method, Object object, Object... params) { + try { + return method.invoke(object, params); + } catch (IllegalAccessException e) { + throw new RuntimeException( + "Couldn't use Java reflection to implement protocol message " + + "reflection.", e); + } catch (InvocationTargetException e) { + final Throwable cause = e.getCause(); + if (cause instanceof RuntimeException) { + throw (RuntimeException) cause; + } else if (cause instanceof Error) { + throw (Error) cause; + } else { + throw new RuntimeException( + "Unexpected exception thrown by generated accessor method.", cause); + } + } + } + + /** + * Lite equivalent to {@link GeneratedMessage.GeneratedExtension}. + * + * Users should ignore the contents of this class and only use objects of + * this type as parameters to extension accessors and ExtensionRegistry.add(). + */ + public static class GeneratedExtension< + ContainingType extends MessageLite, Type> { + + /** + * Create a new isntance with the given parameters. + * + * The last parameter {@code singularType} is only needed for enum types. + * We store integer values for enum types in a {@link ExtendableMessage} + * and use Java reflection to convert an integer value back into a concrete + * enum object. + */ + GeneratedExtension( + final ContainingType containingTypeDefaultInstance, + final Type defaultValue, + final MessageLite messageDefaultInstance, + final ExtensionDescriptor descriptor, + Class singularType) { + // Defensive checks to verify the correct initialization order of + // GeneratedExtensions and their related GeneratedMessages. + if (containingTypeDefaultInstance == null) { + throw new IllegalArgumentException( + "Null containingTypeDefaultInstance"); + } + if (descriptor.getLiteType() == WireFormat.FieldType.MESSAGE && + messageDefaultInstance == null) { + throw new IllegalArgumentException( + "Null messageDefaultInstance"); + } + this.containingTypeDefaultInstance = containingTypeDefaultInstance; + this.defaultValue = defaultValue; + this.messageDefaultInstance = messageDefaultInstance; + this.descriptor = descriptor; + + // Use Java reflection to invoke the static method {@code valueOf} of + // enum types in order to convert integers to concrete enum objects. + this.singularType = singularType; + if (Internal.EnumLite.class.isAssignableFrom(singularType)) { + this.enumValueOf = getMethodOrDie( + singularType, "valueOf", int.class); + } else { + this.enumValueOf = null; + } + } + + final ContainingType containingTypeDefaultInstance; + final Type defaultValue; + final MessageLite messageDefaultInstance; + final ExtensionDescriptor descriptor; + final Class singularType; + final Method enumValueOf; + + /** + * Default instance of the type being extended, used to identify that type. + */ + public ContainingType getContainingTypeDefaultInstance() { + return containingTypeDefaultInstance; + } + + /** Get the field number. */ + public int getNumber() { + return descriptor.getNumber(); + } + + + /** + * If the extension is an embedded message or group, returns the default + * instance of the message. + */ + public MessageLite getMessageDefaultInstance() { + return messageDefaultInstance; + } + + @SuppressWarnings("unchecked") + Object fromFieldSetType(final Object value) { + if (descriptor.isRepeated()) { + if (descriptor.getLiteJavaType() == WireFormat.JavaType.ENUM) { + final List result = new ArrayList(); + for (final Object element : (List) value) { + result.add(singularFromFieldSetType(element)); + } + return result; + } else { + return value; + } + } else { + return singularFromFieldSetType(value); + } + } + + Object singularFromFieldSetType(final Object value) { + if (descriptor.getLiteJavaType() == WireFormat.JavaType.ENUM) { + return invokeOrDie(enumValueOf, null, (Integer) value); + } else { + return value; + } + } + + @SuppressWarnings("unchecked") + Object toFieldSetType(final Object value) { + if (descriptor.isRepeated()) { + if (descriptor.getLiteJavaType() == WireFormat.JavaType.ENUM) { + final List result = new ArrayList(); + for (final Object element : (List) value) { + result.add(singularToFieldSetType(element)); + } + return result; + } else { + return value; + } + } else { + return singularToFieldSetType(value); + } + } + + Object singularToFieldSetType(final Object value) { + if (descriptor.getLiteJavaType() == WireFormat.JavaType.ENUM) { + return ((Internal.EnumLite) value).getNumber(); + } else { + return value; + } + } + } + + /** + * A serialized (serializable) form of the generated message. Stores the + * message as a class name and a byte array. + */ + static final class SerializedForm implements Serializable { + private static final long serialVersionUID = 0L; + + private String messageClassName; + private byte[] asBytes; + + /** + * Creates the serialized form by calling {@link com.google.protobuf.MessageLite#toByteArray}. + * @param regularForm the message to serialize + */ + SerializedForm(MessageLite regularForm) { + messageClassName = regularForm.getClass().getName(); + asBytes = regularForm.toByteArray(); + } + + /** + * When read from an ObjectInputStream, this method converts this object + * back to the regular form. Part of Java's serialization magic. + * @return a GeneratedMessage of the type that was serialized + */ + @SuppressWarnings("unchecked") + protected Object readResolve() throws ObjectStreamException { + try { + Class messageClass = Class.forName(messageClassName); + Method newBuilder = messageClass.getMethod("newBuilder"); + MessageLite.Builder builder = + (MessageLite.Builder) newBuilder.invoke(null); + builder.mergeFrom(asBytes); + return builder.buildPartial(); + } catch (ClassNotFoundException e) { + throw new RuntimeException("Unable to find proto buffer class", e); + } catch (NoSuchMethodException e) { + throw new RuntimeException("Unable to find newBuilder method", e); + } catch (IllegalAccessException e) { + throw new RuntimeException("Unable to call newBuilder method", e); + } catch (InvocationTargetException e) { + throw new RuntimeException("Error calling newBuilder", e.getCause()); + } catch (InvalidProtocolBufferException e) { + throw new RuntimeException("Unable to understand proto buffer", e); + } + } + } + + /** + * Replaces this object in the output stream with a serialized form. + * Part of Java's serialization magic. Generated sub-classes must override + * this method by calling {@code return super.writeReplace();} + * @return a SerializedForm of this message + */ + protected Object writeReplace() throws ObjectStreamException { + return new SerializedForm(this); + } +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/Internal.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/Internal.java new file mode 100644 index 00000000..48d29e69 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/Internal.java @@ -0,0 +1,391 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.nio.ByteBuffer; +import java.util.Arrays; +import java.util.List; + +/** + * The classes contained within are used internally by the Protocol Buffer + * library and generated message implementations. They are public only because + * those generated messages do not reside in the {@code protobuf} package. + * Others should not use this class directly. + * + * @author kenton@google.com (Kenton Varda) + */ +public class Internal { + /** + * Helper called by generated code to construct default values for string + * fields. + *

      + * The protocol compiler does not actually contain a UTF-8 decoder -- it + * just pushes UTF-8-encoded text around without touching it. The one place + * where this presents a problem is when generating Java string literals. + * Unicode characters in the string literal would normally need to be encoded + * using a Unicode escape sequence, which would require decoding them. + * To get around this, protoc instead embeds the UTF-8 bytes into the + * generated code and leaves it to the runtime library to decode them. + *

      + * It gets worse, though. If protoc just generated a byte array, like: + * new byte[] {0x12, 0x34, 0x56, 0x78} + * Java actually generates *code* which allocates an array and then fills + * in each value. This is much less efficient than just embedding the bytes + * directly into the bytecode. To get around this, we need another + * work-around. String literals are embedded directly, so protoc actually + * generates a string literal corresponding to the bytes. The easiest way + * to do this is to use the ISO-8859-1 character set, which corresponds to + * the first 256 characters of the Unicode range. Protoc can then use + * good old CEscape to generate the string. + *

      + * So we have a string literal which represents a set of bytes which + * represents another string. This function -- stringDefaultValue -- + * converts from the generated string to the string we actually want. The + * generated code calls this automatically. + */ + public static String stringDefaultValue(String bytes) { + try { + return new String(bytes.getBytes("ISO-8859-1"), "UTF-8"); + } catch (UnsupportedEncodingException e) { + // This should never happen since all JVMs are required to implement + // both of the above character sets. + throw new IllegalStateException( + "Java VM does not support a standard character set.", e); + } + } + + /** + * Helper called by generated code to construct default values for bytes + * fields. + *

      + * This is a lot like {@link #stringDefaultValue}, but for bytes fields. + * In this case we only need the second of the two hacks -- allowing us to + * embed raw bytes as a string literal with ISO-8859-1 encoding. + */ + public static ByteString bytesDefaultValue(String bytes) { + try { + return ByteString.copyFrom(bytes.getBytes("ISO-8859-1")); + } catch (UnsupportedEncodingException e) { + // This should never happen since all JVMs are required to implement + // ISO-8859-1. + throw new IllegalStateException( + "Java VM does not support a standard character set.", e); + } + } + /** + * Helper called by generated code to construct default values for bytes + * fields. + *

      + * This is like {@link #bytesDefaultValue}, but returns a byte array. + */ + public static byte[] byteArrayDefaultValue(String bytes) { + try { + return bytes.getBytes("ISO-8859-1"); + } catch (UnsupportedEncodingException e) { + // This should never happen since all JVMs are required to implement + // ISO-8859-1. + throw new IllegalStateException( + "Java VM does not support a standard character set.", e); + } + } + + /** + * Helper called by generated code to construct default values for bytes + * fields. + *

      + * This is like {@link #bytesDefaultValue}, but returns a ByteBuffer. + */ + public static ByteBuffer byteBufferDefaultValue(String bytes) { + return ByteBuffer.wrap(byteArrayDefaultValue(bytes)); + } + + /** + * Create a new ByteBuffer and copy all the content of {@code source} + * ByteBuffer to the new ByteBuffer. The new ByteBuffer's limit and + * capacity will be source.capacity(), and its position will be 0. + * Note that the state of {@code source} ByteBuffer won't be changed. + */ + public static ByteBuffer copyByteBuffer(ByteBuffer source) { + // Make a duplicate of the source ByteBuffer and read data from the + // duplicate. This is to avoid affecting the source ByteBuffer's state. + ByteBuffer temp = source.duplicate(); + // We want to copy all the data in the source ByteBuffer, not just the + // remaining bytes. + temp.clear(); + ByteBuffer result = ByteBuffer.allocate(temp.capacity()); + result.put(temp); + result.clear(); + return result; + } + + /** + * Helper called by generated code to determine if a byte array is a valid + * UTF-8 encoded string such that the original bytes can be converted to + * a String object and then back to a byte array round tripping the bytes + * without loss. More precisely, returns {@code true} whenever: + *

         {@code
      +   * Arrays.equals(byteString.toByteArray(),
      +   *     new String(byteString.toByteArray(), "UTF-8").getBytes("UTF-8"))
      +   * }
      + * + *

      This method rejects "overlong" byte sequences, as well as + * 3-byte sequences that would map to a surrogate character, in + * accordance with the restricted definition of UTF-8 introduced in + * Unicode 3.1. Note that the UTF-8 decoder included in Oracle's + * JDK has been modified to also reject "overlong" byte sequences, + * but currently (2011) still accepts 3-byte surrogate character + * byte sequences. + * + *

      See the Unicode Standard,
      + * Table 3-6. UTF-8 Bit Distribution,
      + * Table 3-7. Well Formed UTF-8 Byte Sequences. + * + *

      As of 2011-02, this method simply returns the result of {@link + * ByteString#isValidUtf8()}. Calling that method directly is preferred. + * + * @param byteString the string to check + * @return whether the byte array is round trippable + */ + public static boolean isValidUtf8(ByteString byteString) { + return byteString.isValidUtf8(); + } + + /** + * Like {@link #isValidUtf8(ByteString)} but for byte arrays. + */ + public static boolean isValidUtf8(byte[] byteArray) { + return Utf8.isValidUtf8(byteArray); + } + + /** + * Helper method to get the UTF-8 bytes of a string. + */ + public static byte[] toByteArray(String value) { + try { + return value.getBytes("UTF-8"); + } catch (UnsupportedEncodingException e) { + throw new RuntimeException("UTF-8 not supported?", e); + } + } + + /** + * Helper method to convert a byte array to a string using UTF-8 encoding. + */ + public static String toStringUtf8(byte[] bytes) { + try { + return new String(bytes, "UTF-8"); + } catch (UnsupportedEncodingException e) { + throw new RuntimeException("UTF-8 not supported?", e); + } + } + + /** + * Interface for an enum value or value descriptor, to be used in FieldSet. + * The lite library stores enum values directly in FieldSets but the full + * library stores EnumValueDescriptors in order to better support reflection. + */ + public interface EnumLite { + int getNumber(); + } + + /** + * Interface for an object which maps integers to {@link EnumLite}s. + * {@link Descriptors.EnumDescriptor} implements this interface by mapping + * numbers to {@link Descriptors.EnumValueDescriptor}s. Additionally, + * every generated enum type has a static method internalGetValueMap() which + * returns an implementation of this type that maps numbers to enum values. + */ + public interface EnumLiteMap { + T findValueByNumber(int number); + } + + /** + * Helper method for implementing {@link MessageLite#hashCode()} for longs. + * @see Long#hashCode() + */ + public static int hashLong(long n) { + return (int) (n ^ (n >>> 32)); + } + + /** + * Helper method for implementing {@link MessageLite#hashCode()} for + * booleans. + * @see Boolean#hashCode() + */ + public static int hashBoolean(boolean b) { + return b ? 1231 : 1237; + } + + /** + * Helper method for implementing {@link MessageLite#hashCode()} for enums. + *

      + * This is needed because {@link java.lang.Enum#hashCode()} is final, but we + * need to use the field number as the hash code to ensure compatibility + * between statically and dynamically generated enum objects. + */ + public static int hashEnum(EnumLite e) { + return e.getNumber(); + } + + /** + * Helper method for implementing {@link MessageLite#hashCode()} for + * enum lists. + */ + public static int hashEnumList(List list) { + int hash = 1; + for (EnumLite e : list) { + hash = 31 * hash + hashEnum(e); + } + return hash; + } + + /** + * Helper method for implementing {@link MessageLite#equals()} for bytes field. + */ + public static boolean equals(List a, List b) { + if (a.size() != b.size()) return false; + for (int i = 0; i < a.size(); ++i) { + if (!Arrays.equals(a.get(i), b.get(i))) { + return false; + } + } + return true; + } + + /** + * Helper method for implementing {@link MessageLite#hashCode()} for bytes field. + */ + public static int hashCode(List list) { + int hash = 1; + for (byte[] bytes : list) { + hash = 31 * hash + hashCode(bytes); + } + return hash; + } + + /** + * Helper method for implementing {@link MessageLite#hashCode()} for bytes field. + */ + public static int hashCode(byte[] bytes) { + // The hash code for a byte array should be the same as the hash code for a + // ByteString with the same content. This is to ensure that the generated + // hashCode() method will return the same value as the pure reflection + // based hashCode() method. + return LiteralByteString.hashCode(bytes); + } + + /** + * Helper method for implementing {@link MessageLite#equals()} for bytes + * field. + */ + public static boolean equalsByteBuffer(ByteBuffer a, ByteBuffer b) { + if (a.capacity() != b.capacity()) { + return false; + } + // ByteBuffer.equals() will only compare the remaining bytes, but we want to + // compare all the content. + return a.duplicate().clear().equals(b.duplicate().clear()); + } + + /** + * Helper method for implementing {@link MessageLite#equals()} for bytes + * field. + */ + public static boolean equalsByteBuffer( + List a, List b) { + if (a.size() != b.size()) { + return false; + } + for (int i = 0; i < a.size(); ++i) { + if (!equalsByteBuffer(a.get(i), b.get(i))) { + return false; + } + } + return true; + } + + /** + * Helper method for implementing {@link MessageLite#hashCode()} for bytes + * field. + */ + public static int hashCodeByteBuffer(List list) { + int hash = 1; + for (ByteBuffer bytes : list) { + hash = 31 * hash + hashCodeByteBuffer(bytes); + } + return hash; + } + + private static final int DEFAULT_BUFFER_SIZE = 4096; + + /** + * Helper method for implementing {@link MessageLite#hashCode()} for bytes + * field. + */ + public static int hashCodeByteBuffer(ByteBuffer bytes) { + if (bytes.hasArray()) { + // Fast path. + int h = LiteralByteString.hashCode(bytes.capacity(), bytes.array(), + bytes.arrayOffset(), bytes.capacity()); + return h == 0 ? 1 : h; + } else { + // Read the data into a temporary byte array before calculating the + // hash value. + final int bufferSize = bytes.capacity() > DEFAULT_BUFFER_SIZE + ? DEFAULT_BUFFER_SIZE : bytes.capacity(); + final byte[] buffer = new byte[bufferSize]; + final ByteBuffer duplicated = bytes.duplicate(); + duplicated.clear(); + int h = bytes.capacity(); + while (duplicated.remaining() > 0) { + final int length = duplicated.remaining() <= bufferSize ? + duplicated.remaining() : bufferSize; + duplicated.get(buffer, 0, length); + h = LiteralByteString.hashCode(h, buffer, 0, length); + } + return h == 0 ? 1 : h; + } + } + + /** + * An empty byte array constant used in generated code. + */ + public static final byte[] EMPTY_BYTE_ARRAY = new byte[0]; + + /** + * An empty byte array constant used in generated code. + */ + public static final ByteBuffer EMPTY_BYTE_BUFFER = + ByteBuffer.wrap(EMPTY_BYTE_ARRAY); + +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/InvalidProtocolBufferException.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/InvalidProtocolBufferException.java new file mode 100644 index 00000000..367fa23b --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/InvalidProtocolBufferException.java @@ -0,0 +1,122 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import java.io.IOException; + +/** + * Thrown when a protocol message being parsed is invalid in some way, + * e.g. it contains a malformed varint or a negative byte length. + * + * @author kenton@google.com Kenton Varda + */ +public class InvalidProtocolBufferException extends IOException { + private static final long serialVersionUID = -1616151763072450476L; + private MessageLite unfinishedMessage = null; + + public InvalidProtocolBufferException(final String description) { + super(description); + } + + /** + * Attaches an unfinished message to the exception to support best-effort + * parsing in {@code Parser} interface. + * + * @return this + */ + public InvalidProtocolBufferException setUnfinishedMessage( + MessageLite unfinishedMessage) { + this.unfinishedMessage = unfinishedMessage; + return this; + } + + /** + * Returns the unfinished message attached to the exception, or null if + * no message is attached. + */ + public MessageLite getUnfinishedMessage() { + return unfinishedMessage; + } + + static InvalidProtocolBufferException truncatedMessage() { + return new InvalidProtocolBufferException( + "While parsing a protocol message, the input ended unexpectedly " + + "in the middle of a field. This could mean either than the " + + "input has been truncated or that an embedded message " + + "misreported its own length."); + } + + static InvalidProtocolBufferException negativeSize() { + return new InvalidProtocolBufferException( + "CodedInputStream encountered an embedded string or message " + + "which claimed to have negative size."); + } + + static InvalidProtocolBufferException malformedVarint() { + return new InvalidProtocolBufferException( + "CodedInputStream encountered a malformed varint."); + } + + static InvalidProtocolBufferException invalidTag() { + return new InvalidProtocolBufferException( + "Protocol message contained an invalid tag (zero)."); + } + + static InvalidProtocolBufferException invalidEndTag() { + return new InvalidProtocolBufferException( + "Protocol message end-group tag did not match expected tag."); + } + + static InvalidProtocolBufferException invalidWireType() { + return new InvalidProtocolBufferException( + "Protocol message tag had invalid wire type."); + } + + static InvalidProtocolBufferException recursionLimitExceeded() { + return new InvalidProtocolBufferException( + "Protocol message had too many levels of nesting. May be malicious. " + + "Use CodedInputStream.setRecursionLimit() to increase the depth limit."); + } + + static InvalidProtocolBufferException sizeLimitExceeded() { + return new InvalidProtocolBufferException( + "Protocol message was too large. May be malicious. " + + "Use CodedInputStream.setSizeLimit() to increase the size limit."); + } + + static InvalidProtocolBufferException parseFailure() { + return new InvalidProtocolBufferException("Failed to parse the message."); + } + + static InvalidProtocolBufferException invalidUtf8() { + return new InvalidProtocolBufferException("Protocol message had invalid UTF-8."); + } +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/LazyField.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/LazyField.java new file mode 100644 index 00000000..3da8b900 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/LazyField.java @@ -0,0 +1,154 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import java.util.Iterator; +import java.util.Map.Entry; + +/** + * LazyField encapsulates the logic of lazily parsing message fields. It stores + * the message in a ByteString initially and then parse it on-demand. + * + * Most of key methods are implemented in {@link LazyFieldLite} but this class + * can contain default instance of the message to provide {@code hashCode()}, + * {@code euqals()} and {@code toString()}. + * + * @author xiangl@google.com (Xiang Li) + */ +public class LazyField extends LazyFieldLite { + + /** + * Carry a message's default instance which is used by {@code hashCode()}, {@code euqals()} and + * {@code toString()}. + */ + private final MessageLite defaultInstance; + + public LazyField(MessageLite defaultInstance, + ExtensionRegistryLite extensionRegistry, ByteString bytes) { + super(extensionRegistry, bytes); + + this.defaultInstance = defaultInstance; + } + + @Override + public boolean containsDefaultInstance() { + return super.containsDefaultInstance() || value == defaultInstance; + } + + public MessageLite getValue() { + return getValue(defaultInstance); + } + + @Override + public int hashCode() { + return getValue().hashCode(); + } + + @Override + public boolean equals(Object obj) { + return getValue().equals(obj); + } + + @Override + public String toString() { + return getValue().toString(); + } + + // ==================================================== + + /** + * LazyEntry and LazyIterator are used to encapsulate the LazyField, when + * users iterate all fields from FieldSet. + */ + static class LazyEntry implements Entry { + private Entry entry; + + private LazyEntry(Entry entry) { + this.entry = entry; + } + + // @Override + public K getKey() { + return entry.getKey(); + } + + // @Override + public Object getValue() { + LazyField field = entry.getValue(); + if (field == null) { + return null; + } + return field.getValue(); + } + + public LazyField getField() { + return entry.getValue(); + } + + // @Override + public Object setValue(Object value) { + if (!(value instanceof MessageLite)) { + throw new IllegalArgumentException( + "LazyField now only used for MessageSet, " + + "and the value of MessageSet must be an instance of MessageLite"); + } + return entry.getValue().setValue((MessageLite) value); + } + } + + static class LazyIterator implements Iterator> { + private Iterator> iterator; + + public LazyIterator(Iterator> iterator) { + this.iterator = iterator; + } + + // @Override + public boolean hasNext() { + return iterator.hasNext(); + } + + @SuppressWarnings("unchecked") + // @Override + public Entry next() { + Entry entry = iterator.next(); + if (entry.getValue() instanceof LazyField) { + return new LazyEntry((Entry) entry); + } + return (Entry) entry; + } + + // @Override + public void remove() { + iterator.remove(); + } + } +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/LazyFieldLite.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/LazyFieldLite.java new file mode 100644 index 00000000..1fc80e87 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/LazyFieldLite.java @@ -0,0 +1,176 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import java.io.IOException; + +/** + * LazyFieldLite encapsulates the logic of lazily parsing message fields. It stores + * the message in a ByteString initially and then parse it on-demand. + * + * LazyField is thread-compatible e.g. concurrent read are safe, however, + * synchronizations are needed under read/write situations. + * + * This class is internal implementation detail, so you don't need to use it directly. + * + * @author xiangl@google.com (Xiang Li) + */ +public class LazyFieldLite { + private ByteString bytes; + private ExtensionRegistryLite extensionRegistry; + private volatile boolean isDirty = false; + + protected volatile MessageLite value; + + public LazyFieldLite(ExtensionRegistryLite extensionRegistry, ByteString bytes) { + this.extensionRegistry = extensionRegistry; + this.bytes = bytes; + } + + public LazyFieldLite() { + } + + public static LazyFieldLite fromValue(MessageLite value) { + LazyFieldLite lf = new LazyFieldLite(); + lf.setValue(value); + return lf; + } + + public boolean containsDefaultInstance() { + return value == null && bytes == null; + } + + public void clear() { + bytes = null; + value = null; + extensionRegistry = null; + isDirty = true; + } + + /** + * Returns message instance. At first time, serialized data is parsed by + * {@code defaultInstance.getParserForType()}. + * + * @param defaultInstance its message's default instance. It's also used to get parser for the + * message type. + */ + public MessageLite getValue(MessageLite defaultInstance) { + ensureInitialized(defaultInstance); + return value; + } + + /** + * LazyField is not thread-safe for write access. Synchronizations are needed + * under read/write situations. + */ + public MessageLite setValue(MessageLite value) { + MessageLite originalValue = this.value; + this.value = value; + bytes = null; + isDirty = true; + return originalValue; + } + + public void merge(LazyFieldLite value) { + if (value.containsDefaultInstance()) { + return; + } + + if (bytes == null) { + this.bytes = value.bytes; + } else { + this.bytes.concat(value.toByteString()); + } + isDirty = false; + } + + public void setByteString(ByteString bytes, ExtensionRegistryLite extensionRegistry) { + this.bytes = bytes; + this.extensionRegistry = extensionRegistry; + isDirty = false; + } + + public ExtensionRegistryLite getExtensionRegistry() { + return extensionRegistry; + } + + /** + * Due to the optional field can be duplicated at the end of serialized + * bytes, which will make the serialized size changed after LazyField + * parsed. Be careful when using this method. + */ + public int getSerializedSize() { + if (isDirty) { + return value.getSerializedSize(); + } + return bytes.size(); + } + + public ByteString toByteString() { + if (!isDirty) { + return bytes; + } + synchronized (this) { + if (!isDirty) { + return bytes; + } + if (value == null) { + bytes = ByteString.EMPTY; + } else { + bytes = value.toByteString(); + } + isDirty = false; + return bytes; + } + } + + protected void ensureInitialized(MessageLite defaultInstance) { + if (value != null) { + return; + } + synchronized (this) { + if (value != null) { + return; + } + try { + if (bytes != null) { + value = defaultInstance.getParserForType() + .parseFrom(bytes, extensionRegistry); + } else { + value = defaultInstance; + } + } catch (IOException e) { + // TODO(xiangl): Refactory the API to support the exception thrown from + // lazily load messages. + } + } + } +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/LazyStringArrayList.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/LazyStringArrayList.java new file mode 100644 index 00000000..61c7e1ea --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/LazyStringArrayList.java @@ -0,0 +1,367 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import java.util.Arrays; +import java.util.List; +import java.util.AbstractList; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.RandomAccess; + +/** + * An implementation of {@link LazyStringList} that wraps an ArrayList. Each + * element is one of String, ByteString, or byte[]. It caches the last one + * requested which is most likely the one needed next. This minimizes memory + * usage while satisfying the most common use cases. + *

      + * Note that this implementation is not synchronized. + * If multiple threads access an ArrayList instance concurrently, + * and at least one of the threads modifies the list structurally, it + * must be synchronized externally. (A structural modification is + * any operation that adds or deletes one or more elements, or explicitly + * resizes the backing array; merely setting the value of an element is not + * a structural modification.) This is typically accomplished by + * synchronizing on some object that naturally encapsulates the list. + *

      + * If the implementation is accessed via concurrent reads, this is thread safe. + * Conversions are done in a thread safe manner. It's possible that the + * conversion may happen more than once if two threads attempt to access the + * same element and the modifications were not visible to each other, but this + * will not result in any corruption of the list or change in behavior other + * than performance. + * + * @author jonp@google.com (Jon Perlow) + */ +public class LazyStringArrayList extends AbstractList + implements LazyStringList, RandomAccess { + + public static final LazyStringList EMPTY = + new LazyStringArrayList().getUnmodifiableView(); + + private final List list; + + public LazyStringArrayList() { + list = new ArrayList(); + } + + public LazyStringArrayList(LazyStringList from) { + list = new ArrayList(from.size()); + addAll(from); + } + + public LazyStringArrayList(List from) { + list = new ArrayList(from); + } + + @Override + public String get(int index) { + Object o = list.get(index); + if (o instanceof String) { + return (String) o; + } else if (o instanceof ByteString) { + ByteString bs = (ByteString) o; + String s = bs.toStringUtf8(); + if (bs.isValidUtf8()) { + list.set(index, s); + } + return s; + } else { + byte[] ba = (byte[]) o; + String s = Internal.toStringUtf8(ba); + if (Internal.isValidUtf8(ba)) { + list.set(index, s); + } + return s; + } + } + + @Override + public int size() { + return list.size(); + } + + @Override + public String set(int index, String s) { + Object o = list.set(index, s); + return asString(o); + } + + @Override + public void add(int index, String element) { + list.add(index, element); + modCount++; + } + + @Override + public boolean addAll(Collection c) { + // The default implementation of AbstractCollection.addAll(Collection) + // delegates to add(Object). This implementation instead delegates to + // addAll(int, Collection), which makes a special case for Collections + // which are instances of LazyStringList. + return addAll(size(), c); + } + + @Override + public boolean addAll(int index, Collection c) { + // When copying from another LazyStringList, directly copy the underlying + // elements rather than forcing each element to be decoded to a String. + Collection collection = c instanceof LazyStringList + ? ((LazyStringList) c).getUnderlyingElements() : c; + boolean ret = list.addAll(index, collection); + modCount++; + return ret; + } + + // @Override + public boolean addAllByteString(Collection values) { + boolean ret = list.addAll(values); + modCount++; + return ret; + } + + // @Override + public boolean addAllByteArray(Collection c) { + boolean ret = list.addAll(c); + modCount++; + return ret; + } + + @Override + public String remove(int index) { + Object o = list.remove(index); + modCount++; + return asString(o); + } + + @Override + public void clear() { + list.clear(); + modCount++; + } + + // @Override + public void add(ByteString element) { + list.add(element); + modCount++; + } + + // @Override + public void add(byte[] element) { + list.add(element); + modCount++; + } + + // @Override + public ByteString getByteString(int index) { + Object o = list.get(index); + ByteString b = asByteString(o); + if (b != o) { + list.set(index, b); + } + return b; + } + + // @Override + public byte[] getByteArray(int index) { + Object o = list.get(index); + byte[] b = asByteArray(o); + if (b != o) { + list.set(index, b); + } + return b; + } + + // @Override + public void set(int index, ByteString s) { + list.set(index, s); + } + + // @Override + public void set(int index, byte[] s) { + list.set(index, s); + } + + + private static String asString(Object o) { + if (o instanceof String) { + return (String) o; + } else if (o instanceof ByteString) { + return ((ByteString) o).toStringUtf8(); + } else { + return Internal.toStringUtf8((byte[]) o); + } + } + + private static ByteString asByteString(Object o) { + if (o instanceof ByteString) { + return (ByteString) o; + } else if (o instanceof String) { + return ByteString.copyFromUtf8((String) o); + } else { + return ByteString.copyFrom((byte[]) o); + } + } + + private static byte[] asByteArray(Object o) { + if (o instanceof byte[]) { + return (byte[]) o; + } else if (o instanceof String) { + return Internal.toByteArray((String) o); + } else { + return ((ByteString) o).toByteArray(); + } + } + + // @Override + public List getUnderlyingElements() { + return Collections.unmodifiableList(list); + } + + // @Override + public void mergeFrom(LazyStringList other) { + for (Object o : other.getUnderlyingElements()) { + if (o instanceof byte[]) { + byte[] b = (byte[]) o; + // Byte array's content is mutable so they should be copied rather than + // shared when merging from one message to another. + list.add(Arrays.copyOf(b, b.length)); + } else { + list.add(o); + } + } + } + + private static class ByteArrayListView extends AbstractList + implements RandomAccess { + private final List list; + + ByteArrayListView(List list) { + this.list = list; + } + + @Override + public byte[] get(int index) { + Object o = list.get(index); + byte[] b = asByteArray(o); + if (b != o) { + list.set(index, b); + } + return b; + } + + @Override + public int size() { + return list.size(); + } + + @Override + public byte[] set(int index, byte[] s) { + Object o = list.set(index, s); + modCount++; + return asByteArray(o); + } + + @Override + public void add(int index, byte[] s) { + list.add(index, s); + modCount++; + } + + @Override + public byte[] remove(int index) { + Object o = list.remove(index); + modCount++; + return asByteArray(o); + } + } + + // @Override + public List asByteArrayList() { + return new ByteArrayListView(list); + } + + private static class ByteStringListView extends AbstractList + implements RandomAccess { + private final List list; + + ByteStringListView(List list) { + this.list = list; + } + + @Override + public ByteString get(int index) { + Object o = list.get(index); + ByteString b = asByteString(o); + if (b != o) { + list.set(index, b); + } + return b; + } + + @Override + public int size() { + return list.size(); + } + + @Override + public ByteString set(int index, ByteString s) { + Object o = list.set(index, s); + modCount++; + return asByteString(o); + } + + @Override + public void add(int index, ByteString s) { + list.add(index, s); + modCount++; + } + + @Override + public ByteString remove(int index) { + Object o = list.remove(index); + modCount++; + return asByteString(o); + } + } + + // @Override + public List asByteStringList() { + return new ByteStringListView(list); + } + + // @Override + public LazyStringList getUnmodifiableView() { + return new UnmodifiableLazyStringList(this); + } + +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/LazyStringList.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/LazyStringList.java new file mode 100644 index 00000000..235126b6 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/LazyStringList.java @@ -0,0 +1,163 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import java.util.Collection; +import java.util.List; + +/** + * An interface extending {@code List} that also provides access to the + * items of the list as UTF8-encoded ByteString or byte[] objects. This is + * used by the protocol buffer implementation to support lazily converting bytes + * parsed over the wire to String objects until needed and also increases the + * efficiency of serialization if the String was never requested as the + * ByteString or byte[] is already cached. The ByteString methods are used in + * immutable API only and byte[] methods used in mutable API only for they use + * different representations for string/bytes fields. + * + * @author jonp@google.com (Jon Perlow) + */ +public interface LazyStringList extends ProtocolStringList { + + /** + * Returns the element at the specified position in this list as a ByteString. + * + * @param index index of the element to return + * @return the element at the specified position in this list + * @throws IndexOutOfBoundsException if the index is out of range + * ({@code index < 0 || index >= size()}) + */ + ByteString getByteString(int index); + + /** + * Returns the element at the specified position in this list as byte[]. + * + * @param index index of the element to return + * @return the element at the specified position in this list + * @throws IndexOutOfBoundsException if the index is out of range + * ({@code index < 0 || index >= size()}) + */ + byte[] getByteArray(int index); + + /** + * Appends the specified element to the end of this list (optional + * operation). + * + * @param element element to be appended to this list + * @throws UnsupportedOperationException if the add operation + * is not supported by this list + */ + void add(ByteString element); + + /** + * Appends the specified element to the end of this list (optional + * operation). + * + * @param element element to be appended to this list + * @throws UnsupportedOperationException if the add operation + * is not supported by this list + */ + void add(byte[] element); + + /** + * Replaces the element at the specified position in this list with the + * specified element (optional operation). + * + * @param index index of the element to replace + * @param element the element to be stored at the specified position + * @throws UnsupportedOperationException if the set operation + * is not supported by this list + * IndexOutOfBoundsException if the index is out of range + * ({@code index < 0 || index >= size()}) + */ + void set(int index, ByteString element); + + /** + * Replaces the element at the specified position in this list with the + * specified element (optional operation). + * + * @param index index of the element to replace + * @param element the element to be stored at the specified position + * @throws UnsupportedOperationException if the set operation + * is not supported by this list + * IndexOutOfBoundsException if the index is out of range + * ({@code index < 0 || index >= size()}) + */ + void set(int index, byte[] element); + + /** + * Appends all elements in the specified ByteString collection to the end of + * this list. + * + * @param c collection whose elements are to be added to this list + * @return true if this list changed as a result of the call + * @throws UnsupportedOperationException if the addAllByteString + * operation is not supported by this list + */ + boolean addAllByteString(Collection c); + + /** + * Appends all elements in the specified byte[] collection to the end of + * this list. + * + * @param c collection whose elements are to be added to this list + * @return true if this list changed as a result of the call + * @throws UnsupportedOperationException if the addAllByteArray + * operation is not supported by this list + */ + boolean addAllByteArray(Collection c); + + /** + * Returns an unmodifiable List of the underlying elements, each of which is + * either a {@code String} or its equivalent UTF-8 encoded {@code ByteString} + * or byte[]. It is an error for the caller to modify the returned + * List, and attempting to do so will result in an + * {@link UnsupportedOperationException}. + */ + List getUnderlyingElements(); + + /** + * Merges all elements from another LazyStringList into this one. This method + * differs from {@link #addAll(Collection)} on that underlying byte arrays are + * copied instead of reference shared. Immutable API doesn't need to use this + * method as byte[] is not used there at all. + */ + void mergeFrom(LazyStringList other); + + /** + * Returns a mutable view of this list. Changes to the view will be made into + * the original list. This method is used in mutable API only. + */ + List asByteArrayList(); + + /** Returns an unmodifiable view of the list. */ + LazyStringList getUnmodifiableView(); +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/LiteralByteString.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/LiteralByteString.java new file mode 100644 index 00000000..83e71e93 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/LiteralByteString.java @@ -0,0 +1,362 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.UnsupportedEncodingException; +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.List; +import java.util.NoSuchElementException; + +/** + * This class implements a {@link com.google.protobuf.ByteString} backed by a + * single array of bytes, contiguous in memory. It supports substring by + * pointing to only a sub-range of the underlying byte array, meaning that a + * substring will reference the full byte-array of the string it's made from, + * exactly as with {@link String}. + * + * @author carlanton@google.com (Carl Haverl) + */ +class LiteralByteString extends ByteString { + + protected final byte[] bytes; + + /** + * Creates a {@code LiteralByteString} backed by the given array, without + * copying. + * + * @param bytes array to wrap + */ + LiteralByteString(byte[] bytes) { + this.bytes = bytes; + } + + @Override + public byte byteAt(int index) { + // Unlike most methods in this class, this one is a direct implementation + // ignoring the potential offset because we need to do range-checking in the + // substring case anyway. + return bytes[index]; + } + + @Override + public int size() { + return bytes.length; + } + + // ================================================================= + // ByteString -> substring + + @Override + public ByteString substring(int beginIndex, int endIndex) { + if (beginIndex < 0) { + throw new IndexOutOfBoundsException( + "Beginning index: " + beginIndex + " < 0"); + } + if (endIndex > size()) { + throw new IndexOutOfBoundsException("End index: " + endIndex + " > " + + size()); + } + int substringLength = endIndex - beginIndex; + if (substringLength < 0) { + throw new IndexOutOfBoundsException( + "Beginning index larger than ending index: " + beginIndex + ", " + + endIndex); + } + + ByteString result; + if (substringLength == 0) { + result = ByteString.EMPTY; + } else { + result = new BoundedByteString(bytes, getOffsetIntoBytes() + beginIndex, + substringLength); + } + return result; + } + + // ================================================================= + // ByteString -> byte[] + + @Override + protected void copyToInternal(byte[] target, int sourceOffset, + int targetOffset, int numberToCopy) { + // Optimized form, not for subclasses, since we don't call + // getOffsetIntoBytes() or check the 'numberToCopy' parameter. + System.arraycopy(bytes, sourceOffset, target, targetOffset, numberToCopy); + } + + @Override + public void copyTo(ByteBuffer target) { + target.put(bytes, getOffsetIntoBytes(), size()); // Copies bytes + } + + @Override + public ByteBuffer asReadOnlyByteBuffer() { + ByteBuffer byteBuffer = + ByteBuffer.wrap(bytes, getOffsetIntoBytes(), size()); + return byteBuffer.asReadOnlyBuffer(); + } + + @Override + public List asReadOnlyByteBufferList() { + // Return the ByteBuffer generated by asReadOnlyByteBuffer() as a singleton + List result = new ArrayList(1); + result.add(asReadOnlyByteBuffer()); + return result; + } + + @Override + public void writeTo(OutputStream outputStream) throws IOException { + outputStream.write(toByteArray()); + } + + @Override + void writeToInternal(OutputStream outputStream, int sourceOffset, + int numberToWrite) throws IOException { + outputStream.write(bytes, getOffsetIntoBytes() + sourceOffset, + numberToWrite); + } + + @Override + public String toString(String charsetName) + throws UnsupportedEncodingException { + return new String(bytes, getOffsetIntoBytes(), size(), charsetName); + } + + // ================================================================= + // UTF-8 decoding + + @Override + public boolean isValidUtf8() { + int offset = getOffsetIntoBytes(); + return Utf8.isValidUtf8(bytes, offset, offset + size()); + } + + @Override + protected int partialIsValidUtf8(int state, int offset, int length) { + int index = getOffsetIntoBytes() + offset; + return Utf8.partialIsValidUtf8(state, bytes, index, index + length); + } + + // ================================================================= + // equals() and hashCode() + + @Override + public boolean equals(Object other) { + if (other == this) { + return true; + } + if (!(other instanceof ByteString)) { + return false; + } + + if (size() != ((ByteString) other).size()) { + return false; + } + if (size() == 0) { + return true; + } + + if (other instanceof LiteralByteString) { + return equalsRange((LiteralByteString) other, 0, size()); + } else if (other instanceof RopeByteString) { + return other.equals(this); + } else { + throw new IllegalArgumentException( + "Has a new type of ByteString been created? Found " + + other.getClass()); + } + } + + /** + * Check equality of the substring of given length of this object starting at + * zero with another {@code LiteralByteString} substring starting at offset. + * + * @param other what to compare a substring in + * @param offset offset into other + * @param length number of bytes to compare + * @return true for equality of substrings, else false. + */ + boolean equalsRange(LiteralByteString other, int offset, int length) { + if (length > other.size()) { + throw new IllegalArgumentException( + "Length too large: " + length + size()); + } + if (offset + length > other.size()) { + throw new IllegalArgumentException( + "Ran off end of other: " + offset + ", " + length + ", " + + other.size()); + } + + byte[] thisBytes = bytes; + byte[] otherBytes = other.bytes; + int thisLimit = getOffsetIntoBytes() + length; + for (int thisIndex = getOffsetIntoBytes(), otherIndex = + other.getOffsetIntoBytes() + offset; + (thisIndex < thisLimit); ++thisIndex, ++otherIndex) { + if (thisBytes[thisIndex] != otherBytes[otherIndex]) { + return false; + } + } + return true; + } + + /** + * Cached hash value. Intentionally accessed via a data race, which + * is safe because of the Java Memory Model's "no out-of-thin-air values" + * guarantees for ints. + */ + private int hash = 0; + + /** + * Compute the hashCode using the traditional algorithm from {@link + * ByteString}. + * + * @return hashCode value + */ + @Override + public int hashCode() { + int h = hash; + + if (h == 0) { + int size = size(); + h = partialHash(size, 0, size); + if (h == 0) { + h = 1; + } + hash = h; + } + return h; + } + + @Override + protected int peekCachedHashCode() { + return hash; + } + + @Override + protected int partialHash(int h, int offset, int length) { + return hashCode(h, bytes, getOffsetIntoBytes() + offset, length); + } + + static int hashCode(int h, byte[] bytes, int offset, int length) { + for (int i = offset; i < offset + length; i++) { + h = h * 31 + bytes[i]; + } + return h; + } + + static int hashCode(byte[] bytes) { + int h = hashCode(bytes.length, bytes, 0, bytes.length); + return h == 0 ? 1 : h; + } + + // ================================================================= + // Input stream + + @Override + public InputStream newInput() { + return new ByteArrayInputStream(bytes, getOffsetIntoBytes(), + size()); // No copy + } + + @Override + public CodedInputStream newCodedInput() { + // We trust CodedInputStream not to modify the bytes, or to give anyone + // else access to them. + return CodedInputStream.newInstance(this); + } + + // ================================================================= + // ByteIterator + + @Override + public ByteIterator iterator() { + return new LiteralByteIterator(); + } + + private class LiteralByteIterator implements ByteIterator { + private int position; + private final int limit; + + private LiteralByteIterator() { + position = 0; + limit = size(); + } + + public boolean hasNext() { + return (position < limit); + } + + public Byte next() { + // Boxing calls Byte.valueOf(byte), which does not instantiate. + return nextByte(); + } + + public byte nextByte() { + try { + return bytes[position++]; + } catch (ArrayIndexOutOfBoundsException e) { + throw new NoSuchElementException(e.getMessage()); + } + } + + public void remove() { + throw new UnsupportedOperationException(); + } + } + + // ================================================================= + // Internal methods + + @Override + protected int getTreeDepth() { + return 0; + } + + @Override + protected boolean isBalanced() { + return true; + } + + /** + * Offset into {@code bytes[]} to use, non-zero for substrings. + * + * @return always 0 for this class + */ + protected int getOffsetIntoBytes() { + return 0; + } +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/Message.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/Message.java new file mode 100644 index 00000000..5673d3bb --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/Message.java @@ -0,0 +1,244 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// TODO(kenton): Use generics? E.g. Builder, then +// mergeFrom*() could return BuilderType for better type-safety. + +package com.google.protobuf; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Map; + +/** + * Abstract interface implemented by Protocol Message objects. + *

      + * See also {@link MessageLite}, which defines most of the methods that typical + * users care about. {@link Message} adds to it methods that are not available + * in the "lite" runtime. The biggest added features are introspection and + * reflection -- i.e., getting descriptors for the message type and accessing + * the field values dynamically. + * + * @author kenton@google.com Kenton Varda + */ +public interface Message extends MessageLite, MessageOrBuilder { + + // (From MessageLite, re-declared here only for return type covariance.) + Parser getParserForType(); + + + // ----------------------------------------------------------------- + // Comparison and hashing + + /** + * Compares the specified object with this message for equality. Returns + * {@code true} if the given object is a message of the same type (as + * defined by {@code getDescriptorForType()}) and has identical values for + * all of its fields. Subclasses must implement this; inheriting + * {@code Object.equals()} is incorrect. + * + * @param other object to be compared for equality with this message + * @return {@code true} if the specified object is equal to this message + */ + @Override + boolean equals(Object other); + + /** + * Returns the hash code value for this message. The hash code of a message + * should mix the message's type (object identity of the descriptor) with its + * contents (known and unknown field values). Subclasses must implement this; + * inheriting {@code Object.hashCode()} is incorrect. + * + * @return the hash code value for this message + * @see Map#hashCode() + */ + @Override + int hashCode(); + + // ----------------------------------------------------------------- + // Convenience methods. + + /** + * Converts the message to a string in protocol buffer text format. This is + * just a trivial wrapper around {@link + * TextFormat#printToString(MessageOrBuilder)}. + */ + @Override + String toString(); + + // ================================================================= + // Builders + + // (From MessageLite, re-declared here only for return type covariance.) + Builder newBuilderForType(); + Builder toBuilder(); + + /** + * Abstract interface implemented by Protocol Message builders. + */ + interface Builder extends MessageLite.Builder, MessageOrBuilder { + // (From MessageLite.Builder, re-declared here only for return type + // covariance.) + Builder clear(); + + /** + * Merge {@code other} into the message being built. {@code other} must + * have the exact same type as {@code this} (i.e. + * {@code getDescriptorForType() == other.getDescriptorForType()}). + * + * Merging occurs as follows. For each field:
      + * * For singular primitive fields, if the field is set in {@code other}, + * then {@code other}'s value overwrites the value in this message.
      + * * For singular message fields, if the field is set in {@code other}, + * it is merged into the corresponding sub-message of this message + * using the same merging rules.
      + * * For repeated fields, the elements in {@code other} are concatenated + * with the elements in this message. + * + * This is equivalent to the {@code Message::MergeFrom} method in C++. + */ + Builder mergeFrom(Message other); + + // (From MessageLite.Builder, re-declared here only for return type + // covariance.) + Message build(); + Message buildPartial(); + Builder clone(); + Builder mergeFrom(CodedInputStream input) throws IOException; + Builder mergeFrom(CodedInputStream input, + ExtensionRegistryLite extensionRegistry) + throws IOException; + + /** + * Get the message's type's descriptor. + * See {@link Message#getDescriptorForType()}. + */ + Descriptors.Descriptor getDescriptorForType(); + + /** + * Create a Builder for messages of the appropriate type for the given + * field. Messages built with this can then be passed to setField(), + * setRepeatedField(), or addRepeatedField(). + */ + Builder newBuilderForField(Descriptors.FieldDescriptor field); + + /** + * Get a nested builder instance for the given field. + *

      + * Normally, we hold a reference to the immutable message object for the + * message type field. Some implementations(the generated message builders), + * however, can also hold a reference to the builder object (a nested + * builder) for the field. + *

      + * If the field is already backed up by a nested builder, the nested builder + * will be returned. Otherwise, a new field builder will be created and + * returned. The original message field (if exist) will be merged into the + * field builder, which will then be nested into its parent builder. + *

      + * NOTE: implementations that do not support nested builders will throw + * UnsupportedException. + */ + Builder getFieldBuilder(Descriptors.FieldDescriptor field); + + /** + * Sets a field to the given value. The value must be of the correct type + * for this field, i.e. the same type that + * {@link Message#getField(Descriptors.FieldDescriptor)} would return. + */ + Builder setField(Descriptors.FieldDescriptor field, Object value); + + /** + * Clears the field. This is exactly equivalent to calling the generated + * "clear" accessor method corresponding to the field. + */ + Builder clearField(Descriptors.FieldDescriptor field); + + /** + * Clears the oneof. This is exactly equivalent to calling the generated + * "clear" accessor method corresponding to the oneof. + */ + Builder clearOneof(Descriptors.OneofDescriptor oneof); + + /** + * Sets an element of a repeated field to the given value. The value must + * be of the correct type for this field, i.e. the same type that + * {@link Message#getRepeatedField(Descriptors.FieldDescriptor,int)} would + * return. + * @throws IllegalArgumentException The field is not a repeated field, or + * {@code field.getContainingType() != getDescriptorForType()}. + */ + Builder setRepeatedField(Descriptors.FieldDescriptor field, + int index, Object value); + + /** + * Like {@code setRepeatedField}, but appends the value as a new element. + * @throws IllegalArgumentException The field is not a repeated field, or + * {@code field.getContainingType() != getDescriptorForType()}. + */ + Builder addRepeatedField(Descriptors.FieldDescriptor field, Object value); + + /** Set the {@link UnknownFieldSet} for this message. */ + Builder setUnknownFields(UnknownFieldSet unknownFields); + + /** + * Merge some unknown fields into the {@link UnknownFieldSet} for this + * message. + */ + Builder mergeUnknownFields(UnknownFieldSet unknownFields); + + // --------------------------------------------------------------- + // Convenience methods. + + // (From MessageLite.Builder, re-declared here only for return type + // covariance.) + Builder mergeFrom(ByteString data) throws InvalidProtocolBufferException; + Builder mergeFrom(ByteString data, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException; + Builder mergeFrom(byte[] data) throws InvalidProtocolBufferException; + Builder mergeFrom(byte[] data, int off, int len) + throws InvalidProtocolBufferException; + Builder mergeFrom(byte[] data, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException; + Builder mergeFrom(byte[] data, int off, int len, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException; + Builder mergeFrom(InputStream input) throws IOException; + Builder mergeFrom(InputStream input, + ExtensionRegistryLite extensionRegistry) + throws IOException; + boolean mergeDelimitedFrom(InputStream input) + throws IOException; + boolean mergeDelimitedFrom(InputStream input, + ExtensionRegistryLite extensionRegistry) + throws IOException; + } +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/MessageLite.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/MessageLite.java new file mode 100644 index 00000000..798b7943 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/MessageLite.java @@ -0,0 +1,320 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// TODO(kenton): Use generics? E.g. Builder, then +// mergeFrom*() could return BuilderType for better type-safety. + +package com.google.protobuf; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; + +/** + * Abstract interface implemented by Protocol Message objects. + * + *

      This interface is implemented by all protocol message objects. Non-lite + * messages additionally implement the Message interface, which is a subclass + * of MessageLite. Use MessageLite instead when you only need the subset of + * features which it supports -- namely, nothing that uses descriptors or + * reflection. You can instruct the protocol compiler to generate classes + * which implement only MessageLite, not the full Message interface, by adding + * the follow line to the .proto file: + *

      + *   option optimize_for = LITE_RUNTIME;
      + * 
      + * + *

      This is particularly useful on resource-constrained systems where the + * full protocol buffers runtime library is too big. + * + *

      Note that on non-constrained systems (e.g. servers) when you need to link + * in lots of protocol definitions, a better way to reduce total code footprint + * is to use {@code optimize_for = CODE_SIZE}. This will make the generated + * code smaller while still supporting all the same features (at the expense of + * speed). {@code optimize_for = LITE_RUNTIME} is best when you only have a + * small number of message types linked into your binary, in which case the + * size of the protocol buffers runtime itself is the biggest problem. + * + * @author kenton@google.com Kenton Varda + */ +public interface MessageLite extends MessageLiteOrBuilder { + + + /** + * Serializes the message and writes it to {@code output}. This does not + * flush or close the stream. + */ + void writeTo(CodedOutputStream output) throws IOException; + + /** + * Get the number of bytes required to encode this message. The result + * is only computed on the first call and memoized after that. + */ + int getSerializedSize(); + + + /** + * Gets the parser for a message of the same type as this message. + */ + Parser getParserForType(); + + // ----------------------------------------------------------------- + // Convenience methods. + + /** + * Serializes the message to a {@code ByteString} and returns it. This is + * just a trivial wrapper around + * {@link #writeTo(CodedOutputStream)}. + */ + ByteString toByteString(); + + /** + * Serializes the message to a {@code byte} array and returns it. This is + * just a trivial wrapper around + * {@link #writeTo(CodedOutputStream)}. + */ + byte[] toByteArray(); + + /** + * Serializes the message and writes it to {@code output}. This is just a + * trivial wrapper around {@link #writeTo(CodedOutputStream)}. This does + * not flush or close the stream. + *

      + * NOTE: Protocol Buffers are not self-delimiting. Therefore, if you write + * any more data to the stream after the message, you must somehow ensure + * that the parser on the receiving end does not interpret this as being + * part of the protocol message. This can be done e.g. by writing the size + * of the message before the data, then making sure to limit the input to + * that size on the receiving end (e.g. by wrapping the InputStream in one + * which limits the input). Alternatively, just use + * {@link #writeDelimitedTo(OutputStream)}. + */ + void writeTo(OutputStream output) throws IOException; + + /** + * Like {@link #writeTo(OutputStream)}, but writes the size of the message + * as a varint before writing the data. This allows more data to be written + * to the stream after the message without the need to delimit the message + * data yourself. Use {@link Builder#mergeDelimitedFrom(InputStream)} (or + * the static method {@code YourMessageType.parseDelimitedFrom(InputStream)}) + * to parse messages written by this method. + */ + void writeDelimitedTo(OutputStream output) throws IOException; + + + // ================================================================= + // Builders + + /** + * Constructs a new builder for a message of the same type as this message. + */ + Builder newBuilderForType(); + + /** + * Constructs a builder initialized with the current message. Use this to + * derive a new message from the current one. + */ + Builder toBuilder(); + + /** + * Abstract interface implemented by Protocol Message builders. + */ + interface Builder extends MessageLiteOrBuilder, Cloneable { + /** Resets all fields to their default values. */ + Builder clear(); + + /** + * Constructs the message based on the state of the Builder. Subsequent + * changes to the Builder will not affect the returned message. + * @throws UninitializedMessageException The message is missing one or more + * required fields (i.e. {@link #isInitialized()} returns false). + * Use {@link #buildPartial()} to bypass this check. + */ + MessageLite build(); + + /** + * Like {@link #build()}, but does not throw an exception if the message + * is missing required fields. Instead, a partial message is returned. + * Subsequent changes to the Builder will not affect the returned message. + */ + MessageLite buildPartial(); + + /** + * Clones the Builder. + * @see Object#clone() + */ + Builder clone(); + + /** + * Parses a message of this type from the input and merges it with this + * message. + * + *

      Warning: This does not verify that all required fields are present in + * the input message. If you call {@link #build()} without setting all + * required fields, it will throw an {@link UninitializedMessageException}, + * which is a {@code RuntimeException} and thus might not be caught. There + * are a few good ways to deal with this: + *

        + *
      • Call {@link #isInitialized()} to verify that all required fields + * are set before building. + *
      • Use {@code buildPartial()} to build, which ignores missing + * required fields. + *
      + * + *

      Note: The caller should call + * {@link CodedInputStream#checkLastTagWas(int)} after calling this to + * verify that the last tag seen was the appropriate end-group tag, + * or zero for EOF. + */ + Builder mergeFrom(CodedInputStream input) throws IOException; + + /** + * Like {@link Builder#mergeFrom(CodedInputStream)}, but also + * parses extensions. The extensions that you want to be able to parse + * must be registered in {@code extensionRegistry}. Extensions not in + * the registry will be treated as unknown fields. + */ + Builder mergeFrom(CodedInputStream input, + ExtensionRegistryLite extensionRegistry) + throws IOException; + + // --------------------------------------------------------------- + // Convenience methods. + + /** + * Parse {@code data} as a message of this type and merge it with the + * message being built. This is just a small wrapper around + * {@link #mergeFrom(CodedInputStream)}. + * + * @return this + */ + Builder mergeFrom(ByteString data) throws InvalidProtocolBufferException; + + /** + * Parse {@code data} as a message of this type and merge it with the + * message being built. This is just a small wrapper around + * {@link #mergeFrom(CodedInputStream,ExtensionRegistryLite)}. + * + * @return this + */ + Builder mergeFrom(ByteString data, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException; + + /** + * Parse {@code data} as a message of this type and merge it with the + * message being built. This is just a small wrapper around + * {@link #mergeFrom(CodedInputStream)}. + * + * @return this + */ + Builder mergeFrom(byte[] data) throws InvalidProtocolBufferException; + + /** + * Parse {@code data} as a message of this type and merge it with the + * message being built. This is just a small wrapper around + * {@link #mergeFrom(CodedInputStream)}. + * + * @return this + */ + Builder mergeFrom(byte[] data, int off, int len) + throws InvalidProtocolBufferException; + + /** + * Parse {@code data} as a message of this type and merge it with the + * message being built. This is just a small wrapper around + * {@link #mergeFrom(CodedInputStream,ExtensionRegistryLite)}. + * + * @return this + */ + Builder mergeFrom(byte[] data, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException; + + /** + * Parse {@code data} as a message of this type and merge it with the + * message being built. This is just a small wrapper around + * {@link #mergeFrom(CodedInputStream,ExtensionRegistryLite)}. + * + * @return this + */ + Builder mergeFrom(byte[] data, int off, int len, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException; + + /** + * Parse a message of this type from {@code input} and merge it with the + * message being built. This is just a small wrapper around + * {@link #mergeFrom(CodedInputStream)}. Note that this method always + * reads the entire input (unless it throws an exception). If you + * want it to stop earlier, you will need to wrap your input in some + * wrapper stream that limits reading. Or, use + * {@link MessageLite#writeDelimitedTo(OutputStream)} to write your message + * and {@link #mergeDelimitedFrom(InputStream)} to read it. + *

      + * Despite usually reading the entire input, this does not close the stream. + * + * @return this + */ + Builder mergeFrom(InputStream input) throws IOException; + + /** + * Parse a message of this type from {@code input} and merge it with the + * message being built. This is just a small wrapper around + * {@link #mergeFrom(CodedInputStream,ExtensionRegistryLite)}. + * + * @return this + */ + Builder mergeFrom(InputStream input, + ExtensionRegistryLite extensionRegistry) + throws IOException; + + /** + * Like {@link #mergeFrom(InputStream)}, but does not read until EOF. + * Instead, the size of the message (encoded as a varint) is read first, + * then the message data. Use + * {@link MessageLite#writeDelimitedTo(OutputStream)} to write messages in + * this format. + * + * @return True if successful, or false if the stream is at EOF when the + * method starts. Any other error (including reaching EOF during + * parsing) will cause an exception to be thrown. + */ + boolean mergeDelimitedFrom(InputStream input) + throws IOException; + + /** + * Like {@link #mergeDelimitedFrom(InputStream)} but supporting extensions. + */ + boolean mergeDelimitedFrom(InputStream input, + ExtensionRegistryLite extensionRegistry) + throws IOException; + } +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/MessageLiteOrBuilder.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/MessageLiteOrBuilder.java new file mode 100644 index 00000000..818386ce --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/MessageLiteOrBuilder.java @@ -0,0 +1,60 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +/** + * Base interface for methods common to {@link MessageLite} + * and {@link MessageLite.Builder} to provide type equivalency. + * + * @author jonp@google.com (Jon Perlow) + */ +public interface MessageLiteOrBuilder { + /** + * Get an instance of the type with no fields set. Because no fields are set, + * all getters for singular fields will return default values and repeated + * fields will appear empty. + * This may or may not be a singleton. This differs from the + * {@code getDefaultInstance()} method of generated message classes in that + * this method is an abstract method of the {@code MessageLite} interface + * whereas {@code getDefaultInstance()} is a static method of a specific + * class. They return the same thing. + */ + MessageLite getDefaultInstanceForType(); + + /** + * Returns true if all required fields in the message and all embedded + * messages are set, false otherwise. + * + *

      See also: {@link MessageOrBuilder#getInitializationErrorString()} + */ + boolean isInitialized(); + +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/MessageOrBuilder.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/MessageOrBuilder.java new file mode 100644 index 00000000..f0fc4859 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/MessageOrBuilder.java @@ -0,0 +1,143 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import java.util.List; +import java.util.Map; + +/** + * Base interface for methods common to {@link Message} and + * {@link Message.Builder} to provide type equivalency. + * + * @author jonp@google.com (Jon Perlow) + */ +public interface MessageOrBuilder extends MessageLiteOrBuilder { + + // (From MessageLite, re-declared here only for return type covariance.) + //@Override (Java 1.6 override semantics, but we must support 1.5) + Message getDefaultInstanceForType(); + + /** + * Returns a list of field paths (e.g. "foo.bar.baz") of required fields + * which are not set in this message. You should call + * {@link MessageLiteOrBuilder#isInitialized()} first to check if there + * are any missing fields, as that method is likely to be much faster + * than this one even when the message is fully-initialized. + */ + List findInitializationErrors(); + + /** + * Returns a comma-delimited list of required fields which are not set + * in this message object. You should call + * {@link MessageLiteOrBuilder#isInitialized()} first to check if there + * are any missing fields, as that method is likely to be much faster + * than this one even when the message is fully-initialized. + */ + String getInitializationErrorString(); + + /** + * Get the message's type's descriptor. This differs from the + * {@code getDescriptor()} method of generated message classes in that + * this method is an abstract method of the {@code Message} interface + * whereas {@code getDescriptor()} is a static method of a specific class. + * They return the same thing. + */ + Descriptors.Descriptor getDescriptorForType(); + + /** + * Returns a collection of all the fields in this message which are set + * and their corresponding values. A singular ("required" or "optional") + * field is set iff hasField() returns true for that field. A "repeated" + * field is set iff getRepeatedFieldCount() is greater than zero. The + * values are exactly what would be returned by calling + * {@link #getField(Descriptors.FieldDescriptor)} for each field. The map + * is guaranteed to be a sorted map, so iterating over it will return fields + * in order by field number. + *
      + * If this is for a builder, the returned map may or may not reflect future + * changes to the builder. Either way, the returned map is itself + * unmodifiable. + */ + Map getAllFields(); + + /** + * Returns true if the given oneof is set. + * @throws IllegalArgumentException if + * {@code oneof.getContainingType() != getDescriptorForType()}. + */ + boolean hasOneof(Descriptors.OneofDescriptor oneof); + + /** + * Obtains the FieldDescriptor if the given oneof is set. Returns null + * if no field is set. + */ + Descriptors.FieldDescriptor getOneofFieldDescriptor( + Descriptors.OneofDescriptor oneof); + + /** + * Returns true if the given field is set. This is exactly equivalent to + * calling the generated "has" accessor method corresponding to the field. + * @throws IllegalArgumentException The field is a repeated field, or + * {@code field.getContainingType() != getDescriptorForType()}. + */ + boolean hasField(Descriptors.FieldDescriptor field); + + /** + * Obtains the value of the given field, or the default value if it is + * not set. For primitive fields, the boxed primitive value is returned. + * For enum fields, the EnumValueDescriptor for the value is returned. For + * embedded message fields, the sub-message is returned. For repeated + * fields, a java.util.List is returned. + */ + Object getField(Descriptors.FieldDescriptor field); + + /** + * Gets the number of elements of a repeated field. This is exactly + * equivalent to calling the generated "Count" accessor method corresponding + * to the field. + * @throws IllegalArgumentException The field is not a repeated field, or + * {@code field.getContainingType() != getDescriptorForType()}. + */ + int getRepeatedFieldCount(Descriptors.FieldDescriptor field); + + /** + * Gets an element of a repeated field. For primitive fields, the boxed + * primitive value is returned. For enum fields, the EnumValueDescriptor + * for the value is returned. For embedded message fields, the sub-message + * is returned. + * @throws IllegalArgumentException The field is not a repeated field, or + * {@code field.getContainingType() != getDescriptorForType()}. + */ + Object getRepeatedField(Descriptors.FieldDescriptor field, int index); + + /** Get the {@link UnknownFieldSet} for this message. */ + UnknownFieldSet getUnknownFields(); +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/MessageReflection.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/MessageReflection.java new file mode 100644 index 00000000..edb5b5c2 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/MessageReflection.java @@ -0,0 +1,931 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import com.google.protobuf.Descriptors.FieldDescriptor; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; + +/** + * Reflection utility methods shared by both mutable and immutable messages. + * + * @author liujisi@google.com (Pherl Liu) + */ +class MessageReflection { + + static void writeMessageTo(Message message, CodedOutputStream output, + boolean alwaysWriteRequiredFields) + throws IOException { + final boolean isMessageSet = + message.getDescriptorForType().getOptions().getMessageSetWireFormat(); + + Map fields = message.getAllFields(); + if (alwaysWriteRequiredFields) { + fields = new TreeMap(fields); + for (final FieldDescriptor field : + message.getDescriptorForType().getFields()) { + if (field.isRequired() && !fields.containsKey(field)) { + fields.put(field, message.getField(field)); + } + } + } + for (final Map.Entry entry : + fields.entrySet()) { + final Descriptors.FieldDescriptor field = entry.getKey(); + final Object value = entry.getValue(); + if (isMessageSet && field.isExtension() && + field.getType() == Descriptors.FieldDescriptor.Type.MESSAGE && + !field.isRepeated()) { + output.writeMessageSetExtension(field.getNumber(), (Message) value); + } else { + FieldSet.writeField(field, value, output); + } + } + + final UnknownFieldSet unknownFields = message.getUnknownFields(); + if (isMessageSet) { + unknownFields.writeAsMessageSetTo(output); + } else { + unknownFields.writeTo(output); + } + } + + static int getSerializedSize(Message message) { + int size = 0; + final boolean isMessageSet = + message.getDescriptorForType().getOptions().getMessageSetWireFormat(); + + for (final Map.Entry entry : + message.getAllFields().entrySet()) { + final Descriptors.FieldDescriptor field = entry.getKey(); + final Object value = entry.getValue(); + if (isMessageSet && field.isExtension() && + field.getType() == Descriptors.FieldDescriptor.Type.MESSAGE && + !field.isRepeated()) { + size += CodedOutputStream.computeMessageSetExtensionSize( + field.getNumber(), (Message) value); + } else { + size += FieldSet.computeFieldSize(field, value); + } + } + + final UnknownFieldSet unknownFields = message.getUnknownFields(); + if (isMessageSet) { + size += unknownFields.getSerializedSizeAsMessageSet(); + } else { + size += unknownFields.getSerializedSize(); + } + return size; + } + + static String delimitWithCommas(List parts) { + StringBuilder result = new StringBuilder(); + for (String part : parts) { + if (result.length() > 0) { + result.append(", "); + } + result.append(part); + } + return result.toString(); + } + + @SuppressWarnings("unchecked") + static boolean isInitialized(MessageOrBuilder message) { + // Check that all required fields are present. + for (final Descriptors.FieldDescriptor field : message + .getDescriptorForType() + .getFields()) { + if (field.isRequired()) { + if (!message.hasField(field)) { + return false; + } + } + } + + // Check that embedded messages are initialized. + for (final Map.Entry entry : + message.getAllFields().entrySet()) { + final Descriptors.FieldDescriptor field = entry.getKey(); + if (field.getJavaType() == Descriptors.FieldDescriptor.JavaType.MESSAGE) { + if (field.isRepeated()) { + for (final Message element + : (List) entry.getValue()) { + if (!element.isInitialized()) { + return false; + } + } + } else { + if (!((Message) entry.getValue()).isInitialized()) { + return false; + } + } + } + } + + return true; + } + + private static String subMessagePrefix(final String prefix, + final Descriptors.FieldDescriptor field, + final int index) { + final StringBuilder result = new StringBuilder(prefix); + if (field.isExtension()) { + result.append('(') + .append(field.getFullName()) + .append(')'); + } else { + result.append(field.getName()); + } + if (index != -1) { + result.append('[') + .append(index) + .append(']'); + } + result.append('.'); + return result.toString(); + } + + private static void findMissingFields(final MessageOrBuilder message, + final String prefix, + final List results) { + for (final Descriptors.FieldDescriptor field : + message.getDescriptorForType().getFields()) { + if (field.isRequired() && !message.hasField(field)) { + results.add(prefix + field.getName()); + } + } + + for (final Map.Entry entry : + message.getAllFields().entrySet()) { + final Descriptors.FieldDescriptor field = entry.getKey(); + final Object value = entry.getValue(); + + if (field.getJavaType() == Descriptors.FieldDescriptor.JavaType.MESSAGE) { + if (field.isRepeated()) { + int i = 0; + for (final Object element : (List) value) { + findMissingFields((MessageOrBuilder) element, + subMessagePrefix(prefix, field, i++), + results); + } + } else { + if (message.hasField(field)) { + findMissingFields((MessageOrBuilder) value, + subMessagePrefix(prefix, field, -1), + results); + } + } + } + } + } + + /** + * Populates {@code this.missingFields} with the full "path" of each missing + * required field in the given message. + */ + static List findMissingFields( + final MessageOrBuilder message) { + final List results = new ArrayList(); + findMissingFields(message, "", results); + return results; + } + + static interface MergeTarget { + enum ContainerType { + MESSAGE, EXTENSION_SET + } + + /** + * Returns the descriptor for the target. + */ + public Descriptors.Descriptor getDescriptorForType(); + + public ContainerType getContainerType(); + + public ExtensionRegistry.ExtensionInfo findExtensionByName( + ExtensionRegistry registry, String name); + + public ExtensionRegistry.ExtensionInfo findExtensionByNumber( + ExtensionRegistry registry, Descriptors.Descriptor containingType, + int fieldNumber); + + /** + * Obtains the value of the given field, or the default value if it is not + * set. For primitive fields, the boxed primitive value is returned. For + * enum fields, the EnumValueDescriptor for the value is returned. For + * embedded message fields, the sub-message is returned. For repeated + * fields, a java.util.List is returned. + */ + public Object getField(Descriptors.FieldDescriptor field); + + /** + * Returns true if the given field is set. This is exactly equivalent to + * calling the generated "has" accessor method corresponding to the field. + * + * @throws IllegalArgumentException The field is a repeated field, or {@code + * field.getContainingType() != getDescriptorForType()}. + */ + boolean hasField(Descriptors.FieldDescriptor field); + + /** + * Sets a field to the given value. The value must be of the correct type + * for this field, i.e. the same type that + * {@link Message#getField(Descriptors.FieldDescriptor)} + * would return. + */ + MergeTarget setField(Descriptors.FieldDescriptor field, Object value); + + /** + * Clears the field. This is exactly equivalent to calling the generated + * "clear" accessor method corresponding to the field. + */ + MergeTarget clearField(Descriptors.FieldDescriptor field); + + /** + * Sets an element of a repeated field to the given value. The value must + * be of the correct type for this field, i.e. the same type that {@link + * Message#getRepeatedField(Descriptors.FieldDescriptor, int)} would return. + * + * @throws IllegalArgumentException The field is not a repeated field, or + * {@code field.getContainingType() != + * getDescriptorForType()}. + */ + MergeTarget setRepeatedField(Descriptors.FieldDescriptor field, + int index, Object value); + + /** + * Like {@code setRepeatedField}, but appends the value as a new element. + * + * @throws IllegalArgumentException The field is not a repeated field, or + * {@code field.getContainingType() != + * getDescriptorForType()}. + */ + MergeTarget addRepeatedField(Descriptors.FieldDescriptor field, + Object value); + + /** + * Returns true if the given oneof is set. + * + * @throws IllegalArgumentException if + * {@code oneof.getContainingType() != getDescriptorForType()}. + */ + boolean hasOneof(Descriptors.OneofDescriptor oneof); + + /** + * Clears the oneof. This is exactly equivalent to calling the generated + * "clear" accessor method corresponding to the oneof. + */ + MergeTarget clearOneof(Descriptors.OneofDescriptor oneof); + + /** + * Obtains the FieldDescriptor if the given oneof is set. Returns null + * if no field is set. + */ + Descriptors.FieldDescriptor getOneofFieldDescriptor(Descriptors.OneofDescriptor oneof); + + /** + * Parse the input stream into a sub field group defined based on either + * FieldDescriptor or the default instance. + */ + Object parseGroup(CodedInputStream input, ExtensionRegistryLite registry, + Descriptors.FieldDescriptor descriptor, Message defaultInstance) + throws IOException; + + /** + * Parse the input stream into a sub field message defined based on either + * FieldDescriptor or the default instance. + */ + Object parseMessage(CodedInputStream input, ExtensionRegistryLite registry, + Descriptors.FieldDescriptor descriptor, Message defaultInstance) + throws IOException; + + /** + * Parse from a ByteString into a sub field message defined based on either + * FieldDescriptor or the default instance. There isn't a varint indicating + * the length of the message at the beginning of the input ByteString. + */ + Object parseMessageFromBytes( + ByteString bytes, ExtensionRegistryLite registry, + Descriptors.FieldDescriptor descriptor, Message defaultInstance) + throws IOException; + + /** + * Read a primitive field from input. Note that builders and mutable + * messages may use different Java types to represent a primtive field. + */ + Object readPrimitiveField( + CodedInputStream input, WireFormat.FieldType type, + boolean checkUtf8) throws IOException; + + /** + * Returns a new merge target for a sub-field. When defaultInstance is + * provided, it indicates the descriptor is for an extension type, and + * implementations should create a new instance from the defaultInstance + * prototype directly. + */ + MergeTarget newMergeTargetForField( + Descriptors.FieldDescriptor descriptor, + Message defaultInstance); + + /** + * Finishes the merge and returns the underlying object. + */ + Object finish(); + } + + static class BuilderAdapter implements MergeTarget { + + private final Message.Builder builder; + + public Descriptors.Descriptor getDescriptorForType() { + return builder.getDescriptorForType(); + } + + public BuilderAdapter(Message.Builder builder) { + this.builder = builder; + } + + public Object getField(Descriptors.FieldDescriptor field) { + return builder.getField(field); + } + + @Override + public boolean hasField(Descriptors.FieldDescriptor field) { + return builder.hasField(field); + } + + public MergeTarget setField(Descriptors.FieldDescriptor field, + Object value) { + builder.setField(field, value); + return this; + } + + public MergeTarget clearField(Descriptors.FieldDescriptor field) { + builder.clearField(field); + return this; + } + + public MergeTarget setRepeatedField( + Descriptors.FieldDescriptor field, int index, Object value) { + builder.setRepeatedField(field, index, value); + return this; + } + + public MergeTarget addRepeatedField( + Descriptors.FieldDescriptor field, Object value) { + builder.addRepeatedField(field, value); + return this; + } + + @Override + public boolean hasOneof(Descriptors.OneofDescriptor oneof) { + return builder.hasOneof(oneof); + } + + @Override + public MergeTarget clearOneof(Descriptors.OneofDescriptor oneof) { + builder.clearOneof(oneof); + return this; + } + + @Override + public Descriptors.FieldDescriptor getOneofFieldDescriptor(Descriptors.OneofDescriptor oneof) { + return builder.getOneofFieldDescriptor(oneof); + } + + public ContainerType getContainerType() { + return ContainerType.MESSAGE; + } + + public ExtensionRegistry.ExtensionInfo findExtensionByName( + ExtensionRegistry registry, String name) { + return registry.findImmutableExtensionByName(name); + } + + public ExtensionRegistry.ExtensionInfo findExtensionByNumber( + ExtensionRegistry registry, Descriptors.Descriptor containingType, + int fieldNumber) { + return registry.findImmutableExtensionByNumber(containingType, + fieldNumber); + } + + public Object parseGroup(CodedInputStream input, + ExtensionRegistryLite extensionRegistry, + Descriptors.FieldDescriptor field, Message defaultInstance) + throws IOException { + Message.Builder subBuilder; + // When default instance is not null. The field is an extension field. + if (defaultInstance != null) { + subBuilder = defaultInstance.newBuilderForType(); + } else { + subBuilder = builder.newBuilderForField(field); + } + if (!field.isRepeated()) { + Message originalMessage = (Message) getField(field); + if (originalMessage != null) { + subBuilder.mergeFrom(originalMessage); + } + } + input.readGroup(field.getNumber(), subBuilder, extensionRegistry); + return subBuilder.buildPartial(); + } + + public Object parseMessage(CodedInputStream input, + ExtensionRegistryLite extensionRegistry, + Descriptors.FieldDescriptor field, Message defaultInstance) + throws IOException { + Message.Builder subBuilder; + // When default instance is not null. The field is an extension field. + if (defaultInstance != null) { + subBuilder = defaultInstance.newBuilderForType(); + } else { + subBuilder = builder.newBuilderForField(field); + } + if (!field.isRepeated()) { + Message originalMessage = (Message) getField(field); + if (originalMessage != null) { + subBuilder.mergeFrom(originalMessage); + } + } + input.readMessage(subBuilder, extensionRegistry); + return subBuilder.buildPartial(); + } + + public Object parseMessageFromBytes(ByteString bytes, + ExtensionRegistryLite extensionRegistry, + Descriptors.FieldDescriptor field, Message defaultInstance) + throws IOException { + Message.Builder subBuilder; + // When default instance is not null. The field is an extension field. + if (defaultInstance != null) { + subBuilder = defaultInstance.newBuilderForType(); + } else { + subBuilder = builder.newBuilderForField(field); + } + if (!field.isRepeated()) { + Message originalMessage = (Message) getField(field); + if (originalMessage != null) { + subBuilder.mergeFrom(originalMessage); + } + } + subBuilder.mergeFrom(bytes, extensionRegistry); + return subBuilder.buildPartial(); + } + + public MergeTarget newMergeTargetForField(Descriptors.FieldDescriptor field, + Message defaultInstance) { + if (defaultInstance != null) { + return new BuilderAdapter( + defaultInstance.newBuilderForType()); + } else { + return new BuilderAdapter(builder.newBuilderForField(field)); + } + } + + public Object readPrimitiveField( + CodedInputStream input, WireFormat.FieldType type, + boolean checkUtf8) throws IOException { + return FieldSet.readPrimitiveField(input, type, checkUtf8); + } + + public Object finish() { + return builder.buildPartial(); + } + } + + + static class ExtensionAdapter implements MergeTarget { + + private final FieldSet extensions; + + ExtensionAdapter(FieldSet extensions) { + this.extensions = extensions; + } + + public Descriptors.Descriptor getDescriptorForType() { + throw new UnsupportedOperationException( + "getDescriptorForType() called on FieldSet object"); + } + + public Object getField(Descriptors.FieldDescriptor field) { + return extensions.getField(field); + } + + public boolean hasField(Descriptors.FieldDescriptor field) { + return extensions.hasField(field); + } + + public MergeTarget setField(Descriptors.FieldDescriptor field, + Object value) { + extensions.setField(field, value); + return this; + } + + public MergeTarget clearField(Descriptors.FieldDescriptor field) { + extensions.clearField(field); + return this; + } + + public MergeTarget setRepeatedField( + Descriptors.FieldDescriptor field, int index, Object value) { + extensions.setRepeatedField(field, index, value); + return this; + } + + public MergeTarget addRepeatedField( + Descriptors.FieldDescriptor field, Object value) { + extensions.addRepeatedField(field, value); + return this; + } + + @Override + public boolean hasOneof(Descriptors.OneofDescriptor oneof) { + return false; + } + + @Override + public MergeTarget clearOneof(Descriptors.OneofDescriptor oneof) { + // Nothing to clear. + return this; + } + + @Override + public Descriptors.FieldDescriptor getOneofFieldDescriptor(Descriptors.OneofDescriptor oneof) { + return null; + } + + public ContainerType getContainerType() { + return ContainerType.EXTENSION_SET; + } + + public ExtensionRegistry.ExtensionInfo findExtensionByName( + ExtensionRegistry registry, String name) { + return registry.findImmutableExtensionByName(name); + } + + public ExtensionRegistry.ExtensionInfo findExtensionByNumber( + ExtensionRegistry registry, Descriptors.Descriptor containingType, + int fieldNumber) { + return registry.findImmutableExtensionByNumber(containingType, + fieldNumber); + } + + public Object parseGroup(CodedInputStream input, + ExtensionRegistryLite registry, Descriptors.FieldDescriptor field, + Message defaultInstance) throws IOException { + Message.Builder subBuilder = + defaultInstance.newBuilderForType(); + if (!field.isRepeated()) { + Message originalMessage = (Message) getField(field); + if (originalMessage != null) { + subBuilder.mergeFrom(originalMessage); + } + } + input.readGroup(field.getNumber(), subBuilder, registry); + return subBuilder.buildPartial(); + } + + public Object parseMessage(CodedInputStream input, + ExtensionRegistryLite registry, Descriptors.FieldDescriptor field, + Message defaultInstance) throws IOException { + Message.Builder subBuilder = + defaultInstance.newBuilderForType(); + if (!field.isRepeated()) { + Message originalMessage = (Message) getField(field); + if (originalMessage != null) { + subBuilder.mergeFrom(originalMessage); + } + } + input.readMessage(subBuilder, registry); + return subBuilder.buildPartial(); + } + + public Object parseMessageFromBytes(ByteString bytes, + ExtensionRegistryLite registry, Descriptors.FieldDescriptor field, + Message defaultInstance) throws IOException { + Message.Builder subBuilder = defaultInstance.newBuilderForType(); + if (!field.isRepeated()) { + Message originalMessage = (Message) getField(field); + if (originalMessage != null) { + subBuilder.mergeFrom(originalMessage); + } + } + subBuilder.mergeFrom(bytes, registry); + return subBuilder.buildPartial(); + } + + public MergeTarget newMergeTargetForField( + Descriptors.FieldDescriptor descriptor, Message defaultInstance) { + throw new UnsupportedOperationException( + "newMergeTargetForField() called on FieldSet object"); + } + + public Object readPrimitiveField( + CodedInputStream input, WireFormat.FieldType type, + boolean checkUtf8) throws IOException { + return FieldSet.readPrimitiveField(input, type, checkUtf8); + } + + public Object finish() { + throw new UnsupportedOperationException( + "finish() called on FieldSet object"); + } + } + + /** + * Parses a single field into MergeTarget. The target can be Message.Builder, + * FieldSet or MutableMessage. + * + * Package-private because it is used by GeneratedMessage.ExtendableMessage. + * + * @param tag The tag, which should have already been read. + * @return {@code true} unless the tag is an end-group tag. + */ + static boolean mergeFieldFrom( + CodedInputStream input, + UnknownFieldSet.Builder unknownFields, + ExtensionRegistryLite extensionRegistry, + Descriptors.Descriptor type, + MergeTarget target, + int tag) throws IOException { + if (type.getOptions().getMessageSetWireFormat() && + tag == WireFormat.MESSAGE_SET_ITEM_TAG) { + mergeMessageSetExtensionFromCodedStream( + input, unknownFields, extensionRegistry, type, target); + return true; + } + + final int wireType = WireFormat.getTagWireType(tag); + final int fieldNumber = WireFormat.getTagFieldNumber(tag); + + final Descriptors.FieldDescriptor field; + Message defaultInstance = null; + + if (type.isExtensionNumber(fieldNumber)) { + // extensionRegistry may be either ExtensionRegistry or + // ExtensionRegistryLite. Since the type we are parsing is a full + // message, only a full ExtensionRegistry could possibly contain + // extensions of it. Otherwise we will treat the registry as if it + // were empty. + if (extensionRegistry instanceof ExtensionRegistry) { + final ExtensionRegistry.ExtensionInfo extension = + target.findExtensionByNumber((ExtensionRegistry) extensionRegistry, + type, fieldNumber); + if (extension == null) { + field = null; + } else { + field = extension.descriptor; + defaultInstance = extension.defaultInstance; + if (defaultInstance == null && + field.getJavaType() + == Descriptors.FieldDescriptor.JavaType.MESSAGE) { + throw new IllegalStateException( + "Message-typed extension lacked default instance: " + + field.getFullName()); + } + } + } else { + field = null; + } + } else if (target.getContainerType() == MergeTarget.ContainerType.MESSAGE) { + field = type.findFieldByNumber(fieldNumber); + } else { + field = null; + } + + boolean unknown = false; + boolean packed = false; + if (field == null) { + unknown = true; // Unknown field. + } else if (wireType == FieldSet.getWireFormatForFieldType( + field.getLiteType(), + false /* isPacked */)) { + packed = false; + } else if (field.isPackable() && + wireType == FieldSet.getWireFormatForFieldType( + field.getLiteType(), + true /* isPacked */)) { + packed = true; + } else { + unknown = true; // Unknown wire type. + } + + if (unknown) { // Unknown field or wrong wire type. Skip. + return unknownFields.mergeFieldFrom(tag, input); + } + + if (packed) { + final int length = input.readRawVarint32(); + final int limit = input.pushLimit(length); + if (field.getLiteType() == WireFormat.FieldType.ENUM) { + while (input.getBytesUntilLimit() > 0) { + final int rawValue = input.readEnum(); + final Object value = field.getEnumType().findValueByNumber(rawValue); + if (value == null) { + // If the number isn't recognized as a valid value for this + // enum, drop it (don't even add it to unknownFields). + return true; + } + target.addRepeatedField(field, value); + } + } else { + while (input.getBytesUntilLimit() > 0) { + final Object value = + target.readPrimitiveField(input, field.getLiteType(), field.needsUtf8Check()); + target.addRepeatedField(field, value); + } + } + input.popLimit(limit); + } else { + final Object value; + switch (field.getType()) { + case GROUP: { + value = target + .parseGroup(input, extensionRegistry, field, defaultInstance); + break; + } + case MESSAGE: { + value = target + .parseMessage(input, extensionRegistry, field, defaultInstance); + break; + } + case ENUM: + final int rawValue = input.readEnum(); + value = field.getEnumType().findValueByNumber(rawValue); + // If the number isn't recognized as a valid value for this enum, + // drop it. + if (value == null) { + unknownFields.mergeVarintField(fieldNumber, rawValue); + return true; + } + break; + default: + value = target.readPrimitiveField(input, field.getLiteType(), field.needsUtf8Check()); + break; + } + + if (field.isRepeated()) { + target.addRepeatedField(field, value); + } else { + target.setField(field, value); + } + } + + return true; + } + + /** + * Called by {@code #mergeFieldFrom()} to parse a MessageSet extension into + * MergeTarget. + */ + private static void mergeMessageSetExtensionFromCodedStream( + CodedInputStream input, + UnknownFieldSet.Builder unknownFields, + ExtensionRegistryLite extensionRegistry, + Descriptors.Descriptor type, + MergeTarget target) throws IOException { + + // The wire format for MessageSet is: + // message MessageSet { + // repeated group Item = 1 { + // required int32 typeId = 2; + // required bytes message = 3; + // } + // } + // "typeId" is the extension's field number. The extension can only be + // a message type, where "message" contains the encoded bytes of that + // message. + // + // In practice, we will probably never see a MessageSet item in which + // the message appears before the type ID, or where either field does not + // appear exactly once. However, in theory such cases are valid, so we + // should be prepared to accept them. + + int typeId = 0; + ByteString rawBytes = null; // If we encounter "message" before "typeId" + ExtensionRegistry.ExtensionInfo extension = null; + + // Read bytes from input, if we get it's type first then parse it eagerly, + // otherwise we store the raw bytes in a local variable. + while (true) { + final int tag = input.readTag(); + if (tag == 0) { + break; + } + + if (tag == WireFormat.MESSAGE_SET_TYPE_ID_TAG) { + typeId = input.readUInt32(); + if (typeId != 0) { + // extensionRegistry may be either ExtensionRegistry or + // ExtensionRegistryLite. Since the type we are parsing is a full + // message, only a full ExtensionRegistry could possibly contain + // extensions of it. Otherwise we will treat the registry as if it + // were empty. + if (extensionRegistry instanceof ExtensionRegistry) { + extension = target.findExtensionByNumber( + (ExtensionRegistry) extensionRegistry, type, typeId); + } + } + + } else if (tag == WireFormat.MESSAGE_SET_MESSAGE_TAG) { + if (typeId != 0) { + if (extension != null && + ExtensionRegistryLite.isEagerlyParseMessageSets()) { + // We already know the type, so we can parse directly from the + // input with no copying. Hooray! + eagerlyMergeMessageSetExtension( + input, extension, extensionRegistry, target); + rawBytes = null; + continue; + } + } + // We haven't seen a type ID yet or we want parse message lazily. + rawBytes = input.readBytes(); + + } else { // Unknown tag. Skip it. + if (!input.skipField(tag)) { + break; // End of group + } + } + } + input.checkLastTagWas(WireFormat.MESSAGE_SET_ITEM_END_TAG); + + // Process the raw bytes. + if (rawBytes != null && typeId != 0) { // Zero is not a valid type ID. + if (extension != null) { // We known the type + mergeMessageSetExtensionFromBytes( + rawBytes, extension, extensionRegistry, target); + } else { // We don't know how to parse this. Ignore it. + if (rawBytes != null) { + unknownFields.mergeField(typeId, UnknownFieldSet.Field.newBuilder() + .addLengthDelimited(rawBytes).build()); + } + } + } + } + + private static void mergeMessageSetExtensionFromBytes( + ByteString rawBytes, + ExtensionRegistry.ExtensionInfo extension, + ExtensionRegistryLite extensionRegistry, + MergeTarget target) throws IOException { + + Descriptors.FieldDescriptor field = extension.descriptor; + boolean hasOriginalValue = target.hasField(field); + + if (hasOriginalValue || ExtensionRegistryLite.isEagerlyParseMessageSets()) { + // If the field already exists, we just parse the field. + Object value = target.parseMessageFromBytes( + rawBytes, extensionRegistry,field, extension.defaultInstance); + target.setField(field, value); + } else { + // Use LazyField to load MessageSet lazily. + LazyField lazyField = new LazyField( + extension.defaultInstance, extensionRegistry, rawBytes); + target.setField(field, lazyField); + } + } + + private static void eagerlyMergeMessageSetExtension( + CodedInputStream input, + ExtensionRegistry.ExtensionInfo extension, + ExtensionRegistryLite extensionRegistry, + MergeTarget target) throws IOException { + Descriptors.FieldDescriptor field = extension.descriptor; + Object value = target.parseMessage(input, extensionRegistry, field, + extension.defaultInstance); + target.setField(field, value); + } +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/Parser.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/Parser.java new file mode 100644 index 00000000..f636014b --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/Parser.java @@ -0,0 +1,261 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import java.io.InputStream; + +/** + * Abstract interface for parsing Protocol Messages. + * + * The implementation should be stateless and thread-safe. + * + * @author liujisi@google.com (Pherl Liu) + */ +public interface Parser { + /** + * Parses a message of {@code MessageType} from the input. + * + *

      Note: The caller should call + * {@link CodedInputStream#checkLastTagWas(int)} after calling this to + * verify that the last tag seen was the appropriate end-group tag, + * or zero for EOF. + */ + public MessageType parseFrom(CodedInputStream input) + throws InvalidProtocolBufferException; + + /** + * Like {@link #parseFrom(CodedInputStream)}, but also parses extensions. + * The extensions that you want to be able to parse must be registered in + * {@code extensionRegistry}. Extensions not in the registry will be treated + * as unknown fields. + */ + public MessageType parseFrom(CodedInputStream input, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException; + + /** + * Like {@link #parseFrom(CodedInputStream)}, but does not throw an + * exception if the message is missing required fields. Instead, a partial + * message is returned. + */ + public MessageType parsePartialFrom(CodedInputStream input) + throws InvalidProtocolBufferException; + + /** + * Like {@link #parseFrom(CodedInputStream input, ExtensionRegistryLite)}, + * but does not throw an exception if the message is missing required fields. + * Instead, a partial message is returned. + */ + public MessageType parsePartialFrom(CodedInputStream input, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException; + + // --------------------------------------------------------------- + // Convenience methods. + + /** + * Parses {@code data} as a message of {@code MessageType}. + * This is just a small wrapper around {@link #parseFrom(CodedInputStream)}. + */ + public MessageType parseFrom(ByteString data) + throws InvalidProtocolBufferException; + + /** + * Parses {@code data} as a message of {@code MessageType}. + * This is just a small wrapper around + * {@link #parseFrom(CodedInputStream, ExtensionRegistryLite)}. + */ + public MessageType parseFrom(ByteString data, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException; + + /** + * Like {@link #parseFrom(ByteString)}, but does not throw an + * exception if the message is missing required fields. Instead, a partial + * message is returned. + */ + public MessageType parsePartialFrom(ByteString data) + throws InvalidProtocolBufferException; + + /** + * Like {@link #parseFrom(ByteString, ExtensionRegistryLite)}, + * but does not throw an exception if the message is missing required fields. + * Instead, a partial message is returned. + */ + public MessageType parsePartialFrom(ByteString data, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException; + + /** + * Parses {@code data} as a message of {@code MessageType}. + * This is just a small wrapper around {@link #parseFrom(CodedInputStream)}. + */ + public MessageType parseFrom(byte[] data, int off, int len) + throws InvalidProtocolBufferException; + + /** + * Parses {@code data} as a message of {@code MessageType}. + * This is just a small wrapper around + * {@link #parseFrom(CodedInputStream, ExtensionRegistryLite)}. + */ + public MessageType parseFrom(byte[] data, int off, int len, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException; + + /** + * Parses {@code data} as a message of {@code MessageType}. + * This is just a small wrapper around {@link #parseFrom(CodedInputStream)}. + */ + public MessageType parseFrom(byte[] data) + throws InvalidProtocolBufferException; + + /** + * Parses {@code data} as a message of {@code MessageType}. + * This is just a small wrapper around + * {@link #parseFrom(CodedInputStream, ExtensionRegistryLite)}. + */ + public MessageType parseFrom(byte[] data, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException; + + /** + * Like {@link #parseFrom(byte[], int, int)}, but does not throw an + * exception if the message is missing required fields. Instead, a partial + * message is returned. + */ + public MessageType parsePartialFrom(byte[] data, int off, int len) + throws InvalidProtocolBufferException; + + /** + * Like {@link #parseFrom(ByteString, ExtensionRegistryLite)}, + * but does not throw an exception if the message is missing required fields. + * Instead, a partial message is returned. + */ + public MessageType parsePartialFrom(byte[] data, int off, int len, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException; + + /** + * Like {@link #parseFrom(byte[])}, but does not throw an + * exception if the message is missing required fields. Instead, a partial + * message is returned. + */ + public MessageType parsePartialFrom(byte[] data) + throws InvalidProtocolBufferException; + + /** + * Like {@link #parseFrom(byte[], ExtensionRegistryLite)}, + * but does not throw an exception if the message is missing required fields. + * Instead, a partial message is returned. + */ + public MessageType parsePartialFrom(byte[] data, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException; + + /** + * Parse a message of {@code MessageType} from {@code input}. + * This is just a small wrapper around {@link #parseFrom(CodedInputStream)}. + * Note that this method always reads the entire input (unless it + * throws an exception). If you want it to stop earlier, you will need to + * wrap your input in some wrapper stream that limits reading. Or, use + * {@link MessageLite#writeDelimitedTo(java.io.OutputStream)} to write your + * message and {@link #parseDelimitedFrom(InputStream)} to read it. + *

      + * Despite usually reading the entire input, this does not close the stream. + */ + public MessageType parseFrom(InputStream input) + throws InvalidProtocolBufferException; + + /** + * Parses a message of {@code MessageType} from {@code input}. + * This is just a small wrapper around + * {@link #parseFrom(CodedInputStream, ExtensionRegistryLite)}. + */ + public MessageType parseFrom(InputStream input, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException; + + /** + * Like {@link #parseFrom(InputStream)}, but does not throw an + * exception if the message is missing required fields. Instead, a partial + * message is returned. + */ + public MessageType parsePartialFrom(InputStream input) + throws InvalidProtocolBufferException; + + /** + * Like {@link #parseFrom(InputStream, ExtensionRegistryLite)}, + * but does not throw an exception if the message is missing required fields. + * Instead, a partial message is returned. + */ + public MessageType parsePartialFrom(InputStream input, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException; + + /** + * Like {@link #parseFrom(InputStream)}, but does not read util EOF. + * Instead, the size of message (encoded as a varint) is read first, + * then the message data. Use + * {@link MessageLite#writeDelimitedTo(java.io.OutputStream)} to write + * messages in this format. + * + * @return True if successful, or false if the stream is at EOF when the + * method starts. Any other error (including reaching EOF during + * parsing) will cause an exception to be thrown. + */ + public MessageType parseDelimitedFrom(InputStream input) + throws InvalidProtocolBufferException; + + /** + * Like {@link #parseDelimitedFrom(InputStream)} but supporting extensions. + */ + public MessageType parseDelimitedFrom(InputStream input, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException; + + /** + * Like {@link #parseDelimitedFrom(InputStream)}, but does not throw an + * exception if the message is missing required fields. Instead, a partial + * message is returned. + */ + public MessageType parsePartialDelimitedFrom(InputStream input) + throws InvalidProtocolBufferException; + + /** + * Like {@link #parseDelimitedFrom(InputStream, ExtensionRegistryLite)}, + * but does not throw an exception if the message is missing required fields. + * Instead, a partial message is returned. + */ + public MessageType parsePartialDelimitedFrom( + InputStream input, + ExtensionRegistryLite extensionRegistry) + throws InvalidProtocolBufferException; +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/ProtocolMessageEnum.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/ProtocolMessageEnum.java new file mode 100644 index 00000000..0c8df989 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/ProtocolMessageEnum.java @@ -0,0 +1,58 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import com.google.protobuf.Descriptors.EnumDescriptor; +import com.google.protobuf.Descriptors.EnumValueDescriptor; + +/** + * Interface of useful methods added to all enums generated by the protocol + * compiler. + */ +public interface ProtocolMessageEnum extends Internal.EnumLite { + + /** + * Return the value's numeric value as defined in the .proto file. + */ + int getNumber(); + + /** + * Return the value's descriptor, which contains information such as + * value name, number, and type. + */ + EnumValueDescriptor getValueDescriptor(); + + /** + * Return the enum type's descriptor, which contains information + * about each defined value, etc. + */ + EnumDescriptor getDescriptorForType(); +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/ProtocolStringList.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/ProtocolStringList.java new file mode 100644 index 00000000..d553b41e --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/ProtocolStringList.java @@ -0,0 +1,48 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import java.util.List; + +/** + * An interface extending {@code List} used for repeated string fields + * to provide optional access to the data as a list of ByteStrings. The + * underlying implementation stores values as either ByteStrings or Strings + * (see {@link LazyStringArrayList}) depending on how the value was initialized + * or last read, and it is often more efficient to deal with lists of + * ByteStrings when handling protos that have been deserialized from bytes. + */ +public interface ProtocolStringList extends List { + + /** Returns a view of the data as a list of ByteStrings. */ + List asByteStringList(); + +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/RepeatedFieldBuilder.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/RepeatedFieldBuilder.java new file mode 100644 index 00000000..22760d3a --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/RepeatedFieldBuilder.java @@ -0,0 +1,696 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import java.util.AbstractList; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + +/** + * {@code RepeatedFieldBuilder} implements a structure that a protocol + * message uses to hold a repeated field of other protocol messages. It supports + * the classical use case of adding immutable {@link Message}'s to the + * repeated field and is highly optimized around this (no extra memory + * allocations and sharing of immutable arrays). + *
      + * It also supports the additional use case of adding a {@link Message.Builder} + * to the repeated field and deferring conversion of that {@code Builder} + * to an immutable {@code Message}. In this way, it's possible to maintain + * a tree of {@code Builder}'s that acts as a fully read/write data + * structure. + *
      + * Logically, one can think of a tree of builders as converting the entire tree + * to messages when build is called on the root or when any method is called + * that desires a Message instead of a Builder. In terms of the implementation, + * the {@code SingleFieldBuilder} and {@code RepeatedFieldBuilder} + * classes cache messages that were created so that messages only need to be + * created when some change occured in its builder or a builder for one of its + * descendants. + * + * @param the type of message for the field + * @param the type of builder for the field + * @param the common interface for the message and the builder + * + * @author jonp@google.com (Jon Perlow) + */ +public class RepeatedFieldBuilder + + implements GeneratedMessage.BuilderParent { + + // Parent to send changes to. + private GeneratedMessage.BuilderParent parent; + + // List of messages. Never null. It may be immutable, in which case + // isMessagesListImmutable will be true. See note below. + private List messages; + + // Whether messages is an mutable array that can be modified. + private boolean isMessagesListMutable; + + // List of builders. May be null, in which case, no nested builders were + // created. If not null, entries represent the builder for that index. + private List> builders; + + // Here are the invariants for messages and builders: + // 1. messages is never null and its count corresponds to the number of items + // in the repeated field. + // 2. If builders is non-null, messages and builders MUST always + // contain the same number of items. + // 3. Entries in either array can be null, but for any index, there MUST be + // either a Message in messages or a builder in builders. + // 4. If the builder at an index is non-null, the builder is + // authoritative. This is the case where a Builder was set on the index. + // Any message in the messages array MUST be ignored. + // t. If the builder at an index is null, the message in the messages + // list is authoritative. This is the case where a Message (not a Builder) + // was set directly for an index. + + // Indicates that we've built a message and so we are now obligated + // to dispatch dirty invalidations. See GeneratedMessage.BuilderListener. + private boolean isClean; + + // A view of this builder that exposes a List interface of messages. This is + // initialized on demand. This is fully backed by this object and all changes + // are reflected in it. Access to any item converts it to a message if it + // was a builder. + private MessageExternalList externalMessageList; + + // A view of this builder that exposes a List interface of builders. This is + // initialized on demand. This is fully backed by this object and all changes + // are reflected in it. Access to any item converts it to a builder if it + // was a message. + private BuilderExternalList externalBuilderList; + + // A view of this builder that exposes a List interface of the interface + // implemented by messages and builders. This is initialized on demand. This + // is fully backed by this object and all changes are reflected in it. + // Access to any item returns either a builder or message depending on + // what is most efficient. + private MessageOrBuilderExternalList + externalMessageOrBuilderList; + + /** + * Constructs a new builder with an empty list of messages. + * + * @param messages the current list of messages + * @param isMessagesListMutable Whether the messages list is mutable + * @param parent a listener to notify of changes + * @param isClean whether the builder is initially marked clean + */ + public RepeatedFieldBuilder( + List messages, + boolean isMessagesListMutable, + GeneratedMessage.BuilderParent parent, + boolean isClean) { + this.messages = messages; + this.isMessagesListMutable = isMessagesListMutable; + this.parent = parent; + this.isClean = isClean; + } + + public void dispose() { + // Null out parent so we stop sending it invalidations. + parent = null; + } + + /** + * Ensures that the list of messages is mutable so it can be updated. If it's + * immutable, a copy is made. + */ + private void ensureMutableMessageList() { + if (!isMessagesListMutable) { + messages = new ArrayList(messages); + isMessagesListMutable = true; + } + } + + /** + * Ensures that the list of builders is not null. If it's null, the list is + * created and initialized to be the same size as the messages list with + * null entries. + */ + private void ensureBuilders() { + if (this.builders == null) { + this.builders = + new ArrayList>( + messages.size()); + for (int i = 0; i < messages.size(); i++) { + builders.add(null); + } + } + } + + /** + * Gets the count of items in the list. + * + * @return the count of items in the list. + */ + public int getCount() { + return messages.size(); + } + + /** + * Gets whether the list is empty. + * + * @return whether the list is empty + */ + public boolean isEmpty() { + return messages.isEmpty(); + } + + /** + * Get the message at the specified index. If the message is currently stored + * as a {@code Builder}, it is converted to a {@code Message} by + * calling {@link Message.Builder#buildPartial} on it. + * + * @param index the index of the message to get + * @return the message for the specified index + */ + public MType getMessage(int index) { + return getMessage(index, false); + } + + /** + * Get the message at the specified index. If the message is currently stored + * as a {@code Builder}, it is converted to a {@code Message} by + * calling {@link Message.Builder#buildPartial} on it. + * + * @param index the index of the message to get + * @param forBuild this is being called for build so we want to make sure + * we SingleFieldBuilder.build to send dirty invalidations + * @return the message for the specified index + */ + private MType getMessage(int index, boolean forBuild) { + if (this.builders == null) { + // We don't have any builders -- return the current Message. + // This is the case where no builder was created, so we MUST have a + // Message. + return messages.get(index); + } + + SingleFieldBuilder builder = builders.get(index); + if (builder == null) { + // We don't have a builder -- return the current message. + // This is the case where no builder was created for the entry at index, + // so we MUST have a message. + return messages.get(index); + + } else { + return forBuild ? builder.build() : builder.getMessage(); + } + } + + /** + * Gets a builder for the specified index. If no builder has been created for + * that index, a builder is created on demand by calling + * {@link Message#toBuilder}. + * + * @param index the index of the message to get + * @return The builder for that index + */ + public BType getBuilder(int index) { + ensureBuilders(); + SingleFieldBuilder builder = builders.get(index); + if (builder == null) { + MType message = messages.get(index); + builder = new SingleFieldBuilder( + message, this, isClean); + builders.set(index, builder); + } + return builder.getBuilder(); + } + + /** + * Gets the base class interface for the specified index. This may either be + * a builder or a message. It will return whatever is more efficient. + * + * @param index the index of the message to get + * @return the message or builder for the index as the base class interface + */ + @SuppressWarnings("unchecked") + public IType getMessageOrBuilder(int index) { + if (this.builders == null) { + // We don't have any builders -- return the current Message. + // This is the case where no builder was created, so we MUST have a + // Message. + return (IType) messages.get(index); + } + + SingleFieldBuilder builder = builders.get(index); + if (builder == null) { + // We don't have a builder -- return the current message. + // This is the case where no builder was created for the entry at index, + // so we MUST have a message. + return (IType) messages.get(index); + + } else { + return builder.getMessageOrBuilder(); + } + } + + /** + * Sets a message at the specified index replacing the existing item at + * that index. + * + * @param index the index to set. + * @param message the message to set + * @return the builder + */ + public RepeatedFieldBuilder setMessage( + int index, MType message) { + if (message == null) { + throw new NullPointerException(); + } + ensureMutableMessageList(); + messages.set(index, message); + if (builders != null) { + SingleFieldBuilder entry = + builders.set(index, null); + if (entry != null) { + entry.dispose(); + } + } + onChanged(); + incrementModCounts(); + return this; + } + + /** + * Appends the specified element to the end of this list. + * + * @param message the message to add + * @return the builder + */ + public RepeatedFieldBuilder addMessage( + MType message) { + if (message == null) { + throw new NullPointerException(); + } + ensureMutableMessageList(); + messages.add(message); + if (builders != null) { + builders.add(null); + } + onChanged(); + incrementModCounts(); + return this; + } + + /** + * Inserts the specified message at the specified position in this list. + * Shifts the element currently at that position (if any) and any subsequent + * elements to the right (adds one to their indices). + * + * @param index the index at which to insert the message + * @param message the message to add + * @return the builder + */ + public RepeatedFieldBuilder addMessage( + int index, MType message) { + if (message == null) { + throw new NullPointerException(); + } + ensureMutableMessageList(); + messages.add(index, message); + if (builders != null) { + builders.add(index, null); + } + onChanged(); + incrementModCounts(); + return this; + } + + /** + * Appends all of the messages in the specified collection to the end of + * this list, in the order that they are returned by the specified + * collection's iterator. + * + * @param values the messages to add + * @return the builder + */ + public RepeatedFieldBuilder addAllMessages( + Iterable values) { + for (final MType value : values) { + if (value == null) { + throw new NullPointerException(); + } + } + if (values instanceof Collection) { + @SuppressWarnings("unchecked") final + Collection collection = (Collection) values; + if (collection.size() == 0) { + return this; + } + ensureMutableMessageList(); + for (MType value : values) { + addMessage(value); + } + } else { + ensureMutableMessageList(); + for (MType value : values) { + addMessage(value); + } + } + onChanged(); + incrementModCounts(); + return this; + } + + /** + * Appends a new builder to the end of this list and returns the builder. + * + * @param message the message to add which is the basis of the builder + * @return the new builder + */ + public BType addBuilder(MType message) { + ensureMutableMessageList(); + ensureBuilders(); + SingleFieldBuilder builder = + new SingleFieldBuilder( + message, this, isClean); + messages.add(null); + builders.add(builder); + onChanged(); + incrementModCounts(); + return builder.getBuilder(); + } + + /** + * Inserts a new builder at the specified position in this list. + * Shifts the element currently at that position (if any) and any subsequent + * elements to the right (adds one to their indices). + * + * @param index the index at which to insert the builder + * @param message the message to add which is the basis of the builder + * @return the builder + */ + public BType addBuilder(int index, MType message) { + ensureMutableMessageList(); + ensureBuilders(); + SingleFieldBuilder builder = + new SingleFieldBuilder( + message, this, isClean); + messages.add(index, null); + builders.add(index, builder); + onChanged(); + incrementModCounts(); + return builder.getBuilder(); + } + + /** + * Removes the element at the specified position in this list. Shifts any + * subsequent elements to the left (subtracts one from their indices). + * Returns the element that was removed from the list. + * + * @param index the index at which to remove the message + */ + public void remove(int index) { + ensureMutableMessageList(); + messages.remove(index); + if (builders != null) { + SingleFieldBuilder entry = + builders.remove(index); + if (entry != null) { + entry.dispose(); + } + } + onChanged(); + incrementModCounts(); + } + + /** + * Removes all of the elements from this list. + * The list will be empty after this call returns. + */ + public void clear() { + messages = Collections.emptyList(); + isMessagesListMutable = false; + if (builders != null) { + for (SingleFieldBuilder entry : + builders) { + if (entry != null) { + entry.dispose(); + } + } + builders = null; + } + onChanged(); + incrementModCounts(); + } + + /** + * Builds the list of messages from the builder and returns them. + * + * @return an immutable list of messages + */ + public List build() { + // Now that build has been called, we are required to dispatch + // invalidations. + isClean = true; + + if (!isMessagesListMutable && builders == null) { + // We still have an immutable list and we never created a builder. + return messages; + } + + boolean allMessagesInSync = true; + if (!isMessagesListMutable) { + // We still have an immutable list. Let's see if any of them are out + // of sync with their builders. + for (int i = 0; i < messages.size(); i++) { + Message message = messages.get(i); + SingleFieldBuilder builder = builders.get(i); + if (builder != null) { + if (builder.build() != message) { + allMessagesInSync = false; + break; + } + } + } + if (allMessagesInSync) { + // Immutable list is still in sync. + return messages; + } + } + + // Need to make sure messages is up to date + ensureMutableMessageList(); + for (int i = 0; i < messages.size(); i++) { + messages.set(i, getMessage(i, true)); + } + + // We're going to return our list as immutable so we mark that we can + // no longer update it. + messages = Collections.unmodifiableList(messages); + isMessagesListMutable = false; + return messages; + } + + /** + * Gets a view of the builder as a list of messages. The returned list is live + * and will reflect any changes to the underlying builder. + * + * @return the messages in the list + */ + public List getMessageList() { + if (externalMessageList == null) { + externalMessageList = + new MessageExternalList(this); + } + return externalMessageList; + } + + /** + * Gets a view of the builder as a list of builders. This returned list is + * live and will reflect any changes to the underlying builder. + * + * @return the builders in the list + */ + public List getBuilderList() { + if (externalBuilderList == null) { + externalBuilderList = + new BuilderExternalList(this); + } + return externalBuilderList; + } + + /** + * Gets a view of the builder as a list of MessageOrBuilders. This returned + * list is live and will reflect any changes to the underlying builder. + * + * @return the builders in the list + */ + public List getMessageOrBuilderList() { + if (externalMessageOrBuilderList == null) { + externalMessageOrBuilderList = + new MessageOrBuilderExternalList(this); + } + return externalMessageOrBuilderList; + } + + /** + * Called when a the builder or one of its nested children has changed + * and any parent should be notified of its invalidation. + */ + private void onChanged() { + if (isClean && parent != null) { + parent.markDirty(); + + // Don't keep dispatching invalidations until build is called again. + isClean = false; + } + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public void markDirty() { + onChanged(); + } + + /** + * Increments the mod counts so that an ConcurrentModificationException can + * be thrown if calling code tries to modify the builder while its iterating + * the list. + */ + private void incrementModCounts() { + if (externalMessageList != null) { + externalMessageList.incrementModCount(); + } + if (externalBuilderList != null) { + externalBuilderList.incrementModCount(); + } + if (externalMessageOrBuilderList != null) { + externalMessageOrBuilderList.incrementModCount(); + } + } + + /** + * Provides a live view of the builder as a list of messages. + * + * @param the type of message for the field + * @param the type of builder for the field + * @param the common interface for the message and the builder + */ + private static class MessageExternalList< + MType extends GeneratedMessage, + BType extends GeneratedMessage.Builder, + IType extends MessageOrBuilder> + extends AbstractList implements List { + + RepeatedFieldBuilder builder; + + MessageExternalList( + RepeatedFieldBuilder builder) { + this.builder = builder; + } + + public int size() { + return this.builder.getCount(); + } + + public MType get(int index) { + return builder.getMessage(index); + } + + void incrementModCount() { + modCount++; + } + } + + /** + * Provides a live view of the builder as a list of builders. + * + * @param the type of message for the field + * @param the type of builder for the field + * @param the common interface for the message and the builder + */ + private static class BuilderExternalList< + MType extends GeneratedMessage, + BType extends GeneratedMessage.Builder, + IType extends MessageOrBuilder> + extends AbstractList implements List { + + RepeatedFieldBuilder builder; + + BuilderExternalList( + RepeatedFieldBuilder builder) { + this.builder = builder; + } + + public int size() { + return this.builder.getCount(); + } + + public BType get(int index) { + return builder.getBuilder(index); + } + + void incrementModCount() { + modCount++; + } + } + + /** + * Provides a live view of the builder as a list of builders. + * + * @param the type of message for the field + * @param the type of builder for the field + * @param the common interface for the message and the builder + */ + private static class MessageOrBuilderExternalList< + MType extends GeneratedMessage, + BType extends GeneratedMessage.Builder, + IType extends MessageOrBuilder> + extends AbstractList implements List { + + RepeatedFieldBuilder builder; + + MessageOrBuilderExternalList( + RepeatedFieldBuilder builder) { + this.builder = builder; + } + + public int size() { + return this.builder.getCount(); + } + + public IType get(int index) { + return builder.getMessageOrBuilder(index); + } + + void incrementModCount() { + modCount++; + } + } +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/RopeByteString.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/RopeByteString.java new file mode 100644 index 00000000..d1655b80 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/RopeByteString.java @@ -0,0 +1,957 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.UnsupportedEncodingException; +import java.io.ByteArrayInputStream; +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Iterator; +import java.util.List; +import java.util.NoSuchElementException; +import java.util.Stack; + +/** + * Class to represent {@code ByteStrings} formed by concatenation of other + * ByteStrings, without copying the data in the pieces. The concatenation is + * represented as a tree whose leaf nodes are each a {@link LiteralByteString}. + * + *

      Most of the operation here is inspired by the now-famous paper + * BAP95 Ropes: an Alternative to Strings hans-j. boehm, russ atkinson and + * michael plass + * + *

      The algorithms described in the paper have been implemented for character + * strings in {@link com.google.common.string.Rope} and in the c++ class {@code + * cord.cc}. + * + *

      Fundamentally the Rope algorithm represents the collection of pieces as a + * binary tree. BAP95 uses a Fibonacci bound relating depth to a minimum + * sequence length, sequences that are too short relative to their depth cause a + * tree rebalance. More precisely, a tree of depth d is "balanced" in the + * terminology of BAP95 if its length is at least F(d+2), where F(n) is the + * n-the Fibonacci number. Thus for depths 0, 1, 2, 3, 4, 5,... we have minimum + * lengths 1, 2, 3, 5, 8, 13,... + * + * @author carlanton@google.com (Carl Haverl) + */ +class RopeByteString extends ByteString { + + /** + * BAP95. Let Fn be the nth Fibonacci number. A {@link RopeByteString} of + * depth n is "balanced", i.e flat enough, if its length is at least Fn+2, + * e.g. a "balanced" {@link RopeByteString} of depth 1 must have length at + * least 2, of depth 4 must have length >= 8, etc. + * + *

      There's nothing special about using the Fibonacci numbers for this, but + * they are a reasonable sequence for encapsulating the idea that we are OK + * with longer strings being encoded in deeper binary trees. + * + *

      For 32-bit integers, this array has length 46. + */ + private static final int[] minLengthByDepth; + + static { + // Dynamically generate the list of Fibonacci numbers the first time this + // class is accessed. + List numbers = new ArrayList(); + + // we skip the first Fibonacci number (1). So instead of: 1 1 2 3 5 8 ... + // we have: 1 2 3 5 8 ... + int f1 = 1; + int f2 = 1; + + // get all the values until we roll over. + while (f2 > 0) { + numbers.add(f2); + int temp = f1 + f2; + f1 = f2; + f2 = temp; + } + + // we include this here so that we can index this array to [x + 1] in the + // loops below. + numbers.add(Integer.MAX_VALUE); + minLengthByDepth = new int[numbers.size()]; + for (int i = 0; i < minLengthByDepth.length; i++) { + // unbox all the values + minLengthByDepth[i] = numbers.get(i); + } + } + + private final int totalLength; + private final ByteString left; + private final ByteString right; + private final int leftLength; + private final int treeDepth; + + /** + * Create a new RopeByteString, which can be thought of as a new tree node, by + * recording references to the two given strings. + * + * @param left string on the left of this node, should have {@code size() > + * 0} + * @param right string on the right of this node, should have {@code size() > + * 0} + */ + private RopeByteString(ByteString left, ByteString right) { + this.left = left; + this.right = right; + leftLength = left.size(); + totalLength = leftLength + right.size(); + treeDepth = Math.max(left.getTreeDepth(), right.getTreeDepth()) + 1; + } + + /** + * Concatenate the given strings while performing various optimizations to + * slow the growth rate of tree depth and tree node count. The result is + * either a {@link LiteralByteString} or a {@link RopeByteString} + * depending on which optimizations, if any, were applied. + * + *

      Small pieces of length less than {@link + * ByteString#CONCATENATE_BY_COPY_SIZE} may be copied by value here, as in + * BAP95. Large pieces are referenced without copy. + * + * @param left string on the left + * @param right string on the right + * @return concatenation representing the same sequence as the given strings + */ + static ByteString concatenate(ByteString left, ByteString right) { + ByteString result; + RopeByteString leftRope = + (left instanceof RopeByteString) ? (RopeByteString) left : null; + if (right.size() == 0) { + result = left; + } else if (left.size() == 0) { + result = right; + } else { + int newLength = left.size() + right.size(); + if (newLength < ByteString.CONCATENATE_BY_COPY_SIZE) { + // Optimization from BAP95: For short (leaves in paper, but just short + // here) total length, do a copy of data to a new leaf. + result = concatenateBytes(left, right); + } else if (leftRope != null + && leftRope.right.size() + right.size() < CONCATENATE_BY_COPY_SIZE) { + // Optimization from BAP95: As an optimization of the case where the + // ByteString is constructed by repeated concatenate, recognize the case + // where a short string is concatenated to a left-hand node whose + // right-hand branch is short. In the paper this applies to leaves, but + // we just look at the length here. This has the advantage of shedding + // references to unneeded data when substrings have been taken. + // + // When we recognize this case, we do a copy of the data and create a + // new parent node so that the depth of the result is the same as the + // given left tree. + ByteString newRight = concatenateBytes(leftRope.right, right); + result = new RopeByteString(leftRope.left, newRight); + } else if (leftRope != null + && leftRope.left.getTreeDepth() > leftRope.right.getTreeDepth() + && leftRope.getTreeDepth() > right.getTreeDepth()) { + // Typically for concatenate-built strings the left-side is deeper than + // the right. This is our final attempt to concatenate without + // increasing the tree depth. We'll redo the the node on the RHS. This + // is yet another optimization for building the string by repeatedly + // concatenating on the right. + ByteString newRight = new RopeByteString(leftRope.right, right); + result = new RopeByteString(leftRope.left, newRight); + } else { + // Fine, we'll add a node and increase the tree depth--unless we + // rebalance ;^) + int newDepth = Math.max(left.getTreeDepth(), right.getTreeDepth()) + 1; + if (newLength >= minLengthByDepth[newDepth]) { + // The tree is shallow enough, so don't rebalance + result = new RopeByteString(left, right); + } else { + result = new Balancer().balance(left, right); + } + } + } + return result; + } + + /** + * Concatenates two strings by copying data values. This is called in a few + * cases in order to reduce the growth of the number of tree nodes. + * + * @param left string on the left + * @param right string on the right + * @return string formed by copying data bytes + */ + private static LiteralByteString concatenateBytes(ByteString left, + ByteString right) { + int leftSize = left.size(); + int rightSize = right.size(); + byte[] bytes = new byte[leftSize + rightSize]; + left.copyTo(bytes, 0, 0, leftSize); + right.copyTo(bytes, 0, leftSize, rightSize); + return new LiteralByteString(bytes); // Constructor wraps bytes + } + + /** + * Create a new RopeByteString for testing only while bypassing all the + * defenses of {@link #concatenate(ByteString, ByteString)}. This allows + * testing trees of specific structure. We are also able to insert empty + * leaves, though these are dis-allowed, so that we can make sure the + * implementation can withstand their presence. + * + * @param left string on the left of this node + * @param right string on the right of this node + * @return an unsafe instance for testing only + */ + static RopeByteString newInstanceForTest(ByteString left, ByteString right) { + return new RopeByteString(left, right); + } + + /** + * Gets the byte at the given index. + * Throws {@link ArrayIndexOutOfBoundsException} for backwards-compatibility + * reasons although it would more properly be {@link + * IndexOutOfBoundsException}. + * + * @param index index of byte + * @return the value + * @throws ArrayIndexOutOfBoundsException {@code index} is < 0 or >= size + */ + @Override + public byte byteAt(int index) { + if (index < 0) { + throw new ArrayIndexOutOfBoundsException("Index < 0: " + index); + } + if (index > totalLength) { + throw new ArrayIndexOutOfBoundsException( + "Index > length: " + index + ", " + totalLength); + } + + byte result; + // Find the relevant piece by recursive descent + if (index < leftLength) { + result = left.byteAt(index); + } else { + result = right.byteAt(index - leftLength); + } + return result; + } + + @Override + public int size() { + return totalLength; + } + + // ================================================================= + // Pieces + + @Override + protected int getTreeDepth() { + return treeDepth; + } + + /** + * Determines if the tree is balanced according to BAP95, which means the tree + * is flat-enough with respect to the bounds. Note that this definition of + * balanced is one where sub-trees of balanced trees are not necessarily + * balanced. + * + * @return true if the tree is balanced + */ + @Override + protected boolean isBalanced() { + return totalLength >= minLengthByDepth[treeDepth]; + } + + /** + * Takes a substring of this one. This involves recursive descent along the + * left and right edges of the substring, and referencing any wholly contained + * segments in between. Any leaf nodes entirely uninvolved in the substring + * will not be referenced by the substring. + * + *

      Substrings of {@code length < 2} should result in at most a single + * recursive call chain, terminating at a leaf node. Thus the result will be a + * {@link LiteralByteString}. {@link #RopeByteString(ByteString, + * ByteString)}. + * + * @param beginIndex start at this index + * @param endIndex the last character is the one before this index + * @return substring leaf node or tree + */ + @Override + public ByteString substring(int beginIndex, int endIndex) { + if (beginIndex < 0) { + throw new IndexOutOfBoundsException( + "Beginning index: " + beginIndex + " < 0"); + } + if (endIndex > totalLength) { + throw new IndexOutOfBoundsException( + "End index: " + endIndex + " > " + totalLength); + } + int substringLength = endIndex - beginIndex; + if (substringLength < 0) { + throw new IndexOutOfBoundsException( + "Beginning index larger than ending index: " + beginIndex + ", " + + endIndex); + } + + ByteString result; + if (substringLength == 0) { + // Empty substring + result = ByteString.EMPTY; + } else if (substringLength == totalLength) { + // The whole string + result = this; + } else { + // Proper substring + if (endIndex <= leftLength) { + // Substring on the left + result = left.substring(beginIndex, endIndex); + } else if (beginIndex >= leftLength) { + // Substring on the right + result = right + .substring(beginIndex - leftLength, endIndex - leftLength); + } else { + // Split substring + ByteString leftSub = left.substring(beginIndex); + ByteString rightSub = right.substring(0, endIndex - leftLength); + // Intentionally not rebalancing, since in many cases these two + // substrings will already be less deep than the top-level + // RopeByteString we're taking a substring of. + result = new RopeByteString(leftSub, rightSub); + } + } + return result; + } + + // ================================================================= + // ByteString -> byte[] + + @Override + protected void copyToInternal(byte[] target, int sourceOffset, + int targetOffset, int numberToCopy) { + if (sourceOffset + numberToCopy <= leftLength) { + left.copyToInternal(target, sourceOffset, targetOffset, numberToCopy); + } else if (sourceOffset >= leftLength) { + right.copyToInternal(target, sourceOffset - leftLength, targetOffset, + numberToCopy); + } else { + int leftLength = this.leftLength - sourceOffset; + left.copyToInternal(target, sourceOffset, targetOffset, leftLength); + right.copyToInternal(target, 0, targetOffset + leftLength, + numberToCopy - leftLength); + } + } + + @Override + public void copyTo(ByteBuffer target) { + left.copyTo(target); + right.copyTo(target); + } + + @Override + public ByteBuffer asReadOnlyByteBuffer() { + ByteBuffer byteBuffer = ByteBuffer.wrap(toByteArray()); + return byteBuffer.asReadOnlyBuffer(); + } + + @Override + public List asReadOnlyByteBufferList() { + // Walk through the list of LiteralByteString's that make up this + // rope, and add each one as a read-only ByteBuffer. + List result = new ArrayList(); + PieceIterator pieces = new PieceIterator(this); + while (pieces.hasNext()) { + LiteralByteString byteString = pieces.next(); + result.add(byteString.asReadOnlyByteBuffer()); + } + return result; + } + + @Override + public void writeTo(OutputStream outputStream) throws IOException { + left.writeTo(outputStream); + right.writeTo(outputStream); + } + + @Override + void writeToInternal(OutputStream out, int sourceOffset, + int numberToWrite) throws IOException { + if (sourceOffset + numberToWrite <= leftLength) { + left.writeToInternal(out, sourceOffset, numberToWrite); + } else if (sourceOffset >= leftLength) { + right.writeToInternal(out, sourceOffset - leftLength, numberToWrite); + } else { + int numberToWriteInLeft = leftLength - sourceOffset; + left.writeToInternal(out, sourceOffset, numberToWriteInLeft); + right.writeToInternal(out, 0, numberToWrite - numberToWriteInLeft); + } + } + + @Override + public String toString(String charsetName) + throws UnsupportedEncodingException { + return new String(toByteArray(), charsetName); + } + + // ================================================================= + // UTF-8 decoding + + @Override + public boolean isValidUtf8() { + int leftPartial = left.partialIsValidUtf8(Utf8.COMPLETE, 0, leftLength); + int state = right.partialIsValidUtf8(leftPartial, 0, right.size()); + return state == Utf8.COMPLETE; + } + + @Override + protected int partialIsValidUtf8(int state, int offset, int length) { + int toIndex = offset + length; + if (toIndex <= leftLength) { + return left.partialIsValidUtf8(state, offset, length); + } else if (offset >= leftLength) { + return right.partialIsValidUtf8(state, offset - leftLength, length); + } else { + int leftLength = this.leftLength - offset; + int leftPartial = left.partialIsValidUtf8(state, offset, leftLength); + return right.partialIsValidUtf8(leftPartial, 0, length - leftLength); + } + } + + // ================================================================= + // equals() and hashCode() + + @Override + public boolean equals(Object other) { + if (other == this) { + return true; + } + if (!(other instanceof ByteString)) { + return false; + } + + ByteString otherByteString = (ByteString) other; + if (totalLength != otherByteString.size()) { + return false; + } + if (totalLength == 0) { + return true; + } + + // You don't really want to be calling equals on long strings, but since + // we cache the hashCode, we effectively cache inequality. We use the cached + // hashCode if it's already computed. It's arguable we should compute the + // hashCode here, and if we're going to be testing a bunch of byteStrings, + // it might even make sense. + if (hash != 0) { + int cachedOtherHash = otherByteString.peekCachedHashCode(); + if (cachedOtherHash != 0 && hash != cachedOtherHash) { + return false; + } + } + + return equalsFragments(otherByteString); + } + + /** + * Determines if this string is equal to another of the same length by + * iterating over the leaf nodes. On each step of the iteration, the + * overlapping segments of the leaves are compared. + * + * @param other string of the same length as this one + * @return true if the values of this string equals the value of the given + * one + */ + private boolean equalsFragments(ByteString other) { + int thisOffset = 0; + Iterator thisIter = new PieceIterator(this); + LiteralByteString thisString = thisIter.next(); + + int thatOffset = 0; + Iterator thatIter = new PieceIterator(other); + LiteralByteString thatString = thatIter.next(); + + int pos = 0; + while (true) { + int thisRemaining = thisString.size() - thisOffset; + int thatRemaining = thatString.size() - thatOffset; + int bytesToCompare = Math.min(thisRemaining, thatRemaining); + + // At least one of the offsets will be zero + boolean stillEqual = (thisOffset == 0) + ? thisString.equalsRange(thatString, thatOffset, bytesToCompare) + : thatString.equalsRange(thisString, thisOffset, bytesToCompare); + if (!stillEqual) { + return false; + } + + pos += bytesToCompare; + if (pos >= totalLength) { + if (pos == totalLength) { + return true; + } + throw new IllegalStateException(); + } + // We always get to the end of at least one of the pieces + if (bytesToCompare == thisRemaining) { // If reached end of this + thisOffset = 0; + thisString = thisIter.next(); + } else { + thisOffset += bytesToCompare; + } + if (bytesToCompare == thatRemaining) { // If reached end of that + thatOffset = 0; + thatString = thatIter.next(); + } else { + thatOffset += bytesToCompare; + } + } + } + + /** + * Cached hash value. Intentionally accessed via a data race, which is safe + * because of the Java Memory Model's "no out-of-thin-air values" guarantees + * for ints. + */ + private int hash = 0; + + @Override + public int hashCode() { + int h = hash; + + if (h == 0) { + h = totalLength; + h = partialHash(h, 0, totalLength); + if (h == 0) { + h = 1; + } + hash = h; + } + return h; + } + + @Override + protected int peekCachedHashCode() { + return hash; + } + + @Override + protected int partialHash(int h, int offset, int length) { + int toIndex = offset + length; + if (toIndex <= leftLength) { + return left.partialHash(h, offset, length); + } else if (offset >= leftLength) { + return right.partialHash(h, offset - leftLength, length); + } else { + int leftLength = this.leftLength - offset; + int leftPartial = left.partialHash(h, offset, leftLength); + return right.partialHash(leftPartial, 0, length - leftLength); + } + } + + // ================================================================= + // Input stream + + @Override + public CodedInputStream newCodedInput() { + return CodedInputStream.newInstance(new RopeInputStream()); + } + + @Override + public InputStream newInput() { + return new RopeInputStream(); + } + + /** + * This class implements the balancing algorithm of BAP95. In the paper the + * authors use an array to keep track of pieces, while here we use a stack. + * The tree is balanced by traversing subtrees in left to right order, and the + * stack always contains the part of the string we've traversed so far. + * + *

      One surprising aspect of the algorithm is the result of balancing is not + * necessarily balanced, though it is nearly balanced. For details, see + * BAP95. + */ + private static class Balancer { + // Stack containing the part of the string, starting from the left, that + // we've already traversed. The final string should be the equivalent of + // concatenating the strings on the stack from bottom to top. + private final Stack prefixesStack = new Stack(); + + private ByteString balance(ByteString left, ByteString right) { + doBalance(left); + doBalance(right); + + // Sweep stack to gather the result + ByteString partialString = prefixesStack.pop(); + while (!prefixesStack.isEmpty()) { + ByteString newLeft = prefixesStack.pop(); + partialString = new RopeByteString(newLeft, partialString); + } + // We should end up with a RopeByteString since at a minimum we will + // create one from concatenating left and right + return partialString; + } + + private void doBalance(ByteString root) { + // BAP95: Insert balanced subtrees whole. This means the result might not + // be balanced, leading to repeated rebalancings on concatenate. However, + // these rebalancings are shallow due to ignoring balanced subtrees, and + // relatively few calls to insert() result. + if (root.isBalanced()) { + insert(root); + } else if (root instanceof RopeByteString) { + RopeByteString rbs = (RopeByteString) root; + doBalance(rbs.left); + doBalance(rbs.right); + } else { + throw new IllegalArgumentException( + "Has a new type of ByteString been created? Found " + + root.getClass()); + } + } + + /** + * Push a string on the balance stack (BAP95). BAP95 uses an array and + * calls the elements in the array 'bins'. We instead use a stack, so the + * 'bins' of lengths are represented by differences between the elements of + * minLengthByDepth. + * + *

      If the length bin for our string, and all shorter length bins, are + * empty, we just push it on the stack. Otherwise, we need to start + * concatenating, putting the given string in the "middle" and continuing + * until we land in an empty length bin that matches the length of our + * concatenation. + * + * @param byteString string to place on the balance stack + */ + private void insert(ByteString byteString) { + int depthBin = getDepthBinForLength(byteString.size()); + int binEnd = minLengthByDepth[depthBin + 1]; + + // BAP95: Concatenate all trees occupying bins representing the length of + // our new piece or of shorter pieces, to the extent that is possible. + // The goal is to clear the bin which our piece belongs in, but that may + // not be entirely possible if there aren't enough longer bins occupied. + if (prefixesStack.isEmpty() || prefixesStack.peek().size() >= binEnd) { + prefixesStack.push(byteString); + } else { + int binStart = minLengthByDepth[depthBin]; + + // Concatenate the subtrees of shorter length + ByteString newTree = prefixesStack.pop(); + while (!prefixesStack.isEmpty() + && prefixesStack.peek().size() < binStart) { + ByteString left = prefixesStack.pop(); + newTree = new RopeByteString(left, newTree); + } + + // Concatenate the given string + newTree = new RopeByteString(newTree, byteString); + + // Continue concatenating until we land in an empty bin + while (!prefixesStack.isEmpty()) { + depthBin = getDepthBinForLength(newTree.size()); + binEnd = minLengthByDepth[depthBin + 1]; + if (prefixesStack.peek().size() < binEnd) { + ByteString left = prefixesStack.pop(); + newTree = new RopeByteString(left, newTree); + } else { + break; + } + } + prefixesStack.push(newTree); + } + } + + private int getDepthBinForLength(int length) { + int depth = Arrays.binarySearch(minLengthByDepth, length); + if (depth < 0) { + // It wasn't an exact match, so convert to the index of the containing + // fragment, which is one less even than the insertion point. + int insertionPoint = -(depth + 1); + depth = insertionPoint - 1; + } + + return depth; + } + } + + /** + * This class is a continuable tree traversal, which keeps the state + * information which would exist on the stack in a recursive traversal instead + * on a stack of "Bread Crumbs". The maximum depth of the stack in this + * iterator is the same as the depth of the tree being traversed. + * + *

      This iterator is used to implement + * {@link RopeByteString#equalsFragments(ByteString)}. + */ + private static class PieceIterator implements Iterator { + + private final Stack breadCrumbs = + new Stack(); + private LiteralByteString next; + + private PieceIterator(ByteString root) { + next = getLeafByLeft(root); + } + + private LiteralByteString getLeafByLeft(ByteString root) { + ByteString pos = root; + while (pos instanceof RopeByteString) { + RopeByteString rbs = (RopeByteString) pos; + breadCrumbs.push(rbs); + pos = rbs.left; + } + return (LiteralByteString) pos; + } + + private LiteralByteString getNextNonEmptyLeaf() { + while (true) { + // Almost always, we go through this loop exactly once. However, if + // we discover an empty string in the rope, we toss it and try again. + if (breadCrumbs.isEmpty()) { + return null; + } else { + LiteralByteString result = getLeafByLeft(breadCrumbs.pop().right); + if (!result.isEmpty()) { + return result; + } + } + } + } + + public boolean hasNext() { + return next != null; + } + + /** + * Returns the next item and advances one {@code LiteralByteString}. + * + * @return next non-empty LiteralByteString or {@code null} + */ + public LiteralByteString next() { + if (next == null) { + throw new NoSuchElementException(); + } + LiteralByteString result = next; + next = getNextNonEmptyLeaf(); + return result; + } + + public void remove() { + throw new UnsupportedOperationException(); + } + } + + // ================================================================= + // ByteIterator + + @Override + public ByteIterator iterator() { + return new RopeByteIterator(); + } + + private class RopeByteIterator implements ByteString.ByteIterator { + + private final PieceIterator pieces; + private ByteIterator bytes; + int bytesRemaining; + + private RopeByteIterator() { + pieces = new PieceIterator(RopeByteString.this); + bytes = pieces.next().iterator(); + bytesRemaining = size(); + } + + public boolean hasNext() { + return (bytesRemaining > 0); + } + + public Byte next() { + return nextByte(); // Does not instantiate a Byte + } + + public byte nextByte() { + if (!bytes.hasNext()) { + bytes = pieces.next().iterator(); + } + --bytesRemaining; + return bytes.nextByte(); + } + + public void remove() { + throw new UnsupportedOperationException(); + } + } + + /** + * This class is the {@link RopeByteString} equivalent for + * {@link ByteArrayInputStream}. + */ + private class RopeInputStream extends InputStream { + // Iterates through the pieces of the rope + private PieceIterator pieceIterator; + // The current piece + private LiteralByteString currentPiece; + // The size of the current piece + private int currentPieceSize; + // The index of the next byte to read in the current piece + private int currentPieceIndex; + // The offset of the start of the current piece in the rope byte string + private int currentPieceOffsetInRope; + // Offset in the buffer at which user called mark(); + private int mark; + + public RopeInputStream() { + initialize(); + } + + @Override + public int read(byte b[], int offset, int length) { + if (b == null) { + throw new NullPointerException(); + } else if (offset < 0 || length < 0 || length > b.length - offset) { + throw new IndexOutOfBoundsException(); + } + return readSkipInternal(b, offset, length); + } + + @Override + public long skip(long length) { + if (length < 0) { + throw new IndexOutOfBoundsException(); + } else if (length > Integer.MAX_VALUE) { + length = Integer.MAX_VALUE; + } + return readSkipInternal(null, 0, (int) length); + } + + /** + * Internal implementation of read and skip. If b != null, then read the + * next {@code length} bytes into the buffer {@code b} at + * offset {@code offset}. If b == null, then skip the next {@code length) + * bytes. + *

      + * This method assumes that all error checking has already happened. + *

      + * Returns the actual number of bytes read or skipped. + */ + private int readSkipInternal(byte b[], int offset, int length) { + int bytesRemaining = length; + while (bytesRemaining > 0) { + advanceIfCurrentPieceFullyRead(); + if (currentPiece == null) { + if (bytesRemaining == length) { + // We didn't manage to read anything + return -1; + } + break; + } else { + // Copy the bytes from this piece. + int currentPieceRemaining = currentPieceSize - currentPieceIndex; + int count = Math.min(currentPieceRemaining, bytesRemaining); + if (b != null) { + currentPiece.copyTo(b, currentPieceIndex, offset, count); + offset += count; + } + currentPieceIndex += count; + bytesRemaining -= count; + } + } + // Return the number of bytes read. + return length - bytesRemaining; + } + + @Override + public int read() throws IOException { + advanceIfCurrentPieceFullyRead(); + if (currentPiece == null) { + return -1; + } else { + return currentPiece.byteAt(currentPieceIndex++) & 0xFF; + } + } + + @Override + public int available() throws IOException { + int bytesRead = currentPieceOffsetInRope + currentPieceIndex; + return RopeByteString.this.size() - bytesRead; + } + + @Override + public boolean markSupported() { + return true; + } + + @Override + public void mark(int readAheadLimit) { + // Set the mark to our position in the byte string + mark = currentPieceOffsetInRope + currentPieceIndex; + } + + @Override + public synchronized void reset() { + // Just reinitialize and skip the specified number of bytes. + initialize(); + readSkipInternal(null, 0, mark); + } + + /** Common initialization code used by both the constructor and reset() */ + private void initialize() { + pieceIterator = new PieceIterator(RopeByteString.this); + currentPiece = pieceIterator.next(); + currentPieceSize = currentPiece.size(); + currentPieceIndex = 0; + currentPieceOffsetInRope = 0; + } + + /** + * Skips to the next piece if we have read all the data in the current + * piece. Sets currentPiece to null if we have reached the end of the + * input. + */ + private void advanceIfCurrentPieceFullyRead() { + if (currentPiece != null && currentPieceIndex == currentPieceSize) { + // Generally, we can only go through this loop at most once, since + // empty strings can't end up in a rope. But better to test. + currentPieceOffsetInRope += currentPieceSize; + currentPieceIndex = 0; + if (pieceIterator.hasNext()) { + currentPiece = pieceIterator.next(); + currentPieceSize = currentPiece.size(); + } else { + currentPiece = null; + currentPieceSize = 0; + } + } + } + } +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/RpcCallback.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/RpcCallback.java new file mode 100644 index 00000000..10752968 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/RpcCallback.java @@ -0,0 +1,47 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +/** + * Interface for an RPC callback, normally called when an RPC completes. + * {@code ParameterType} is normally the method's response message type. + * + *

      Starting with version 2.3.0, RPC implementations should not try to build + * on this, but should instead provide code generator plugins which generate + * code specific to the particular RPC implementation. This way the generated + * code can be more appropriate for the implementation in use and can avoid + * unnecessary layers of indirection. + * + * @author kenton@google.com Kenton Varda + */ +public interface RpcCallback { + void run(ParameterType parameter); +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/RpcChannel.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/RpcChannel.java new file mode 100644 index 00000000..f272f4ad --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/RpcChannel.java @@ -0,0 +1,71 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +/** + *

      Abstract interface for an RPC channel. An {@code RpcChannel} represents a + * communication line to a {@link Service} which can be used to call that + * {@link Service}'s methods. The {@link Service} may be running on another + * machine. Normally, you should not call an {@code RpcChannel} directly, but + * instead construct a stub {@link Service} wrapping it. Example: + * + *

      + *   RpcChannel channel = rpcImpl.newChannel("remotehost.example.com:1234");
      + *   RpcController controller = rpcImpl.newController();
      + *   MyService service = MyService.newStub(channel);
      + *   service.myMethod(controller, request, callback);
      + * 
      + * + *

      Starting with version 2.3.0, RPC implementations should not try to build + * on this, but should instead provide code generator plugins which generate + * code specific to the particular RPC implementation. This way the generated + * code can be more appropriate for the implementation in use and can avoid + * unnecessary layers of indirection. + * + * @author kenton@google.com Kenton Varda + */ +public interface RpcChannel { + /** + * Call the given method of the remote service. This method is similar to + * {@code Service.callMethod()} with one important difference: the caller + * decides the types of the {@code Message} objects, not the callee. The + * request may be of any type as long as + * {@code request.getDescriptor() == method.getInputType()}. + * The response passed to the callback will be of the same type as + * {@code responsePrototype} (which must have + * {@code getDescriptor() == method.getOutputType()}). + */ + void callMethod(Descriptors.MethodDescriptor method, + RpcController controller, + Message request, + Message responsePrototype, + RpcCallback done); +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/RpcController.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/RpcController.java new file mode 100644 index 00000000..a92dd7be --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/RpcController.java @@ -0,0 +1,118 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +/** + *

      An {@code RpcController} mediates a single method call. The primary + * purpose of the controller is to provide a way to manipulate settings + * specific to the RPC implementation and to find out about RPC-level errors. + * + *

      Starting with version 2.3.0, RPC implementations should not try to build + * on this, but should instead provide code generator plugins which generate + * code specific to the particular RPC implementation. This way the generated + * code can be more appropriate for the implementation in use and can avoid + * unnecessary layers of indirection. + * + *

      The methods provided by the {@code RpcController} interface are intended + * to be a "least common denominator" set of features which we expect all + * implementations to support. Specific implementations may provide more + * advanced features (e.g. deadline propagation). + * + * @author kenton@google.com Kenton Varda + */ +public interface RpcController { + // ----------------------------------------------------------------- + // These calls may be made from the client side only. Their results + // are undefined on the server side (may throw RuntimeExceptions). + + /** + * Resets the RpcController to its initial state so that it may be reused in + * a new call. This can be called from the client side only. It must not + * be called while an RPC is in progress. + */ + void reset(); + + /** + * After a call has finished, returns true if the call failed. The possible + * reasons for failure depend on the RPC implementation. {@code failed()} + * most only be called on the client side, and must not be called before a + * call has finished. + */ + boolean failed(); + + /** + * If {@code failed()} is {@code true}, returns a human-readable description + * of the error. + */ + String errorText(); + + /** + * Advises the RPC system that the caller desires that the RPC call be + * canceled. The RPC system may cancel it immediately, may wait awhile and + * then cancel it, or may not even cancel the call at all. If the call is + * canceled, the "done" callback will still be called and the RpcController + * will indicate that the call failed at that time. + */ + void startCancel(); + + // ----------------------------------------------------------------- + // These calls may be made from the server side only. Their results + // are undefined on the client side (may throw RuntimeExceptions). + + /** + * Causes {@code failed()} to return true on the client side. {@code reason} + * will be incorporated into the message returned by {@code errorText()}. + * If you find you need to return machine-readable information about + * failures, you should incorporate it into your response protocol buffer + * and should NOT call {@code setFailed()}. + */ + void setFailed(String reason); + + /** + * If {@code true}, indicates that the client canceled the RPC, so the server + * may as well give up on replying to it. This method must be called on the + * server side only. The server should still call the final "done" callback. + */ + boolean isCanceled(); + + /** + * Asks that the given callback be called when the RPC is canceled. The + * parameter passed to the callback will always be {@code null}. The + * callback will always be called exactly once. If the RPC completes without + * being canceled, the callback will be called after completion. If the RPC + * has already been canceled when NotifyOnCancel() is called, the callback + * will be called immediately. + * + *

      {@code notifyOnCancel()} must be called no more than once per request. + * It must be called on the server side only. + */ + void notifyOnCancel(RpcCallback callback); +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/RpcUtil.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/RpcUtil.java new file mode 100644 index 00000000..694b8d13 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/RpcUtil.java @@ -0,0 +1,134 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +/** + * Grab-bag of utility functions useful when dealing with RPCs. + * + * @author kenton@google.com Kenton Varda + */ +public final class RpcUtil { + private RpcUtil() {} + + /** + * Take an {@code RpcCallback} and convert it to an + * {@code RpcCallback} accepting a specific message type. This is always + * type-safe (parameter type contravariance). + */ + @SuppressWarnings("unchecked") + public static RpcCallback + specializeCallback(final RpcCallback originalCallback) { + return (RpcCallback)originalCallback; + // The above cast works, but only due to technical details of the Java + // implementation. A more theoretically correct -- but less efficient -- + // implementation would be as follows: + // return new RpcCallback() { + // public void run(Type parameter) { + // originalCallback.run(parameter); + // } + // }; + } + + /** + * Take an {@code RpcCallback} accepting a specific message type and convert + * it to an {@code RpcCallback}. The generalized callback will + * accept any message object which has the same descriptor, and will convert + * it to the correct class before calling the original callback. However, + * if the generalized callback is given a message with a different descriptor, + * an exception will be thrown. + */ + public static + RpcCallback generalizeCallback( + final RpcCallback originalCallback, + final Class originalClass, + final Type defaultInstance) { + return new RpcCallback() { + public void run(final Message parameter) { + Type typedParameter; + try { + typedParameter = originalClass.cast(parameter); + } catch (ClassCastException ignored) { + typedParameter = copyAsType(defaultInstance, parameter); + } + originalCallback.run(typedParameter); + } + }; + } + + /** + * Creates a new message of type "Type" which is a copy of "source". "source" + * must have the same descriptor but may be a different class (e.g. + * DynamicMessage). + */ + @SuppressWarnings("unchecked") + private static Type copyAsType( + final Type typeDefaultInstance, final Message source) { + return (Type) typeDefaultInstance + .newBuilderForType().mergeFrom(source).build(); + } + + /** + * Creates a callback which can only be called once. This may be useful for + * security, when passing a callback to untrusted code: most callbacks do + * not expect to be called more than once, so doing so may expose bugs if it + * is not prevented. + */ + public static + RpcCallback newOneTimeCallback( + final RpcCallback originalCallback) { + return new RpcCallback() { + private boolean alreadyCalled = false; + + public void run(final ParameterType parameter) { + synchronized(this) { + if (alreadyCalled) { + throw new AlreadyCalledException(); + } + alreadyCalled = true; + } + + originalCallback.run(parameter); + } + }; + } + + /** + * Exception thrown when a one-time callback is called more than once. + */ + public static final class AlreadyCalledException extends RuntimeException { + private static final long serialVersionUID = 5469741279507848266L; + + public AlreadyCalledException() { + super("This RpcCallback was already called and cannot be called " + + "multiple times."); + } + } +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/Service.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/Service.java new file mode 100644 index 00000000..ba7b033e --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/Service.java @@ -0,0 +1,117 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +/** + * Abstract base interface for protocol-buffer-based RPC services. Services + * themselves are abstract classes (implemented either by servers or as + * stubs), but they subclass this base interface. The methods of this + * interface can be used to call the methods of the service without knowing + * its exact type at compile time (analogous to the Message interface). + * + *

      Starting with version 2.3.0, RPC implementations should not try to build + * on this, but should instead provide code generator plugins which generate + * code specific to the particular RPC implementation. This way the generated + * code can be more appropriate for the implementation in use and can avoid + * unnecessary layers of indirection. + * + * @author kenton@google.com Kenton Varda + */ +public interface Service { + /** + * Get the {@code ServiceDescriptor} describing this service and its methods. + */ + Descriptors.ServiceDescriptor getDescriptorForType(); + + /** + *

      Call a method of the service specified by MethodDescriptor. This is + * normally implemented as a simple {@code switch()} that calls the standard + * definitions of the service's methods. + * + *

      Preconditions: + *

        + *
      • {@code method.getService() == getDescriptorForType()} + *
      • {@code request} is of the exact same class as the object returned by + * {@code getRequestPrototype(method)}. + *
      • {@code controller} is of the correct type for the RPC implementation + * being used by this Service. For stubs, the "correct type" depends + * on the RpcChannel which the stub is using. Server-side Service + * implementations are expected to accept whatever type of + * {@code RpcController} the server-side RPC implementation uses. + *
      + * + *

      Postconditions: + *

        + *
      • {@code done} will be called when the method is complete. This may be + * before {@code callMethod()} returns or it may be at some point in + * the future. + *
      • The parameter to {@code done} is the response. It must be of the + * exact same type as would be returned by + * {@code getResponsePrototype(method)}. + *
      • If the RPC failed, the parameter to {@code done} will be + * {@code null}. Further details about the failure can be found by + * querying {@code controller}. + *
      + */ + void callMethod(Descriptors.MethodDescriptor method, + RpcController controller, + Message request, + RpcCallback done); + + /** + *

      {@code callMethod()} requires that the request passed in is of a + * particular subclass of {@code Message}. {@code getRequestPrototype()} + * gets the default instances of this type for a given method. You can then + * call {@code Message.newBuilderForType()} on this instance to + * construct a builder to build an object which you can then pass to + * {@code callMethod()}. + * + *

      Example: + *

      +   *   MethodDescriptor method =
      +   *     service.getDescriptorForType().findMethodByName("Foo");
      +   *   Message request =
      +   *     stub.getRequestPrototype(method).newBuilderForType()
      +   *         .mergeFrom(input).build();
      +   *   service.callMethod(method, request, callback);
      +   * 
      + */ + Message getRequestPrototype(Descriptors.MethodDescriptor method); + + /** + * Like {@code getRequestPrototype()}, but gets a prototype of the response + * message. {@code getResponsePrototype()} is generally not needed because + * the {@code Service} implementation constructs the response message itself, + * but it may be useful in some cases to know ahead of time what type of + * object will be returned. + */ + Message getResponsePrototype(Descriptors.MethodDescriptor method); +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/ServiceException.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/ServiceException.java new file mode 100644 index 00000000..00d57075 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/ServiceException.java @@ -0,0 +1,52 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +/** + * Thrown by blocking RPC methods when a failure occurs. + * + * @author cpovirk@google.com (Chris Povirk) + */ +public class ServiceException extends Exception { + private static final long serialVersionUID = -1219262335729891920L; + + public ServiceException(final String message) { + super(message); + } + + public ServiceException(final Throwable cause) { + super(cause); + } + + public ServiceException(final String message, final Throwable cause) { + super(message, cause); + } +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/SingleFieldBuilder.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/SingleFieldBuilder.java new file mode 100644 index 00000000..13a36d47 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/SingleFieldBuilder.java @@ -0,0 +1,241 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +/** + * {@code SingleFieldBuilder} implements a structure that a protocol + * message uses to hold a single field of another protocol message. It supports + * the classical use case of setting an immutable {@link Message} as the value + * of the field and is highly optimized around this. + *
      + * It also supports the additional use case of setting a {@link Message.Builder} + * as the field and deferring conversion of that {@code Builder} + * to an immutable {@code Message}. In this way, it's possible to maintain + * a tree of {@code Builder}'s that acts as a fully read/write data + * structure. + *
      + * Logically, one can think of a tree of builders as converting the entire tree + * to messages when build is called on the root or when any method is called + * that desires a Message instead of a Builder. In terms of the implementation, + * the {@code SingleFieldBuilder} and {@code RepeatedFieldBuilder} + * classes cache messages that were created so that messages only need to be + * created when some change occured in its builder or a builder for one of its + * descendants. + * + * @param the type of message for the field + * @param the type of builder for the field + * @param the common interface for the message and the builder + * + * @author jonp@google.com (Jon Perlow) + */ +public class SingleFieldBuilder + + implements GeneratedMessage.BuilderParent { + + // Parent to send changes to. + private GeneratedMessage.BuilderParent parent; + + // Invariant: one of builder or message fields must be non-null. + + // If set, this is the case where we are backed by a builder. In this case, + // message field represents a cached message for the builder (or null if + // there is no cached message). + private BType builder; + + // If builder is non-null, this represents a cached message from the builder. + // If builder is null, this is the authoritative message for the field. + private MType message; + + // Indicates that we've built a message and so we are now obligated + // to dispatch dirty invalidations. See GeneratedMessage.BuilderListener. + private boolean isClean; + + public SingleFieldBuilder( + MType message, + GeneratedMessage.BuilderParent parent, + boolean isClean) { + if (message == null) { + throw new NullPointerException(); + } + this.message = message; + this.parent = parent; + this.isClean = isClean; + } + + public void dispose() { + // Null out parent so we stop sending it invalidations. + parent = null; + } + + /** + * Get the message for the field. If the message is currently stored + * as a {@code Builder}, it is converted to a {@code Message} by + * calling {@link Message.Builder#buildPartial} on it. If no message has + * been set, returns the default instance of the message. + * + * @return the message for the field + */ + @SuppressWarnings("unchecked") + public MType getMessage() { + if (message == null) { + // If message is null, the invariant is that we must be have a builder. + message = (MType) builder.buildPartial(); + } + return message; + } + + /** + * Builds the message and returns it. + * + * @return the message + */ + public MType build() { + // Now that build has been called, we are required to dispatch + // invalidations. + isClean = true; + return getMessage(); + } + + /** + * Gets a builder for the field. If no builder has been created yet, a + * builder is created on demand by calling {@link Message#toBuilder}. + * + * @return The builder for the field + */ + @SuppressWarnings("unchecked") + public BType getBuilder() { + if (builder == null) { + // builder.mergeFrom() on a fresh builder + // does not create any sub-objects with independent clean/dirty states, + // therefore setting the builder itself to clean without actually calling + // build() cannot break any invariants. + builder = (BType) message.newBuilderForType(this); + builder.mergeFrom(message); // no-op if message is the default message + builder.markClean(); + } + return builder; + } + + /** + * Gets the base class interface for the field. This may either be a builder + * or a message. It will return whatever is more efficient. + * + * @return the message or builder for the field as the base class interface + */ + @SuppressWarnings("unchecked") + public IType getMessageOrBuilder() { + if (builder != null) { + return (IType) builder; + } else { + return (IType) message; + } + } + + /** + * Sets a message for the field replacing any existing value. + * + * @param message the message to set + * @return the builder + */ + public SingleFieldBuilder setMessage( + MType message) { + if (message == null) { + throw new NullPointerException(); + } + this.message = message; + if (builder != null) { + builder.dispose(); + builder = null; + } + onChanged(); + return this; + } + + /** + * Merges the field from another field. + * + * @param value the value to merge from + * @return the builder + */ + public SingleFieldBuilder mergeFrom( + MType value) { + if (builder == null && message == message.getDefaultInstanceForType()) { + message = value; + } else { + getBuilder().mergeFrom(value); + } + onChanged(); + return this; + } + + /** + * Clears the value of the field. + * + * @return the builder + */ + @SuppressWarnings("unchecked") + public SingleFieldBuilder clear() { + message = (MType) (message != null ? + message.getDefaultInstanceForType() : + builder.getDefaultInstanceForType()); + if (builder != null) { + builder.dispose(); + builder = null; + } + onChanged(); + return this; + } + + /** + * Called when a the builder or one of its nested children has changed + * and any parent should be notified of its invalidation. + */ + private void onChanged() { + // If builder is null, this is the case where onChanged is being called + // from setMessage or clear. + if (builder != null) { + message = null; + } + if (isClean && parent != null) { + parent.markDirty(); + + // Don't keep dispatching invalidations until build is called again. + isClean = false; + } + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public void markDirty() { + onChanged(); + } +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/SmallSortedMap.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/SmallSortedMap.java new file mode 100644 index 00000000..0674d2e2 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/SmallSortedMap.java @@ -0,0 +1,618 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import java.util.AbstractMap; +import java.util.AbstractSet; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Iterator; +import java.util.TreeMap; +import java.util.List; +import java.util.Map; +import java.util.NoSuchElementException; +import java.util.Set; +import java.util.SortedMap; + +/** + * A custom map implementation from FieldDescriptor to Object optimized to + * minimize the number of memory allocations for instances with a small number + * of mappings. The implementation stores the first {@code k} mappings in an + * array for a configurable value of {@code k}, allowing direct access to the + * corresponding {@code Entry}s without the need to create an Iterator. The + * remaining entries are stored in an overflow map. Iteration over the entries + * in the map should be done as follows: + * + *
         {@code
      + * for (int i = 0; i < fieldMap.getNumArrayEntries(); i++) {
      + *   process(fieldMap.getArrayEntryAt(i));
      + * }
      + * for (Map.Entry entry : fieldMap.getOverflowEntries()) {
      + *   process(entry);
      + * }
      + * }
      + * + * The resulting iteration is in order of ascending field tag number. The + * object returned by {@link #entrySet()} adheres to the same contract but is + * less efficient as it necessarily involves creating an object for iteration. + *

      + * The tradeoff for this memory efficiency is that the worst case running time + * of the {@code put()} operation is {@code O(k + lg n)}, which happens when + * entries are added in descending order. {@code k} should be chosen such that + * it covers enough common cases without adversely affecting larger maps. In + * practice, the worst case scenario does not happen for extensions because + * extension fields are serialized and deserialized in order of ascending tag + * number, but the worst case scenario can happen for DynamicMessages. + *

      + * The running time for all other operations is similar to that of + * {@code TreeMap}. + *

      + * Instances are not thread-safe until {@link #makeImmutable()} is called, + * after which any modifying operation will result in an + * {@link UnsupportedOperationException}. + * + * @author darick@google.com Darick Tong + */ +// This class is final for all intents and purposes because the constructor is +// private. However, the FieldDescriptor-specific logic is encapsulated in +// a subclass to aid testability of the core logic. +class SmallSortedMap, V> extends AbstractMap { + + /** + * Creates a new instance for mapping FieldDescriptors to their values. + * The {@link #makeImmutable()} implementation will convert the List values + * of any repeated fields to unmodifiable lists. + * + * @param arraySize The size of the entry array containing the + * lexicographically smallest mappings. + */ + static > + SmallSortedMap newFieldMap(int arraySize) { + return new SmallSortedMap(arraySize) { + @Override + @SuppressWarnings("unchecked") + public void makeImmutable() { + if (!isImmutable()) { + for (int i = 0; i < getNumArrayEntries(); i++) { + final Map.Entry entry = + getArrayEntryAt(i); + if (entry.getKey().isRepeated()) { + final List value = (List) entry.getValue(); + entry.setValue(Collections.unmodifiableList(value)); + } + } + for (Map.Entry entry : + getOverflowEntries()) { + if (entry.getKey().isRepeated()) { + final List value = (List) entry.getValue(); + entry.setValue(Collections.unmodifiableList(value)); + } + } + } + super.makeImmutable(); + } + }; + } + + /** + * Creates a new instance for testing. + * + * @param arraySize The size of the entry array containing the + * lexicographically smallest mappings. + */ + static , V> SmallSortedMap newInstanceForTest( + int arraySize) { + return new SmallSortedMap(arraySize); + } + + private final int maxArraySize; + // The "entry array" is actually a List because generic arrays are not + // allowed. ArrayList also nicely handles the entry shifting on inserts and + // removes. + private List entryList; + private Map overflowEntries; + private boolean isImmutable; + // The EntrySet is a stateless view of the Map. It's initialized the first + // time it is requested and reused henceforth. + private volatile EntrySet lazyEntrySet; + + /** + * @code arraySize Size of the array in which the lexicographically smallest + * mappings are stored. (i.e. the {@code k} referred to in the class + * documentation). + */ + private SmallSortedMap(int arraySize) { + this.maxArraySize = arraySize; + this.entryList = Collections.emptyList(); + this.overflowEntries = Collections.emptyMap(); + } + + /** Make this map immutable from this point forward. */ + public void makeImmutable() { + if (!isImmutable) { + // Note: There's no need to wrap the entryList in an unmodifiableList + // because none of the list's accessors are exposed. The iterator() of + // overflowEntries, on the other hand, is exposed so it must be made + // unmodifiable. + overflowEntries = overflowEntries.isEmpty() ? + Collections.emptyMap() : + Collections.unmodifiableMap(overflowEntries); + isImmutable = true; + } + } + + /** @return Whether {@link #makeImmutable()} has been called. */ + public boolean isImmutable() { + return isImmutable; + } + + /** @return The number of entries in the entry array. */ + public int getNumArrayEntries() { + return entryList.size(); + } + + /** @return The array entry at the given {@code index}. */ + public Map.Entry getArrayEntryAt(int index) { + return entryList.get(index); + } + + /** @return There number of overflow entries. */ + public int getNumOverflowEntries() { + return overflowEntries.size(); + } + + /** @return An iterable over the overflow entries. */ + public Iterable> getOverflowEntries() { + return overflowEntries.isEmpty() ? + EmptySet.>iterable() : + overflowEntries.entrySet(); + } + + @Override + public int size() { + return entryList.size() + overflowEntries.size(); + } + + /** + * The implementation throws a {@code ClassCastException} if o is not an + * object of type {@code K}. + * + * {@inheritDoc} + */ + @Override + public boolean containsKey(Object o) { + @SuppressWarnings("unchecked") + final K key = (K) o; + return binarySearchInArray(key) >= 0 || overflowEntries.containsKey(key); + } + + /** + * The implementation throws a {@code ClassCastException} if o is not an + * object of type {@code K}. + * + * {@inheritDoc} + */ + @Override + public V get(Object o) { + @SuppressWarnings("unchecked") + final K key = (K) o; + final int index = binarySearchInArray(key); + if (index >= 0) { + return entryList.get(index).getValue(); + } + return overflowEntries.get(key); + } + + @Override + public V put(K key, V value) { + checkMutable(); + final int index = binarySearchInArray(key); + if (index >= 0) { + // Replace existing array entry. + return entryList.get(index).setValue(value); + } + ensureEntryArrayMutable(); + final int insertionPoint = -(index + 1); + if (insertionPoint >= maxArraySize) { + // Put directly in overflow. + return getOverflowEntriesMutable().put(key, value); + } + // Insert new Entry in array. + if (entryList.size() == maxArraySize) { + // Shift the last array entry into overflow. + final Entry lastEntryInArray = entryList.remove(maxArraySize - 1); + getOverflowEntriesMutable().put(lastEntryInArray.getKey(), + lastEntryInArray.getValue()); + } + entryList.add(insertionPoint, new Entry(key, value)); + return null; + } + + @Override + public void clear() { + checkMutable(); + if (!entryList.isEmpty()) { + entryList.clear(); + } + if (!overflowEntries.isEmpty()) { + overflowEntries.clear(); + } + } + + /** + * The implementation throws a {@code ClassCastException} if o is not an + * object of type {@code K}. + * + * {@inheritDoc} + */ + @Override + public V remove(Object o) { + checkMutable(); + @SuppressWarnings("unchecked") + final K key = (K) o; + final int index = binarySearchInArray(key); + if (index >= 0) { + return removeArrayEntryAt(index); + } + // overflowEntries might be Collections.unmodifiableMap(), so only + // call remove() if it is non-empty. + if (overflowEntries.isEmpty()) { + return null; + } else { + return overflowEntries.remove(key); + } + } + + private V removeArrayEntryAt(int index) { + checkMutable(); + final V removed = entryList.remove(index).getValue(); + if (!overflowEntries.isEmpty()) { + // Shift the first entry in the overflow to be the last entry in the + // array. + final Iterator> iterator = + getOverflowEntriesMutable().entrySet().iterator(); + entryList.add(new Entry(iterator.next())); + iterator.remove(); + } + return removed; + } + + /** + * @param key The key to find in the entry array. + * @return The returned integer position follows the same semantics as the + * value returned by {@link java.util.Arrays#binarySearch()}. + */ + private int binarySearchInArray(K key) { + int left = 0; + int right = entryList.size() - 1; + + // Optimization: For the common case in which entries are added in + // ascending tag order, check the largest element in the array before + // doing a full binary search. + if (right >= 0) { + int cmp = key.compareTo(entryList.get(right).getKey()); + if (cmp > 0) { + return -(right + 2); // Insert point is after "right". + } else if (cmp == 0) { + return right; + } + } + + while (left <= right) { + int mid = (left + right) / 2; + int cmp = key.compareTo(entryList.get(mid).getKey()); + if (cmp < 0) { + right = mid - 1; + } else if (cmp > 0) { + left = mid + 1; + } else { + return mid; + } + } + return -(left + 1); + } + + /** + * Similar to the AbstractMap implementation of {@code keySet()} and + * {@code values()}, the entry set is created the first time this method is + * called, and returned in response to all subsequent calls. + * + * {@inheritDoc} + */ + @Override + public Set> entrySet() { + if (lazyEntrySet == null) { + lazyEntrySet = new EntrySet(); + } + return lazyEntrySet; + } + + /** + * @throws UnsupportedOperationException if {@link #makeImmutable()} has + * has been called. + */ + private void checkMutable() { + if (isImmutable) { + throw new UnsupportedOperationException(); + } + } + + /** + * @return a {@link SortedMap} to which overflow entries mappings can be + * added or removed. + * @throws UnsupportedOperationException if {@link #makeImmutable()} has been + * called. + */ + @SuppressWarnings("unchecked") + private SortedMap getOverflowEntriesMutable() { + checkMutable(); + if (overflowEntries.isEmpty() && !(overflowEntries instanceof TreeMap)) { + overflowEntries = new TreeMap(); + } + return (SortedMap) overflowEntries; + } + + /** + * Lazily creates the entry list. Any code that adds to the list must first + * call this method. + */ + private void ensureEntryArrayMutable() { + checkMutable(); + if (entryList.isEmpty() && !(entryList instanceof ArrayList)) { + entryList = new ArrayList(maxArraySize); + } + } + + /** + * Entry implementation that implements Comparable in order to support + * binary search within the entry array. Also checks mutability in + * {@link #setValue()}. + */ + private class Entry implements Map.Entry, Comparable { + + private final K key; + private V value; + + Entry(Map.Entry copy) { + this(copy.getKey(), copy.getValue()); + } + + Entry(K key, V value) { + this.key = key; + this.value = value; + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public K getKey() { + return key; + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public V getValue() { + return value; + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public int compareTo(Entry other) { + return getKey().compareTo(other.getKey()); + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public V setValue(V newValue) { + checkMutable(); + final V oldValue = this.value; + this.value = newValue; + return oldValue; + } + + @Override + public boolean equals(Object o) { + if (o == this) { + return true; + } + if (!(o instanceof Map.Entry)) { + return false; + } + @SuppressWarnings("unchecked") + Map.Entry other = (Map.Entry) o; + return equals(key, other.getKey()) && equals(value, other.getValue()); + } + + @Override + public int hashCode() { + return (key == null ? 0 : key.hashCode()) ^ + (value == null ? 0 : value.hashCode()); + } + + @Override + public String toString() { + return key + "=" + value; + } + + /** equals() that handles null values. */ + private boolean equals(Object o1, Object o2) { + return o1 == null ? o2 == null : o1.equals(o2); + } + } + + /** + * Stateless view of the entries in the field map. + */ + private class EntrySet extends AbstractSet> { + + @Override + public Iterator> iterator() { + return new EntryIterator(); + } + + @Override + public int size() { + return SmallSortedMap.this.size(); + } + + /** + * Throws a {@link ClassCastException} if o is not of the expected type. + * + * {@inheritDoc} + */ + @Override + public boolean contains(Object o) { + @SuppressWarnings("unchecked") + final Map.Entry entry = (Map.Entry) o; + final V existing = get(entry.getKey()); + final V value = entry.getValue(); + return existing == value || + (existing != null && existing.equals(value)); + } + + @Override + public boolean add(Map.Entry entry) { + if (!contains(entry)) { + put(entry.getKey(), entry.getValue()); + return true; + } + return false; + } + + /** + * Throws a {@link ClassCastException} if o is not of the expected type. + * + * {@inheritDoc} + */ + @Override + public boolean remove(Object o) { + @SuppressWarnings("unchecked") + final Map.Entry entry = (Map.Entry) o; + if (contains(entry)) { + SmallSortedMap.this.remove(entry.getKey()); + return true; + } + return false; + } + + @Override + public void clear() { + SmallSortedMap.this.clear(); + } + } + + /** + * Iterator implementation that switches from the entry array to the overflow + * entries appropriately. + */ + private class EntryIterator implements Iterator> { + + private int pos = -1; + private boolean nextCalledBeforeRemove; + private Iterator> lazyOverflowIterator; + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public boolean hasNext() { + return (pos + 1) < entryList.size() || + getOverflowIterator().hasNext(); + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public Map.Entry next() { + nextCalledBeforeRemove = true; + // Always increment pos so that we know whether the last returned value + // was from the array or from overflow. + if (++pos < entryList.size()) { + return entryList.get(pos); + } + return getOverflowIterator().next(); + } + + //@Override (Java 1.6 override semantics, but we must support 1.5) + public void remove() { + if (!nextCalledBeforeRemove) { + throw new IllegalStateException("remove() was called before next()"); + } + nextCalledBeforeRemove = false; + checkMutable(); + + if (pos < entryList.size()) { + removeArrayEntryAt(pos--); + } else { + getOverflowIterator().remove(); + } + } + + /** + * It is important to create the overflow iterator only after the array + * entries have been iterated over because the overflow entry set changes + * when the client calls remove() on the array entries, which invalidates + * any existing iterators. + */ + private Iterator> getOverflowIterator() { + if (lazyOverflowIterator == null) { + lazyOverflowIterator = overflowEntries.entrySet().iterator(); + } + return lazyOverflowIterator; + } + } + + /** + * Helper class that holds immutable instances of an Iterable/Iterator that + * we return when the overflow entries is empty. This eliminates the creation + * of an Iterator object when there is nothing to iterate over. + */ + private static class EmptySet { + + private static final Iterator ITERATOR = new Iterator() { + //@Override (Java 1.6 override semantics, but we must support 1.5) + public boolean hasNext() { + return false; + } + //@Override (Java 1.6 override semantics, but we must support 1.5) + public Object next() { + throw new NoSuchElementException(); + } + //@Override (Java 1.6 override semantics, but we must support 1.5) + public void remove() { + throw new UnsupportedOperationException(); + } + }; + + private static final Iterable ITERABLE = new Iterable() { + //@Override (Java 1.6 override semantics, but we must support 1.5) + public Iterator iterator() { + return ITERATOR; + } + }; + + @SuppressWarnings("unchecked") + static Iterable iterable() { + return (Iterable) ITERABLE; + } + } +} diff --git a/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/TextFormat.java b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/TextFormat.java new file mode 100644 index 00000000..57d0ca68 --- /dev/null +++ b/thirdparty/protobuf-2.6.1/java/src/main/java/com/google/protobuf/TextFormat.java @@ -0,0 +1,1984 @@ +// Protocol Buffers - Google's data interchange format +// Copyright 2008 Google Inc. All rights reserved. +// https://developers.google.com/protocol-buffers/ +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +package com.google.protobuf; + +import com.google.protobuf.Descriptors.Descriptor; +import com.google.protobuf.Descriptors.EnumDescriptor; +import com.google.protobuf.Descriptors.EnumValueDescriptor; +import com.google.protobuf.Descriptors.FieldDescriptor; + +import java.io.IOException; +import java.math.BigInteger; +import java.nio.CharBuffer; +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.logging.Logger; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * Provide text parsing and formatting support for proto2 instances. + * The implementation largely follows google/protobuf/text_format.cc. + * + * @author wenboz@google.com Wenbo Zhu + * @author kenton@google.com Kenton Varda + */ +public final class TextFormat { + private TextFormat() {} + + private static final Logger logger = + Logger.getLogger(TextFormat.class.getName()); + + private static final Printer DEFAULT_PRINTER = new Printer(); + private static final Printer SINGLE_LINE_PRINTER = + (new Printer()).setSingleLineMode(true); + private static final Printer UNICODE_PRINTER = + (new Printer()).setEscapeNonAscii(false); + + /** + * Outputs a textual representation of the Protocol Message supplied into + * the parameter output. (This representation is the new version of the + * classic "ProtocolPrinter" output from the original Protocol Buffer system) + */ + public static void print( + final MessageOrBuilder message, final Appendable output) + throws IOException { + DEFAULT_PRINTER.print(message, new TextGenerator(output)); + } + + /** Outputs a textual representation of {@code fields} to {@code output}. */ + public static void print(final UnknownFieldSet fields, + final Appendable output) + throws IOException { + DEFAULT_PRINTER.printUnknownFields(fields, new TextGenerator(output)); + } + + /** + * Same as {@code print()}, except that non-ASCII characters are not + * escaped. + */ + public static void printUnicode( + final MessageOrBuilder message, final Appendable output) + throws IOException { + UNICODE_PRINTER.print(message, new TextGenerator(output)); + } + + /** + * Same as {@code print()}, except that non-ASCII characters are not + * escaped. + */ + public static void printUnicode(final UnknownFieldSet fields, + final Appendable output) + throws IOException { + UNICODE_PRINTER.printUnknownFields(fields, new TextGenerator(output)); + } + + /** + * Generates a human readable form of this message, useful for debugging and + * other purposes, with no newline characters. + */ + public static String shortDebugString(final MessageOrBuilder message) { + try { + final StringBuilder sb = new StringBuilder(); + SINGLE_LINE_PRINTER.print(message, new TextGenerator(sb)); + // Single line mode currently might have an extra space at the end. + return sb.toString().trim(); + } catch (IOException e) { + throw new IllegalStateException(e); + } + } + + /** + * Generates a human readable form of the unknown fields, useful for debugging + * and other purposes, with no newline characters. + */ + public static String shortDebugString(final UnknownFieldSet fields) { + try { + final StringBuilder sb = new StringBuilder(); + SINGLE_LINE_PRINTER.printUnknownFields(fields, new TextGenerator(sb)); + // Single line mode currently might have an extra space at the end. + return sb.toString().trim(); + } catch (IOException e) { + throw new IllegalStateException(e); + } + } + + /** + * Like {@code print()}, but writes directly to a {@code String} and + * returns it. + */ + public static String printToString(final MessageOrBuilder message) { + try { + final StringBuilder text = new StringBuilder(); + print(message, text); + return text.toString(); + } catch (IOException e) { + throw new IllegalStateException(e); + } + } + + /** + * Like {@code print()}, but writes directly to a {@code String} and + * returns it. + */ + public static String printToString(final UnknownFieldSet fields) { + try { + final StringBuilder text = new StringBuilder(); + print(fields, text); + return text.toString(); + } catch (IOException e) { + throw new IllegalStateException(e); + } + } + + /** + * Same as {@code printToString()}, except that non-ASCII characters + * in string type fields are not escaped in backslash+octals. + */ + public static String printToUnicodeString(final MessageOrBuilder message) { + try { + final StringBuilder text = new StringBuilder(); + UNICODE_PRINTER.print(message, new TextGenerator(text)); + return text.toString(); + } catch (IOException e) { + throw new IllegalStateException(e); + } + } + + /** + * Same as {@code printToString()}, except that non-ASCII characters + * in string type fields are not escaped in backslash+octals. + */ + public static String printToUnicodeString(final UnknownFieldSet fields) { + try { + final StringBuilder text = new StringBuilder(); + UNICODE_PRINTER.printUnknownFields(fields, new TextGenerator(text)); + return text.toString(); + } catch (IOException e) { + throw new IllegalStateException(e); + } + } + + public static void printField(final FieldDescriptor field, + final Object value, + final Appendable output) + throws IOException { + DEFAULT_PRINTER.printField(field, value, new TextGenerator(output)); + } + + public static String printFieldToString(final FieldDescriptor field, + final Object value) { + try { + final StringBuilder text = new StringBuilder(); + printField(field, value, text); + return text.toString(); + } catch (IOException e) { + throw new IllegalStateException(e); + } + } + + /** + * Outputs a textual representation of the value of given field value. + * + * @param field the descriptor of the field + * @param value the value of the field + * @param output the output to which to append the formatted value + * @throws ClassCastException if the value is not appropriate for the + * given field descriptor + * @throws IOException if there is an exception writing to the output + */ + public static void printFieldValue(final FieldDescriptor field, + final Object value, + final Appendable output) + throws IOException { + DEFAULT_PRINTER.printFieldValue(field, value, new TextGenerator(output)); + } + + /** + * Outputs a textual representation of the value of an unknown field. + * + * @param tag the field's tag number + * @param value the value of the field + * @param output the output to which to append the formatted value + * @throws ClassCastException if the value is not appropriate for the + * given field descriptor + * @throws IOException if there is an exception writing to the output + */ + public static void printUnknownFieldValue(final int tag, + final Object value, + final Appendable output) + throws IOException { + printUnknownFieldValue(tag, value, new TextGenerator(output)); + } + + private static void printUnknownFieldValue(final int tag, + final Object value, + final TextGenerator generator) + throws IOException { + switch (WireFormat.getTagWireType(tag)) { + case WireFormat.WIRETYPE_VARINT: + generator.print(unsignedToString((Long) value)); + break; + case WireFormat.WIRETYPE_FIXED32: + generator.print( + String.format((Locale) null, "0x%08x", (Integer) value)); + break; + case WireFormat.WIRETYPE_FIXED64: + generator.print(String.format((Locale) null, "0x%016x", (Long) value)); + break; + case WireFormat.WIRETYPE_LENGTH_DELIMITED: + generator.print("\""); + generator.print(escapeBytes((ByteString) value)); + generator.print("\""); + break; + case WireFormat.WIRETYPE_START_GROUP: + DEFAULT_PRINTER.printUnknownFields((UnknownFieldSet) value, generator); + break; + default: + throw new IllegalArgumentException("Bad tag: " + tag); + } + } + + /** Helper class for converting protobufs to text. */ + private static final class Printer { + /** Whether to omit newlines from the output. */ + boolean singleLineMode = false; + + /** Whether to escape non ASCII characters with backslash and octal. */ + boolean escapeNonAscii = true; + + private Printer() {} + + /** Setter of singleLineMode */ + private Printer setSingleLineMode(boolean singleLineMode) { + this.singleLineMode = singleLineMode; + return this; + } + + /** Setter of escapeNonAscii */ + private Printer setEscapeNonAscii(boolean escapeNonAscii) { + this.escapeNonAscii = escapeNonAscii; + return this; + } + + private void print( + final MessageOrBuilder message, final TextGenerator generator) + throws IOException { + for (Map.Entry field + : message.getAllFields().entrySet()) { + printField(field.getKey(), field.getValue(), generator); + } + printUnknownFields(message.getUnknownFields(), generator); + } + + private void printField(final FieldDescriptor field, final Object value, + final TextGenerator generator) throws IOException { + if (field.isRepeated()) { + // Repeated field. Print each element. + for (Object element : (List) value) { + printSingleField(field, element, generator); + } + } else { + printSingleField(field, value, generator); + } + } + + private void printSingleField(final FieldDescriptor field, + final Object value, + final TextGenerator generator) + throws IOException { + if (field.isExtension()) { + generator.print("["); + // We special-case MessageSet elements for compatibility with proto1. + if (field.getContainingType().getOptions().getMessageSetWireFormat() + && (field.getType() == FieldDescriptor.Type.MESSAGE) + && (field.isOptional()) + // object equality + && (field.getExtensionScope() == field.getMessageType())) { + generator.print(field.getMessageType().getFullName()); + } else { + generator.print(field.getFullName()); + } + generator.print("]"); + } else { + if (field.getType() == FieldDescriptor.Type.GROUP) { + // Groups must be serialized with their original capitalization. + generator.print(field.getMessageType().getName()); + } else { + generator.print(field.getName()); + } + } + + if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { + if (singleLineMode) { + generator.print(" { "); + } else { + generator.print(" {\n"); + generator.indent(); + } + } else { + generator.print(": "); + } + + printFieldValue(field, value, generator); + + if (field.getJavaType() == FieldDescriptor.JavaType.MESSAGE) { + if (singleLineMode) { + generator.print("} "); + } else { + generator.outdent(); + generator.print("}\n"); + } + } else { + if (singleLineMode) { + generator.print(" "); + } else { + generator.print("\n"); + } + } + } + + private void printFieldValue(final FieldDescriptor field, + final Object value, + final TextGenerator generator) + throws IOException { + switch (field.getType()) { + case INT32: + case SINT32: + case SFIXED32: + generator.print(((Integer) value).toString()); + break; + + case INT64: + case SINT64: + case SFIXED64: + generator.print(((Long) value).toString()); + break; + + case BOOL: + generator.print(((Boolean) value).toString()); + break; + + case FLOAT: + generator.print(((Float) value).toString()); + break; + + case DOUBLE: + generator.print(((Double) value).toString()); + break; + + case UINT32: + case FIXED32: + generator.print(unsignedToString((Integer) value)); + break; + + case UINT64: + case FIXED64: + generator.print(unsignedToString((Long) value)); + break; + + case STRING: + generator.print("\""); + generator.print(escapeNonAscii ? + escapeText((String) value) : + escapeDoubleQuotesAndBackslashes((String) value)); + generator.print("\""); + break; + + case BYTES: + generator.print("\""); + if (value instanceof ByteString) { + generator.print(escapeBytes((ByteString) value)); + } else { + generator.print(escapeBytes((byte[]) value)); + } + generator.print("\""); + break; + + case ENUM: + generator.print(((EnumValueDescriptor) value).getName()); + break; + + case MESSAGE: + case GROUP: + print((Message) value, generator); + break; + } + } + + private void printUnknownFields(final UnknownFieldSet unknownFields, + final TextGenerator generator) + throws IOException { + for (Map.Entry entry : + unknownFields.asMap().entrySet()) { + final int number = entry.getKey(); + final UnknownFieldSet.Field field = entry.getValue(); + printUnknownField(number, WireFormat.WIRETYPE_VARINT, + field.getVarintList(), generator); + printUnknownField(number, WireFormat.WIRETYPE_FIXED32, + field.getFixed32List(), generator); + printUnknownField(number, WireFormat.WIRETYPE_FIXED64, + field.getFixed64List(), generator); + printUnknownField(number, WireFormat.WIRETYPE_LENGTH_DELIMITED, + field.getLengthDelimitedList(), generator); + for (final UnknownFieldSet value : field.getGroupList()) { + generator.print(entry.getKey().toString()); + if (singleLineMode) { + generator.print(" { "); + } else { + generator.print(" {\n"); + generator.indent(); + } + printUnknownFields(value, generator); + if (singleLineMode) { + generator.print("} "); + } else { + generator.outdent(); + generator.print("}\n"); + } + } + } + } + + private void printUnknownField(final int number, + final int wireType, + final List values, + final TextGenerator generator) + throws IOException { + for (final Object value : values) { + generator.print(String.valueOf(number)); + generator.print(": "); + printUnknownFieldValue(wireType, value, generator); + generator.print(singleLineMode ? " " : "\n"); + } + } + } + + /** Convert an unsigned 32-bit integer to a string. */ + public static String unsignedToString(final int value) { + if (value >= 0) { + return Integer.toString(value); + } else { + return Long.toString(value & 0x00000000FFFFFFFFL); + } + } + + /** Convert an unsigned 64-bit integer to a string. */ + public static String unsignedToString(final long value) { + if (value >= 0) { + return Long.toString(value); + } else { + // Pull off the most-significant bit so that BigInteger doesn't think + // the number is negative, then set it again using setBit(). + return BigInteger.valueOf(value & 0x7FFFFFFFFFFFFFFFL) + .setBit(63).toString(); + } + } + + /** + * An inner class for writing text to the output stream. + */ + private static final class TextGenerator { + private final Appendable output; + private final StringBuilder indent = new StringBuilder(); + private boolean atStartOfLine = true; + + private TextGenerator(final Appendable output) { + this.output = output; + } + + /** + * Indent text by two spaces. After calling Indent(), two spaces will be + * inserted at the beginning of each line of text. Indent() may be called + * multiple times to produce deeper indents. + */ + public void indent() { + indent.append(" "); + } + + /** + * Reduces the current indent level by two spaces, or crashes if the indent + * level is zero. + */ + public void outdent() { + final int length = indent.length(); + if (length == 0) { + throw new IllegalArgumentException( + " Outdent() without matching Indent()."); + } + indent.delete(length - 2, length); + } + + /** + * Print text to the output stream. + */ + public void print(final CharSequence text) throws IOException { + final int size = text.length(); + int pos = 0; + + for (int i = 0; i < size; i++) { + if (text.charAt(i) == '\n') { + write(text.subSequence(pos, i + 1)); + pos = i + 1; + atStartOfLine = true; + } + } + write(text.subSequence(pos, size)); + } + + private void write(final CharSequence data) throws IOException { + if (data.length() == 0) { + return; + } + if (atStartOfLine) { + atStartOfLine = false; + output.append(indent); + } + output.append(data); + } + } + + // ================================================================= + // Parsing + + /** + * Represents a stream of tokens parsed from a {@code String}. + * + *

      The Java standard library provides many classes that you might think + * would be useful for implementing this, but aren't. For example: + * + *

        + *
      • {@code java.io.StreamTokenizer}: This almost does what we want -- or, + * at least, something that would get us close to what we want -- except + * for one fatal flaw: It automatically un-escapes strings using Java + * escape sequences, which do not include all the escape sequences we + * need to support (e.g. '\x'). + *
      • {@code java.util.Scanner}: This seems like a great way at least to + * parse regular expressions out of a stream (so we wouldn't have to load + * the entire input into a single string before parsing). Sadly, + * {@code Scanner} requires that tokens be delimited with some delimiter. + * Thus, although the text "foo:" should parse to two tokens ("foo" and + * ":"), {@code Scanner} would recognize it only as a single token. + * Furthermore, {@code Scanner} provides no way to inspect the contents + * of delimiters, making it impossible to keep track of line and column + * numbers. + *
      + * + *

      Luckily, Java's regular expression support does manage to be useful to + * us. (Barely: We need {@code Matcher.usePattern()}, which is new in + * Java 1.5.) So, we can use that, at least. Unfortunately, this implies + * that we need to have the entire input in one contiguous string. + */ + private static final class Tokenizer { + private final CharSequence text; + private final Matcher matcher; + private String currentToken; + + // The character index within this.text at which the current token begins. + private int pos = 0; + + // The line and column numbers of the current token. + private int line = 0; + private int column = 0; + + // The line and column numbers of the previous token (allows throwing + // errors *after* consuming). + private int previousLine = 0; + private int previousColumn = 0; + + // We use possessive quantifiers (*+ and ++) because otherwise the Java + // regex matcher has stack overflows on large inputs. + private static final Pattern WHITESPACE = + Pattern.compile("(\\s|(#.*$))++", Pattern.MULTILINE); + private static final Pattern TOKEN = Pattern.compile( + "[a-zA-Z_][0-9a-zA-Z_+-]*+|" + // an identifier + "[.]?[0-9+-][0-9a-zA-Z_.+-]*+|" + // a number + "\"([^\"\n\\\\]|\\\\.)*+(\"|\\\\?$)|" + // a double-quoted string + "\'([^\'\n\\\\]|\\\\.)*+(\'|\\\\?$)", // a single-quoted string + Pattern.MULTILINE); + + private static final Pattern DOUBLE_INFINITY = Pattern.compile( + "-?inf(inity)?", + Pattern.CASE_INSENSITIVE); + private static final Pattern FLOAT_INFINITY = Pattern.compile( + "-?inf(inity)?f?", + Pattern.CASE_INSENSITIVE); + private static final Pattern FLOAT_NAN = Pattern.compile( + "nanf?", + Pattern.CASE_INSENSITIVE); + + /** Construct a tokenizer that parses tokens from the given text. */ + private Tokenizer(final CharSequence text) { + this.text = text; + this.matcher = WHITESPACE.matcher(text); + skipWhitespace(); + nextToken(); + } + + /** Are we at the end of the input? */ + public boolean atEnd() { + return currentToken.length() == 0; + } + + /** Advance to the next token. */ + public void nextToken() { + previousLine = line; + previousColumn = column; + + // Advance the line counter to the current position. + while (pos < matcher.regionStart()) { + if (text.charAt(pos) == '\n') { + ++line; + column = 0; + } else { + ++column; + } + ++pos; + } + + // Match the next token. + if (matcher.regionStart() == matcher.regionEnd()) { + // EOF + currentToken = ""; + } else { + matcher.usePattern(TOKEN); + if (matcher.lookingAt()) { + currentToken = matcher.group(); + matcher.region(matcher.end(), matcher.regionEnd()); + } else { + // Take one character. + currentToken = String.valueOf(text.charAt(pos)); + matcher.region(pos + 1, matcher.regionEnd()); + } + + skipWhitespace(); + } + } + + /** + * Skip over any whitespace so that the matcher region starts at the next + * token. + */ + private void skipWhitespace() { + matcher.usePattern(WHITESPACE); + if (matcher.lookingAt()) { + matcher.region(matcher.end(), matcher.regionEnd()); + } + } + + /** + * If the next token exactly matches {@code token}, consume it and return + * {@code true}. Otherwise, return {@code false} without doing anything. + */ + public boolean tryConsume(final String token) { + if (currentToken.equals(token)) { + nextToken(); + return true; + } else { + return false; + } + } + + /** + * If the next token exactly matches {@code token}, consume it. Otherwise, + * throw a {@link ParseException}. + */ + public void consume(final String token) throws ParseException { + if (!tryConsume(token)) { + throw parseException("Expected \"" + token + "\"."); + } + } + + /** + * Returns {@code true} if the next token is an integer, but does + * not consume it. + */ + public boolean lookingAtInteger() { + if (currentToken.length() == 0) { + return false; + } + + final char c = currentToken.charAt(0); + return ('0' <= c && c <= '9') || + c == '-' || c == '+'; + } + + /** + * Returns {@code true} if the current token's text is equal to that + * specified. + */ + public boolean lookingAt(String text) { + return currentToken.equals(text); + } + + /** + * If the next token is an identifier, consume it and return its value. + * Otherwise, throw a {@link ParseException}. + */ + public String consumeIdentifier() throws ParseException { + for (int i = 0; i < currentToken.length(); i++) { + final char c = currentToken.charAt(i); + if (('a' <= c && c <= 'z') || + ('A' <= c && c <= 'Z') || + ('0' <= c && c <= '9') || + (c == '_') || (c == '.')) { + // OK + } else { + throw parseException( + "Expected identifier. Found '" + currentToken + "'"); + } + } + + final String result = currentToken; + nextToken(); + return result; + } + + /** + * If the next token is an identifier, consume it and return {@code true}. + * Otherwise, return {@code false} without doing anything. + */ + public boolean tryConsumeIdentifier() { + try { + consumeIdentifier(); + return true; + } catch (ParseException e) { + return false; + } + } + + /** + * If the next token is a 32-bit signed integer, consume it and return its + * value. Otherwise, throw a {@link ParseException}. + */ + public int consumeInt32() throws ParseException { + try { + final int result = parseInt32(currentToken); + nextToken(); + return result; + } catch (NumberFormatException e) { + throw integerParseException(e); + } + } + + /** + * If the next token is a 32-bit unsigned integer, consume it and return its + * value. Otherwise, throw a {@link ParseException}. + */ + public int consumeUInt32() throws ParseException { + try { + final int result = parseUInt32(currentToken); + nextToken(); + return result; + } catch (NumberFormatException e) { + throw integerParseException(e); + } + } + + /** + * If the next token is a 64-bit signed integer, consume it and return its + * value. Otherwise, throw a {@link ParseException}. + */ + public long consumeInt64() throws ParseException { + try { + final long result = parseInt64(currentToken); + nextToken(); + return result; + } catch (NumberFormatException e) { + throw integerParseException(e); + } + } + + /** + * If the next token is a 64-bit signed integer, consume it and return + * {@code true}. Otherwise, return {@code false} without doing anything. + */ + public boolean tryConsumeInt64() { + try { + consumeInt64(); + return true; + } catch (ParseException e) { + return false; + } + } + + /** + * If the next token is a 64-bit unsigned integer, consume it and return its + * value. Otherwise, throw a {@link ParseException}. + */ + public long consumeUInt64() throws ParseException { + try { + final long result = parseUInt64(currentToken); + nextToken(); + return result; + } catch (NumberFormatException e) { + throw integerParseException(e); + } + } + + /** + * If the next token is a 64-bit unsigned integer, consume it and return + * {@code true}. Otherwise, return {@code false} without doing anything. + */ + public boolean tryConsumeUInt64() { + try { + consumeUInt64(); + return true; + } catch (ParseException e) { + return false; + } + } + + /** + * If the next token is a double, consume it and return its value. + * Otherwise, throw a {@link ParseException}. + */ + public double consumeDouble() throws ParseException { + // We need to parse infinity and nan separately because + // Double.parseDouble() does not accept "inf", "infinity", or "nan". + if (DOUBLE_INFINITY.matcher(currentToken).matches()) { + final boolean negative = currentToken.startsWith("-"); + nextToken(); + return negative ? Double.NEGATIVE_INFINITY : Double.POSITIVE_INFINITY; + } + if (currentToken.equalsIgnoreCase("nan")) { + nextToken(); + return Double.NaN; + } + try { + final double result = Double.parseDouble(currentToken); + nextToken(); + return result; + } catch (NumberFormatException e) { + throw floatParseException(e); + } + } + + /** + * If the next token is a double, consume it and return {@code true}. + * Otherwise, return {@code false} without doing anything. + */ + public boolean tryConsumeDouble() { + try { + consumeDouble(); + return true; + } catch (ParseException e) { + return false; + } + } + + /** + * If the next token is a float, consume it and return its value. + * Otherwise, throw a {@link ParseException}. + */ + public float consumeFloat() throws ParseException { + // We need to parse infinity and nan separately because + // Float.parseFloat() does not accept "inf", "infinity", or "nan". + if (FLOAT_INFINITY.matcher(currentToken).matches()) { + final boolean negative = currentToken.startsWith("-"); + nextToken(); + return negative ? Float.NEGATIVE_INFINITY : Float.POSITIVE_INFINITY; + } + if (FLOAT_NAN.matcher(currentToken).matches()) { + nextToken(); + return Float.NaN; + } + try { + final float result = Float.parseFloat(currentToken); + nextToken(); + return result; + } catch (NumberFormatException e) { + throw floatParseException(e); + } + } + + /** + * If the next token is a float, consume it and return {@code true}. + * Otherwise, return {@code false} without doing anything. + */ + public boolean tryConsumeFloat() { + try { + consumeFloat(); + return true; + } catch (ParseException e) { + return false; + } + } + + /** + * If the next token is a boolean, consume it and return its value. + * Otherwise, throw a {@link ParseException}. + */ + public boolean consumeBoolean() throws ParseException { + if (currentToken.equals("true") || + currentToken.equals("t") || + currentToken.equals("1")) { + nextToken(); + return true; + } else if (currentToken.equals("false") || + currentToken.equals("f") || + currentToken.equals("0")) { + nextToken(); + return false; + } else { + throw parseException("Expected \"true\" or \"false\"."); + } + } + + /** + * If the next token is a string, consume it and return its (unescaped) + * value. Otherwise, throw a {@link ParseException}. + */ + public String consumeString() throws ParseException { + return consumeByteString().toStringUtf8(); + } + + /** + * If the next token is a string, consume it and return true. Otherwise, + * return false. + */ + public boolean tryConsumeString() { + try { + consumeString(); + return true; + } catch (ParseException e) { + return false; + } + } + + /** + * If the next token is a string, consume it, unescape it as a + * {@link ByteString}, and return it. Otherwise, throw a + * {@link ParseException}. + */ + public ByteString consumeByteString() throws ParseException { + List list = new ArrayList(); + consumeByteString(list); + while (currentToken.startsWith("'") || currentToken.startsWith("\"")) { + consumeByteString(list); + } + return ByteString.copyFrom(list); + } + + /** + * Like {@link #consumeByteString()} but adds each token of the string to + * the given list. String literals (whether bytes or text) may come in + * multiple adjacent tokens which are automatically concatenated, like in + * C or Python. + */ + private void consumeByteString(List list) + throws ParseException { + final char quote = currentToken.length() > 0 ? currentToken.charAt(0) + : '\0'; + if (quote != '\"' && quote != '\'') { + throw parseException("Expected string."); + } + + if (currentToken.length() < 2 || + currentToken.charAt(currentToken.length() - 1) != quote) { + throw parseException("String missing ending quote."); + } + + try { + final String escaped = + currentToken.substring(1, currentToken.length() - 1); + final ByteString result = unescapeBytes(escaped); + nextToken(); + list.add(result); + } catch (InvalidEscapeSequenceException e) { + throw parseException(e.getMessage()); + } + } + + /** + * Returns a {@link ParseException} with the current line and column + * numbers in the description, suitable for throwing. + */ + public ParseException parseException(final String description) { + // Note: People generally prefer one-based line and column numbers. + return new ParseException( + line + 1, column + 1, description); + } + + /** + * Returns a {@link ParseException} with the line and column numbers of + * the previous token in the description, suitable for throwing. + */ + public ParseException parseExceptionPreviousToken( + final String description) { + // Note: People generally prefer one-based line and column numbers. + return new ParseException( + previousLine + 1, previousColumn + 1, description); + } + + /** + * Constructs an appropriate {@link ParseException} for the given + * {@code NumberFormatException} when trying to parse an integer. + */ + private ParseException integerParseException( + final NumberFormatException e) { + return parseException("Couldn't parse integer: " + e.getMessage()); + } + + /** + * Constructs an appropriate {@link ParseException} for the given + * {@code NumberFormatException} when trying to parse a float or double. + */ + private ParseException floatParseException(final NumberFormatException e) { + return parseException("Couldn't parse number: " + e.getMessage()); + } + } + + /** Thrown when parsing an invalid text format message. */ + public static class ParseException extends IOException { + private static final long serialVersionUID = 3196188060225107702L; + + private final int line; + private final int column; + + /** Create a new instance, with -1 as the line and column numbers. */ + public ParseException(final String message) { + this(-1, -1, message); + } + + /** + * Create a new instance + * + * @param line the line number where the parse error occurred, + * using 1-offset. + * @param column the column number where the parser error occurred, + * using 1-offset. + */ + public ParseException(final int line, final int column, + final String message) { + super(Integer.toString(line) + ":" + column + ": " + message); + this.line = line; + this.column = column; + } + + /** + * Return the line where the parse exception occurred, or -1 when + * none is provided. The value is specified as 1-offset, so the first + * line is line 1. + */ + public int getLine() { + return line; + } + + /** + * Return the column where the parse exception occurred, or -1 when + * none is provided. The value is specified as 1-offset, so the first + * line is line 1. + */ + public int getColumn() { + return column; + } + } + + private static final Parser PARSER = Parser.newBuilder().build(); + + /** + * Return a {@link Parser} instance which can parse text-format + * messages. The returned instance is thread-safe. + */ + public static Parser getParser() { + return PARSER; + } + + /** + * Parse a text-format message from {@code input} and merge the contents + * into {@code builder}. + */ + public static void merge(final Readable input, + final Message.Builder builder) + throws IOException { + PARSER.merge(input, builder); + } + + /** + * Parse a text-format message from {@code input} and merge the contents + * into {@code builder}. + */ + public static void merge(final CharSequence input, + final Message.Builder builder) + throws ParseException { + PARSER.merge(input, builder); + } + + /** + * Parse a text-format message from {@code input} and merge the contents + * into {@code builder}. Extensions will be recognized if they are + * registered in {@code extensionRegistry}. + */ + public static void merge(final Readable input, + final ExtensionRegistry extensionRegistry, + final Message.Builder builder) + throws IOException { + PARSER.merge(input, extensionRegistry, builder); + } + + + /** + * Parse a text-format message from {@code input} and merge the contents + * into {@code builder}. Extensions will be recognized if they are + * registered in {@code extensionRegistry}. + */ + public static void merge(final CharSequence input, + final ExtensionRegistry extensionRegistry, + final Message.Builder builder) + throws ParseException { + PARSER.merge(input, extensionRegistry, builder); + } + + + /** + * Parser for text-format proto2 instances. This class is thread-safe. + * The implementation largely follows google/protobuf/text_format.cc. + * + *

      Use {@link TextFormat#getParser()} to obtain the default parser, or + * {@link Builder} to control the parser behavior. + */ + public static class Parser { + /** + * Determines if repeated values for non-repeated fields and + * oneofs are permitted. For example, given required/optional field "foo" + * and a oneof containing "baz" and "qux": + *

    2. + *
    3. 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

    4. d8D40-ml5vcgdFg@(bb*;a33d> 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]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 z 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 d8StY5AAoy0@>w583<4 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≻LfkYonM1H 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